All files / client/.next/static/chunks/pages users.js

0% Statements 0/283
0% Branches 0/2
0% Functions 0/279
0% Lines 0/281

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
/*
 * ATTENTION: An "eval-source-map" devtool has been used.
 * This devtool is neither made for production nor for readable output files.
 * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
 * or disable the default devtool with "devtool: false".
 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
 */
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([["pages/users"],{
 
/***/ "./node_modules/@apollo/client/node_modules/@wry/equality/lib/equality.esm.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@apollo/client/node_modules/@wry/equality/lib/equality.esm.js ***!
  \************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ equal; },\n/* harmony export */   \"equal\": function() { return /* binding */ equal; }\n/* harmony export */ });\nvar _a = Object.prototype, toString = _a.toString, hasOwnProperty = _a.hasOwnProperty;\r\nvar fnToStr = Function.prototype.toString;\r\nvar previousComparisons = new Map();\r\n/**\r\n * Performs a deep equality check on two JavaScript values, tolerating cycles.\r\n */\r\nfunction equal(a, b) {\r\n    try {\r\n        return check(a, b);\r\n    }\r\n    finally {\r\n        previousComparisons.clear();\r\n    }\r\n}\r\nfunction check(a, b) {\r\n    // If the two values are strictly equal, our job is easy.\r\n    if (a === b) {\r\n        return true;\r\n    }\r\n    // Object.prototype.toString returns a representation of the runtime type of\r\n    // the given value that is considerably more precise than typeof.\r\n    var aTag = toString.call(a);\r\n    var bTag = toString.call(b);\r\n    // If the runtime types of a and b are different, they could maybe be equal\r\n    // under some interpretation of equality, but for simplicity and performance\r\n    // we just return false instead.\r\n    if (aTag !== bTag) {\r\n        return false;\r\n    }\r\n    switch (aTag) {\r\n        case '[object Array]':\r\n            // Arrays are a lot like other objects, but we can cheaply compare their\r\n            // lengths as a short-cut before comparing their elements.\r\n            if (a.length !== b.length)\r\n                return false;\r\n        // Fall through to object case...\r\n        case '[object Object]': {\r\n            if (previouslyCompared(a, b))\r\n                return true;\r\n            var aKeys = definedKeys(a);\r\n            var bKeys = definedKeys(b);\r\n            // If `a` and `b` have a different number of enumerable keys, they\r\n            // must be different.\r\n            var keyCount = aKeys.length;\r\n            if (keyCount !== bKeys.length)\r\n                return false;\r\n            // Now make sure they have the same keys.\r\n            for (var k = 0; k < keyCount; ++k) {\r\n                if (!hasOwnProperty.call(b, aKeys[k])) {\r\n                    return false;\r\n                }\r\n            }\r\n            // Finally, check deep equality of all child properties.\r\n            for (var k = 0; k < keyCount; ++k) {\r\n                var key = aKeys[k];\r\n                if (!check(a[key], b[key])) {\r\n                    return false;\r\n                }\r\n            }\r\n            return true;\r\n        }\r\n        case '[object Error]':\r\n            return a.name === b.name && a.message === b.message;\r\n        case '[object Number]':\r\n            // Handle NaN, which is !== itself.\r\n            if (a !== a)\r\n                return b !== b;\r\n        // Fall through to shared +a === +b case...\r\n        case '[object Boolean]':\r\n        case '[object Date]':\r\n            return +a === +b;\r\n        case '[object RegExp]':\r\n        case '[object String]':\r\n            return a == \"\" + b;\r\n        case '[object Map]':\r\n        case '[object Set]': {\r\n            if (a.size !== b.size)\r\n                return false;\r\n            if (previouslyCompared(a, b))\r\n                return true;\r\n            var aIterator = a.entries();\r\n            var isMap = aTag === '[object Map]';\r\n            while (true) {\r\n                var info = aIterator.next();\r\n                if (info.done)\r\n                    break;\r\n                // If a instanceof Set, aValue === aKey.\r\n                var _a = info.value, aKey = _a[0], aValue = _a[1];\r\n                // So this works the same way for both Set and Map.\r\n                if (!b.has(aKey)) {\r\n                    return false;\r\n                }\r\n                // However, we care about deep equality of values only when dealing\r\n                // with Map structures.\r\n                if (isMap && !check(aValue, b.get(aKey))) {\r\n                    return false;\r\n                }\r\n            }\r\n            return true;\r\n        }\r\n        case '[object Uint16Array]':\r\n        case '[object Uint8Array]': // Buffer, in Node.js.\r\n        case '[object Uint32Array]':\r\n        case '[object Int32Array]':\r\n        case '[object Int8Array]':\r\n        case '[object Int16Array]':\r\n        case '[object ArrayBuffer]':\r\n            // DataView doesn't need these conversions, but the equality check is\r\n            // otherwise the same.\r\n            a = new Uint8Array(a);\r\n            b = new Uint8Array(b);\r\n        // Fall through...\r\n        case '[object DataView]': {\r\n            var len = a.byteLength;\r\n            if (len === b.byteLength) {\r\n                while (len-- && a[len] === b[len]) {\r\n                    // Keep looping as long as the bytes are equal.\r\n                }\r\n            }\r\n            return len === -1;\r\n        }\r\n        case '[object AsyncFunction]':\r\n        case '[object GeneratorFunction]':\r\n        case '[object AsyncGeneratorFunction]':\r\n        case '[object Function]': {\r\n            var aCode = fnToStr.call(a);\r\n            if (aCode !== fnToStr.call(b)) {\r\n                return false;\r\n            }\r\n            // We consider non-native functions equal if they have the same code\r\n            // (native functions require === because their code is censored).\r\n            // Note that this behavior is not entirely sound, since !== function\r\n            // objects with the same code can behave differently depending on\r\n            // their closure scope. However, any function can behave differently\r\n            // depending on the values of its input arguments (including this)\r\n            // and its calling context (including its closure scope), even\r\n            // though the function object is === to itself; and it is entirely\r\n            // possible for functions that are not === to behave exactly the\r\n            // same under all conceivable circumstances. Because none of these\r\n            // factors are statically decidable in JavaScript, JS function\r\n            // equality is not well-defined. This ambiguity allows us to\r\n            // consider the best possible heuristic among various imperfect\r\n            // options, and equating non-native functions that have the same\r\n            // code has enormous practical benefits, such as when comparing\r\n            // functions that are repeatedly passed as fresh function\r\n            // expressions within objects that are otherwise deeply equal. Since\r\n            // any function created from the same syntactic expression (in the\r\n            // same code location) will always stringify to the same code\r\n            // according to fnToStr.call, we can reasonably expect these\r\n            // repeatedly passed function expressions to have the same code, and\r\n            // thus behave \"the same\" (with all the caveats mentioned above),\r\n            // even though the runtime function objects are !== to one another.\r\n            return !endsWith(aCode, nativeCodeSuffix);\r\n        }\r\n    }\r\n    // Otherwise the values are not equal.\r\n    return false;\r\n}\r\nfunction definedKeys(obj) {\r\n    // Remember that the second argument to Array.prototype.filter will be\r\n    // used as `this` within the callback function.\r\n    return Object.keys(obj).filter(isDefinedKey, obj);\r\n}\r\nfunction isDefinedKey(key) {\r\n    return this[key] !== void 0;\r\n}\r\nvar nativeCodeSuffix = \"{ [native code] }\";\r\nfunction endsWith(full, suffix) {\r\n    var fromIndex = full.length - suffix.length;\r\n    return fromIndex >= 0 &&\r\n        full.indexOf(suffix, fromIndex) === fromIndex;\r\n}\r\nfunction previouslyCompared(a, b) {\r\n    // Though cyclic references can make an object graph appear infinite from the\r\n    // perspective of a depth-first traversal, the graph still contains a finite\r\n    // number of distinct object references. We use the previousComparisons cache\r\n    // to avoid comparing the same pair of object references more than once, which\r\n    // guarantees termination (even if we end up comparing every object in one\r\n    // graph to every object in the other graph, which is extremely unlikely),\r\n    // while still allowing weird isomorphic structures (like rings with different\r\n    // lengths) a chance to pass the equality test.\r\n    var bSet = previousComparisons.get(a);\r\n    if (bSet) {\r\n        // Return true here because we can be sure false will be returned somewhere\r\n        // else if the objects are not equivalent.\r\n        if (bSet.has(b))\r\n            return true;\r\n    }\r\n    else {\r\n        previousComparisons.set(a, bSet = new Set);\r\n    }\r\n    bSet.add(b);\r\n    return false;\r\n}\n\n\n//# sourceMappingURL=equality.esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbm9kZV9tb2R1bGVzL0B3cnkvZXF1YWxpdHkvbGliL2VxdWFsaXR5LmVzbS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsY0FBYztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGNBQWM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQ7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixlQUFlO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFbUM7QUFDbkMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L25vZGVfbW9kdWxlcy9Ad3J5L2VxdWFsaXR5L2xpYi9lcXVhbGl0eS5lc20uanM/ZmY1MSJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX2EgPSBPYmplY3QucHJvdG90eXBlLCB0b1N0cmluZyA9IF9hLnRvU3RyaW5nLCBoYXNPd25Qcm9wZXJ0eSA9IF9hLmhhc093blByb3BlcnR5O1xyXG52YXIgZm5Ub1N0ciA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZztcclxudmFyIHByZXZpb3VzQ29tcGFyaXNvbnMgPSBuZXcgTWFwKCk7XHJcbi8qKlxyXG4gKiBQZXJmb3JtcyBhIGRlZXAgZXF1YWxpdHkgY2hlY2sgb24gdHdvIEphdmFTY3JpcHQgdmFsdWVzLCB0b2xlcmF0aW5nIGN5Y2xlcy5cclxuICovXHJcbmZ1bmN0aW9uIGVxdWFsKGEsIGIpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgcmV0dXJuIGNoZWNrKGEsIGIpO1xyXG4gICAgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgcHJldmlvdXNDb21wYXJpc29ucy5jbGVhcigpO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGNoZWNrKGEsIGIpIHtcclxuICAgIC8vIElmIHRoZSB0d28gdmFsdWVzIGFyZSBzdHJpY3RseSBlcXVhbCwgb3VyIGpvYiBpcyBlYXN5LlxyXG4gICAgaWYgKGEgPT09IGIpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIC8vIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgcmV0dXJucyBhIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBydW50aW1lIHR5cGUgb2ZcclxuICAgIC8vIHRoZSBnaXZlbiB2YWx1ZSB0aGF0IGlzIGNvbnNpZGVyYWJseSBtb3JlIHByZWNpc2UgdGhhbiB0eXBlb2YuXHJcbiAgICB2YXIgYVRhZyA9IHRvU3RyaW5nLmNhbGwoYSk7XHJcbiAgICB2YXIgYlRhZyA9IHRvU3RyaW5nLmNhbGwoYik7XHJcbiAgICAvLyBJZiB0aGUgcnVudGltZSB0eXBlcyBvZiBhIGFuZCBiIGFyZSBkaWZmZXJlbnQsIHRoZXkgY291bGQgbWF5YmUgYmUgZXF1YWxcclxuICAgIC8vIHVuZGVyIHNvbWUgaW50ZXJwcmV0YXRpb24gb2YgZXF1YWxpdHksIGJ1dCBmb3Igc2ltcGxpY2l0eSBhbmQgcGVyZm9ybWFuY2VcclxuICAgIC8vIHdlIGp1c3QgcmV0dXJuIGZhbHNlIGluc3RlYWQuXHJcbiAgICBpZiAoYVRhZyAhPT0gYlRhZykge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHN3aXRjaCAoYVRhZykge1xyXG4gICAgICAgIGNhc2UgJ1tvYmplY3QgQXJyYXldJzpcclxuICAgICAgICAgICAgLy8gQXJyYXlzIGFyZSBhIGxvdCBsaWtlIG90aGVyIG9iamVjdHMsIGJ1dCB3ZSBjYW4gY2hlYXBseSBjb21wYXJlIHRoZWlyXHJcbiAgICAgICAgICAgIC8vIGxlbmd0aHMgYXMgYSBzaG9ydC1jdXQgYmVmb3JlIGNvbXBhcmluZyB0aGVpciBlbGVtZW50cy5cclxuICAgICAgICAgICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aClcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAvLyBGYWxsIHRocm91Z2ggdG8gb2JqZWN0IGNhc2UuLi5cclxuICAgICAgICBjYXNlICdbb2JqZWN0IE9iamVjdF0nOiB7XHJcbiAgICAgICAgICAgIGlmIChwcmV2aW91c2x5Q29tcGFyZWQoYSwgYikpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgdmFyIGFLZXlzID0gZGVmaW5lZEtleXMoYSk7XHJcbiAgICAgICAgICAgIHZhciBiS2V5cyA9IGRlZmluZWRLZXlzKGIpO1xyXG4gICAgICAgICAgICAvLyBJZiBgYWAgYW5kIGBiYCBoYXZlIGEgZGlmZmVyZW50IG51bWJlciBvZiBlbnVtZXJhYmxlIGtleXMsIHRoZXlcclxuICAgICAgICAgICAgLy8gbXVzdCBiZSBkaWZmZXJlbnQuXHJcbiAgICAgICAgICAgIHZhciBrZXlDb3VudCA9IGFLZXlzLmxlbmd0aDtcclxuICAgICAgICAgICAgaWYgKGtleUNvdW50ICE9PSBiS2V5cy5sZW5ndGgpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIE5vdyBtYWtlIHN1cmUgdGhleSBoYXZlIHRoZSBzYW1lIGtleXMuXHJcbiAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwga2V5Q291bnQ7ICsraykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIGFLZXlzW2tdKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBGaW5hbGx5LCBjaGVjayBkZWVwIGVxdWFsaXR5IG9mIGFsbCBjaGlsZCBwcm9wZXJ0aWVzLlxyXG4gICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGtleUNvdW50OyArK2spIHtcclxuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBhS2V5c1trXTtcclxuICAgICAgICAgICAgICAgIGlmICghY2hlY2soYVtrZXldLCBiW2tleV0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICdbb2JqZWN0IEVycm9yXSc6XHJcbiAgICAgICAgICAgIHJldHVybiBhLm5hbWUgPT09IGIubmFtZSAmJiBhLm1lc3NhZ2UgPT09IGIubWVzc2FnZTtcclxuICAgICAgICBjYXNlICdbb2JqZWN0IE51bWJlcl0nOlxyXG4gICAgICAgICAgICAvLyBIYW5kbGUgTmFOLCB3aGljaCBpcyAhPT0gaXRzZWxmLlxyXG4gICAgICAgICAgICBpZiAoYSAhPT0gYSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBiICE9PSBiO1xyXG4gICAgICAgIC8vIEZhbGwgdGhyb3VnaCB0byBzaGFyZWQgK2EgPT09ICtiIGNhc2UuLi5cclxuICAgICAgICBjYXNlICdbb2JqZWN0IEJvb2xlYW5dJzpcclxuICAgICAgICBjYXNlICdbb2JqZWN0IERhdGVdJzpcclxuICAgICAgICAgICAgcmV0dXJuICthID09PSArYjtcclxuICAgICAgICBjYXNlICdbb2JqZWN0IFJlZ0V4cF0nOlxyXG4gICAgICAgIGNhc2UgJ1tvYmplY3QgU3RyaW5nXSc6XHJcbiAgICAgICAgICAgIHJldHVybiBhID09IFwiXCIgKyBiO1xyXG4gICAgICAgIGNhc2UgJ1tvYmplY3QgTWFwXSc6XHJcbiAgICAgICAgY2FzZSAnW29iamVjdCBTZXRdJzoge1xyXG4gICAgICAgICAgICBpZiAoYS5zaXplICE9PSBiLnNpemUpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmIChwcmV2aW91c2x5Q29tcGFyZWQoYSwgYikpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgdmFyIGFJdGVyYXRvciA9IGEuZW50cmllcygpO1xyXG4gICAgICAgICAgICB2YXIgaXNNYXAgPSBhVGFnID09PSAnW29iamVjdCBNYXBdJztcclxuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgICAgICAgICAgIHZhciBpbmZvID0gYUl0ZXJhdG9yLm5leHQoKTtcclxuICAgICAgICAgICAgICAgIGlmIChpbmZvLmRvbmUpXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAvLyBJZiBhIGluc3RhbmNlb2YgU2V0LCBhVmFsdWUgPT09IGFLZXkuXHJcbiAgICAgICAgICAgICAgICB2YXIgX2EgPSBpbmZvLnZhbHVlLCBhS2V5ID0gX2FbMF0sIGFWYWx1ZSA9IF9hWzFdO1xyXG4gICAgICAgICAgICAgICAgLy8gU28gdGhpcyB3b3JrcyB0aGUgc2FtZSB3YXkgZm9yIGJvdGggU2V0IGFuZCBNYXAuXHJcbiAgICAgICAgICAgICAgICBpZiAoIWIuaGFzKGFLZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gSG93ZXZlciwgd2UgY2FyZSBhYm91dCBkZWVwIGVxdWFsaXR5IG9mIHZhbHVlcyBvbmx5IHdoZW4gZGVhbGluZ1xyXG4gICAgICAgICAgICAgICAgLy8gd2l0aCBNYXAgc3RydWN0dXJlcy5cclxuICAgICAgICAgICAgICAgIGlmIChpc01hcCAmJiAhY2hlY2soYVZhbHVlLCBiLmdldChhS2V5KSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgJ1tvYmplY3QgVWludDE2QXJyYXldJzpcclxuICAgICAgICBjYXNlICdbb2JqZWN0IFVpbnQ4QXJyYXldJzogLy8gQnVmZmVyLCBpbiBOb2RlLmpzLlxyXG4gICAgICAgIGNhc2UgJ1tvYmplY3QgVWludDMyQXJyYXldJzpcclxuICAgICAgICBjYXNlICdbb2JqZWN0IEludDMyQXJyYXldJzpcclxuICAgICAgICBjYXNlICdbb2JqZWN0IEludDhBcnJheV0nOlxyXG4gICAgICAgIGNhc2UgJ1tvYmplY3QgSW50MTZBcnJheV0nOlxyXG4gICAgICAgIGNhc2UgJ1tvYmplY3QgQXJyYXlCdWZmZXJdJzpcclxuICAgICAgICAgICAgLy8gRGF0YVZpZXcgZG9lc24ndCBuZWVkIHRoZXNlIGNvbnZlcnNpb25zLCBidXQgdGhlIGVxdWFsaXR5IGNoZWNrIGlzXHJcbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSB0aGUgc2FtZS5cclxuICAgICAgICAgICAgYSA9IG5ldyBVaW50OEFycmF5KGEpO1xyXG4gICAgICAgICAgICBiID0gbmV3IFVpbnQ4QXJyYXkoYik7XHJcbiAgICAgICAgLy8gRmFsbCB0aHJvdWdoLi4uXHJcbiAgICAgICAgY2FzZSAnW29iamVjdCBEYXRhVmlld10nOiB7XHJcbiAgICAgICAgICAgIHZhciBsZW4gPSBhLmJ5dGVMZW5ndGg7XHJcbiAgICAgICAgICAgIGlmIChsZW4gPT09IGIuYnl0ZUxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgd2hpbGUgKGxlbi0tICYmIGFbbGVuXSA9PT0gYltsZW5dKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gS2VlcCBsb29waW5nIGFzIGxvbmcgYXMgdGhlIGJ5dGVzIGFyZSBlcXVhbC5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbGVuID09PSAtMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXSc6XHJcbiAgICAgICAgY2FzZSAnW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0nOlxyXG4gICAgICAgIGNhc2UgJ1tvYmplY3QgQXN5bmNHZW5lcmF0b3JGdW5jdGlvbl0nOlxyXG4gICAgICAgIGNhc2UgJ1tvYmplY3QgRnVuY3Rpb25dJzoge1xyXG4gICAgICAgICAgICB2YXIgYUNvZGUgPSBmblRvU3RyLmNhbGwoYSk7XHJcbiAgICAgICAgICAgIGlmIChhQ29kZSAhPT0gZm5Ub1N0ci5jYWxsKGIpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gV2UgY29uc2lkZXIgbm9uLW5hdGl2ZSBmdW5jdGlvbnMgZXF1YWwgaWYgdGhleSBoYXZlIHRoZSBzYW1lIGNvZGVcclxuICAgICAgICAgICAgLy8gKG5hdGl2ZSBmdW5jdGlvbnMgcmVxdWlyZSA9PT0gYmVjYXVzZSB0aGVpciBjb2RlIGlzIGNlbnNvcmVkKS5cclxuICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgYmVoYXZpb3IgaXMgbm90IGVudGlyZWx5IHNvdW5kLCBzaW5jZSAhPT0gZnVuY3Rpb25cclxuICAgICAgICAgICAgLy8gb2JqZWN0cyB3aXRoIHRoZSBzYW1lIGNvZGUgY2FuIGJlaGF2ZSBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb25cclxuICAgICAgICAgICAgLy8gdGhlaXIgY2xvc3VyZSBzY29wZS4gSG93ZXZlciwgYW55IGZ1bmN0aW9uIGNhbiBiZWhhdmUgZGlmZmVyZW50bHlcclxuICAgICAgICAgICAgLy8gZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgb2YgaXRzIGlucHV0IGFyZ3VtZW50cyAoaW5jbHVkaW5nIHRoaXMpXHJcbiAgICAgICAgICAgIC8vIGFuZCBpdHMgY2FsbGluZyBjb250ZXh0IChpbmNsdWRpbmcgaXRzIGNsb3N1cmUgc2NvcGUpLCBldmVuXHJcbiAgICAgICAgICAgIC8vIHRob3VnaCB0aGUgZnVuY3Rpb24gb2JqZWN0IGlzID09PSB0byBpdHNlbGY7IGFuZCBpdCBpcyBlbnRpcmVseVxyXG4gICAgICAgICAgICAvLyBwb3NzaWJsZSBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIG5vdCA9PT0gdG8gYmVoYXZlIGV4YWN0bHkgdGhlXHJcbiAgICAgICAgICAgIC8vIHNhbWUgdW5kZXIgYWxsIGNvbmNlaXZhYmxlIGNpcmN1bXN0YW5jZXMuIEJlY2F1c2Ugbm9uZSBvZiB0aGVzZVxyXG4gICAgICAgICAgICAvLyBmYWN0b3JzIGFyZSBzdGF0aWNhbGx5IGRlY2lkYWJsZSBpbiBKYXZhU2NyaXB0LCBKUyBmdW5jdGlvblxyXG4gICAgICAgICAgICAvLyBlcXVhbGl0eSBpcyBub3Qgd2VsbC1kZWZpbmVkLiBUaGlzIGFtYmlndWl0eSBhbGxvd3MgdXMgdG9cclxuICAgICAgICAgICAgLy8gY29uc2lkZXIgdGhlIGJlc3QgcG9zc2libGUgaGV1cmlzdGljIGFtb25nIHZhcmlvdXMgaW1wZXJmZWN0XHJcbiAgICAgICAgICAgIC8vIG9wdGlvbnMsIGFuZCBlcXVhdGluZyBub24tbmF0aXZlIGZ1bmN0aW9ucyB0aGF0IGhhdmUgdGhlIHNhbWVcclxuICAgICAgICAgICAgLy8gY29kZSBoYXMgZW5vcm1vdXMgcHJhY3RpY2FsIGJlbmVmaXRzLCBzdWNoIGFzIHdoZW4gY29tcGFyaW5nXHJcbiAgICAgICAgICAgIC8vIGZ1bmN0aW9ucyB0aGF0IGFyZSByZXBlYXRlZGx5IHBhc3NlZCBhcyBmcmVzaCBmdW5jdGlvblxyXG4gICAgICAgICAgICAvLyBleHByZXNzaW9ucyB3aXRoaW4gb2JqZWN0cyB0aGF0IGFyZSBvdGhlcndpc2UgZGVlcGx5IGVxdWFsLiBTaW5jZVxyXG4gICAgICAgICAgICAvLyBhbnkgZnVuY3Rpb24gY3JlYXRlZCBmcm9tIHRoZSBzYW1lIHN5bnRhY3RpYyBleHByZXNzaW9uIChpbiB0aGVcclxuICAgICAgICAgICAgLy8gc2FtZSBjb2RlIGxvY2F0aW9uKSB3aWxsIGFsd2F5cyBzdHJpbmdpZnkgdG8gdGhlIHNhbWUgY29kZVxyXG4gICAgICAgICAgICAvLyBhY2NvcmRpbmcgdG8gZm5Ub1N0ci5jYWxsLCB3ZSBjYW4gcmVhc29uYWJseSBleHBlY3QgdGhlc2VcclxuICAgICAgICAgICAgLy8gcmVwZWF0ZWRseSBwYXNzZWQgZnVuY3Rpb24gZXhwcmVzc2lvbnMgdG8gaGF2ZSB0aGUgc2FtZSBjb2RlLCBhbmRcclxuICAgICAgICAgICAgLy8gdGh1cyBiZWhhdmUgXCJ0aGUgc2FtZVwiICh3aXRoIGFsbCB0aGUgY2F2ZWF0cyBtZW50aW9uZWQgYWJvdmUpLFxyXG4gICAgICAgICAgICAvLyBldmVuIHRob3VnaCB0aGUgcnVudGltZSBmdW5jdGlvbiBvYmplY3RzIGFyZSAhPT0gdG8gb25lIGFub3RoZXIuXHJcbiAgICAgICAgICAgIHJldHVybiAhZW5kc1dpdGgoYUNvZGUsIG5hdGl2ZUNvZGVTdWZmaXgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIE90aGVyd2lzZSB0aGUgdmFsdWVzIGFyZSBub3QgZXF1YWwuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gZGVmaW5lZEtleXMob2JqKSB7XHJcbiAgICAvLyBSZW1lbWJlciB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gQXJyYXkucHJvdG90eXBlLmZpbHRlciB3aWxsIGJlXHJcbiAgICAvLyB1c2VkIGFzIGB0aGlzYCB3aXRoaW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikuZmlsdGVyKGlzRGVmaW5lZEtleSwgb2JqKTtcclxufVxyXG5mdW5jdGlvbiBpc0RlZmluZWRLZXkoa2V5KSB7XHJcbiAgICByZXR1cm4gdGhpc1trZXldICE9PSB2b2lkIDA7XHJcbn1cclxudmFyIG5hdGl2ZUNvZGVTdWZmaXggPSBcInsgW25hdGl2ZSBjb2RlXSB9XCI7XHJcbmZ1bmN0aW9uIGVuZHNXaXRoKGZ1bGwsIHN1ZmZpeCkge1xyXG4gICAgdmFyIGZyb21JbmRleCA9IGZ1bGwubGVuZ3RoIC0gc3VmZml4Lmxlbmd0aDtcclxuICAgIHJldHVybiBmcm9tSW5kZXggPj0gMCAmJlxyXG4gICAgICAgIGZ1bGwuaW5kZXhPZihzdWZmaXgsIGZyb21JbmRleCkgPT09IGZyb21JbmRleDtcclxufVxyXG5mdW5jdGlvbiBwcmV2aW91c2x5Q29tcGFyZWQoYSwgYikge1xyXG4gICAgLy8gVGhvdWdoIGN5Y2xpYyByZWZlcmVuY2VzIGNhbiBtYWtlIGFuIG9iamVjdCBncmFwaCBhcHBlYXIgaW5maW5pdGUgZnJvbSB0aGVcclxuICAgIC8vIHBlcnNwZWN0aXZlIG9mIGEgZGVwdGgtZmlyc3QgdHJhdmVyc2FsLCB0aGUgZ3JhcGggc3RpbGwgY29udGFpbnMgYSBmaW5pdGVcclxuICAgIC8vIG51bWJlciBvZiBkaXN0aW5jdCBvYmplY3QgcmVmZXJlbmNlcy4gV2UgdXNlIHRoZSBwcmV2aW91c0NvbXBhcmlzb25zIGNhY2hlXHJcbiAgICAvLyB0byBhdm9pZCBjb21wYXJpbmcgdGhlIHNhbWUgcGFpciBvZiBvYmplY3QgcmVmZXJlbmNlcyBtb3JlIHRoYW4gb25jZSwgd2hpY2hcclxuICAgIC8vIGd1YXJhbnRlZXMgdGVybWluYXRpb24gKGV2ZW4gaWYgd2UgZW5kIHVwIGNvbXBhcmluZyBldmVyeSBvYmplY3QgaW4gb25lXHJcbiAgICAvLyBncmFwaCB0byBldmVyeSBvYmplY3QgaW4gdGhlIG90aGVyIGdyYXBoLCB3aGljaCBpcyBleHRyZW1lbHkgdW5saWtlbHkpLFxyXG4gICAgLy8gd2hpbGUgc3RpbGwgYWxsb3dpbmcgd2VpcmQgaXNvbW9ycGhpYyBzdHJ1Y3R1cmVzIChsaWtlIHJpbmdzIHdpdGggZGlmZmVyZW50XHJcbiAgICAvLyBsZW5ndGhzKSBhIGNoYW5jZSB0byBwYXNzIHRoZSBlcXVhbGl0eSB0ZXN0LlxyXG4gICAgdmFyIGJTZXQgPSBwcmV2aW91c0NvbXBhcmlzb25zLmdldChhKTtcclxuICAgIGlmIChiU2V0KSB7XHJcbiAgICAgICAgLy8gUmV0dXJuIHRydWUgaGVyZSBiZWNhdXNlIHdlIGNhbiBiZSBzdXJlIGZhbHNlIHdpbGwgYmUgcmV0dXJuZWQgc29tZXdoZXJlXHJcbiAgICAgICAgLy8gZWxzZSBpZiB0aGUgb2JqZWN0cyBhcmUgbm90IGVxdWl2YWxlbnQuXHJcbiAgICAgICAgaWYgKGJTZXQuaGFzKGIpKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHByZXZpb3VzQ29tcGFyaXNvbnMuc2V0KGEsIGJTZXQgPSBuZXcgU2V0KTtcclxuICAgIH1cclxuICAgIGJTZXQuYWRkKGIpO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XG5cbmV4cG9ydCB7IGVxdWFsIGFzIGRlZmF1bHQsIGVxdWFsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lcXVhbGl0eS5lc20uanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/node_modules/@wry/equality/lib/equality.esm.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/node_modules/ts-invariant/lib/invariant.esm.js":
/*!************************************************************************************!*\
  !*** ./node_modules/@apollo/client/node_modules/ts-invariant/lib/invariant.esm.js ***!
  \************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"InvariantError\": function() { return /* binding */ InvariantError; },\n/* harmony export */   \"default\": function() { return /* binding */ invariant$1; },\n/* harmony export */   \"invariant\": function() { return /* binding */ invariant; },\n/* harmony export */   \"setVerbosity\": function() { return /* binding */ setVerbosity; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n\n\nvar genericMessage = \"Invariant Violation\";\r\nvar _a = Object.setPrototypeOf, setPrototypeOf = _a === void 0 ? function (obj, proto) {\r\n    obj.__proto__ = proto;\r\n    return obj;\r\n} : _a;\r\nvar InvariantError = /** @class */ (function (_super) {\r\n    (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(InvariantError, _super);\r\n    function InvariantError(message) {\r\n        if (message === void 0) { message = genericMessage; }\r\n        var _this = _super.call(this, typeof message === \"number\"\r\n            ? genericMessage + \": \" + message + \" (see https://github.com/apollographql/invariant-packages)\"\r\n            : message) || this;\r\n        _this.framesToPop = 1;\r\n        _this.name = genericMessage;\r\n        setPrototypeOf(_this, InvariantError.prototype);\r\n        return _this;\r\n    }\r\n    return InvariantError;\r\n}(Error));\r\nfunction invariant(condition, message) {\r\n    if (!condition) {\r\n        throw new InvariantError(message);\r\n    }\r\n}\r\nvar verbosityLevels = [\"debug\", \"log\", \"warn\", \"error\", \"silent\"];\r\nvar verbosityLevel = verbosityLevels.indexOf(\"log\");\r\nfunction wrapConsoleMethod(name) {\r\n    return function () {\r\n        if (verbosityLevels.indexOf(name) >= verbosityLevel) {\r\n            // Default to console.log if this host environment happens not to provide\r\n            // all the console.* methods we need.\r\n            var method = console[name] || console.log;\r\n            return method.apply(console, arguments);\r\n        }\r\n    };\r\n}\r\n(function (invariant) {\r\n    invariant.debug = wrapConsoleMethod(\"debug\");\r\n    invariant.log = wrapConsoleMethod(\"log\");\r\n    invariant.warn = wrapConsoleMethod(\"warn\");\r\n    invariant.error = wrapConsoleMethod(\"error\");\r\n})(invariant || (invariant = {}));\r\nfunction setVerbosity(level) {\r\n    var old = verbosityLevels[verbosityLevel];\r\n    verbosityLevel = Math.max(0, verbosityLevels.indexOf(level));\r\n    return old;\r\n}\r\nvar invariant$1 = invariant;\n\n\n//# sourceMappingURL=invariant.esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbm9kZV9tb2R1bGVzL3RzLWludmFyaWFudC9saWIvaW52YXJpYW50LmVzbS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFrQzs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQSxJQUFJLGdEQUFTO0FBQ2I7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyw4QkFBOEI7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUUyRTtBQUMzRSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbm9kZV9tb2R1bGVzL3RzLWludmFyaWFudC9saWIvaW52YXJpYW50LmVzbS5qcz9hZmFiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gJ3RzbGliJztcblxudmFyIGdlbmVyaWNNZXNzYWdlID0gXCJJbnZhcmlhbnQgVmlvbGF0aW9uXCI7XHJcbnZhciBfYSA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiwgc2V0UHJvdG90eXBlT2YgPSBfYSA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKG9iaiwgcHJvdG8pIHtcclxuICAgIG9iai5fX3Byb3RvX18gPSBwcm90bztcclxuICAgIHJldHVybiBvYmo7XHJcbn0gOiBfYTtcclxudmFyIEludmFyaWFudEVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xyXG4gICAgX19leHRlbmRzKEludmFyaWFudEVycm9yLCBfc3VwZXIpO1xyXG4gICAgZnVuY3Rpb24gSW52YXJpYW50RXJyb3IobWVzc2FnZSkge1xyXG4gICAgICAgIGlmIChtZXNzYWdlID09PSB2b2lkIDApIHsgbWVzc2FnZSA9IGdlbmVyaWNNZXNzYWdlOyB9XHJcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgdHlwZW9mIG1lc3NhZ2UgPT09IFwibnVtYmVyXCJcclxuICAgICAgICAgICAgPyBnZW5lcmljTWVzc2FnZSArIFwiOiBcIiArIG1lc3NhZ2UgKyBcIiAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hcG9sbG9ncmFwaHFsL2ludmFyaWFudC1wYWNrYWdlcylcIlxyXG4gICAgICAgICAgICA6IG1lc3NhZ2UpIHx8IHRoaXM7XHJcbiAgICAgICAgX3RoaXMuZnJhbWVzVG9Qb3AgPSAxO1xyXG4gICAgICAgIF90aGlzLm5hbWUgPSBnZW5lcmljTWVzc2FnZTtcclxuICAgICAgICBzZXRQcm90b3R5cGVPZihfdGhpcywgSW52YXJpYW50RXJyb3IucHJvdG90eXBlKTtcclxuICAgICAgICByZXR1cm4gX3RoaXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gSW52YXJpYW50RXJyb3I7XHJcbn0oRXJyb3IpKTtcclxuZnVuY3Rpb24gaW52YXJpYW50KGNvbmRpdGlvbiwgbWVzc2FnZSkge1xyXG4gICAgaWYgKCFjb25kaXRpb24pIHtcclxuICAgICAgICB0aHJvdyBuZXcgSW52YXJpYW50RXJyb3IobWVzc2FnZSk7XHJcbiAgICB9XHJcbn1cclxudmFyIHZlcmJvc2l0eUxldmVscyA9IFtcImRlYnVnXCIsIFwibG9nXCIsIFwid2FyblwiLCBcImVycm9yXCIsIFwic2lsZW50XCJdO1xyXG52YXIgdmVyYm9zaXR5TGV2ZWwgPSB2ZXJib3NpdHlMZXZlbHMuaW5kZXhPZihcImxvZ1wiKTtcclxuZnVuY3Rpb24gd3JhcENvbnNvbGVNZXRob2QobmFtZSkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodmVyYm9zaXR5TGV2ZWxzLmluZGV4T2YobmFtZSkgPj0gdmVyYm9zaXR5TGV2ZWwpIHtcclxuICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBjb25zb2xlLmxvZyBpZiB0aGlzIGhvc3QgZW52aXJvbm1lbnQgaGFwcGVucyBub3QgdG8gcHJvdmlkZVxyXG4gICAgICAgICAgICAvLyBhbGwgdGhlIGNvbnNvbGUuKiBtZXRob2RzIHdlIG5lZWQuXHJcbiAgICAgICAgICAgIHZhciBtZXRob2QgPSBjb25zb2xlW25hbWVdIHx8IGNvbnNvbGUubG9nO1xyXG4gICAgICAgICAgICByZXR1cm4gbWV0aG9kLmFwcGx5KGNvbnNvbGUsIGFyZ3VtZW50cyk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG4oZnVuY3Rpb24gKGludmFyaWFudCkge1xyXG4gICAgaW52YXJpYW50LmRlYnVnID0gd3JhcENvbnNvbGVNZXRob2QoXCJkZWJ1Z1wiKTtcclxuICAgIGludmFyaWFudC5sb2cgPSB3cmFwQ29uc29sZU1ldGhvZChcImxvZ1wiKTtcclxuICAgIGludmFyaWFudC53YXJuID0gd3JhcENvbnNvbGVNZXRob2QoXCJ3YXJuXCIpO1xyXG4gICAgaW52YXJpYW50LmVycm9yID0gd3JhcENvbnNvbGVNZXRob2QoXCJlcnJvclwiKTtcclxufSkoaW52YXJpYW50IHx8IChpbnZhcmlhbnQgPSB7fSkpO1xyXG5mdW5jdGlvbiBzZXRWZXJib3NpdHkobGV2ZWwpIHtcclxuICAgIHZhciBvbGQgPSB2ZXJib3NpdHlMZXZlbHNbdmVyYm9zaXR5TGV2ZWxdO1xyXG4gICAgdmVyYm9zaXR5TGV2ZWwgPSBNYXRoLm1heCgwLCB2ZXJib3NpdHlMZXZlbHMuaW5kZXhPZihsZXZlbCkpO1xyXG4gICAgcmV0dXJuIG9sZDtcclxufVxyXG52YXIgaW52YXJpYW50JDEgPSBpbnZhcmlhbnQ7XG5cbmV4cG9ydCB7IEludmFyaWFudEVycm9yLCBpbnZhcmlhbnQkMSBhcyBkZWZhdWx0LCBpbnZhcmlhbnQsIHNldFZlcmJvc2l0eSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW52YXJpYW50LmVzbS5qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/node_modules/ts-invariant/lib/invariant.esm.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/node_modules/ts-invariant/process/index.js":
/*!********************************************************************************!*\
  !*** ./node_modules/@apollo/client/node_modules/ts-invariant/process/index.js ***!
  \********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"install\": function() { return /* binding */ install; },\n/* harmony export */   \"remove\": function() { return /* binding */ remove; }\n/* harmony export */ });\n/* provided dependency */ var process = __webpack_require__(/*! process */ \"./node_modules/next/dist/build/polyfills/process.js\");\nfunction maybe(thunk) {\n  try { return thunk() } catch (_) {}\n}\n\nvar safeGlobal = (\n  maybe(function() { return globalThis }) ||\n  maybe(function() { return window }) ||\n  maybe(function() { return self }) ||\n  maybe(function() { return __webpack_require__.g }) ||\n  // We don't expect the Function constructor ever to be invoked at runtime, as\n  // long as at least one of globalThis, window, self, or global is defined, so\n  // we are under no obligation to make it easy for static analysis tools to\n  // detect syntactic usage of the Function constructor. If you think you can\n  // improve your static analysis to detect this obfuscation, think again. This\n  // is an arms race you cannot win, at least not in JavaScript.\n  maybe(function() { return maybe.constructor(\"return this\")() })\n);\n\nvar needToRemove = false;\n\nfunction install() {\n  if (safeGlobal &&\n      !maybe(function() { return \"development\" }) &&\n      !maybe(function() { return process })) {\n    Object.defineProperty(safeGlobal, \"process\", {\n      value: {\n        env: {\n          // This default needs to be \"production\" instead of \"development\", to\n          // avoid the problem https://github.com/graphql/graphql-js/pull/2894\n          // will eventually solve, once merged and released.\n          NODE_ENV: \"production\",\n        },\n      },\n      // Let anyone else change global.process as they see fit, but hide it from\n      // Object.keys(global) enumeration.\n      configurable: true,\n      enumerable: false,\n      writable: true,\n    });\n    needToRemove = true;\n  }\n}\n\n// Call install() at least once, when this module is imported.\ninstall();\n\nfunction remove() {\n  if (needToRemove) {\n    delete safeGlobal.process;\n    needToRemove = false;\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbm9kZV9tb2R1bGVzL3RzLWludmFyaWFudC9wcm9jZXNzL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0EsUUFBUSxpQkFBaUI7QUFDekI7O0FBRUE7QUFDQSxxQkFBcUIsbUJBQW1CO0FBQ3hDLHFCQUFxQixlQUFlO0FBQ3BDLHFCQUFxQixhQUFhO0FBQ2xDLHFCQUFxQixPQUFPLHFCQUFNLEVBQUU7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDJDQUEyQztBQUNoRTs7QUFFQTs7QUFFTztBQUNQO0FBQ0EsMEJBQTBCLE9BQU8sYUFBb0IsRUFBRTtBQUN2RCwwQkFBMEIsT0FBTyxPQUFPLEVBQUU7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9ub2RlX21vZHVsZXMvdHMtaW52YXJpYW50L3Byb2Nlc3MvaW5kZXguanM/OWRlNSJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBtYXliZSh0aHVuaykge1xuICB0cnkgeyByZXR1cm4gdGh1bmsoKSB9IGNhdGNoIChfKSB7fVxufVxuXG52YXIgc2FmZUdsb2JhbCA9IChcbiAgbWF5YmUoZnVuY3Rpb24oKSB7IHJldHVybiBnbG9iYWxUaGlzIH0pIHx8XG4gIG1heWJlKGZ1bmN0aW9uKCkgeyByZXR1cm4gd2luZG93IH0pIHx8XG4gIG1heWJlKGZ1bmN0aW9uKCkgeyByZXR1cm4gc2VsZiB9KSB8fFxuICBtYXliZShmdW5jdGlvbigpIHsgcmV0dXJuIGdsb2JhbCB9KSB8fFxuICAvLyBXZSBkb24ndCBleHBlY3QgdGhlIEZ1bmN0aW9uIGNvbnN0cnVjdG9yIGV2ZXIgdG8gYmUgaW52b2tlZCBhdCBydW50aW1lLCBhc1xuICAvLyBsb25nIGFzIGF0IGxlYXN0IG9uZSBvZiBnbG9iYWxUaGlzLCB3aW5kb3csIHNlbGYsIG9yIGdsb2JhbCBpcyBkZWZpbmVkLCBzb1xuICAvLyB3ZSBhcmUgdW5kZXIgbm8gb2JsaWdhdGlvbiB0byBtYWtlIGl0IGVhc3kgZm9yIHN0YXRpYyBhbmFseXNpcyB0b29scyB0b1xuICAvLyBkZXRlY3Qgc3ludGFjdGljIHVzYWdlIG9mIHRoZSBGdW5jdGlvbiBjb25zdHJ1Y3Rvci4gSWYgeW91IHRoaW5rIHlvdSBjYW5cbiAgLy8gaW1wcm92ZSB5b3VyIHN0YXRpYyBhbmFseXNpcyB0byBkZXRlY3QgdGhpcyBvYmZ1c2NhdGlvbiwgdGhpbmsgYWdhaW4uIFRoaXNcbiAgLy8gaXMgYW4gYXJtcyByYWNlIHlvdSBjYW5ub3Qgd2luLCBhdCBsZWFzdCBub3QgaW4gSmF2YVNjcmlwdC5cbiAgbWF5YmUoZnVuY3Rpb24oKSB7IHJldHVybiBtYXliZS5jb25zdHJ1Y3RvcihcInJldHVybiB0aGlzXCIpKCkgfSlcbik7XG5cbnZhciBuZWVkVG9SZW1vdmUgPSBmYWxzZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluc3RhbGwoKSB7XG4gIGlmIChzYWZlR2xvYmFsICYmXG4gICAgICAhbWF5YmUoZnVuY3Rpb24oKSB7IHJldHVybiBwcm9jZXNzLmVudi5OT0RFX0VOViB9KSAmJlxuICAgICAgIW1heWJlKGZ1bmN0aW9uKCkgeyByZXR1cm4gcHJvY2VzcyB9KSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzYWZlR2xvYmFsLCBcInByb2Nlc3NcIiwge1xuICAgICAgdmFsdWU6IHtcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgLy8gVGhpcyBkZWZhdWx0IG5lZWRzIHRvIGJlIFwicHJvZHVjdGlvblwiIGluc3RlYWQgb2YgXCJkZXZlbG9wbWVudFwiLCB0b1xuICAgICAgICAgIC8vIGF2b2lkIHRoZSBwcm9ibGVtIGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvcHVsbC8yODk0XG4gICAgICAgICAgLy8gd2lsbCBldmVudHVhbGx5IHNvbHZlLCBvbmNlIG1lcmdlZCBhbmQgcmVsZWFzZWQuXG4gICAgICAgICAgTk9ERV9FTlY6IFwicHJvZHVjdGlvblwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIC8vIExldCBhbnlvbmUgZWxzZSBjaGFuZ2UgZ2xvYmFsLnByb2Nlc3MgYXMgdGhleSBzZWUgZml0LCBidXQgaGlkZSBpdCBmcm9tXG4gICAgICAvLyBPYmplY3Qua2V5cyhnbG9iYWwpIGVudW1lcmF0aW9uLlxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgICBuZWVkVG9SZW1vdmUgPSB0cnVlO1xuICB9XG59XG5cbi8vIENhbGwgaW5zdGFsbCgpIGF0IGxlYXN0IG9uY2UsIHdoZW4gdGhpcyBtb2R1bGUgaXMgaW1wb3J0ZWQuXG5pbnN0YWxsKCk7XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmUoKSB7XG4gIGlmIChuZWVkVG9SZW1vdmUpIHtcbiAgICBkZWxldGUgc2FmZUdsb2JhbC5wcm9jZXNzO1xuICAgIG5lZWRUb1JlbW92ZSA9IGZhbHNlO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/node_modules/ts-invariant/process/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"__assign\": function() { return /* binding */ __assign; },\n/* harmony export */   \"__asyncDelegator\": function() { return /* binding */ __asyncDelegator; },\n/* harmony export */   \"__asyncGenerator\": function() { return /* binding */ __asyncGenerator; },\n/* harmony export */   \"__asyncValues\": function() { return /* binding */ __asyncValues; },\n/* harmony export */   \"__await\": function() { return /* binding */ __await; },\n/* harmony export */   \"__awaiter\": function() { return /* binding */ __awaiter; },\n/* harmony export */   \"__classPrivateFieldGet\": function() { return /* binding */ __classPrivateFieldGet; },\n/* harmony export */   \"__classPrivateFieldSet\": function() { return /* binding */ __classPrivateFieldSet; },\n/* harmony export */   \"__createBinding\": function() { return /* binding */ __createBinding; },\n/* harmony export */   \"__decorate\": function() { return /* binding */ __decorate; },\n/* harmony export */   \"__exportStar\": function() { return /* binding */ __exportStar; },\n/* harmony export */   \"__extends\": function() { return /* binding */ __extends; },\n/* harmony export */   \"__generator\": function() { return /* binding */ __generator; },\n/* harmony export */   \"__importDefault\": function() { return /* binding */ __importDefault; },\n/* harmony export */   \"__importStar\": function() { return /* binding */ __importStar; },\n/* harmony export */   \"__makeTemplateObject\": function() { return /* binding */ __makeTemplateObject; },\n/* harmony export */   \"__metadata\": function() { return /* binding */ __metadata; },\n/* harmony export */   \"__param\": function() { return /* binding */ __param; },\n/* harmony export */   \"__read\": function() { return /* binding */ __read; },\n/* harmony export */   \"__rest\": function() { return /* binding */ __rest; },\n/* harmony export */   \"__spread\": function() { return /* binding */ __spread; },\n/* harmony export */   \"__spreadArray\": function() { return /* binding */ __spreadArray; },\n/* harmony export */   \"__spreadArrays\": function() { return /* binding */ __spreadArrays; },\n/* harmony export */   \"__values\": function() { return /* binding */ __values; }\n/* harmony export */ });\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nfunction __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nvar __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nfunction __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nfunction __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nfunction __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nfunction __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nfunction __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nfunction __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nfunction __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nfunction __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nfunction __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nfunction __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGdCQUFnQixzQ0FBc0Msa0JBQWtCO0FBQ25GLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsaURBQWlELE9BQU87QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsY0FBYztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSw2Q0FBNkMsUUFBUTtBQUNyRDtBQUNBO0FBQ0E7QUFDTztBQUNQLG9DQUFvQztBQUNwQztBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDTztBQUNQLDRCQUE0QiwrREFBK0QsaUJBQWlCO0FBQzVHO0FBQ0Esb0NBQW9DLE1BQU0sK0JBQStCLFlBQVk7QUFDckYsbUNBQW1DLE1BQU0sbUNBQW1DLFlBQVk7QUFDeEYsZ0NBQWdDO0FBQ2hDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQLGNBQWMsNkJBQTZCLDBCQUEwQixjQUFjLHFCQUFxQjtBQUN4RyxpQkFBaUIsb0RBQW9ELHFFQUFxRSxjQUFjO0FBQ3hKLHVCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDO0FBQ3hDLG1DQUFtQyxTQUFTO0FBQzVDLG1DQUFtQyxXQUFXLFVBQVU7QUFDeEQsMENBQTBDLGNBQWM7QUFDeEQ7QUFDQSw4R0FBOEcsT0FBTztBQUNySCxpRkFBaUYsaUJBQWlCO0FBQ2xHLHlEQUF5RCxnQkFBZ0IsUUFBUTtBQUNqRiwrQ0FBK0MsZ0JBQWdCLGdCQUFnQjtBQUMvRTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0EsVUFBVSxZQUFZLGFBQWEsU0FBUyxVQUFVO0FBQ3RELG9DQUFvQyxTQUFTO0FBQzdDO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxtQ0FBbUMsb0NBQW9DLGdCQUFnQjtBQUN2RixDQUFDO0FBQ0Q7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixNQUFNO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLDZCQUE2QixzQkFBc0I7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1Asa0RBQWtELFFBQVE7QUFDMUQseUNBQXlDLFFBQVE7QUFDakQseURBQXlELFFBQVE7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLDZFQUE2RSxPQUFPO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLGlCQUFpQix1RkFBdUYsY0FBYztBQUN0SCx1QkFBdUIsZ0NBQWdDLHFDQUFxQywyQ0FBMkM7QUFDdkksNEJBQTRCLE1BQU0saUJBQWlCLFlBQVk7QUFDL0QsdUJBQXVCO0FBQ3ZCLDhCQUE4QjtBQUM5Qiw2QkFBNkI7QUFDN0IsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDTztBQUNQO0FBQ0EsaUJBQWlCLDZDQUE2QyxVQUFVLHNEQUFzRCxjQUFjO0FBQzVJLDBCQUEwQiw2QkFBNkIsb0JBQW9CLGdEQUFnRCxrQkFBa0I7QUFDN0k7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLDJHQUEyRyx1RkFBdUYsY0FBYztBQUNoTix1QkFBdUIsOEJBQThCLGdEQUFnRCx3REFBd0Q7QUFDN0osNkNBQTZDLHNDQUFzQyxVQUFVLG1CQUFtQixJQUFJO0FBQ3BIO0FBQ0E7QUFDTztBQUNQLGlDQUFpQyx1Q0FBdUMsWUFBWSxLQUFLLE9BQU87QUFDaEc7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsNEJBQTRCO0FBQ3RFLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcz9mOTRjIl0sInNvdXJjZXNDb250ZW50IjpbIi8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlICovXHJcblxyXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfSk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG52YXIgX19zZXRNb2R1bGVEZWZhdWx0ID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XHJcbn0pIDogZnVuY3Rpb24obywgdikge1xyXG4gICAgb1tcImRlZmF1bHRcIl0gPSB2O1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcclxuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XHJcbiAgICB2YXIgcmVzdWx0ID0ge307XHJcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwgayk7XHJcbiAgICBfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LCBtb2QpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcclxuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgc3RhdGUsIHZhbHVlLCBraW5kLCBmKSB7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJtXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIG1ldGhvZCBpcyBub3Qgd3JpdGFibGVcIik7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7XHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIChraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlciwgdmFsdWUpIDogZiA/IGYudmFsdWUgPSB2YWx1ZSA6IHN0YXRlLnNldChyZWNlaXZlciwgdmFsdWUpKSwgdmFsdWU7XHJcbn1cclxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/react-common/lib/react-common.esm.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@apollo/react-common/lib/react-common.esm.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloConsumer\": function() { return /* binding */ ApolloConsumer; },\n/* harmony export */   \"ApolloProvider\": function() { return /* binding */ ApolloProvider; },\n/* harmony export */   \"DocumentType\": function() { return /* binding */ DocumentType; },\n/* harmony export */   \"getApolloContext\": function() { return /* binding */ getApolloContext; },\n/* harmony export */   \"operationName\": function() { return /* binding */ operationName; },\n/* harmony export */   \"parser\": function() { return /* binding */ parser; },\n/* harmony export */   \"resetApolloContext\": function() { return /* binding */ resetApolloContext; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var ts_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ts-invariant */ \"./node_modules/ts-invariant/lib/invariant.esm.js\");\n\n\n\nvar apolloContext;\nfunction getApolloContext() {\n    if (!apolloContext) {\n        apolloContext = react__WEBPACK_IMPORTED_MODULE_0___default().createContext({});\n    }\n    return apolloContext;\n}\nfunction resetApolloContext() {\n    apolloContext = react__WEBPACK_IMPORTED_MODULE_0___default().createContext({});\n}\n\nvar ApolloProvider = function (_a) {\n    var client = _a.client, children = _a.children;\n    var ApolloContext = getApolloContext();\n    return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ApolloContext.Consumer, null, function (context) {\n        if (context === void 0) { context = {}; }\n        if (client && context.client !== client) {\n            context = Object.assign({}, context, { client: client });\n        }\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(context.client, 'ApolloProvider was not passed a client instance. Make ' +\n            'sure you pass in your client via the \"client\" prop.');\n        return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ApolloContext.Provider, { value: context }, children));\n    });\n};\n\nvar ApolloConsumer = function (props) {\n    var ApolloContext = getApolloContext();\n    return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ApolloContext.Consumer, null, function (context) {\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(context && context.client, 'Could not find \"client\" in the context of ApolloConsumer. ' +\n            'Wrap the root component in an <ApolloProvider>.');\n        return props.children(context.client);\n    });\n};\n\nvar DocumentType;\n(function (DocumentType) {\n    DocumentType[DocumentType[\"Query\"] = 0] = \"Query\";\n    DocumentType[DocumentType[\"Mutation\"] = 1] = \"Mutation\";\n    DocumentType[DocumentType[\"Subscription\"] = 2] = \"Subscription\";\n})(DocumentType || (DocumentType = {}));\nvar cache = new Map();\nfunction operationName(type) {\n    var name;\n    switch (type) {\n        case DocumentType.Query:\n            name = 'Query';\n            break;\n        case DocumentType.Mutation:\n            name = 'Mutation';\n            break;\n        case DocumentType.Subscription:\n            name = 'Subscription';\n            break;\n    }\n    return name;\n}\nfunction parser(document) {\n    var cached = cache.get(document);\n    if (cached)\n        return cached;\n    var variables, type, name;\n     false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(!!document && !!document.kind, \"Argument of \" + document + \" passed to parser was not a valid GraphQL \" +\n        \"DocumentNode. You may need to use 'graphql-tag' or another method \" +\n        \"to convert your operation into a document\");\n    var fragments = document.definitions.filter(function (x) { return x.kind === 'FragmentDefinition'; });\n    var queries = document.definitions.filter(function (x) {\n        return x.kind === 'OperationDefinition' && x.operation === 'query';\n    });\n    var mutations = document.definitions.filter(function (x) {\n        return x.kind === 'OperationDefinition' && x.operation === 'mutation';\n    });\n    var subscriptions = document.definitions.filter(function (x) {\n        return x.kind === 'OperationDefinition' && x.operation === 'subscription';\n    });\n     false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(!fragments.length ||\n        (queries.length || mutations.length || subscriptions.length), \"Passing only a fragment to 'graphql' is not yet supported. \" +\n        \"You must include a query, subscription or mutation as well\");\n     false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(queries.length + mutations.length + subscriptions.length <= 1, \"react-apollo only supports a query, subscription, or a mutation per HOC. \" +\n        (document + \" had \" + queries.length + \" queries, \" + subscriptions.length + \" \") +\n        (\"subscriptions and \" + mutations.length + \" mutations. \") +\n        \"You can use 'compose' to join multiple operation types to a component\");\n    type = queries.length ? DocumentType.Query : DocumentType.Mutation;\n    if (!queries.length && !mutations.length)\n        type = DocumentType.Subscription;\n    var definitions = queries.length\n        ? queries\n        : mutations.length\n            ? mutations\n            : subscriptions;\n     false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(definitions.length === 1, \"react-apollo only supports one definition per HOC. \" + document + \" had \" +\n        (definitions.length + \" definitions. \") +\n        \"You can use 'compose' to join multiple operation types to a component\");\n    var definition = definitions[0];\n    variables = definition.variableDefinitions || [];\n    if (definition.name && definition.name.kind === 'Name') {\n        name = definition.name.value;\n    }\n    else {\n        name = 'data';\n    }\n    var payload = { name: name, type: type, variables: variables };\n    cache.set(document, payload);\n    return payload;\n}\n\n\n//# sourceMappingURL=react-common.esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9yZWFjdC1jb21tb24vbGliL3JlYWN0LWNvbW1vbi5lc20uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUEwQjtBQUNlOztBQUV6QztBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMERBQW1CLEdBQUc7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMERBQW1CLEdBQUc7QUFDMUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVywwREFBbUI7QUFDOUIsa0NBQWtDO0FBQ2xDO0FBQ0Esc0NBQXNDLGFBQWEsZ0JBQWdCO0FBQ25FO0FBQ0EsUUFBUSxNQUFxQyxHQUFHLENBQTRCLEdBQUcsdURBQVM7QUFDeEY7QUFDQSxnQkFBZ0IsMERBQW1CLDJCQUEyQixnQkFBZ0I7QUFDOUUsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQSxXQUFXLDBEQUFtQjtBQUM5QixRQUFRLE1BQXFDLEdBQUcsQ0FBdUMsR0FBRyx1REFBUztBQUNuRztBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLG9DQUFvQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLE1BQXFDLEdBQUcsQ0FBMkMsR0FBRyx1REFBUztBQUNuRztBQUNBO0FBQ0EsK0RBQStELHlDQUF5QztBQUN4RztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJLE1BQXFDLEdBQUcsQ0FDNEIsR0FBRyx1REFBUztBQUNwRjtBQUNBO0FBQ0EsSUFBSSxNQUFxQyxHQUFHLENBQTJFLEdBQUcsdURBQVM7QUFDbkk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksTUFBcUMsR0FBRyxDQUFzQyxHQUFHLHVEQUFTO0FBQzlGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFcUg7QUFDckgiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vcmVhY3QtY29tbW9uL2xpYi9yZWFjdC1jb21tb24uZXNtLmpzPzdkNDEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGludmFyaWFudCB9IGZyb20gJ3RzLWludmFyaWFudCc7XG5cbnZhciBhcG9sbG9Db250ZXh0O1xuZnVuY3Rpb24gZ2V0QXBvbGxvQ29udGV4dCgpIHtcbiAgICBpZiAoIWFwb2xsb0NvbnRleHQpIHtcbiAgICAgICAgYXBvbGxvQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoe30pO1xuICAgIH1cbiAgICByZXR1cm4gYXBvbGxvQ29udGV4dDtcbn1cbmZ1bmN0aW9uIHJlc2V0QXBvbGxvQ29udGV4dCgpIHtcbiAgICBhcG9sbG9Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dCh7fSk7XG59XG5cbnZhciBBcG9sbG9Qcm92aWRlciA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBjbGllbnQgPSBfYS5jbGllbnQsIGNoaWxkcmVuID0gX2EuY2hpbGRyZW47XG4gICAgdmFyIEFwb2xsb0NvbnRleHQgPSBnZXRBcG9sbG9Db250ZXh0KCk7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQXBvbGxvQ29udGV4dC5Db25zdW1lciwgbnVsbCwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkgeyBjb250ZXh0ID0ge307IH1cbiAgICAgICAgaWYgKGNsaWVudCAmJiBjb250ZXh0LmNsaWVudCAhPT0gY2xpZW50KSB7XG4gICAgICAgICAgICBjb250ZXh0ID0gT2JqZWN0LmFzc2lnbih7fSwgY29udGV4dCwgeyBjbGllbnQ6IGNsaWVudCB9KTtcbiAgICAgICAgfVxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoY29udGV4dC5jbGllbnQsIDUpIDogaW52YXJpYW50KGNvbnRleHQuY2xpZW50LCAnQXBvbGxvUHJvdmlkZXIgd2FzIG5vdCBwYXNzZWQgYSBjbGllbnQgaW5zdGFuY2UuIE1ha2UgJyArXG4gICAgICAgICAgICAnc3VyZSB5b3UgcGFzcyBpbiB5b3VyIGNsaWVudCB2aWEgdGhlIFwiY2xpZW50XCIgcHJvcC4nKTtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KEFwb2xsb0NvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGNvbnRleHQgfSwgY2hpbGRyZW4pKTtcbiAgICB9KTtcbn07XG5cbnZhciBBcG9sbG9Db25zdW1lciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBBcG9sbG9Db250ZXh0ID0gZ2V0QXBvbGxvQ29udGV4dCgpO1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KEFwb2xsb0NvbnRleHQuQ29uc3VtZXIsIG51bGwsIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChjb250ZXh0ICYmIGNvbnRleHQuY2xpZW50LCA2KSA6IGludmFyaWFudChjb250ZXh0ICYmIGNvbnRleHQuY2xpZW50LCAnQ291bGQgbm90IGZpbmQgXCJjbGllbnRcIiBpbiB0aGUgY29udGV4dCBvZiBBcG9sbG9Db25zdW1lci4gJyArXG4gICAgICAgICAgICAnV3JhcCB0aGUgcm9vdCBjb21wb25lbnQgaW4gYW4gPEFwb2xsb1Byb3ZpZGVyPi4nKTtcbiAgICAgICAgcmV0dXJuIHByb3BzLmNoaWxkcmVuKGNvbnRleHQuY2xpZW50KTtcbiAgICB9KTtcbn07XG5cbnZhciBEb2N1bWVudFR5cGU7XG4oZnVuY3Rpb24gKERvY3VtZW50VHlwZSkge1xuICAgIERvY3VtZW50VHlwZVtEb2N1bWVudFR5cGVbXCJRdWVyeVwiXSA9IDBdID0gXCJRdWVyeVwiO1xuICAgIERvY3VtZW50VHlwZVtEb2N1bWVudFR5cGVbXCJNdXRhdGlvblwiXSA9IDFdID0gXCJNdXRhdGlvblwiO1xuICAgIERvY3VtZW50VHlwZVtEb2N1bWVudFR5cGVbXCJTdWJzY3JpcHRpb25cIl0gPSAyXSA9IFwiU3Vic2NyaXB0aW9uXCI7XG59KShEb2N1bWVudFR5cGUgfHwgKERvY3VtZW50VHlwZSA9IHt9KSk7XG52YXIgY2FjaGUgPSBuZXcgTWFwKCk7XG5mdW5jdGlvbiBvcGVyYXRpb25OYW1lKHR5cGUpIHtcbiAgICB2YXIgbmFtZTtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBEb2N1bWVudFR5cGUuUXVlcnk6XG4gICAgICAgICAgICBuYW1lID0gJ1F1ZXJ5JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIERvY3VtZW50VHlwZS5NdXRhdGlvbjpcbiAgICAgICAgICAgIG5hbWUgPSAnTXV0YXRpb24nO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRG9jdW1lbnRUeXBlLlN1YnNjcmlwdGlvbjpcbiAgICAgICAgICAgIG5hbWUgPSAnU3Vic2NyaXB0aW9uJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gbmFtZTtcbn1cbmZ1bmN0aW9uIHBhcnNlcihkb2N1bWVudCkge1xuICAgIHZhciBjYWNoZWQgPSBjYWNoZS5nZXQoZG9jdW1lbnQpO1xuICAgIGlmIChjYWNoZWQpXG4gICAgICAgIHJldHVybiBjYWNoZWQ7XG4gICAgdmFyIHZhcmlhYmxlcywgdHlwZSwgbmFtZTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoISFkb2N1bWVudCAmJiAhIWRvY3VtZW50LmtpbmQsIDEpIDogaW52YXJpYW50KCEhZG9jdW1lbnQgJiYgISFkb2N1bWVudC5raW5kLCBcIkFyZ3VtZW50IG9mIFwiICsgZG9jdW1lbnQgKyBcIiBwYXNzZWQgdG8gcGFyc2VyIHdhcyBub3QgYSB2YWxpZCBHcmFwaFFMIFwiICtcbiAgICAgICAgXCJEb2N1bWVudE5vZGUuIFlvdSBtYXkgbmVlZCB0byB1c2UgJ2dyYXBocWwtdGFnJyBvciBhbm90aGVyIG1ldGhvZCBcIiArXG4gICAgICAgIFwidG8gY29udmVydCB5b3VyIG9wZXJhdGlvbiBpbnRvIGEgZG9jdW1lbnRcIik7XG4gICAgdmFyIGZyYWdtZW50cyA9IGRvY3VtZW50LmRlZmluaXRpb25zLmZpbHRlcihmdW5jdGlvbiAoeCkgeyByZXR1cm4geC5raW5kID09PSAnRnJhZ21lbnREZWZpbml0aW9uJzsgfSk7XG4gICAgdmFyIHF1ZXJpZXMgPSBkb2N1bWVudC5kZWZpbml0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgcmV0dXJuIHgua2luZCA9PT0gJ09wZXJhdGlvbkRlZmluaXRpb24nICYmIHgub3BlcmF0aW9uID09PSAncXVlcnknO1xuICAgIH0pO1xuICAgIHZhciBtdXRhdGlvbnMgPSBkb2N1bWVudC5kZWZpbml0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgcmV0dXJuIHgua2luZCA9PT0gJ09wZXJhdGlvbkRlZmluaXRpb24nICYmIHgub3BlcmF0aW9uID09PSAnbXV0YXRpb24nO1xuICAgIH0pO1xuICAgIHZhciBzdWJzY3JpcHRpb25zID0gZG9jdW1lbnQuZGVmaW5pdGlvbnMuZmlsdGVyKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHJldHVybiB4LmtpbmQgPT09ICdPcGVyYXRpb25EZWZpbml0aW9uJyAmJiB4Lm9wZXJhdGlvbiA9PT0gJ3N1YnNjcmlwdGlvbic7XG4gICAgfSk7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KCFmcmFnbWVudHMubGVuZ3RoIHx8XG4gICAgICAgIChxdWVyaWVzLmxlbmd0aCB8fCBtdXRhdGlvbnMubGVuZ3RoIHx8IHN1YnNjcmlwdGlvbnMubGVuZ3RoKSwgMikgOiBpbnZhcmlhbnQoIWZyYWdtZW50cy5sZW5ndGggfHxcbiAgICAgICAgKHF1ZXJpZXMubGVuZ3RoIHx8IG11dGF0aW9ucy5sZW5ndGggfHwgc3Vic2NyaXB0aW9ucy5sZW5ndGgpLCBcIlBhc3Npbmcgb25seSBhIGZyYWdtZW50IHRvICdncmFwaHFsJyBpcyBub3QgeWV0IHN1cHBvcnRlZC4gXCIgK1xuICAgICAgICBcIllvdSBtdXN0IGluY2x1ZGUgYSBxdWVyeSwgc3Vic2NyaXB0aW9uIG9yIG11dGF0aW9uIGFzIHdlbGxcIik7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KHF1ZXJpZXMubGVuZ3RoICsgbXV0YXRpb25zLmxlbmd0aCArIHN1YnNjcmlwdGlvbnMubGVuZ3RoIDw9IDEsIDMpIDogaW52YXJpYW50KHF1ZXJpZXMubGVuZ3RoICsgbXV0YXRpb25zLmxlbmd0aCArIHN1YnNjcmlwdGlvbnMubGVuZ3RoIDw9IDEsIFwicmVhY3QtYXBvbGxvIG9ubHkgc3VwcG9ydHMgYSBxdWVyeSwgc3Vic2NyaXB0aW9uLCBvciBhIG11dGF0aW9uIHBlciBIT0MuIFwiICtcbiAgICAgICAgKGRvY3VtZW50ICsgXCIgaGFkIFwiICsgcXVlcmllcy5sZW5ndGggKyBcIiBxdWVyaWVzLCBcIiArIHN1YnNjcmlwdGlvbnMubGVuZ3RoICsgXCIgXCIpICtcbiAgICAgICAgKFwic3Vic2NyaXB0aW9ucyBhbmQgXCIgKyBtdXRhdGlvbnMubGVuZ3RoICsgXCIgbXV0YXRpb25zLiBcIikgK1xuICAgICAgICBcIllvdSBjYW4gdXNlICdjb21wb3NlJyB0byBqb2luIG11bHRpcGxlIG9wZXJhdGlvbiB0eXBlcyB0byBhIGNvbXBvbmVudFwiKTtcbiAgICB0eXBlID0gcXVlcmllcy5sZW5ndGggPyBEb2N1bWVudFR5cGUuUXVlcnkgOiBEb2N1bWVudFR5cGUuTXV0YXRpb247XG4gICAgaWYgKCFxdWVyaWVzLmxlbmd0aCAmJiAhbXV0YXRpb25zLmxlbmd0aClcbiAgICAgICAgdHlwZSA9IERvY3VtZW50VHlwZS5TdWJzY3JpcHRpb247XG4gICAgdmFyIGRlZmluaXRpb25zID0gcXVlcmllcy5sZW5ndGhcbiAgICAgICAgPyBxdWVyaWVzXG4gICAgICAgIDogbXV0YXRpb25zLmxlbmd0aFxuICAgICAgICAgICAgPyBtdXRhdGlvbnNcbiAgICAgICAgICAgIDogc3Vic2NyaXB0aW9ucztcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZGVmaW5pdGlvbnMubGVuZ3RoID09PSAxLCA0KSA6IGludmFyaWFudChkZWZpbml0aW9ucy5sZW5ndGggPT09IDEsIFwicmVhY3QtYXBvbGxvIG9ubHkgc3VwcG9ydHMgb25lIGRlZmluaXRpb24gcGVyIEhPQy4gXCIgKyBkb2N1bWVudCArIFwiIGhhZCBcIiArXG4gICAgICAgIChkZWZpbml0aW9ucy5sZW5ndGggKyBcIiBkZWZpbml0aW9ucy4gXCIpICtcbiAgICAgICAgXCJZb3UgY2FuIHVzZSAnY29tcG9zZScgdG8gam9pbiBtdWx0aXBsZSBvcGVyYXRpb24gdHlwZXMgdG8gYSBjb21wb25lbnRcIik7XG4gICAgdmFyIGRlZmluaXRpb24gPSBkZWZpbml0aW9uc1swXTtcbiAgICB2YXJpYWJsZXMgPSBkZWZpbml0aW9uLnZhcmlhYmxlRGVmaW5pdGlvbnMgfHwgW107XG4gICAgaWYgKGRlZmluaXRpb24ubmFtZSAmJiBkZWZpbml0aW9uLm5hbWUua2luZCA9PT0gJ05hbWUnKSB7XG4gICAgICAgIG5hbWUgPSBkZWZpbml0aW9uLm5hbWUudmFsdWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBuYW1lID0gJ2RhdGEnO1xuICAgIH1cbiAgICB2YXIgcGF5bG9hZCA9IHsgbmFtZTogbmFtZSwgdHlwZTogdHlwZSwgdmFyaWFibGVzOiB2YXJpYWJsZXMgfTtcbiAgICBjYWNoZS5zZXQoZG9jdW1lbnQsIHBheWxvYWQpO1xuICAgIHJldHVybiBwYXlsb2FkO1xufVxuXG5leHBvcnQgeyBBcG9sbG9Db25zdW1lciwgQXBvbGxvUHJvdmlkZXIsIERvY3VtZW50VHlwZSwgZ2V0QXBvbGxvQ29udGV4dCwgb3BlcmF0aW9uTmFtZSwgcGFyc2VyLCByZXNldEFwb2xsb0NvbnRleHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlYWN0LWNvbW1vbi5lc20uanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/react-common/lib/react-common.esm.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/react-components/lib/react-components.esm.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@apollo/react-components/lib/react-components.esm.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloConsumer\": function() { return /* reexport safe */ _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.ApolloConsumer; },\n/* harmony export */   \"ApolloProvider\": function() { return /* reexport safe */ _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.ApolloProvider; },\n/* harmony export */   \"Mutation\": function() { return /* binding */ Mutation; },\n/* harmony export */   \"Query\": function() { return /* binding */ Query; },\n/* harmony export */   \"Subscription\": function() { return /* binding */ Subscription; },\n/* harmony export */   \"getApolloContext\": function() { return /* reexport safe */ _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.getApolloContext; },\n/* harmony export */   \"resetApolloContext\": function() { return /* reexport safe */ _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.resetApolloContext; }\n/* harmony export */ });\n/* harmony import */ var _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @apollo/react-common */ \"./node_modules/@apollo/react-common/lib/react-common.esm.js\");\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _apollo_react_hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @apollo/react-hooks */ \"./node_modules/@apollo/react-hooks/lib/react-hooks.esm.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n\nfunction Query(props) {\n    var children = props.children, query = props.query, options = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__rest)(props, [\"children\", \"query\"]);\n    var result = (0,_apollo_react_hooks__WEBPACK_IMPORTED_MODULE_2__.useQuery)(query, options);\n    return children && result ? children(result) : null;\n}\n(function (Query) {\n    Query.propTypes = {\n        client: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object),\n        children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func.isRequired),\n        fetchPolicy: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n        notifyOnNetworkStatusChange: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n        onCompleted: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n        onError: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n        pollInterval: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n        query: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object.isRequired),\n        variables: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object),\n        ssr: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n        partialRefetch: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n        returnPartialData: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool)\n    };\n})(Query || (Query = {}));\n\nfunction Mutation(props) {\n    var _a = (0,_apollo_react_hooks__WEBPACK_IMPORTED_MODULE_2__.useMutation)(props.mutation, props), runMutation = _a[0], result = _a[1];\n    return props.children ? props.children(runMutation, result) : null;\n}\n(function (Mutation) {\n    Mutation.propTypes = {\n        mutation: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object.isRequired),\n        variables: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object),\n        optimisticResponse: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_3___default().object), (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)]),\n        refetchQueries: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([\n            prop_types__WEBPACK_IMPORTED_MODULE_3___default().arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_3___default().string), (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object)])),\n            (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func)\n        ]),\n        awaitRefetchQueries: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n        update: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n        children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func.isRequired),\n        onCompleted: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n        onError: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n        fetchPolicy: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n    };\n})(Mutation || (Mutation = {}));\n\nfunction Subscription(props) {\n    var result = (0,_apollo_react_hooks__WEBPACK_IMPORTED_MODULE_2__.useSubscription)(props.subscription, props);\n    return props.children && result ? props.children(result) : null;\n}\n(function (Subscription) {\n    Subscription.propTypes = {\n        subscription: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object.isRequired),\n        variables: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().object),\n        children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n        onSubscriptionData: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n        onSubscriptionComplete: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n        shouldResubscribe: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([(prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool)]),\n    };\n})(Subscription || (Subscription = {}));\n\n\n//# sourceMappingURL=react-components.esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9yZWFjdC1jb21wb25lbnRzL2xpYi9yZWFjdC1jb21wb25lbnRzLmVzbS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBNEc7QUFDN0U7QUFDOEM7QUFDMUM7O0FBRW5DO0FBQ0Esa0VBQWtFLDZDQUFNO0FBQ3hFLGlCQUFpQiw2REFBUTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwwREFBZ0I7QUFDaEMsa0JBQWtCLG1FQUF5QjtBQUMzQyxxQkFBcUIsMERBQWdCO0FBQ3JDLHFDQUFxQyx3REFBYztBQUNuRCxxQkFBcUIsd0RBQWM7QUFDbkMsaUJBQWlCLHdEQUFjO0FBQy9CLHNCQUFzQiwwREFBZ0I7QUFDdEMsZUFBZSxxRUFBMkI7QUFDMUMsbUJBQW1CLDBEQUFnQjtBQUNuQyxhQUFhLHdEQUFjO0FBQzNCLHdCQUF3Qix3REFBYztBQUN0QywyQkFBMkIsd0RBQWM7QUFDekM7QUFDQSxDQUFDLHNCQUFzQjs7QUFFdkI7QUFDQSxhQUFhLGdFQUFXO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHFFQUEyQjtBQUM3QyxtQkFBbUIsMERBQWdCO0FBQ25DLDRCQUE0QiwyREFBbUIsRUFBRSwwREFBZ0IsRUFBRSx3REFBYztBQUNqRix3QkFBd0IsMkRBQW1CO0FBQzNDLFlBQVkseURBQWlCLENBQUMsMkRBQW1CLEVBQUUsMERBQWdCLEVBQUUsMERBQWdCO0FBQ3JGLFlBQVksd0RBQWM7QUFDMUI7QUFDQSw2QkFBNkIsd0RBQWM7QUFDM0MsZ0JBQWdCLHdEQUFjO0FBQzlCLGtCQUFrQixtRUFBeUI7QUFDM0MscUJBQXFCLHdEQUFjO0FBQ25DLGlCQUFpQix3REFBYztBQUMvQixxQkFBcUIsMERBQWdCO0FBQ3JDO0FBQ0EsQ0FBQyw0QkFBNEI7O0FBRTdCO0FBQ0EsaUJBQWlCLG9FQUFlO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHFFQUEyQjtBQUNqRCxtQkFBbUIsMERBQWdCO0FBQ25DLGtCQUFrQix3REFBYztBQUNoQyw0QkFBNEIsd0RBQWM7QUFDMUMsZ0NBQWdDLHdEQUFjO0FBQzlDLDJCQUEyQiwyREFBbUIsRUFBRSx3REFBYyxFQUFFLHdEQUFjO0FBQzlFO0FBQ0EsQ0FBQyxvQ0FBb0M7O0FBRUk7QUFDekMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vcmVhY3QtY29tcG9uZW50cy9saWIvcmVhY3QtY29tcG9uZW50cy5lc20uanM/YTgzOCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBBcG9sbG9Db25zdW1lciwgQXBvbGxvUHJvdmlkZXIsIGdldEFwb2xsb0NvbnRleHQsIHJlc2V0QXBvbGxvQ29udGV4dCB9IGZyb20gJ0BhcG9sbG8vcmVhY3QtY29tbW9uJztcbmltcG9ydCB7IF9fcmVzdCB9IGZyb20gJ3RzbGliJztcbmltcG9ydCB7IHVzZVF1ZXJ5LCB1c2VNdXRhdGlvbiwgdXNlU3Vic2NyaXB0aW9uIH0gZnJvbSAnQGFwb2xsby9yZWFjdC1ob29rcyc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuXG5mdW5jdGlvbiBRdWVyeShwcm9wcykge1xuICAgIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBxdWVyeSA9IHByb3BzLnF1ZXJ5LCBvcHRpb25zID0gX19yZXN0KHByb3BzLCBbXCJjaGlsZHJlblwiLCBcInF1ZXJ5XCJdKTtcbiAgICB2YXIgcmVzdWx0ID0gdXNlUXVlcnkocXVlcnksIG9wdGlvbnMpO1xuICAgIHJldHVybiBjaGlsZHJlbiAmJiByZXN1bHQgPyBjaGlsZHJlbihyZXN1bHQpIDogbnVsbDtcbn1cbihmdW5jdGlvbiAoUXVlcnkpIHtcbiAgICBRdWVyeS5wcm9wVHlwZXMgPSB7XG4gICAgICAgIGNsaWVudDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgY2hpbGRyZW46IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICAgIGZldGNoUG9saWN5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICBub3RpZnlPbk5ldHdvcmtTdGF0dXNDaGFuZ2U6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICBvbkNvbXBsZXRlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIG9uRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICBwb2xsSW50ZXJ2YWw6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICAgIHF1ZXJ5OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICAgIHZhcmlhYmxlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgc3NyOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgcGFydGlhbFJlZmV0Y2g6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICByZXR1cm5QYXJ0aWFsRGF0YTogUHJvcFR5cGVzLmJvb2xcbiAgICB9O1xufSkoUXVlcnkgfHwgKFF1ZXJ5ID0ge30pKTtcblxuZnVuY3Rpb24gTXV0YXRpb24ocHJvcHMpIHtcbiAgICB2YXIgX2EgPSB1c2VNdXRhdGlvbihwcm9wcy5tdXRhdGlvbiwgcHJvcHMpLCBydW5NdXRhdGlvbiA9IF9hWzBdLCByZXN1bHQgPSBfYVsxXTtcbiAgICByZXR1cm4gcHJvcHMuY2hpbGRyZW4gPyBwcm9wcy5jaGlsZHJlbihydW5NdXRhdGlvbiwgcmVzdWx0KSA6IG51bGw7XG59XG4oZnVuY3Rpb24gKE11dGF0aW9uKSB7XG4gICAgTXV0YXRpb24ucHJvcFR5cGVzID0ge1xuICAgICAgICBtdXRhdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgICB2YXJpYWJsZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICAgIG9wdGltaXN0aWNSZXNwb25zZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICAgICAgcmVmZXRjaFF1ZXJpZXM6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgICAgICAgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm9iamVjdF0pKSxcbiAgICAgICAgICAgIFByb3BUeXBlcy5mdW5jXG4gICAgICAgIF0pLFxuICAgICAgICBhd2FpdFJlZmV0Y2hRdWVyaWVzOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgdXBkYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgY2hpbGRyZW46IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICAgIG9uQ29tcGxldGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgb25FcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIGZldGNoUG9saWN5OiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfTtcbn0pKE11dGF0aW9uIHx8IChNdXRhdGlvbiA9IHt9KSk7XG5cbmZ1bmN0aW9uIFN1YnNjcmlwdGlvbihwcm9wcykge1xuICAgIHZhciByZXN1bHQgPSB1c2VTdWJzY3JpcHRpb24ocHJvcHMuc3Vic2NyaXB0aW9uLCBwcm9wcyk7XG4gICAgcmV0dXJuIHByb3BzLmNoaWxkcmVuICYmIHJlc3VsdCA/IHByb3BzLmNoaWxkcmVuKHJlc3VsdCkgOiBudWxsO1xufVxuKGZ1bmN0aW9uIChTdWJzY3JpcHRpb24pIHtcbiAgICBTdWJzY3JpcHRpb24ucHJvcFR5cGVzID0ge1xuICAgICAgICBzdWJzY3JpcHRpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgICAgdmFyaWFibGVzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgICBjaGlsZHJlbjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIG9uU3Vic2NyaXB0aW9uRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIG9uU3Vic2NyaXB0aW9uQ29tcGxldGU6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICBzaG91bGRSZXN1YnNjcmliZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5ib29sXSksXG4gICAgfTtcbn0pKFN1YnNjcmlwdGlvbiB8fCAoU3Vic2NyaXB0aW9uID0ge30pKTtcblxuZXhwb3J0IHsgTXV0YXRpb24sIFF1ZXJ5LCBTdWJzY3JpcHRpb24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlYWN0LWNvbXBvbmVudHMuZXNtLmpzLm1hcFxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/react-components/lib/react-components.esm.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/react-hoc/lib/react-hoc.esm.js":
/*!*************************************************************!*\
  !*** ./node_modules/@apollo/react-hoc/lib/react-hoc.esm.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloConsumer\": function() { return /* reexport safe */ _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.ApolloConsumer; },\n/* harmony export */   \"ApolloProvider\": function() { return /* reexport safe */ _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.ApolloProvider; },\n/* harmony export */   \"getApolloContext\": function() { return /* reexport safe */ _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.getApolloContext; },\n/* harmony export */   \"graphql\": function() { return /* binding */ graphql; },\n/* harmony export */   \"resetApolloContext\": function() { return /* reexport safe */ _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.resetApolloContext; },\n/* harmony export */   \"withApollo\": function() { return /* binding */ withApollo; },\n/* harmony export */   \"withMutation\": function() { return /* binding */ withMutation; },\n/* harmony export */   \"withQuery\": function() { return /* binding */ withQuery; },\n/* harmony export */   \"withSubscription\": function() { return /* binding */ withSubscription; }\n/* harmony export */ });\n/* harmony import */ var _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @apollo/react-common */ \"./node_modules/@apollo/react-common/lib/react-common.esm.js\");\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! hoist-non-react-statics */ \"./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\");\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _apollo_react_components__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @apollo/react-components */ \"./node_modules/@apollo/react-components/lib/react-components.esm.js\");\n/* harmony import */ var ts_invariant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ts-invariant */ \"./node_modules/ts-invariant/lib/invariant.esm.js\");\n\n\n\n\n\n\n\n\nvar defaultMapPropsToOptions = function () { return ({}); };\nvar defaultMapPropsToSkip = function () { return false; };\nfunction getDisplayName(WrappedComponent) {\n    return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\nfunction calculateVariablesFromProps(operation, props) {\n    var variables = {};\n    for (var _i = 0, _a = operation.variables; _i < _a.length; _i++) {\n        var _b = _a[_i], variable = _b.variable, type = _b.type;\n        if (!variable.name || !variable.name.value)\n            continue;\n        var variableName = variable.name.value;\n        var variableProp = props[variableName];\n        if (typeof variableProp !== 'undefined') {\n            variables[variableName] = variableProp;\n            continue;\n        }\n        if (type.kind !== 'NonNullType') {\n            variables[variableName] = undefined;\n        }\n    }\n    return variables;\n}\nvar GraphQLBase = (function (_super) {\n    (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__extends)(GraphQLBase, _super);\n    function GraphQLBase(props) {\n        var _this = _super.call(this, props) || this;\n        _this.withRef = false;\n        _this.setWrappedInstance = _this.setWrappedInstance.bind(_this);\n        return _this;\n    }\n    GraphQLBase.prototype.getWrappedInstance = function () {\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_3__.invariant)(this.withRef, \"To access the wrapped instance, you need to specify \" +\n            \"{ withRef: true } in the options\");\n        return this.wrappedInstance;\n    };\n    GraphQLBase.prototype.setWrappedInstance = function (ref) {\n        this.wrappedInstance = ref;\n    };\n    return GraphQLBase;\n}((react__WEBPACK_IMPORTED_MODULE_1___default().Component)));\n\nfunction withQuery(document, operationOptions) {\n    if (operationOptions === void 0) { operationOptions = {}; }\n    var operation = (0,_apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.parser)(document);\n    var _a = operationOptions.options, options = _a === void 0 ? defaultMapPropsToOptions : _a, _b = operationOptions.skip, skip = _b === void 0 ? defaultMapPropsToSkip : _b, _c = operationOptions.alias, alias = _c === void 0 ? 'Apollo' : _c;\n    var mapPropsToOptions = options;\n    if (typeof mapPropsToOptions !== 'function') {\n        mapPropsToOptions = function () { return options; };\n    }\n    var mapPropsToSkip = skip;\n    if (typeof mapPropsToSkip !== 'function') {\n        mapPropsToSkip = function () { return skip; };\n    }\n    var lastResultProps;\n    return function (WrappedComponent) {\n        var graphQLDisplayName = alias + \"(\" + getDisplayName(WrappedComponent) + \")\";\n        var GraphQL = (function (_super) {\n            (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__extends)(GraphQL, _super);\n            function GraphQL() {\n                return _super !== null && _super.apply(this, arguments) || this;\n            }\n            GraphQL.prototype.render = function () {\n                var _this = this;\n                var props = this.props;\n                var shouldSkip = mapPropsToSkip(props);\n                var opts = shouldSkip\n                    ? Object.create(null)\n                    : (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, mapPropsToOptions(props));\n                if (!shouldSkip && !opts.variables && operation.variables.length > 0) {\n                    opts.variables = calculateVariablesFromProps(operation, props);\n                }\n                return (react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_apollo_react_components__WEBPACK_IMPORTED_MODULE_5__.Query, (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, opts, { displayName: graphQLDisplayName, skip: shouldSkip, query: document }), function (_a) {\n                    var _b, _c;\n                    var _ = _a.client, data = _a.data, r = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__rest)(_a, [\"client\", \"data\"]);\n                    if (operationOptions.withRef) {\n                        _this.withRef = true;\n                        props = Object.assign({}, props, {\n                            ref: _this.setWrappedInstance\n                        });\n                    }\n                    if (shouldSkip) {\n                        return (react__WEBPACK_IMPORTED_MODULE_1___default().createElement(WrappedComponent, (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, props, {})));\n                    }\n                    var result = Object.assign(r, data || {});\n                    var name = operationOptions.name || 'data';\n                    var childProps = (_b = {}, _b[name] = result, _b);\n                    if (operationOptions.props) {\n                        var newResult = (_c = {},\n                            _c[name] = result,\n                            _c.ownProps = props,\n                            _c);\n                        lastResultProps = operationOptions.props(newResult, lastResultProps);\n                        childProps = lastResultProps;\n                    }\n                    return (react__WEBPACK_IMPORTED_MODULE_1___default().createElement(WrappedComponent, (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, props, childProps)));\n                }));\n            };\n            GraphQL.displayName = graphQLDisplayName;\n            GraphQL.WrappedComponent = WrappedComponent;\n            return GraphQL;\n        }(GraphQLBase));\n        return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default()(GraphQL, WrappedComponent, {});\n    };\n}\n\nfunction withMutation(document, operationOptions) {\n    if (operationOptions === void 0) { operationOptions = {}; }\n    var operation = (0,_apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.parser)(document);\n    var _a = operationOptions.options, options = _a === void 0 ? defaultMapPropsToOptions : _a, _b = operationOptions.alias, alias = _b === void 0 ? 'Apollo' : _b;\n    var mapPropsToOptions = options;\n    if (typeof mapPropsToOptions !== 'function')\n        mapPropsToOptions = function () { return options; };\n    return function (WrappedComponent) {\n        var graphQLDisplayName = alias + \"(\" + getDisplayName(WrappedComponent) + \")\";\n        var GraphQL = (function (_super) {\n            (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__extends)(GraphQL, _super);\n            function GraphQL() {\n                return _super !== null && _super.apply(this, arguments) || this;\n            }\n            GraphQL.prototype.render = function () {\n                var props = this.props;\n                var opts = mapPropsToOptions(props);\n                if (operationOptions.withRef) {\n                    this.withRef = true;\n                    props = Object.assign({}, props, {\n                        ref: this.setWrappedInstance\n                    });\n                }\n                if (!opts.variables && operation.variables.length > 0) {\n                    opts.variables = calculateVariablesFromProps(operation, props);\n                }\n                return (react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_apollo_react_components__WEBPACK_IMPORTED_MODULE_5__.Mutation, (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({ ignoreResults: true }, opts, { mutation: document }), function (mutate, _a) {\n                    var _b, _c;\n                    var data = _a.data, r = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__rest)(_a, [\"data\"]);\n                    var result = Object.assign(r, data || {});\n                    var name = operationOptions.name || 'mutate';\n                    var resultName = operationOptions.name\n                        ? name + \"Result\"\n                        : 'result';\n                    var childProps = (_b = {},\n                        _b[name] = mutate,\n                        _b[resultName] = result,\n                        _b);\n                    if (operationOptions.props) {\n                        var newResult = (_c = {},\n                            _c[name] = mutate,\n                            _c[resultName] = result,\n                            _c.ownProps = props,\n                            _c);\n                        childProps = operationOptions.props(newResult);\n                    }\n                    return react__WEBPACK_IMPORTED_MODULE_1___default().createElement(WrappedComponent, (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, props, childProps));\n                }));\n            };\n            GraphQL.displayName = graphQLDisplayName;\n            GraphQL.WrappedComponent = WrappedComponent;\n            return GraphQL;\n        }(GraphQLBase));\n        return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default()(GraphQL, WrappedComponent, {});\n    };\n}\n\nfunction withSubscription(document, operationOptions) {\n    if (operationOptions === void 0) { operationOptions = {}; }\n    var operation = (0,_apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.parser)(document);\n    var _a = operationOptions.options, options = _a === void 0 ? defaultMapPropsToOptions : _a, _b = operationOptions.skip, skip = _b === void 0 ? defaultMapPropsToSkip : _b, _c = operationOptions.alias, alias = _c === void 0 ? 'Apollo' : _c, shouldResubscribe = operationOptions.shouldResubscribe;\n    var mapPropsToOptions = options;\n    if (typeof mapPropsToOptions !== 'function')\n        mapPropsToOptions = function () { return options; };\n    var mapPropsToSkip = skip;\n    if (typeof mapPropsToSkip !== 'function')\n        mapPropsToSkip = function () { return skip; };\n    var lastResultProps;\n    return function (WrappedComponent) {\n        var graphQLDisplayName = alias + \"(\" + getDisplayName(WrappedComponent) + \")\";\n        var GraphQL = (function (_super) {\n            (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__extends)(GraphQL, _super);\n            function GraphQL(props) {\n                var _this = _super.call(this, props) || this;\n                _this.state = { resubscribe: false };\n                return _this;\n            }\n            GraphQL.prototype.componentDidUpate = function (prevProps) {\n                if (shouldResubscribe) {\n                    this.setState({\n                        resubscribe: shouldResubscribe(prevProps, this.props)\n                    });\n                }\n            };\n            GraphQL.prototype.render = function () {\n                var _this = this;\n                var props = this.props;\n                var shouldSkip = mapPropsToSkip(props);\n                var opts = shouldSkip\n                    ? Object.create(null)\n                    : mapPropsToOptions(props);\n                if (!shouldSkip && !opts.variables && operation.variables.length > 0) {\n                    opts.variables = calculateVariablesFromProps(operation, props);\n                }\n                return (react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_apollo_react_components__WEBPACK_IMPORTED_MODULE_5__.Subscription, (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, opts, { displayName: graphQLDisplayName, skip: shouldSkip, subscription: document, shouldResubscribe: this.state.resubscribe }), function (_a) {\n                    var _b, _c;\n                    var data = _a.data, r = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__rest)(_a, [\"data\"]);\n                    if (operationOptions.withRef) {\n                        _this.withRef = true;\n                        props = Object.assign({}, props, {\n                            ref: _this.setWrappedInstance\n                        });\n                    }\n                    if (shouldSkip) {\n                        return (react__WEBPACK_IMPORTED_MODULE_1___default().createElement(WrappedComponent, (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, props, {})));\n                    }\n                    var result = Object.assign(r, data || {});\n                    var name = operationOptions.name || 'data';\n                    var childProps = (_b = {}, _b[name] = result, _b);\n                    if (operationOptions.props) {\n                        var newResult = (_c = {},\n                            _c[name] = result,\n                            _c.ownProps = props,\n                            _c);\n                        lastResultProps = operationOptions.props(newResult, lastResultProps);\n                        childProps = lastResultProps;\n                    }\n                    return (react__WEBPACK_IMPORTED_MODULE_1___default().createElement(WrappedComponent, (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, props, childProps)));\n                }));\n            };\n            GraphQL.displayName = graphQLDisplayName;\n            GraphQL.WrappedComponent = WrappedComponent;\n            return GraphQL;\n        }(GraphQLBase));\n        return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default()(GraphQL, WrappedComponent, {});\n    };\n}\n\nfunction graphql(document, operationOptions) {\n    if (operationOptions === void 0) { operationOptions = {}; }\n    switch ((0,_apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.parser)(document).type) {\n        case _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.DocumentType.Mutation:\n            return withMutation(document, operationOptions);\n        case _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.DocumentType.Subscription:\n            return withSubscription(document, operationOptions);\n        case _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.DocumentType.Query:\n        default:\n            return withQuery(document, operationOptions);\n    }\n}\n\nfunction getDisplayName$1(WrappedComponent) {\n    return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\nfunction withApollo(WrappedComponent, operationOptions) {\n    if (operationOptions === void 0) { operationOptions = {}; }\n    var withDisplayName = \"withApollo(\" + getDisplayName$1(WrappedComponent) + \")\";\n    var WithApollo = (function (_super) {\n        (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__extends)(WithApollo, _super);\n        function WithApollo(props) {\n            var _this = _super.call(this, props) || this;\n            _this.setWrappedInstance = _this.setWrappedInstance.bind(_this);\n            return _this;\n        }\n        WithApollo.prototype.getWrappedInstance = function () {\n             false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_3__.invariant)(operationOptions.withRef, \"To access the wrapped instance, you need to specify \" +\n                \"{ withRef: true } in the options\");\n            return this.wrappedInstance;\n        };\n        WithApollo.prototype.setWrappedInstance = function (ref) {\n            this.wrappedInstance = ref;\n        };\n        WithApollo.prototype.render = function () {\n            var _this = this;\n            return (react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.ApolloConsumer, null, function (client) {\n                var props = Object.assign({}, _this.props, {\n                    client: client,\n                    ref: operationOptions.withRef\n                        ? _this.setWrappedInstance\n                        : undefined\n                });\n                return react__WEBPACK_IMPORTED_MODULE_1___default().createElement(WrappedComponent, (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, props));\n            }));\n        };\n        WithApollo.displayName = withDisplayName;\n        WithApollo.WrappedComponent = WrappedComponent;\n        return WithApollo;\n    }((react__WEBPACK_IMPORTED_MODULE_1___default().Component)));\n    return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default()(WithApollo, WrappedComponent, {});\n}\n\n\n//# sourceMappingURL=react-hoc.esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9yZWFjdC1ob2MvbGliL3JlYWN0LWhvYy5lc20uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBNEU7QUFDZ0M7QUFDeEQ7QUFDMUI7QUFDaUM7QUFDYztBQUNoQzs7QUFFekMsNkNBQTZDLFVBQVU7QUFDdkQsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsZ0JBQWdCO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxnREFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxNQUFxQyxHQUFHLENBQTBCLEdBQUcsdURBQVM7QUFDdEYsZUFBZSxnQkFBZ0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLHdEQUFlOztBQUVqQjtBQUNBLHVDQUF1QztBQUN2QyxvQkFBb0IsNERBQU07QUFDMUI7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxnREFBUztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsK0NBQVEsR0FBRztBQUNqQztBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMERBQW1CLENBQUMsMkRBQUssRUFBRSwrQ0FBUSxHQUFHLFVBQVUsb0VBQW9FO0FBQzVJO0FBQ0EsMkRBQTJELDZDQUFNO0FBQ2pFO0FBQ0E7QUFDQSxnREFBZ0Q7QUFDaEQ7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBLGdDQUFnQywwREFBbUIsbUJBQW1CLCtDQUFRLEdBQUcsV0FBVztBQUM1RjtBQUNBLDREQUE0RDtBQUM1RDtBQUNBLDZDQUE2QztBQUM3QztBQUNBLGdEQUFnRDtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsMERBQW1CLG1CQUFtQiwrQ0FBUSxHQUFHO0FBQzdFLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxlQUFlLDhEQUFvQiw4QkFBOEI7QUFDakU7QUFDQTs7QUFFQTtBQUNBLHVDQUF1QztBQUN2QyxvQkFBb0IsNERBQU07QUFDMUI7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLFlBQVksZ0RBQVM7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QztBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QiwwREFBbUIsQ0FBQyw4REFBUSxFQUFFLCtDQUFRLEdBQUcscUJBQXFCLFVBQVUsb0JBQW9CO0FBQ3BIO0FBQ0EsNENBQTRDLDZDQUFNO0FBQ2xELDREQUE0RDtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRDtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsMERBQW1CLG1CQUFtQiwrQ0FBUSxHQUFHO0FBQzVFLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxlQUFlLDhEQUFvQiw4QkFBOEI7QUFDakU7QUFDQTs7QUFFQTtBQUNBLHVDQUF1QztBQUN2QyxvQkFBb0IsNERBQU07QUFDMUI7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGdEQUFTO0FBQ3JCO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QiwwREFBbUIsQ0FBQyxrRUFBWSxFQUFFLCtDQUFRLEdBQUcsVUFBVSxzSEFBc0g7QUFDck07QUFDQSw0Q0FBNEMsNkNBQU07QUFDbEQ7QUFDQTtBQUNBLGdEQUFnRDtBQUNoRDtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0EsZ0NBQWdDLDBEQUFtQixtQkFBbUIsK0NBQVEsR0FBRyxXQUFXO0FBQzVGO0FBQ0EsNERBQTREO0FBQzVEO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0EsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QiwwREFBbUIsbUJBQW1CLCtDQUFRLEdBQUc7QUFDN0UsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULGVBQWUsOERBQW9CLDhCQUE4QjtBQUNqRTtBQUNBOztBQUVBO0FBQ0EsdUNBQXVDO0FBQ3ZDLFlBQVksNERBQU07QUFDbEIsYUFBYSx1RUFBcUI7QUFDbEM7QUFDQSxhQUFhLDJFQUF5QjtBQUN0QztBQUNBLGFBQWEsb0VBQWtCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQSxRQUFRLGdEQUFTO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksTUFBcUMsR0FBRyxDQUFzQyxHQUFHLHVEQUFTO0FBQ3RHLG1CQUFtQixnQkFBZ0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMERBQW1CLENBQUMsZ0VBQWM7QUFDdEQsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLHVCQUF1QiwwREFBbUIsbUJBQW1CLCtDQUFRLEdBQUc7QUFDeEUsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxDQUFDLHdEQUFlO0FBQ3JCLFdBQVcsOERBQW9CLGlDQUFpQztBQUNoRTs7QUFFMEU7QUFDMUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vcmVhY3QtaG9jL2xpYi9yZWFjdC1ob2MuZXNtLmpzP2VjYTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGFyc2VyLCBEb2N1bWVudFR5cGUsIEFwb2xsb0NvbnN1bWVyIH0gZnJvbSAnQGFwb2xsby9yZWFjdC1jb21tb24nO1xuZXhwb3J0IHsgQXBvbGxvQ29uc3VtZXIsIEFwb2xsb1Byb3ZpZGVyLCBnZXRBcG9sbG9Db250ZXh0LCByZXNldEFwb2xsb0NvbnRleHQgfSBmcm9tICdAYXBvbGxvL3JlYWN0LWNvbW1vbic7XG5pbXBvcnQgeyBfX2V4dGVuZHMsIF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tICd0c2xpYic7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGhvaXN0Tm9uUmVhY3RTdGF0aWNzIGZyb20gJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJztcbmltcG9ydCB7IFF1ZXJ5LCBNdXRhdGlvbiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAnQGFwb2xsby9yZWFjdC1jb21wb25lbnRzJztcbmltcG9ydCB7IGludmFyaWFudCB9IGZyb20gJ3RzLWludmFyaWFudCc7XG5cbnZhciBkZWZhdWx0TWFwUHJvcHNUb09wdGlvbnMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAoe30pOyB9O1xudmFyIGRlZmF1bHRNYXBQcm9wc1RvU2tpcCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9O1xuZnVuY3Rpb24gZ2V0RGlzcGxheU5hbWUoV3JhcHBlZENvbXBvbmVudCkge1xuICAgIHJldHVybiBXcmFwcGVkQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IFdyYXBwZWRDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50Jztcbn1cbmZ1bmN0aW9uIGNhbGN1bGF0ZVZhcmlhYmxlc0Zyb21Qcm9wcyhvcGVyYXRpb24sIHByb3BzKSB7XG4gICAgdmFyIHZhcmlhYmxlcyA9IHt9O1xuICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSBvcGVyYXRpb24udmFyaWFibGVzOyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIgX2IgPSBfYVtfaV0sIHZhcmlhYmxlID0gX2IudmFyaWFibGUsIHR5cGUgPSBfYi50eXBlO1xuICAgICAgICBpZiAoIXZhcmlhYmxlLm5hbWUgfHwgIXZhcmlhYmxlLm5hbWUudmFsdWUpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgdmFyIHZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlLm5hbWUudmFsdWU7XG4gICAgICAgIHZhciB2YXJpYWJsZVByb3AgPSBwcm9wc1t2YXJpYWJsZU5hbWVdO1xuICAgICAgICBpZiAodHlwZW9mIHZhcmlhYmxlUHJvcCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHZhcmlhYmxlc1t2YXJpYWJsZU5hbWVdID0gdmFyaWFibGVQcm9wO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUua2luZCAhPT0gJ05vbk51bGxUeXBlJykge1xuICAgICAgICAgICAgdmFyaWFibGVzW3ZhcmlhYmxlTmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhcmlhYmxlcztcbn1cbnZhciBHcmFwaFFMQmFzZSA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEdyYXBoUUxCYXNlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEdyYXBoUUxCYXNlKHByb3BzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIHByb3BzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy53aXRoUmVmID0gZmFsc2U7XG4gICAgICAgIF90aGlzLnNldFdyYXBwZWRJbnN0YW5jZSA9IF90aGlzLnNldFdyYXBwZWRJbnN0YW5jZS5iaW5kKF90aGlzKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBHcmFwaFFMQmFzZS5wcm90b3R5cGUuZ2V0V3JhcHBlZEluc3RhbmNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQodGhpcy53aXRoUmVmLCAyKSA6IGludmFyaWFudCh0aGlzLndpdGhSZWYsIFwiVG8gYWNjZXNzIHRoZSB3cmFwcGVkIGluc3RhbmNlLCB5b3UgbmVlZCB0byBzcGVjaWZ5IFwiICtcbiAgICAgICAgICAgIFwieyB3aXRoUmVmOiB0cnVlIH0gaW4gdGhlIG9wdGlvbnNcIik7XG4gICAgICAgIHJldHVybiB0aGlzLndyYXBwZWRJbnN0YW5jZTtcbiAgICB9O1xuICAgIEdyYXBoUUxCYXNlLnByb3RvdHlwZS5zZXRXcmFwcGVkSW5zdGFuY2UgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgIHRoaXMud3JhcHBlZEluc3RhbmNlID0gcmVmO1xuICAgIH07XG4gICAgcmV0dXJuIEdyYXBoUUxCYXNlO1xufShSZWFjdC5Db21wb25lbnQpKTtcblxuZnVuY3Rpb24gd2l0aFF1ZXJ5KGRvY3VtZW50LCBvcGVyYXRpb25PcHRpb25zKSB7XG4gICAgaWYgKG9wZXJhdGlvbk9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcGVyYXRpb25PcHRpb25zID0ge307IH1cbiAgICB2YXIgb3BlcmF0aW9uID0gcGFyc2VyKGRvY3VtZW50KTtcbiAgICB2YXIgX2EgPSBvcGVyYXRpb25PcHRpb25zLm9wdGlvbnMsIG9wdGlvbnMgPSBfYSA9PT0gdm9pZCAwID8gZGVmYXVsdE1hcFByb3BzVG9PcHRpb25zIDogX2EsIF9iID0gb3BlcmF0aW9uT3B0aW9ucy5za2lwLCBza2lwID0gX2IgPT09IHZvaWQgMCA/IGRlZmF1bHRNYXBQcm9wc1RvU2tpcCA6IF9iLCBfYyA9IG9wZXJhdGlvbk9wdGlvbnMuYWxpYXMsIGFsaWFzID0gX2MgPT09IHZvaWQgMCA/ICdBcG9sbG8nIDogX2M7XG4gICAgdmFyIG1hcFByb3BzVG9PcHRpb25zID0gb3B0aW9ucztcbiAgICBpZiAodHlwZW9mIG1hcFByb3BzVG9PcHRpb25zICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG1hcFByb3BzVG9PcHRpb25zID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gb3B0aW9uczsgfTtcbiAgICB9XG4gICAgdmFyIG1hcFByb3BzVG9Ta2lwID0gc2tpcDtcbiAgICBpZiAodHlwZW9mIG1hcFByb3BzVG9Ta2lwICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG1hcFByb3BzVG9Ta2lwID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gc2tpcDsgfTtcbiAgICB9XG4gICAgdmFyIGxhc3RSZXN1bHRQcm9wcztcbiAgICByZXR1cm4gZnVuY3Rpb24gKFdyYXBwZWRDb21wb25lbnQpIHtcbiAgICAgICAgdmFyIGdyYXBoUUxEaXNwbGF5TmFtZSA9IGFsaWFzICsgXCIoXCIgKyBnZXREaXNwbGF5TmFtZShXcmFwcGVkQ29tcG9uZW50KSArIFwiKVwiO1xuICAgICAgICB2YXIgR3JhcGhRTCA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgICAgICAgICBfX2V4dGVuZHMoR3JhcGhRTCwgX3N1cGVyKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIEdyYXBoUUwoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgR3JhcGhRTC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIHByb3BzID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgICAgICB2YXIgc2hvdWxkU2tpcCA9IG1hcFByb3BzVG9Ta2lwKHByb3BzKTtcbiAgICAgICAgICAgICAgICB2YXIgb3B0cyA9IHNob3VsZFNraXBcbiAgICAgICAgICAgICAgICAgICAgPyBPYmplY3QuY3JlYXRlKG51bGwpXG4gICAgICAgICAgICAgICAgICAgIDogX19hc3NpZ24oe30sIG1hcFByb3BzVG9PcHRpb25zKHByb3BzKSk7XG4gICAgICAgICAgICAgICAgaWYgKCFzaG91bGRTa2lwICYmICFvcHRzLnZhcmlhYmxlcyAmJiBvcGVyYXRpb24udmFyaWFibGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0cy52YXJpYWJsZXMgPSBjYWxjdWxhdGVWYXJpYWJsZXNGcm9tUHJvcHMob3BlcmF0aW9uLCBwcm9wcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChRdWVyeSwgX19hc3NpZ24oe30sIG9wdHMsIHsgZGlzcGxheU5hbWU6IGdyYXBoUUxEaXNwbGF5TmFtZSwgc2tpcDogc2hvdWxkU2tpcCwgcXVlcnk6IGRvY3VtZW50IH0pLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9iLCBfYztcbiAgICAgICAgICAgICAgICAgICAgdmFyIF8gPSBfYS5jbGllbnQsIGRhdGEgPSBfYS5kYXRhLCByID0gX19yZXN0KF9hLCBbXCJjbGllbnRcIiwgXCJkYXRhXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhdGlvbk9wdGlvbnMud2l0aFJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMud2l0aFJlZiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcyA9IE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBfdGhpcy5zZXRXcmFwcGVkSW5zdGFuY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRTa2lwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoV3JhcHBlZENvbXBvbmVudCwgX19hc3NpZ24oe30sIHByb3BzLCB7fSkpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbihyLCBkYXRhIHx8IHt9KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBvcGVyYXRpb25PcHRpb25zLm5hbWUgfHwgJ2RhdGEnO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGRQcm9wcyA9IChfYiA9IHt9LCBfYltuYW1lXSA9IHJlc3VsdCwgX2IpO1xuICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmF0aW9uT3B0aW9ucy5wcm9wcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5ld1Jlc3VsdCA9IChfYyA9IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jW25hbWVdID0gcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jLm93blByb3BzID0gcHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFJlc3VsdFByb3BzID0gb3BlcmF0aW9uT3B0aW9ucy5wcm9wcyhuZXdSZXN1bHQsIGxhc3RSZXN1bHRQcm9wcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFByb3BzID0gbGFzdFJlc3VsdFByb3BzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChXcmFwcGVkQ29tcG9uZW50LCBfX2Fzc2lnbih7fSwgcHJvcHMsIGNoaWxkUHJvcHMpKSk7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIEdyYXBoUUwuZGlzcGxheU5hbWUgPSBncmFwaFFMRGlzcGxheU5hbWU7XG4gICAgICAgICAgICBHcmFwaFFMLldyYXBwZWRDb21wb25lbnQgPSBXcmFwcGVkQ29tcG9uZW50O1xuICAgICAgICAgICAgcmV0dXJuIEdyYXBoUUw7XG4gICAgICAgIH0oR3JhcGhRTEJhc2UpKTtcbiAgICAgICAgcmV0dXJuIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKEdyYXBoUUwsIFdyYXBwZWRDb21wb25lbnQsIHt9KTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiB3aXRoTXV0YXRpb24oZG9jdW1lbnQsIG9wZXJhdGlvbk9wdGlvbnMpIHtcbiAgICBpZiAob3BlcmF0aW9uT3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wZXJhdGlvbk9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBvcGVyYXRpb24gPSBwYXJzZXIoZG9jdW1lbnQpO1xuICAgIHZhciBfYSA9IG9wZXJhdGlvbk9wdGlvbnMub3B0aW9ucywgb3B0aW9ucyA9IF9hID09PSB2b2lkIDAgPyBkZWZhdWx0TWFwUHJvcHNUb09wdGlvbnMgOiBfYSwgX2IgPSBvcGVyYXRpb25PcHRpb25zLmFsaWFzLCBhbGlhcyA9IF9iID09PSB2b2lkIDAgPyAnQXBvbGxvJyA6IF9iO1xuICAgIHZhciBtYXBQcm9wc1RvT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgaWYgKHR5cGVvZiBtYXBQcm9wc1RvT3B0aW9ucyAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgbWFwUHJvcHNUb09wdGlvbnMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBvcHRpb25zOyB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoV3JhcHBlZENvbXBvbmVudCkge1xuICAgICAgICB2YXIgZ3JhcGhRTERpc3BsYXlOYW1lID0gYWxpYXMgKyBcIihcIiArIGdldERpc3BsYXlOYW1lKFdyYXBwZWRDb21wb25lbnQpICsgXCIpXCI7XG4gICAgICAgIHZhciBHcmFwaFFMID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICAgICAgICAgIF9fZXh0ZW5kcyhHcmFwaFFMLCBfc3VwZXIpO1xuICAgICAgICAgICAgZnVuY3Rpb24gR3JhcGhRTCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBHcmFwaFFMLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHByb3BzID0gdGhpcy5wcm9wcztcbiAgICAgICAgICAgICAgICB2YXIgb3B0cyA9IG1hcFByb3BzVG9PcHRpb25zKHByb3BzKTtcbiAgICAgICAgICAgICAgICBpZiAob3BlcmF0aW9uT3B0aW9ucy53aXRoUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2l0aFJlZiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzID0gT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogdGhpcy5zZXRXcmFwcGVkSW5zdGFuY2VcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghb3B0cy52YXJpYWJsZXMgJiYgb3BlcmF0aW9uLnZhcmlhYmxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdHMudmFyaWFibGVzID0gY2FsY3VsYXRlVmFyaWFibGVzRnJvbVByb3BzKG9wZXJhdGlvbiwgcHJvcHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoTXV0YXRpb24sIF9fYXNzaWduKHsgaWdub3JlUmVzdWx0czogdHJ1ZSB9LCBvcHRzLCB7IG11dGF0aW9uOiBkb2N1bWVudCB9KSwgZnVuY3Rpb24gKG11dGF0ZSwgX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9iLCBfYztcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBfYS5kYXRhLCByID0gX19yZXN0KF9hLCBbXCJkYXRhXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IE9iamVjdC5hc3NpZ24ociwgZGF0YSB8fCB7fSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gb3BlcmF0aW9uT3B0aW9ucy5uYW1lIHx8ICdtdXRhdGUnO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0TmFtZSA9IG9wZXJhdGlvbk9wdGlvbnMubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBuYW1lICsgXCJSZXN1bHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiAncmVzdWx0JztcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkUHJvcHMgPSAoX2IgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9iW25hbWVdID0gbXV0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2JbcmVzdWx0TmFtZV0gPSByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBfYik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYXRpb25PcHRpb25zLnByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV3UmVzdWx0ID0gKF9jID0ge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NbbmFtZV0gPSBtdXRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NbcmVzdWx0TmFtZV0gPSByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Mub3duUHJvcHMgPSBwcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFByb3BzID0gb3BlcmF0aW9uT3B0aW9ucy5wcm9wcyhuZXdSZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFdyYXBwZWRDb21wb25lbnQsIF9fYXNzaWduKHt9LCBwcm9wcywgY2hpbGRQcm9wcykpO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBHcmFwaFFMLmRpc3BsYXlOYW1lID0gZ3JhcGhRTERpc3BsYXlOYW1lO1xuICAgICAgICAgICAgR3JhcGhRTC5XcmFwcGVkQ29tcG9uZW50ID0gV3JhcHBlZENvbXBvbmVudDtcbiAgICAgICAgICAgIHJldHVybiBHcmFwaFFMO1xuICAgICAgICB9KEdyYXBoUUxCYXNlKSk7XG4gICAgICAgIHJldHVybiBob2lzdE5vblJlYWN0U3RhdGljcyhHcmFwaFFMLCBXcmFwcGVkQ29tcG9uZW50LCB7fSk7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gd2l0aFN1YnNjcmlwdGlvbihkb2N1bWVudCwgb3BlcmF0aW9uT3B0aW9ucykge1xuICAgIGlmIChvcGVyYXRpb25PcHRpb25zID09PSB2b2lkIDApIHsgb3BlcmF0aW9uT3B0aW9ucyA9IHt9OyB9XG4gICAgdmFyIG9wZXJhdGlvbiA9IHBhcnNlcihkb2N1bWVudCk7XG4gICAgdmFyIF9hID0gb3BlcmF0aW9uT3B0aW9ucy5vcHRpb25zLCBvcHRpb25zID0gX2EgPT09IHZvaWQgMCA/IGRlZmF1bHRNYXBQcm9wc1RvT3B0aW9ucyA6IF9hLCBfYiA9IG9wZXJhdGlvbk9wdGlvbnMuc2tpcCwgc2tpcCA9IF9iID09PSB2b2lkIDAgPyBkZWZhdWx0TWFwUHJvcHNUb1NraXAgOiBfYiwgX2MgPSBvcGVyYXRpb25PcHRpb25zLmFsaWFzLCBhbGlhcyA9IF9jID09PSB2b2lkIDAgPyAnQXBvbGxvJyA6IF9jLCBzaG91bGRSZXN1YnNjcmliZSA9IG9wZXJhdGlvbk9wdGlvbnMuc2hvdWxkUmVzdWJzY3JpYmU7XG4gICAgdmFyIG1hcFByb3BzVG9PcHRpb25zID0gb3B0aW9ucztcbiAgICBpZiAodHlwZW9mIG1hcFByb3BzVG9PcHRpb25zICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICBtYXBQcm9wc1RvT3B0aW9ucyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9wdGlvbnM7IH07XG4gICAgdmFyIG1hcFByb3BzVG9Ta2lwID0gc2tpcDtcbiAgICBpZiAodHlwZW9mIG1hcFByb3BzVG9Ta2lwICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICBtYXBQcm9wc1RvU2tpcCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNraXA7IH07XG4gICAgdmFyIGxhc3RSZXN1bHRQcm9wcztcbiAgICByZXR1cm4gZnVuY3Rpb24gKFdyYXBwZWRDb21wb25lbnQpIHtcbiAgICAgICAgdmFyIGdyYXBoUUxEaXNwbGF5TmFtZSA9IGFsaWFzICsgXCIoXCIgKyBnZXREaXNwbGF5TmFtZShXcmFwcGVkQ29tcG9uZW50KSArIFwiKVwiO1xuICAgICAgICB2YXIgR3JhcGhRTCA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgICAgICAgICBfX2V4dGVuZHMoR3JhcGhRTCwgX3N1cGVyKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIEdyYXBoUUwocHJvcHMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwcm9wcykgfHwgdGhpcztcbiAgICAgICAgICAgICAgICBfdGhpcy5zdGF0ZSA9IHsgcmVzdWJzY3JpYmU6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgR3JhcGhRTC5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBhdGUgPSBmdW5jdGlvbiAocHJldlByb3BzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNob3VsZFJlc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWJzY3JpYmU6IHNob3VsZFJlc3Vic2NyaWJlKHByZXZQcm9wcywgdGhpcy5wcm9wcylcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIEdyYXBoUUwucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciBwcm9wcyA9IHRoaXMucHJvcHM7XG4gICAgICAgICAgICAgICAgdmFyIHNob3VsZFNraXAgPSBtYXBQcm9wc1RvU2tpcChwcm9wcyk7XG4gICAgICAgICAgICAgICAgdmFyIG9wdHMgPSBzaG91bGRTa2lwXG4gICAgICAgICAgICAgICAgICAgID8gT2JqZWN0LmNyZWF0ZShudWxsKVxuICAgICAgICAgICAgICAgICAgICA6IG1hcFByb3BzVG9PcHRpb25zKHByb3BzKTtcbiAgICAgICAgICAgICAgICBpZiAoIXNob3VsZFNraXAgJiYgIW9wdHMudmFyaWFibGVzICYmIG9wZXJhdGlvbi52YXJpYWJsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBvcHRzLnZhcmlhYmxlcyA9IGNhbGN1bGF0ZVZhcmlhYmxlc0Zyb21Qcm9wcyhvcGVyYXRpb24sIHByb3BzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFN1YnNjcmlwdGlvbiwgX19hc3NpZ24oe30sIG9wdHMsIHsgZGlzcGxheU5hbWU6IGdyYXBoUUxEaXNwbGF5TmFtZSwgc2tpcDogc2hvdWxkU2tpcCwgc3Vic2NyaXB0aW9uOiBkb2N1bWVudCwgc2hvdWxkUmVzdWJzY3JpYmU6IHRoaXMuc3RhdGUucmVzdWJzY3JpYmUgfSksIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2IsIF9jO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IF9hLmRhdGEsIHIgPSBfX3Jlc3QoX2EsIFtcImRhdGFcIl0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmF0aW9uT3B0aW9ucy53aXRoUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy53aXRoUmVmID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzID0gT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY6IF90aGlzLnNldFdyYXBwZWRJbnN0YW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFNraXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChXcmFwcGVkQ29tcG9uZW50LCBfX2Fzc2lnbih7fSwgcHJvcHMsIHt9KSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBPYmplY3QuYXNzaWduKHIsIGRhdGEgfHwge30pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IG9wZXJhdGlvbk9wdGlvbnMubmFtZSB8fCAnZGF0YSc7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZFByb3BzID0gKF9iID0ge30sIF9iW25hbWVdID0gcmVzdWx0LCBfYik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYXRpb25PcHRpb25zLnByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV3UmVzdWx0ID0gKF9jID0ge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NbbmFtZV0gPSByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Mub3duUHJvcHMgPSBwcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0UmVzdWx0UHJvcHMgPSBvcGVyYXRpb25PcHRpb25zLnByb3BzKG5ld1Jlc3VsdCwgbGFzdFJlc3VsdFByb3BzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkUHJvcHMgPSBsYXN0UmVzdWx0UHJvcHM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFdyYXBwZWRDb21wb25lbnQsIF9fYXNzaWduKHt9LCBwcm9wcywgY2hpbGRQcm9wcykpKTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgR3JhcGhRTC5kaXNwbGF5TmFtZSA9IGdyYXBoUUxEaXNwbGF5TmFtZTtcbiAgICAgICAgICAgIEdyYXBoUUwuV3JhcHBlZENvbXBvbmVudCA9IFdyYXBwZWRDb21wb25lbnQ7XG4gICAgICAgICAgICByZXR1cm4gR3JhcGhRTDtcbiAgICAgICAgfShHcmFwaFFMQmFzZSkpO1xuICAgICAgICByZXR1cm4gaG9pc3ROb25SZWFjdFN0YXRpY3MoR3JhcGhRTCwgV3JhcHBlZENvbXBvbmVudCwge30pO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGdyYXBocWwoZG9jdW1lbnQsIG9wZXJhdGlvbk9wdGlvbnMpIHtcbiAgICBpZiAob3BlcmF0aW9uT3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wZXJhdGlvbk9wdGlvbnMgPSB7fTsgfVxuICAgIHN3aXRjaCAocGFyc2VyKGRvY3VtZW50KS50eXBlKSB7XG4gICAgICAgIGNhc2UgRG9jdW1lbnRUeXBlLk11dGF0aW9uOlxuICAgICAgICAgICAgcmV0dXJuIHdpdGhNdXRhdGlvbihkb2N1bWVudCwgb3BlcmF0aW9uT3B0aW9ucyk7XG4gICAgICAgIGNhc2UgRG9jdW1lbnRUeXBlLlN1YnNjcmlwdGlvbjpcbiAgICAgICAgICAgIHJldHVybiB3aXRoU3Vic2NyaXB0aW9uKGRvY3VtZW50LCBvcGVyYXRpb25PcHRpb25zKTtcbiAgICAgICAgY2FzZSBEb2N1bWVudFR5cGUuUXVlcnk6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gd2l0aFF1ZXJ5KGRvY3VtZW50LCBvcGVyYXRpb25PcHRpb25zKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldERpc3BsYXlOYW1lJDEoV3JhcHBlZENvbXBvbmVudCkge1xuICAgIHJldHVybiBXcmFwcGVkQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IFdyYXBwZWRDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50Jztcbn1cbmZ1bmN0aW9uIHdpdGhBcG9sbG8oV3JhcHBlZENvbXBvbmVudCwgb3BlcmF0aW9uT3B0aW9ucykge1xuICAgIGlmIChvcGVyYXRpb25PcHRpb25zID09PSB2b2lkIDApIHsgb3BlcmF0aW9uT3B0aW9ucyA9IHt9OyB9XG4gICAgdmFyIHdpdGhEaXNwbGF5TmFtZSA9IFwid2l0aEFwb2xsbyhcIiArIGdldERpc3BsYXlOYW1lJDEoV3JhcHBlZENvbXBvbmVudCkgKyBcIilcIjtcbiAgICB2YXIgV2l0aEFwb2xsbyA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgICAgIF9fZXh0ZW5kcyhXaXRoQXBvbGxvLCBfc3VwZXIpO1xuICAgICAgICBmdW5jdGlvbiBXaXRoQXBvbGxvKHByb3BzKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwcm9wcykgfHwgdGhpcztcbiAgICAgICAgICAgIF90aGlzLnNldFdyYXBwZWRJbnN0YW5jZSA9IF90aGlzLnNldFdyYXBwZWRJbnN0YW5jZS5iaW5kKF90aGlzKTtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcztcbiAgICAgICAgfVxuICAgICAgICBXaXRoQXBvbGxvLnByb3RvdHlwZS5nZXRXcmFwcGVkSW5zdGFuY2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQob3BlcmF0aW9uT3B0aW9ucy53aXRoUmVmLCAxKSA6IGludmFyaWFudChvcGVyYXRpb25PcHRpb25zLndpdGhSZWYsIFwiVG8gYWNjZXNzIHRoZSB3cmFwcGVkIGluc3RhbmNlLCB5b3UgbmVlZCB0byBzcGVjaWZ5IFwiICtcbiAgICAgICAgICAgICAgICBcInsgd2l0aFJlZjogdHJ1ZSB9IGluIHRoZSBvcHRpb25zXCIpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JhcHBlZEluc3RhbmNlO1xuICAgICAgICB9O1xuICAgICAgICBXaXRoQXBvbGxvLnByb3RvdHlwZS5zZXRXcmFwcGVkSW5zdGFuY2UgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICB0aGlzLndyYXBwZWRJbnN0YW5jZSA9IHJlZjtcbiAgICAgICAgfTtcbiAgICAgICAgV2l0aEFwb2xsby5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChBcG9sbG9Db25zdW1lciwgbnVsbCwgZnVuY3Rpb24gKGNsaWVudCkge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wcyA9IE9iamVjdC5hc3NpZ24oe30sIF90aGlzLnByb3BzLCB7XG4gICAgICAgICAgICAgICAgICAgIGNsaWVudDogY2xpZW50LFxuICAgICAgICAgICAgICAgICAgICByZWY6IG9wZXJhdGlvbk9wdGlvbnMud2l0aFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBfdGhpcy5zZXRXcmFwcGVkSW5zdGFuY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoV3JhcHBlZENvbXBvbmVudCwgX19hc3NpZ24oe30sIHByb3BzKSk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH07XG4gICAgICAgIFdpdGhBcG9sbG8uZGlzcGxheU5hbWUgPSB3aXRoRGlzcGxheU5hbWU7XG4gICAgICAgIFdpdGhBcG9sbG8uV3JhcHBlZENvbXBvbmVudCA9IFdyYXBwZWRDb21wb25lbnQ7XG4gICAgICAgIHJldHVybiBXaXRoQXBvbGxvO1xuICAgIH0oUmVhY3QuQ29tcG9uZW50KSk7XG4gICAgcmV0dXJuIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKFdpdGhBcG9sbG8sIFdyYXBwZWRDb21wb25lbnQsIHt9KTtcbn1cblxuZXhwb3J0IHsgZ3JhcGhxbCwgd2l0aEFwb2xsbywgd2l0aE11dGF0aW9uLCB3aXRoUXVlcnksIHdpdGhTdWJzY3JpcHRpb24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlYWN0LWhvYy5lc20uanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/react-hoc/lib/react-hoc.esm.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/react-hooks/lib/react-hooks.esm.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@apollo/react-hooks/lib/react-hooks.esm.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloConsumer\": function() { return /* reexport safe */ _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.ApolloConsumer; },\n/* harmony export */   \"ApolloProvider\": function() { return /* reexport safe */ _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.ApolloProvider; },\n/* harmony export */   \"RenderPromises\": function() { return /* binding */ RenderPromises; },\n/* harmony export */   \"getApolloContext\": function() { return /* reexport safe */ _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.getApolloContext; },\n/* harmony export */   \"resetApolloContext\": function() { return /* reexport safe */ _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.resetApolloContext; },\n/* harmony export */   \"useApolloClient\": function() { return /* binding */ useApolloClient; },\n/* harmony export */   \"useLazyQuery\": function() { return /* binding */ useLazyQuery; },\n/* harmony export */   \"useMutation\": function() { return /* binding */ useMutation; },\n/* harmony export */   \"useQuery\": function() { return /* binding */ useQuery; },\n/* harmony export */   \"useSubscription\": function() { return /* binding */ useSubscription; }\n/* harmony export */ });\n/* harmony import */ var _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @apollo/react-common */ \"./node_modules/@apollo/react-common/lib/react-common.esm.js\");\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var apollo_client__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! apollo-client */ \"./node_modules/apollo-client/bundle.esm.js\");\n/* harmony import */ var _wry_equality__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wry/equality */ \"./node_modules/@wry/equality/lib/equality.esm.js\");\n/* harmony import */ var ts_invariant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ts-invariant */ \"./node_modules/ts-invariant/lib/invariant.esm.js\");\n\n\n\n\n\n\n\n\nvar OperationData = (function () {\n    function OperationData(options, context) {\n        this.isMounted = false;\n        this.previousOptions = {};\n        this.context = {};\n        this.options = {};\n        this.options = options || {};\n        this.context = context || {};\n    }\n    OperationData.prototype.getOptions = function () {\n        return this.options;\n    };\n    OperationData.prototype.setOptions = function (newOptions, storePrevious) {\n        if (storePrevious === void 0) { storePrevious = false; }\n        if (storePrevious && !(0,_wry_equality__WEBPACK_IMPORTED_MODULE_2__.equal)(this.options, newOptions)) {\n            this.previousOptions = this.options;\n        }\n        this.options = newOptions;\n    };\n    OperationData.prototype.unmount = function () {\n        this.isMounted = false;\n    };\n    OperationData.prototype.refreshClient = function () {\n        var client = (this.options && this.options.client) ||\n            (this.context && this.context.client);\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_3__.invariant)(!!client, 'Could not find \"client\" in the context or passed in as an option. ' +\n            'Wrap the root component in an <ApolloProvider>, or pass an ' +\n            'ApolloClient instance in via options.');\n        var isNew = false;\n        if (client !== this.client) {\n            isNew = true;\n            this.client = client;\n            this.cleanup();\n        }\n        return {\n            client: this.client,\n            isNew: isNew\n        };\n    };\n    OperationData.prototype.verifyDocumentType = function (document, type) {\n        var operation = (0,_apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.parser)(document);\n        var requiredOperationName = (0,_apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.operationName)(type);\n        var usedOperationName = (0,_apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.operationName)(operation.type);\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_3__.invariant)(operation.type === type, \"Running a \" + requiredOperationName + \" requires a graphql \" +\n            (requiredOperationName + \", but a \" + usedOperationName + \" was used instead.\"));\n    };\n    return OperationData;\n}());\n\nvar QueryData = (function (_super) {\n    (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__extends)(QueryData, _super);\n    function QueryData(_a) {\n        var options = _a.options, context = _a.context, onNewData = _a.onNewData;\n        var _this = _super.call(this, options, context) || this;\n        _this.previousData = {};\n        _this.currentObservable = {};\n        _this.runLazy = false;\n        _this.runLazyQuery = function (options) {\n            _this.cleanup();\n            _this.runLazy = true;\n            _this.lazyOptions = options;\n            _this.onNewData();\n        };\n        _this.getExecuteResult = function () {\n            var result = _this.getQueryResult();\n            _this.startQuerySubscription();\n            return result;\n        };\n        _this.obsRefetch = function (variables) {\n            return _this.currentObservable.query.refetch(variables);\n        };\n        _this.obsFetchMore = function (fetchMoreOptions) { return _this.currentObservable.query.fetchMore(fetchMoreOptions); };\n        _this.obsUpdateQuery = function (mapFn) { return _this.currentObservable.query.updateQuery(mapFn); };\n        _this.obsStartPolling = function (pollInterval) {\n            _this.currentObservable &&\n                _this.currentObservable.query &&\n                _this.currentObservable.query.startPolling(pollInterval);\n        };\n        _this.obsStopPolling = function () {\n            _this.currentObservable &&\n                _this.currentObservable.query &&\n                _this.currentObservable.query.stopPolling();\n        };\n        _this.obsSubscribeToMore = function (options) { return _this.currentObservable.query.subscribeToMore(options); };\n        _this.onNewData = onNewData;\n        return _this;\n    }\n    QueryData.prototype.execute = function () {\n        this.refreshClient();\n        var _a = this.getOptions(), skip = _a.skip, query = _a.query;\n        if (skip || query !== this.previousData.query) {\n            this.removeQuerySubscription();\n            this.previousData.query = query;\n        }\n        this.updateObservableQuery();\n        if (this.isMounted)\n            this.startQuerySubscription();\n        return this.getExecuteSsrResult() || this.getExecuteResult();\n    };\n    QueryData.prototype.executeLazy = function () {\n        return !this.runLazy\n            ? [\n                this.runLazyQuery,\n                {\n                    loading: false,\n                    networkStatus: apollo_client__WEBPACK_IMPORTED_MODULE_5__.NetworkStatus.ready,\n                    called: false,\n                    data: undefined,\n                },\n            ]\n            : [this.runLazyQuery, this.execute()];\n    };\n    QueryData.prototype.fetchData = function () {\n        var options = this.getOptions();\n        if (options.skip || options.ssr === false)\n            return false;\n        var obs = this.currentObservable.query;\n        var currentResult = obs.getCurrentResult();\n        return currentResult.loading ? obs.result() : false;\n    };\n    QueryData.prototype.afterExecute = function (_a) {\n        var _b = (_a === void 0 ? {} : _a).lazy, lazy = _b === void 0 ? false : _b;\n        this.isMounted = true;\n        if (!lazy || this.runLazy) {\n            this.handleErrorOrCompleted();\n        }\n        this.previousOptions = this.getOptions();\n        return this.unmount.bind(this);\n    };\n    QueryData.prototype.cleanup = function () {\n        this.removeQuerySubscription();\n        delete this.currentObservable.query;\n        delete this.previousData.result;\n    };\n    QueryData.prototype.getOptions = function () {\n        var options = _super.prototype.getOptions.call(this);\n        if (this.lazyOptions) {\n            options.variables = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, options.variables), this.lazyOptions.variables);\n            options.context = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, options.context), this.lazyOptions.context);\n        }\n        if (this.runLazy) {\n            delete options.skip;\n        }\n        return options;\n    };\n    QueryData.prototype.ssrInitiated = function () {\n        return this.context && this.context.renderPromises;\n    };\n    QueryData.prototype.getExecuteSsrResult = function () {\n        var ssrDisabled = this.getOptions().ssr === false;\n        var fetchDisabled = this.refreshClient().client.disableNetworkFetches;\n        var ssrLoading = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({ loading: true, networkStatus: apollo_client__WEBPACK_IMPORTED_MODULE_5__.NetworkStatus.loading, called: true, data: undefined, stale: false, client: this.client }, this.observableQueryFields());\n        if (ssrDisabled && (this.ssrInitiated() || fetchDisabled)) {\n            this.previousData.result = ssrLoading;\n            return ssrLoading;\n        }\n        var result;\n        if (this.ssrInitiated()) {\n            result =\n                this.context.renderPromises.addQueryPromise(this, this.getExecuteResult) || ssrLoading;\n        }\n        return result;\n    };\n    QueryData.prototype.prepareObservableQueryOptions = function () {\n        var options = this.getOptions();\n        this.verifyDocumentType(options.query, _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.DocumentType.Query);\n        var displayName = options.displayName || 'Query';\n        if (this.ssrInitiated() &&\n            (options.fetchPolicy === 'network-only' ||\n                options.fetchPolicy === 'cache-and-network')) {\n            options.fetchPolicy = 'cache-first';\n        }\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, options), { displayName: displayName, context: options.context, metadata: { reactComponent: { displayName: displayName } } });\n    };\n    QueryData.prototype.initializeObservableQuery = function () {\n        var _a, _b;\n        if (this.ssrInitiated()) {\n            this.currentObservable.query = this.context.renderPromises.getSSRObservable(this.getOptions());\n        }\n        if (!this.currentObservable.query) {\n            var observableQueryOptions = this.prepareObservableQueryOptions();\n            this.previousData.observableQueryOptions = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, observableQueryOptions), { children: null });\n            this.currentObservable.query = this.refreshClient().client.watchQuery((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, observableQueryOptions));\n            if (this.ssrInitiated()) {\n                (_b = (_a = this.context) === null || _a === void 0 ? void 0 : _a.renderPromises) === null || _b === void 0 ? void 0 : _b.registerSSRObservable(this.currentObservable.query, observableQueryOptions);\n            }\n        }\n    };\n    QueryData.prototype.updateObservableQuery = function () {\n        if (!this.currentObservable.query) {\n            this.initializeObservableQuery();\n            return;\n        }\n        var newObservableQueryOptions = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, this.prepareObservableQueryOptions()), { children: null });\n        if (!(0,_wry_equality__WEBPACK_IMPORTED_MODULE_2__.equal)(newObservableQueryOptions, this.previousData.observableQueryOptions)) {\n            this.previousData.observableQueryOptions = newObservableQueryOptions;\n            this.currentObservable\n                .query.setOptions(newObservableQueryOptions)\n                .catch(function () { });\n        }\n    };\n    QueryData.prototype.startQuerySubscription = function () {\n        var _this = this;\n        if (this.currentObservable.subscription || this.getOptions().skip)\n            return;\n        var obsQuery = this.currentObservable.query;\n        this.currentObservable.subscription = obsQuery.subscribe({\n            next: function (_a) {\n                var loading = _a.loading, networkStatus = _a.networkStatus, data = _a.data;\n                var previousResult = _this.previousData.result;\n                if (previousResult &&\n                    previousResult.loading === loading &&\n                    previousResult.networkStatus === networkStatus &&\n                    (0,_wry_equality__WEBPACK_IMPORTED_MODULE_2__.equal)(previousResult.data, data)) {\n                    return;\n                }\n                _this.onNewData();\n            },\n            error: function (error) {\n                _this.resubscribeToQuery();\n                if (!error.hasOwnProperty('graphQLErrors'))\n                    throw error;\n                var previousResult = _this.previousData.result;\n                if ((previousResult && previousResult.loading) ||\n                    !(0,_wry_equality__WEBPACK_IMPORTED_MODULE_2__.equal)(error, _this.previousData.error)) {\n                    _this.previousData.error = error;\n                    _this.onNewData();\n                }\n            },\n        });\n    };\n    QueryData.prototype.resubscribeToQuery = function () {\n        this.removeQuerySubscription();\n        var lastError = this.currentObservable.query.getLastError();\n        var lastResult = this.currentObservable.query.getLastResult();\n        this.currentObservable.query.resetLastResults();\n        this.startQuerySubscription();\n        Object.assign(this.currentObservable.query, {\n            lastError: lastError,\n            lastResult: lastResult,\n        });\n    };\n    QueryData.prototype.getQueryResult = function () {\n        var result = this.observableQueryFields();\n        var options = this.getOptions();\n        if (options.skip) {\n            result = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, result), { data: undefined, error: undefined, loading: false, called: true });\n        }\n        else {\n            var currentResult = this.currentObservable.query.getCurrentResult();\n            var loading = currentResult.loading, partial = currentResult.partial, networkStatus = currentResult.networkStatus, errors = currentResult.errors;\n            var error = currentResult.error, data = currentResult.data;\n            if (errors && errors.length > 0) {\n                error = new apollo_client__WEBPACK_IMPORTED_MODULE_5__.ApolloError({ graphQLErrors: errors });\n            }\n            result = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, result), { loading: loading,\n                networkStatus: networkStatus,\n                error: error, called: true });\n            if (loading) {\n                var previousData = this.previousData.result && this.previousData.result.data;\n                result.data =\n                    previousData && data\n                        ? (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, previousData), data) : previousData || data;\n            }\n            else if (error) {\n                Object.assign(result, {\n                    data: (this.currentObservable.query.getLastResult() || {})\n                        .data,\n                });\n            }\n            else {\n                var fetchPolicy = this.currentObservable.query.options.fetchPolicy;\n                var partialRefetch = options.partialRefetch;\n                if (partialRefetch &&\n                    !data &&\n                    partial &&\n                    fetchPolicy !== 'cache-only') {\n                    Object.assign(result, {\n                        loading: true,\n                        networkStatus: apollo_client__WEBPACK_IMPORTED_MODULE_5__.NetworkStatus.loading,\n                    });\n                    result.refetch();\n                    return result;\n                }\n                result.data = data;\n            }\n        }\n        result.client = this.client;\n        this.previousData.loading =\n            (this.previousData.result && this.previousData.result.loading) || false;\n        this.previousData.result = result;\n        this.currentObservable.query &&\n            this.currentObservable.query.resetQueryStoreErrors();\n        return result;\n    };\n    QueryData.prototype.handleErrorOrCompleted = function () {\n        var obsQuery = this.currentObservable.query;\n        if (!obsQuery || !this.previousData.result)\n            return;\n        var _a = this.previousData.result, data = _a.data, loading = _a.loading, error = _a.error;\n        if (!loading) {\n            var _b = this.getOptions(), query = _b.query, variables = _b.variables, onCompleted = _b.onCompleted, onError = _b.onError;\n            if (this.previousOptions &&\n                !this.previousData.loading &&\n                (0,_wry_equality__WEBPACK_IMPORTED_MODULE_2__.equal)(this.previousOptions.query, query) &&\n                (0,_wry_equality__WEBPACK_IMPORTED_MODULE_2__.equal)(this.previousOptions.variables, variables)) {\n                return;\n            }\n            if (onCompleted && !error) {\n                onCompleted(data);\n            }\n            else if (onError && error) {\n                onError(error);\n            }\n        }\n    };\n    QueryData.prototype.removeQuerySubscription = function () {\n        if (this.currentObservable.subscription) {\n            this.currentObservable.subscription.unsubscribe();\n            delete this.currentObservable.subscription;\n        }\n    };\n    QueryData.prototype.observableQueryFields = function () {\n        var observable = this.currentObservable.query;\n        return {\n            variables: observable.variables,\n            refetch: this.obsRefetch,\n            fetchMore: this.obsFetchMore,\n            updateQuery: this.obsUpdateQuery,\n            startPolling: this.obsStartPolling,\n            stopPolling: this.obsStopPolling,\n            subscribeToMore: this.obsSubscribeToMore,\n        };\n    };\n    return QueryData;\n}(OperationData));\n\nfunction useDeepMemo(memoFn, key) {\n    var ref = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)();\n    if (!ref.current || !(0,_wry_equality__WEBPACK_IMPORTED_MODULE_2__.equal)(key, ref.current.key)) {\n        ref.current = { key: key, value: memoFn() };\n    }\n    return ref.current.value;\n}\n\nfunction useBaseQuery(query, options, lazy) {\n    if (lazy === void 0) { lazy = false; }\n    var context = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)((0,_apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.getApolloContext)());\n    var _a = (0,react__WEBPACK_IMPORTED_MODULE_1__.useReducer)(function (x) { return x + 1; }, 0), tick = _a[0], forceUpdate = _a[1];\n    var updatedOptions = options ? (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, options), { query: query }) : { query: query };\n    var queryDataRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)();\n    var queryData = queryDataRef.current ||\n        new QueryData({\n            options: updatedOptions,\n            context: context,\n            onNewData: function () {\n                if (!queryData.ssrInitiated()) {\n                    Promise.resolve().then(forceUpdate);\n                }\n                else {\n                    forceUpdate();\n                }\n            },\n        });\n    queryData.setOptions(updatedOptions);\n    queryData.context = context;\n    if (queryData.ssrInitiated() && !queryDataRef.current) {\n        queryDataRef.current = queryData;\n    }\n    var memo = {\n        options: (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, updatedOptions), { onError: undefined, onCompleted: undefined }),\n        context: context,\n        tick: tick,\n    };\n    var result = useDeepMemo(function () { return (lazy ? queryData.executeLazy() : queryData.execute()); }, memo);\n    var queryResult = lazy\n        ? result[1]\n        : result;\n    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {\n        if (!queryDataRef.current) {\n            queryDataRef.current = queryData;\n        }\n        return function () { return queryData.cleanup(); };\n    }, []);\n    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () { return queryData.afterExecute({ lazy: lazy }); }, [\n        queryResult.loading,\n        queryResult.networkStatus,\n        queryResult.error,\n        queryResult.data,\n    ]);\n    return result;\n}\n\nfunction useQuery(query, options) {\n    return useBaseQuery(query, options, false);\n}\n\nfunction useLazyQuery(query, options) {\n    return useBaseQuery(query, options, true);\n}\n\nvar MutationData = (function (_super) {\n    (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__extends)(MutationData, _super);\n    function MutationData(_a) {\n        var options = _a.options, context = _a.context, result = _a.result, setResult = _a.setResult;\n        var _this = _super.call(this, options, context) || this;\n        _this.runMutation = function (mutationFunctionOptions) {\n            if (mutationFunctionOptions === void 0) { mutationFunctionOptions = {}; }\n            _this.onMutationStart();\n            var mutationId = _this.generateNewMutationId();\n            return _this.mutate(mutationFunctionOptions)\n                .then(function (response) {\n                _this.onMutationCompleted(response, mutationId);\n                return response;\n            })\n                .catch(function (error) {\n                _this.onMutationError(error, mutationId);\n                if (!_this.getOptions().onError)\n                    throw error;\n            });\n        };\n        _this.verifyDocumentType(options.mutation, _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.DocumentType.Mutation);\n        _this.result = result;\n        _this.setResult = setResult;\n        _this.mostRecentMutationId = 0;\n        return _this;\n    }\n    MutationData.prototype.execute = function (result) {\n        this.isMounted = true;\n        this.verifyDocumentType(this.getOptions().mutation, _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.DocumentType.Mutation);\n        result.client = this.refreshClient().client;\n        return [this.runMutation, result];\n    };\n    MutationData.prototype.afterExecute = function () {\n        this.isMounted = true;\n        return this.unmount.bind(this);\n    };\n    MutationData.prototype.cleanup = function () {\n    };\n    MutationData.prototype.mutate = function (mutationFunctionOptions) {\n        var _a = this.getOptions(), mutation = _a.mutation, variables = _a.variables, optimisticResponse = _a.optimisticResponse, update = _a.update, _b = _a.context, mutationContext = _b === void 0 ? {} : _b, _c = _a.awaitRefetchQueries, awaitRefetchQueries = _c === void 0 ? false : _c, fetchPolicy = _a.fetchPolicy;\n        var mutateOptions = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, mutationFunctionOptions);\n        var mutateVariables = Object.assign({}, variables, mutateOptions.variables);\n        delete mutateOptions.variables;\n        return this.refreshClient().client.mutate((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({ mutation: mutation,\n            optimisticResponse: optimisticResponse, refetchQueries: mutateOptions.refetchQueries || this.getOptions().refetchQueries, awaitRefetchQueries: awaitRefetchQueries,\n            update: update, context: mutationContext, fetchPolicy: fetchPolicy, variables: mutateVariables }, mutateOptions));\n    };\n    MutationData.prototype.onMutationStart = function () {\n        if (!this.result.loading && !this.getOptions().ignoreResults) {\n            this.updateResult({\n                loading: true,\n                error: undefined,\n                data: undefined,\n                called: true\n            });\n        }\n    };\n    MutationData.prototype.onMutationCompleted = function (response, mutationId) {\n        var _a = this.getOptions(), onCompleted = _a.onCompleted, ignoreResults = _a.ignoreResults;\n        var data = response.data, errors = response.errors;\n        var error = errors && errors.length > 0\n            ? new apollo_client__WEBPACK_IMPORTED_MODULE_5__.ApolloError({ graphQLErrors: errors })\n            : undefined;\n        var callOncomplete = function () {\n            return onCompleted ? onCompleted(data) : null;\n        };\n        if (this.isMostRecentMutation(mutationId) && !ignoreResults) {\n            this.updateResult({\n                called: true,\n                loading: false,\n                data: data,\n                error: error\n            });\n        }\n        callOncomplete();\n    };\n    MutationData.prototype.onMutationError = function (error, mutationId) {\n        var onError = this.getOptions().onError;\n        if (this.isMostRecentMutation(mutationId)) {\n            this.updateResult({\n                loading: false,\n                error: error,\n                data: undefined,\n                called: true\n            });\n        }\n        if (onError) {\n            onError(error);\n        }\n    };\n    MutationData.prototype.generateNewMutationId = function () {\n        return ++this.mostRecentMutationId;\n    };\n    MutationData.prototype.isMostRecentMutation = function (mutationId) {\n        return this.mostRecentMutationId === mutationId;\n    };\n    MutationData.prototype.updateResult = function (result) {\n        if (this.isMounted &&\n            (!this.previousResult || !(0,_wry_equality__WEBPACK_IMPORTED_MODULE_2__.equal)(this.previousResult, result))) {\n            this.setResult(result);\n            this.previousResult = result;\n        }\n    };\n    return MutationData;\n}(OperationData));\n\nfunction useMutation(mutation, options) {\n    var context = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)((0,_apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.getApolloContext)());\n    var _a = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({ called: false, loading: false }), result = _a[0], setResult = _a[1];\n    var updatedOptions = options ? (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, options), { mutation: mutation }) : { mutation: mutation };\n    var mutationDataRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)();\n    function getMutationDataRef() {\n        if (!mutationDataRef.current) {\n            mutationDataRef.current = new MutationData({\n                options: updatedOptions,\n                context: context,\n                result: result,\n                setResult: setResult\n            });\n        }\n        return mutationDataRef.current;\n    }\n    var mutationData = getMutationDataRef();\n    mutationData.setOptions(updatedOptions);\n    mutationData.context = context;\n    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () { return mutationData.afterExecute(); });\n    return mutationData.execute(result);\n}\n\nvar SubscriptionData = (function (_super) {\n    (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__extends)(SubscriptionData, _super);\n    function SubscriptionData(_a) {\n        var options = _a.options, context = _a.context, setResult = _a.setResult;\n        var _this = _super.call(this, options, context) || this;\n        _this.currentObservable = {};\n        _this.setResult = setResult;\n        _this.initialize(options);\n        return _this;\n    }\n    SubscriptionData.prototype.execute = function (result) {\n        if (this.getOptions().skip === true) {\n            this.cleanup();\n            return {\n                loading: false,\n                error: undefined,\n                data: undefined,\n                variables: this.getOptions().variables\n            };\n        }\n        var currentResult = result;\n        if (this.refreshClient().isNew) {\n            currentResult = this.getLoadingResult();\n        }\n        var shouldResubscribe = this.getOptions().shouldResubscribe;\n        if (typeof shouldResubscribe === 'function') {\n            shouldResubscribe = !!shouldResubscribe(this.getOptions());\n        }\n        if (shouldResubscribe !== false &&\n            this.previousOptions &&\n            Object.keys(this.previousOptions).length > 0 &&\n            (this.previousOptions.subscription !== this.getOptions().subscription ||\n                !(0,_wry_equality__WEBPACK_IMPORTED_MODULE_2__.equal)(this.previousOptions.variables, this.getOptions().variables) ||\n                this.previousOptions.skip !== this.getOptions().skip)) {\n            this.cleanup();\n            currentResult = this.getLoadingResult();\n        }\n        this.initialize(this.getOptions());\n        this.startSubscription();\n        this.previousOptions = this.getOptions();\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, currentResult), { variables: this.getOptions().variables });\n    };\n    SubscriptionData.prototype.afterExecute = function () {\n        this.isMounted = true;\n    };\n    SubscriptionData.prototype.cleanup = function () {\n        this.endSubscription();\n        delete this.currentObservable.query;\n    };\n    SubscriptionData.prototype.initialize = function (options) {\n        if (this.currentObservable.query || this.getOptions().skip === true)\n            return;\n        this.currentObservable.query = this.refreshClient().client.subscribe({\n            query: options.subscription,\n            variables: options.variables,\n            fetchPolicy: options.fetchPolicy\n        });\n    };\n    SubscriptionData.prototype.startSubscription = function () {\n        if (this.currentObservable.subscription)\n            return;\n        this.currentObservable.subscription = this.currentObservable.query.subscribe({\n            next: this.updateCurrentData.bind(this),\n            error: this.updateError.bind(this),\n            complete: this.completeSubscription.bind(this)\n        });\n    };\n    SubscriptionData.prototype.getLoadingResult = function () {\n        return {\n            loading: true,\n            error: undefined,\n            data: undefined\n        };\n    };\n    SubscriptionData.prototype.updateResult = function (result) {\n        if (this.isMounted) {\n            this.setResult(result);\n        }\n    };\n    SubscriptionData.prototype.updateCurrentData = function (result) {\n        var onSubscriptionData = this.getOptions().onSubscriptionData;\n        this.updateResult({\n            data: result.data,\n            loading: false,\n            error: undefined\n        });\n        if (onSubscriptionData) {\n            onSubscriptionData({\n                client: this.refreshClient().client,\n                subscriptionData: result\n            });\n        }\n    };\n    SubscriptionData.prototype.updateError = function (error) {\n        this.updateResult({\n            error: error,\n            loading: false\n        });\n    };\n    SubscriptionData.prototype.completeSubscription = function () {\n        var onSubscriptionComplete = this.getOptions().onSubscriptionComplete;\n        if (onSubscriptionComplete)\n            onSubscriptionComplete();\n        this.endSubscription();\n    };\n    SubscriptionData.prototype.endSubscription = function () {\n        if (this.currentObservable.subscription) {\n            this.currentObservable.subscription.unsubscribe();\n            delete this.currentObservable.subscription;\n        }\n    };\n    return SubscriptionData;\n}(OperationData));\n\nfunction useSubscription(subscription, options) {\n    var context = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)((0,_apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.getApolloContext)());\n    var updatedOptions = options\n        ? (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, options), { subscription: subscription }) : { subscription: subscription };\n    var _a = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n        loading: !updatedOptions.skip,\n        error: undefined,\n        data: undefined\n    }), result = _a[0], setResult = _a[1];\n    var subscriptionDataRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)();\n    function getSubscriptionDataRef() {\n        if (!subscriptionDataRef.current) {\n            subscriptionDataRef.current = new SubscriptionData({\n                options: updatedOptions,\n                context: context,\n                setResult: setResult\n            });\n        }\n        return subscriptionDataRef.current;\n    }\n    var subscriptionData = getSubscriptionDataRef();\n    subscriptionData.setOptions(updatedOptions, true);\n    subscriptionData.context = context;\n    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () { return subscriptionData.afterExecute(); });\n    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () { return subscriptionData.cleanup.bind(subscriptionData); }, []);\n    return subscriptionData.execute(result);\n}\n\nfunction useApolloClient() {\n    var client = react__WEBPACK_IMPORTED_MODULE_1___default().useContext((0,_apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.getApolloContext)()).client;\n     false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_3__.invariant)(client, 'No Apollo Client instance can be found. Please ensure that you ' +\n        'have called `ApolloProvider` higher up in your tree.');\n    return client;\n}\n\nfunction makeDefaultQueryInfo() {\n    return {\n        seen: false,\n        observable: null\n    };\n}\nvar RenderPromises = (function () {\n    function RenderPromises() {\n        this.queryPromises = new Map();\n        this.queryInfoTrie = new Map();\n    }\n    RenderPromises.prototype.registerSSRObservable = function (observable, props) {\n        this.lookupQueryInfo(props).observable = observable;\n    };\n    RenderPromises.prototype.getSSRObservable = function (props) {\n        return this.lookupQueryInfo(props).observable;\n    };\n    RenderPromises.prototype.addQueryPromise = function (queryInstance, finish) {\n        var info = this.lookupQueryInfo(queryInstance.getOptions());\n        if (!info.seen) {\n            this.queryPromises.set(queryInstance.getOptions(), new Promise(function (resolve) {\n                resolve(queryInstance.fetchData());\n            }));\n            return null;\n        }\n        return finish();\n    };\n    RenderPromises.prototype.hasPromises = function () {\n        return this.queryPromises.size > 0;\n    };\n    RenderPromises.prototype.consumeAndAwaitPromises = function () {\n        var _this = this;\n        var promises = [];\n        this.queryPromises.forEach(function (promise, queryInstance) {\n            _this.lookupQueryInfo(queryInstance).seen = true;\n            promises.push(promise);\n        });\n        this.queryPromises.clear();\n        return Promise.all(promises);\n    };\n    RenderPromises.prototype.lookupQueryInfo = function (props) {\n        var queryInfoTrie = this.queryInfoTrie;\n        var query = props.query, variables = props.variables;\n        var varMap = queryInfoTrie.get(query) || new Map();\n        if (!queryInfoTrie.has(query))\n            queryInfoTrie.set(query, varMap);\n        var variablesString = JSON.stringify(variables);\n        var info = varMap.get(variablesString) || makeDefaultQueryInfo();\n        if (!varMap.has(variablesString))\n            varMap.set(variablesString, info);\n        return info;\n    };\n    return RenderPromises;\n}());\n\n\n//# sourceMappingURL=react-hooks.esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9yZWFjdC1ob29rcy9saWIvcmVhY3QtaG9va3MuZXNtLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQTZGO0FBQ2U7QUFDaEU7QUFDdUM7QUFDeEI7QUFDckI7QUFDRzs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEMsOEJBQThCLG9EQUFLO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxNQUFxQyxHQUFHLENBQXNCLEdBQUcsdURBQVM7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qiw0REFBTTtBQUM5QixvQ0FBb0MsbUVBQWE7QUFDakQsZ0NBQWdDLG1FQUFhO0FBQzdDLFFBQVEsTUFBcUMsR0FBRyxDQUFxQyxHQUFHLHVEQUFTO0FBQ2pHO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSxJQUFJLGdEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRDtBQUMzRCxrREFBa0Q7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0Q7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLDhEQUFtQjtBQUN0RDtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHO0FBQ3BELDhCQUE4QiwrQ0FBUSxDQUFDLCtDQUFRLEdBQUc7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLCtDQUFRLEdBQUcsOEJBQThCLGdFQUFxQixvRUFBb0U7QUFDM0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0Msb0VBQWtCO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGNBQWMsZ0VBQWdFLGtCQUFrQiw4QkFBOEI7QUFDaks7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RCwrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsNkJBQTZCLGdCQUFnQjtBQUN4SCxrRkFBa0YsK0NBQVEsR0FBRztBQUM3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QywrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsMkNBQTJDLGdCQUFnQjtBQUN2SCxhQUFhLG9EQUFLO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFLO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsb0RBQUs7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxhQUFhLGlFQUFpRTtBQUN2SDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsc0RBQVcsR0FBRyx1QkFBdUI7QUFDakU7QUFDQSxxQkFBcUIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGFBQWE7QUFDdEQ7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLDZFQUE2RTtBQUM3RTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxnRUFBcUI7QUFDNUQscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isb0RBQUs7QUFDckIsZ0JBQWdCLG9EQUFLO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0EsY0FBYyw2Q0FBTTtBQUNwQix5QkFBeUIsb0RBQUs7QUFDOUIsd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQjtBQUMzQixrQkFBa0IsaURBQVUsQ0FBQyxzRUFBZ0I7QUFDN0MsYUFBYSxpREFBVSxnQkFBZ0IsZUFBZTtBQUN0RCxtQ0FBbUMsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGNBQWMsY0FBYyxNQUFNO0FBQ3pGLHVCQUF1Qiw2Q0FBTTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLHFCQUFxQiw0Q0FBNEM7QUFDdEc7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLGdFQUFnRTtBQUMzRztBQUNBO0FBQ0E7QUFDQSxJQUFJLGdEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCLEtBQUs7QUFDTCxJQUFJLGdEQUFTLGVBQWUsZ0NBQWdDLFlBQVksSUFBSTtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSSxnREFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNEO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLG1EQUFtRCx1RUFBcUI7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQsdUVBQXFCO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNE1BQTRNO0FBQzVNLDRCQUE0QiwrQ0FBUSxHQUFHO0FBQ3ZDLDhDQUE4QztBQUM5QztBQUNBLGtEQUFrRCwrQ0FBUSxHQUFHO0FBQzdEO0FBQ0EsNEdBQTRHO0FBQzVHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHNEQUFXLEdBQUcsdUJBQXVCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0Msb0RBQUs7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSxrQkFBa0IsaURBQVUsQ0FBQyxzRUFBZ0I7QUFDN0MsYUFBYSwrQ0FBUSxHQUFHLCtCQUErQjtBQUN2RCxtQ0FBbUMsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGNBQWMsb0JBQW9CLE1BQU07QUFDL0YsMEJBQTBCLDZDQUFNO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksZ0RBQVMsZUFBZSxxQ0FBcUM7QUFDakU7QUFDQTs7QUFFQTtBQUNBLElBQUksZ0RBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsb0RBQUs7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxvQkFBb0Isd0NBQXdDO0FBQy9GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBLGtCQUFrQixpREFBVSxDQUFDLHNFQUFnQjtBQUM3QztBQUNBLFVBQVUsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGNBQWMsNEJBQTRCLE1BQU07QUFDOUUsYUFBYSwrQ0FBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsOEJBQThCLDZDQUFNO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdEQUFTLGVBQWUseUNBQXlDO0FBQ3JFLElBQUksZ0RBQVMsZUFBZSx5REFBeUQ7QUFDckY7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQix1REFBZ0IsQ0FBQyxzRUFBZ0I7QUFDbEQsSUFBSSxNQUFxQyxHQUFHLENBQW9CLEdBQUcsdURBQVM7QUFDNUU7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFZ0c7QUFDakciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vcmVhY3QtaG9va3MvbGliL3JlYWN0LWhvb2tzLmVzbS5qcz9hODBiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHBhcnNlciwgb3BlcmF0aW9uTmFtZSwgRG9jdW1lbnRUeXBlLCBnZXRBcG9sbG9Db250ZXh0IH0gZnJvbSAnQGFwb2xsby9yZWFjdC1jb21tb24nO1xuZXhwb3J0IHsgQXBvbGxvQ29uc3VtZXIsIEFwb2xsb1Byb3ZpZGVyLCBnZXRBcG9sbG9Db250ZXh0LCByZXNldEFwb2xsb0NvbnRleHQgfSBmcm9tICdAYXBvbGxvL3JlYWN0LWNvbW1vbic7XG5pbXBvcnQgeyBfX2V4dGVuZHMsIF9fYXNzaWduIH0gZnJvbSAndHNsaWInO1xuaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiwgdXNlQ29udGV4dCwgdXNlUmVkdWNlciwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IE5ldHdvcmtTdGF0dXMsIEFwb2xsb0Vycm9yIH0gZnJvbSAnYXBvbGxvLWNsaWVudCc7XG5pbXBvcnQgeyBlcXVhbCB9IGZyb20gJ0B3cnkvZXF1YWxpdHknO1xuaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSAndHMtaW52YXJpYW50JztcblxudmFyIE9wZXJhdGlvbkRhdGEgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE9wZXJhdGlvbkRhdGEob3B0aW9ucywgY29udGV4dCkge1xuICAgICAgICB0aGlzLmlzTW91bnRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnByZXZpb3VzT3B0aW9ucyA9IHt9O1xuICAgICAgICB0aGlzLmNvbnRleHQgPSB7fTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0ge307XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQgfHwge307XG4gICAgfVxuICAgIE9wZXJhdGlvbkRhdGEucHJvdG90eXBlLmdldE9wdGlvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnM7XG4gICAgfTtcbiAgICBPcGVyYXRpb25EYXRhLnByb3RvdHlwZS5zZXRPcHRpb25zID0gZnVuY3Rpb24gKG5ld09wdGlvbnMsIHN0b3JlUHJldmlvdXMpIHtcbiAgICAgICAgaWYgKHN0b3JlUHJldmlvdXMgPT09IHZvaWQgMCkgeyBzdG9yZVByZXZpb3VzID0gZmFsc2U7IH1cbiAgICAgICAgaWYgKHN0b3JlUHJldmlvdXMgJiYgIWVxdWFsKHRoaXMub3B0aW9ucywgbmV3T3B0aW9ucykpIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNPcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG5ld09wdGlvbnM7XG4gICAgfTtcbiAgICBPcGVyYXRpb25EYXRhLnByb3RvdHlwZS51bm1vdW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmlzTW91bnRlZCA9IGZhbHNlO1xuICAgIH07XG4gICAgT3BlcmF0aW9uRGF0YS5wcm90b3R5cGUucmVmcmVzaENsaWVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNsaWVudCA9ICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmNsaWVudCkgfHxcbiAgICAgICAgICAgICh0aGlzLmNvbnRleHQgJiYgdGhpcy5jb250ZXh0LmNsaWVudCk7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudCghIWNsaWVudCwgMikgOiBpbnZhcmlhbnQoISFjbGllbnQsICdDb3VsZCBub3QgZmluZCBcImNsaWVudFwiIGluIHRoZSBjb250ZXh0IG9yIHBhc3NlZCBpbiBhcyBhbiBvcHRpb24uICcgK1xuICAgICAgICAgICAgJ1dyYXAgdGhlIHJvb3QgY29tcG9uZW50IGluIGFuIDxBcG9sbG9Qcm92aWRlcj4sIG9yIHBhc3MgYW4gJyArXG4gICAgICAgICAgICAnQXBvbGxvQ2xpZW50IGluc3RhbmNlIGluIHZpYSBvcHRpb25zLicpO1xuICAgICAgICB2YXIgaXNOZXcgPSBmYWxzZTtcbiAgICAgICAgaWYgKGNsaWVudCAhPT0gdGhpcy5jbGllbnQpIHtcbiAgICAgICAgICAgIGlzTmV3ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY2xpZW50ID0gY2xpZW50O1xuICAgICAgICAgICAgdGhpcy5jbGVhbnVwKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgICAgICBpc05ldzogaXNOZXdcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIE9wZXJhdGlvbkRhdGEucHJvdG90eXBlLnZlcmlmeURvY3VtZW50VHlwZSA9IGZ1bmN0aW9uIChkb2N1bWVudCwgdHlwZSkge1xuICAgICAgICB2YXIgb3BlcmF0aW9uID0gcGFyc2VyKGRvY3VtZW50KTtcbiAgICAgICAgdmFyIHJlcXVpcmVkT3BlcmF0aW9uTmFtZSA9IG9wZXJhdGlvbk5hbWUodHlwZSk7XG4gICAgICAgIHZhciB1c2VkT3BlcmF0aW9uTmFtZSA9IG9wZXJhdGlvbk5hbWUob3BlcmF0aW9uLnR5cGUpO1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQob3BlcmF0aW9uLnR5cGUgPT09IHR5cGUsIDMpIDogaW52YXJpYW50KG9wZXJhdGlvbi50eXBlID09PSB0eXBlLCBcIlJ1bm5pbmcgYSBcIiArIHJlcXVpcmVkT3BlcmF0aW9uTmFtZSArIFwiIHJlcXVpcmVzIGEgZ3JhcGhxbCBcIiArXG4gICAgICAgICAgICAocmVxdWlyZWRPcGVyYXRpb25OYW1lICsgXCIsIGJ1dCBhIFwiICsgdXNlZE9wZXJhdGlvbk5hbWUgKyBcIiB3YXMgdXNlZCBpbnN0ZWFkLlwiKSk7XG4gICAgfTtcbiAgICByZXR1cm4gT3BlcmF0aW9uRGF0YTtcbn0oKSk7XG5cbnZhciBRdWVyeURhdGEgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhRdWVyeURhdGEsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUXVlcnlEYXRhKF9hKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gX2Eub3B0aW9ucywgY29udGV4dCA9IF9hLmNvbnRleHQsIG9uTmV3RGF0YSA9IF9hLm9uTmV3RGF0YTtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgb3B0aW9ucywgY29udGV4dCkgfHwgdGhpcztcbiAgICAgICAgX3RoaXMucHJldmlvdXNEYXRhID0ge307XG4gICAgICAgIF90aGlzLmN1cnJlbnRPYnNlcnZhYmxlID0ge307XG4gICAgICAgIF90aGlzLnJ1bkxhenkgPSBmYWxzZTtcbiAgICAgICAgX3RoaXMucnVuTGF6eVF1ZXJ5ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIF90aGlzLmNsZWFudXAoKTtcbiAgICAgICAgICAgIF90aGlzLnJ1bkxhenkgPSB0cnVlO1xuICAgICAgICAgICAgX3RoaXMubGF6eU9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICAgICAgX3RoaXMub25OZXdEYXRhKCk7XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLmdldEV4ZWN1dGVSZXN1bHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gX3RoaXMuZ2V0UXVlcnlSZXN1bHQoKTtcbiAgICAgICAgICAgIF90aGlzLnN0YXJ0UXVlcnlTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLm9ic1JlZmV0Y2ggPSBmdW5jdGlvbiAodmFyaWFibGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnkucmVmZXRjaCh2YXJpYWJsZXMpO1xuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5vYnNGZXRjaE1vcmUgPSBmdW5jdGlvbiAoZmV0Y2hNb3JlT3B0aW9ucykgeyByZXR1cm4gX3RoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnkuZmV0Y2hNb3JlKGZldGNoTW9yZU9wdGlvbnMpOyB9O1xuICAgICAgICBfdGhpcy5vYnNVcGRhdGVRdWVyeSA9IGZ1bmN0aW9uIChtYXBGbikgeyByZXR1cm4gX3RoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnkudXBkYXRlUXVlcnkobWFwRm4pOyB9O1xuICAgICAgICBfdGhpcy5vYnNTdGFydFBvbGxpbmcgPSBmdW5jdGlvbiAocG9sbEludGVydmFsKSB7XG4gICAgICAgICAgICBfdGhpcy5jdXJyZW50T2JzZXJ2YWJsZSAmJlxuICAgICAgICAgICAgICAgIF90aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnF1ZXJ5ICYmXG4gICAgICAgICAgICAgICAgX3RoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnkuc3RhcnRQb2xsaW5nKHBvbGxJbnRlcnZhbCk7XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLm9ic1N0b3BQb2xsaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMuY3VycmVudE9ic2VydmFibGUgJiZcbiAgICAgICAgICAgICAgICBfdGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeSAmJlxuICAgICAgICAgICAgICAgIF90aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnF1ZXJ5LnN0b3BQb2xsaW5nKCk7XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLm9ic1N1YnNjcmliZVRvTW9yZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7IHJldHVybiBfdGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeS5zdWJzY3JpYmVUb01vcmUob3B0aW9ucyk7IH07XG4gICAgICAgIF90aGlzLm9uTmV3RGF0YSA9IG9uTmV3RGF0YTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBRdWVyeURhdGEucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucmVmcmVzaENsaWVudCgpO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmdldE9wdGlvbnMoKSwgc2tpcCA9IF9hLnNraXAsIHF1ZXJ5ID0gX2EucXVlcnk7XG4gICAgICAgIGlmIChza2lwIHx8IHF1ZXJ5ICE9PSB0aGlzLnByZXZpb3VzRGF0YS5xdWVyeSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVRdWVyeVN1YnNjcmlwdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c0RhdGEucXVlcnkgPSBxdWVyeTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZU9ic2VydmFibGVRdWVyeSgpO1xuICAgICAgICBpZiAodGhpcy5pc01vdW50ZWQpXG4gICAgICAgICAgICB0aGlzLnN0YXJ0UXVlcnlTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXhlY3V0ZVNzclJlc3VsdCgpIHx8IHRoaXMuZ2V0RXhlY3V0ZVJlc3VsdCgpO1xuICAgIH07XG4gICAgUXVlcnlEYXRhLnByb3RvdHlwZS5leGVjdXRlTGF6eSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnJ1bkxhenlcbiAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgIHRoaXMucnVuTGF6eVF1ZXJ5LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG5ldHdvcmtTdGF0dXM6IE5ldHdvcmtTdGF0dXMucmVhZHksXG4gICAgICAgICAgICAgICAgICAgIGNhbGxlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgOiBbdGhpcy5ydW5MYXp5UXVlcnksIHRoaXMuZXhlY3V0ZSgpXTtcbiAgICB9O1xuICAgIFF1ZXJ5RGF0YS5wcm90b3R5cGUuZmV0Y2hEYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpO1xuICAgICAgICBpZiAob3B0aW9ucy5za2lwIHx8IG9wdGlvbnMuc3NyID09PSBmYWxzZSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgdmFyIG9icyA9IHRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnk7XG4gICAgICAgIHZhciBjdXJyZW50UmVzdWx0ID0gb2JzLmdldEN1cnJlbnRSZXN1bHQoKTtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRSZXN1bHQubG9hZGluZyA/IG9icy5yZXN1bHQoKSA6IGZhbHNlO1xuICAgIH07XG4gICAgUXVlcnlEYXRhLnByb3RvdHlwZS5hZnRlckV4ZWN1dGUgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIF9iID0gKF9hID09PSB2b2lkIDAgPyB7fSA6IF9hKS5sYXp5LCBsYXp5ID0gX2IgPT09IHZvaWQgMCA/IGZhbHNlIDogX2I7XG4gICAgICAgIHRoaXMuaXNNb3VudGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKCFsYXp5IHx8IHRoaXMucnVuTGF6eSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvck9yQ29tcGxldGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcmV2aW91c09wdGlvbnMgPSB0aGlzLmdldE9wdGlvbnMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5tb3VudC5iaW5kKHRoaXMpO1xuICAgIH07XG4gICAgUXVlcnlEYXRhLnByb3RvdHlwZS5jbGVhbnVwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnJlbW92ZVF1ZXJ5U3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnF1ZXJ5O1xuICAgICAgICBkZWxldGUgdGhpcy5wcmV2aW91c0RhdGEucmVzdWx0O1xuICAgIH07XG4gICAgUXVlcnlEYXRhLnByb3RvdHlwZS5nZXRPcHRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IF9zdXBlci5wcm90b3R5cGUuZ2V0T3B0aW9ucy5jYWxsKHRoaXMpO1xuICAgICAgICBpZiAodGhpcy5sYXp5T3B0aW9ucykge1xuICAgICAgICAgICAgb3B0aW9ucy52YXJpYWJsZXMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3B0aW9ucy52YXJpYWJsZXMpLCB0aGlzLmxhenlPcHRpb25zLnZhcmlhYmxlcyk7XG4gICAgICAgICAgICBvcHRpb25zLmNvbnRleHQgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3B0aW9ucy5jb250ZXh0KSwgdGhpcy5sYXp5T3B0aW9ucy5jb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5ydW5MYXp5KSB7XG4gICAgICAgICAgICBkZWxldGUgb3B0aW9ucy5za2lwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH07XG4gICAgUXVlcnlEYXRhLnByb3RvdHlwZS5zc3JJbml0aWF0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRleHQgJiYgdGhpcy5jb250ZXh0LnJlbmRlclByb21pc2VzO1xuICAgIH07XG4gICAgUXVlcnlEYXRhLnByb3RvdHlwZS5nZXRFeGVjdXRlU3NyUmVzdWx0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc3NyRGlzYWJsZWQgPSB0aGlzLmdldE9wdGlvbnMoKS5zc3IgPT09IGZhbHNlO1xuICAgICAgICB2YXIgZmV0Y2hEaXNhYmxlZCA9IHRoaXMucmVmcmVzaENsaWVudCgpLmNsaWVudC5kaXNhYmxlTmV0d29ya0ZldGNoZXM7XG4gICAgICAgIHZhciBzc3JMb2FkaW5nID0gX19hc3NpZ24oeyBsb2FkaW5nOiB0cnVlLCBuZXR3b3JrU3RhdHVzOiBOZXR3b3JrU3RhdHVzLmxvYWRpbmcsIGNhbGxlZDogdHJ1ZSwgZGF0YTogdW5kZWZpbmVkLCBzdGFsZTogZmFsc2UsIGNsaWVudDogdGhpcy5jbGllbnQgfSwgdGhpcy5vYnNlcnZhYmxlUXVlcnlGaWVsZHMoKSk7XG4gICAgICAgIGlmIChzc3JEaXNhYmxlZCAmJiAodGhpcy5zc3JJbml0aWF0ZWQoKSB8fCBmZXRjaERpc2FibGVkKSkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c0RhdGEucmVzdWx0ID0gc3NyTG9hZGluZztcbiAgICAgICAgICAgIHJldHVybiBzc3JMb2FkaW5nO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgIGlmICh0aGlzLnNzckluaXRpYXRlZCgpKSB7XG4gICAgICAgICAgICByZXN1bHQgPVxuICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5yZW5kZXJQcm9taXNlcy5hZGRRdWVyeVByb21pc2UodGhpcywgdGhpcy5nZXRFeGVjdXRlUmVzdWx0KSB8fCBzc3JMb2FkaW5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBRdWVyeURhdGEucHJvdG90eXBlLnByZXBhcmVPYnNlcnZhYmxlUXVlcnlPcHRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpO1xuICAgICAgICB0aGlzLnZlcmlmeURvY3VtZW50VHlwZShvcHRpb25zLnF1ZXJ5LCBEb2N1bWVudFR5cGUuUXVlcnkpO1xuICAgICAgICB2YXIgZGlzcGxheU5hbWUgPSBvcHRpb25zLmRpc3BsYXlOYW1lIHx8ICdRdWVyeSc7XG4gICAgICAgIGlmICh0aGlzLnNzckluaXRpYXRlZCgpICYmXG4gICAgICAgICAgICAob3B0aW9ucy5mZXRjaFBvbGljeSA9PT0gJ25ldHdvcmstb25seScgfHxcbiAgICAgICAgICAgICAgICBvcHRpb25zLmZldGNoUG9saWN5ID09PSAnY2FjaGUtYW5kLW5ldHdvcmsnKSkge1xuICAgICAgICAgICAgb3B0aW9ucy5mZXRjaFBvbGljeSA9ICdjYWNoZS1maXJzdCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBvcHRpb25zKSwgeyBkaXNwbGF5TmFtZTogZGlzcGxheU5hbWUsIGNvbnRleHQ6IG9wdGlvbnMuY29udGV4dCwgbWV0YWRhdGE6IHsgcmVhY3RDb21wb25lbnQ6IHsgZGlzcGxheU5hbWU6IGRpc3BsYXlOYW1lIH0gfSB9KTtcbiAgICB9O1xuICAgIFF1ZXJ5RGF0YS5wcm90b3R5cGUuaW5pdGlhbGl6ZU9ic2VydmFibGVRdWVyeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKHRoaXMuc3NySW5pdGlhdGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnkgPSB0aGlzLmNvbnRleHQucmVuZGVyUHJvbWlzZXMuZ2V0U1NST2JzZXJ2YWJsZSh0aGlzLmdldE9wdGlvbnMoKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnF1ZXJ5KSB7XG4gICAgICAgICAgICB2YXIgb2JzZXJ2YWJsZVF1ZXJ5T3B0aW9ucyA9IHRoaXMucHJlcGFyZU9ic2VydmFibGVRdWVyeU9wdGlvbnMoKTtcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNEYXRhLm9ic2VydmFibGVRdWVyeU9wdGlvbnMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb2JzZXJ2YWJsZVF1ZXJ5T3B0aW9ucyksIHsgY2hpbGRyZW46IG51bGwgfSk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnF1ZXJ5ID0gdGhpcy5yZWZyZXNoQ2xpZW50KCkuY2xpZW50LndhdGNoUXVlcnkoX19hc3NpZ24oe30sIG9ic2VydmFibGVRdWVyeU9wdGlvbnMpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNzckluaXRpYXRlZCgpKSB7XG4gICAgICAgICAgICAgICAgKF9iID0gKF9hID0gdGhpcy5jb250ZXh0KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVuZGVyUHJvbWlzZXMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5yZWdpc3RlclNTUk9ic2VydmFibGUodGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeSwgb2JzZXJ2YWJsZVF1ZXJ5T3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFF1ZXJ5RGF0YS5wcm90b3R5cGUudXBkYXRlT2JzZXJ2YWJsZVF1ZXJ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnkpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZU9ic2VydmFibGVRdWVyeSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBuZXdPYnNlcnZhYmxlUXVlcnlPcHRpb25zID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHRoaXMucHJlcGFyZU9ic2VydmFibGVRdWVyeU9wdGlvbnMoKSksIHsgY2hpbGRyZW46IG51bGwgfSk7XG4gICAgICAgIGlmICghZXF1YWwobmV3T2JzZXJ2YWJsZVF1ZXJ5T3B0aW9ucywgdGhpcy5wcmV2aW91c0RhdGEub2JzZXJ2YWJsZVF1ZXJ5T3B0aW9ucykpIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNEYXRhLm9ic2VydmFibGVRdWVyeU9wdGlvbnMgPSBuZXdPYnNlcnZhYmxlUXVlcnlPcHRpb25zO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50T2JzZXJ2YWJsZVxuICAgICAgICAgICAgICAgIC5xdWVyeS5zZXRPcHRpb25zKG5ld09ic2VydmFibGVRdWVyeU9wdGlvbnMpXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uICgpIHsgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFF1ZXJ5RGF0YS5wcm90b3R5cGUuc3RhcnRRdWVyeVN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE9ic2VydmFibGUuc3Vic2NyaXB0aW9uIHx8IHRoaXMuZ2V0T3B0aW9ucygpLnNraXApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHZhciBvYnNRdWVyeSA9IHRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnk7XG4gICAgICAgIHRoaXMuY3VycmVudE9ic2VydmFibGUuc3Vic2NyaXB0aW9uID0gb2JzUXVlcnkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHZhciBsb2FkaW5nID0gX2EubG9hZGluZywgbmV0d29ya1N0YXR1cyA9IF9hLm5ldHdvcmtTdGF0dXMsIGRhdGEgPSBfYS5kYXRhO1xuICAgICAgICAgICAgICAgIHZhciBwcmV2aW91c1Jlc3VsdCA9IF90aGlzLnByZXZpb3VzRGF0YS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzUmVzdWx0ICYmXG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzUmVzdWx0LmxvYWRpbmcgPT09IGxvYWRpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNSZXN1bHQubmV0d29ya1N0YXR1cyA9PT0gbmV0d29ya1N0YXR1cyAmJlxuICAgICAgICAgICAgICAgICAgICBlcXVhbChwcmV2aW91c1Jlc3VsdC5kYXRhLCBkYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF90aGlzLm9uTmV3RGF0YSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5yZXN1YnNjcmliZVRvUXVlcnkoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWVycm9yLmhhc093blByb3BlcnR5KCdncmFwaFFMRXJyb3JzJykpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgIHZhciBwcmV2aW91c1Jlc3VsdCA9IF90aGlzLnByZXZpb3VzRGF0YS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgaWYgKChwcmV2aW91c1Jlc3VsdCAmJiBwcmV2aW91c1Jlc3VsdC5sb2FkaW5nKSB8fFxuICAgICAgICAgICAgICAgICAgICAhZXF1YWwoZXJyb3IsIF90aGlzLnByZXZpb3VzRGF0YS5lcnJvcikpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMucHJldmlvdXNEYXRhLmVycm9yID0gZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLm9uTmV3RGF0YSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgUXVlcnlEYXRhLnByb3RvdHlwZS5yZXN1YnNjcmliZVRvUXVlcnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlUXVlcnlTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdmFyIGxhc3RFcnJvciA9IHRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnkuZ2V0TGFzdEVycm9yKCk7XG4gICAgICAgIHZhciBsYXN0UmVzdWx0ID0gdGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeS5nZXRMYXN0UmVzdWx0KCk7XG4gICAgICAgIHRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnkucmVzZXRMYXN0UmVzdWx0cygpO1xuICAgICAgICB0aGlzLnN0YXJ0UXVlcnlTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnF1ZXJ5LCB7XG4gICAgICAgICAgICBsYXN0RXJyb3I6IGxhc3RFcnJvcixcbiAgICAgICAgICAgIGxhc3RSZXN1bHQ6IGxhc3RSZXN1bHQsXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgUXVlcnlEYXRhLnByb3RvdHlwZS5nZXRRdWVyeVJlc3VsdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMub2JzZXJ2YWJsZVF1ZXJ5RmllbGRzKCk7XG4gICAgICAgIHZhciBvcHRpb25zID0gdGhpcy5nZXRPcHRpb25zKCk7XG4gICAgICAgIGlmIChvcHRpb25zLnNraXApIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXN1bHQpLCB7IGRhdGE6IHVuZGVmaW5lZCwgZXJyb3I6IHVuZGVmaW5lZCwgbG9hZGluZzogZmFsc2UsIGNhbGxlZDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBjdXJyZW50UmVzdWx0ID0gdGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeS5nZXRDdXJyZW50UmVzdWx0KCk7XG4gICAgICAgICAgICB2YXIgbG9hZGluZyA9IGN1cnJlbnRSZXN1bHQubG9hZGluZywgcGFydGlhbCA9IGN1cnJlbnRSZXN1bHQucGFydGlhbCwgbmV0d29ya1N0YXR1cyA9IGN1cnJlbnRSZXN1bHQubmV0d29ya1N0YXR1cywgZXJyb3JzID0gY3VycmVudFJlc3VsdC5lcnJvcnM7XG4gICAgICAgICAgICB2YXIgZXJyb3IgPSBjdXJyZW50UmVzdWx0LmVycm9yLCBkYXRhID0gY3VycmVudFJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgaWYgKGVycm9ycyAmJiBlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGVycm9yID0gbmV3IEFwb2xsb0Vycm9yKHsgZ3JhcGhRTEVycm9yczogZXJyb3JzIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3VsdCksIHsgbG9hZGluZzogbG9hZGluZyxcbiAgICAgICAgICAgICAgICBuZXR3b3JrU3RhdHVzOiBuZXR3b3JrU3RhdHVzLFxuICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvciwgY2FsbGVkOiB0cnVlIH0pO1xuICAgICAgICAgICAgaWYgKGxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJldmlvdXNEYXRhID0gdGhpcy5wcmV2aW91c0RhdGEucmVzdWx0ICYmIHRoaXMucHJldmlvdXNEYXRhLnJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5kYXRhID1cbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNEYXRhICYmIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gX19hc3NpZ24oX19hc3NpZ24oe30sIHByZXZpb3VzRGF0YSksIGRhdGEpIDogcHJldmlvdXNEYXRhIHx8IGRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocmVzdWx0LCB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6ICh0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnF1ZXJ5LmdldExhc3RSZXN1bHQoKSB8fCB7fSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5kYXRhLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIGZldGNoUG9saWN5ID0gdGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeS5vcHRpb25zLmZldGNoUG9saWN5O1xuICAgICAgICAgICAgICAgIHZhciBwYXJ0aWFsUmVmZXRjaCA9IG9wdGlvbnMucGFydGlhbFJlZmV0Y2g7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnRpYWxSZWZldGNoICYmXG4gICAgICAgICAgICAgICAgICAgICFkYXRhICYmXG4gICAgICAgICAgICAgICAgICAgIHBhcnRpYWwgJiZcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hQb2xpY3kgIT09ICdjYWNoZS1vbmx5Jykge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHJlc3VsdCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtTdGF0dXM6IE5ldHdvcmtTdGF0dXMubG9hZGluZyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yZWZldGNoKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdC5kYXRhID0gZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXN1bHQuY2xpZW50ID0gdGhpcy5jbGllbnQ7XG4gICAgICAgIHRoaXMucHJldmlvdXNEYXRhLmxvYWRpbmcgPVxuICAgICAgICAgICAgKHRoaXMucHJldmlvdXNEYXRhLnJlc3VsdCAmJiB0aGlzLnByZXZpb3VzRGF0YS5yZXN1bHQubG9hZGluZykgfHwgZmFsc2U7XG4gICAgICAgIHRoaXMucHJldmlvdXNEYXRhLnJlc3VsdCA9IHJlc3VsdDtcbiAgICAgICAgdGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeSAmJlxuICAgICAgICAgICAgdGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeS5yZXNldFF1ZXJ5U3RvcmVFcnJvcnMoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIFF1ZXJ5RGF0YS5wcm90b3R5cGUuaGFuZGxlRXJyb3JPckNvbXBsZXRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG9ic1F1ZXJ5ID0gdGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeTtcbiAgICAgICAgaWYgKCFvYnNRdWVyeSB8fCAhdGhpcy5wcmV2aW91c0RhdGEucmVzdWx0KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLnByZXZpb3VzRGF0YS5yZXN1bHQsIGRhdGEgPSBfYS5kYXRhLCBsb2FkaW5nID0gX2EubG9hZGluZywgZXJyb3IgPSBfYS5lcnJvcjtcbiAgICAgICAgaWYgKCFsb2FkaW5nKSB7XG4gICAgICAgICAgICB2YXIgX2IgPSB0aGlzLmdldE9wdGlvbnMoKSwgcXVlcnkgPSBfYi5xdWVyeSwgdmFyaWFibGVzID0gX2IudmFyaWFibGVzLCBvbkNvbXBsZXRlZCA9IF9iLm9uQ29tcGxldGVkLCBvbkVycm9yID0gX2Iub25FcnJvcjtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXZpb3VzT3B0aW9ucyAmJlxuICAgICAgICAgICAgICAgICF0aGlzLnByZXZpb3VzRGF0YS5sb2FkaW5nICYmXG4gICAgICAgICAgICAgICAgZXF1YWwodGhpcy5wcmV2aW91c09wdGlvbnMucXVlcnksIHF1ZXJ5KSAmJlxuICAgICAgICAgICAgICAgIGVxdWFsKHRoaXMucHJldmlvdXNPcHRpb25zLnZhcmlhYmxlcywgdmFyaWFibGVzKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvbkNvbXBsZXRlZCAmJiAhZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBvbkNvbXBsZXRlZChkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG9uRXJyb3IgJiYgZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBvbkVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgUXVlcnlEYXRhLnByb3RvdHlwZS5yZW1vdmVRdWVyeVN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE9ic2VydmFibGUuc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuY3VycmVudE9ic2VydmFibGUuc3Vic2NyaXB0aW9uO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBRdWVyeURhdGEucHJvdG90eXBlLm9ic2VydmFibGVRdWVyeUZpZWxkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG9ic2VydmFibGUgPSB0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnF1ZXJ5O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFyaWFibGVzOiBvYnNlcnZhYmxlLnZhcmlhYmxlcyxcbiAgICAgICAgICAgIHJlZmV0Y2g6IHRoaXMub2JzUmVmZXRjaCxcbiAgICAgICAgICAgIGZldGNoTW9yZTogdGhpcy5vYnNGZXRjaE1vcmUsXG4gICAgICAgICAgICB1cGRhdGVRdWVyeTogdGhpcy5vYnNVcGRhdGVRdWVyeSxcbiAgICAgICAgICAgIHN0YXJ0UG9sbGluZzogdGhpcy5vYnNTdGFydFBvbGxpbmcsXG4gICAgICAgICAgICBzdG9wUG9sbGluZzogdGhpcy5vYnNTdG9wUG9sbGluZyxcbiAgICAgICAgICAgIHN1YnNjcmliZVRvTW9yZTogdGhpcy5vYnNTdWJzY3JpYmVUb01vcmUsXG4gICAgICAgIH07XG4gICAgfTtcbiAgICByZXR1cm4gUXVlcnlEYXRhO1xufShPcGVyYXRpb25EYXRhKSk7XG5cbmZ1bmN0aW9uIHVzZURlZXBNZW1vKG1lbW9Gbiwga2V5KSB7XG4gICAgdmFyIHJlZiA9IHVzZVJlZigpO1xuICAgIGlmICghcmVmLmN1cnJlbnQgfHwgIWVxdWFsKGtleSwgcmVmLmN1cnJlbnQua2V5KSkge1xuICAgICAgICByZWYuY3VycmVudCA9IHsga2V5OiBrZXksIHZhbHVlOiBtZW1vRm4oKSB9O1xuICAgIH1cbiAgICByZXR1cm4gcmVmLmN1cnJlbnQudmFsdWU7XG59XG5cbmZ1bmN0aW9uIHVzZUJhc2VRdWVyeShxdWVyeSwgb3B0aW9ucywgbGF6eSkge1xuICAgIGlmIChsYXp5ID09PSB2b2lkIDApIHsgbGF6eSA9IGZhbHNlOyB9XG4gICAgdmFyIGNvbnRleHQgPSB1c2VDb250ZXh0KGdldEFwb2xsb0NvbnRleHQoKSk7XG4gICAgdmFyIF9hID0gdXNlUmVkdWNlcihmdW5jdGlvbiAoeCkgeyByZXR1cm4geCArIDE7IH0sIDApLCB0aWNrID0gX2FbMF0sIGZvcmNlVXBkYXRlID0gX2FbMV07XG4gICAgdmFyIHVwZGF0ZWRPcHRpb25zID0gb3B0aW9ucyA/IF9fYXNzaWduKF9fYXNzaWduKHt9LCBvcHRpb25zKSwgeyBxdWVyeTogcXVlcnkgfSkgOiB7IHF1ZXJ5OiBxdWVyeSB9O1xuICAgIHZhciBxdWVyeURhdGFSZWYgPSB1c2VSZWYoKTtcbiAgICB2YXIgcXVlcnlEYXRhID0gcXVlcnlEYXRhUmVmLmN1cnJlbnQgfHxcbiAgICAgICAgbmV3IFF1ZXJ5RGF0YSh7XG4gICAgICAgICAgICBvcHRpb25zOiB1cGRhdGVkT3B0aW9ucyxcbiAgICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgICAgICAgICBvbk5ld0RhdGE6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXF1ZXJ5RGF0YS5zc3JJbml0aWF0ZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZvcmNlVXBkYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcmNlVXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgcXVlcnlEYXRhLnNldE9wdGlvbnModXBkYXRlZE9wdGlvbnMpO1xuICAgIHF1ZXJ5RGF0YS5jb250ZXh0ID0gY29udGV4dDtcbiAgICBpZiAocXVlcnlEYXRhLnNzckluaXRpYXRlZCgpICYmICFxdWVyeURhdGFSZWYuY3VycmVudCkge1xuICAgICAgICBxdWVyeURhdGFSZWYuY3VycmVudCA9IHF1ZXJ5RGF0YTtcbiAgICB9XG4gICAgdmFyIG1lbW8gPSB7XG4gICAgICAgIG9wdGlvbnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCB1cGRhdGVkT3B0aW9ucyksIHsgb25FcnJvcjogdW5kZWZpbmVkLCBvbkNvbXBsZXRlZDogdW5kZWZpbmVkIH0pLFxuICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICB0aWNrOiB0aWNrLFxuICAgIH07XG4gICAgdmFyIHJlc3VsdCA9IHVzZURlZXBNZW1vKGZ1bmN0aW9uICgpIHsgcmV0dXJuIChsYXp5ID8gcXVlcnlEYXRhLmV4ZWN1dGVMYXp5KCkgOiBxdWVyeURhdGEuZXhlY3V0ZSgpKTsgfSwgbWVtbyk7XG4gICAgdmFyIHF1ZXJ5UmVzdWx0ID0gbGF6eVxuICAgICAgICA/IHJlc3VsdFsxXVxuICAgICAgICA6IHJlc3VsdDtcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXF1ZXJ5RGF0YVJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBxdWVyeURhdGFSZWYuY3VycmVudCA9IHF1ZXJ5RGF0YTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gcXVlcnlEYXRhLmNsZWFudXAoKTsgfTtcbiAgICB9LCBbXSk7XG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIHF1ZXJ5RGF0YS5hZnRlckV4ZWN1dGUoeyBsYXp5OiBsYXp5IH0pOyB9LCBbXG4gICAgICAgIHF1ZXJ5UmVzdWx0LmxvYWRpbmcsXG4gICAgICAgIHF1ZXJ5UmVzdWx0Lm5ldHdvcmtTdGF0dXMsXG4gICAgICAgIHF1ZXJ5UmVzdWx0LmVycm9yLFxuICAgICAgICBxdWVyeVJlc3VsdC5kYXRhLFxuICAgIF0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHVzZVF1ZXJ5KHF1ZXJ5LCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIHVzZUJhc2VRdWVyeShxdWVyeSwgb3B0aW9ucywgZmFsc2UpO1xufVxuXG5mdW5jdGlvbiB1c2VMYXp5UXVlcnkocXVlcnksIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gdXNlQmFzZVF1ZXJ5KHF1ZXJ5LCBvcHRpb25zLCB0cnVlKTtcbn1cblxudmFyIE11dGF0aW9uRGF0YSA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE11dGF0aW9uRGF0YSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBNdXRhdGlvbkRhdGEoX2EpIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSBfYS5vcHRpb25zLCBjb250ZXh0ID0gX2EuY29udGV4dCwgcmVzdWx0ID0gX2EucmVzdWx0LCBzZXRSZXN1bHQgPSBfYS5zZXRSZXN1bHQ7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIG9wdGlvbnMsIGNvbnRleHQpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnJ1bk11dGF0aW9uID0gZnVuY3Rpb24gKG11dGF0aW9uRnVuY3Rpb25PcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAobXV0YXRpb25GdW5jdGlvbk9wdGlvbnMgPT09IHZvaWQgMCkgeyBtdXRhdGlvbkZ1bmN0aW9uT3B0aW9ucyA9IHt9OyB9XG4gICAgICAgICAgICBfdGhpcy5vbk11dGF0aW9uU3RhcnQoKTtcbiAgICAgICAgICAgIHZhciBtdXRhdGlvbklkID0gX3RoaXMuZ2VuZXJhdGVOZXdNdXRhdGlvbklkKCk7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMubXV0YXRlKG11dGF0aW9uRnVuY3Rpb25PcHRpb25zKVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIF90aGlzLm9uTXV0YXRpb25Db21wbGV0ZWQocmVzcG9uc2UsIG11dGF0aW9uSWQpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIF90aGlzLm9uTXV0YXRpb25FcnJvcihlcnJvciwgbXV0YXRpb25JZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFfdGhpcy5nZXRPcHRpb25zKCkub25FcnJvcilcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgX3RoaXMudmVyaWZ5RG9jdW1lbnRUeXBlKG9wdGlvbnMubXV0YXRpb24sIERvY3VtZW50VHlwZS5NdXRhdGlvbik7XG4gICAgICAgIF90aGlzLnJlc3VsdCA9IHJlc3VsdDtcbiAgICAgICAgX3RoaXMuc2V0UmVzdWx0ID0gc2V0UmVzdWx0O1xuICAgICAgICBfdGhpcy5tb3N0UmVjZW50TXV0YXRpb25JZCA9IDA7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgTXV0YXRpb25EYXRhLnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICB0aGlzLmlzTW91bnRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMudmVyaWZ5RG9jdW1lbnRUeXBlKHRoaXMuZ2V0T3B0aW9ucygpLm11dGF0aW9uLCBEb2N1bWVudFR5cGUuTXV0YXRpb24pO1xuICAgICAgICByZXN1bHQuY2xpZW50ID0gdGhpcy5yZWZyZXNoQ2xpZW50KCkuY2xpZW50O1xuICAgICAgICByZXR1cm4gW3RoaXMucnVuTXV0YXRpb24sIHJlc3VsdF07XG4gICAgfTtcbiAgICBNdXRhdGlvbkRhdGEucHJvdG90eXBlLmFmdGVyRXhlY3V0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5pc01vdW50ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcy51bm1vdW50LmJpbmQodGhpcyk7XG4gICAgfTtcbiAgICBNdXRhdGlvbkRhdGEucHJvdG90eXBlLmNsZWFudXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgfTtcbiAgICBNdXRhdGlvbkRhdGEucHJvdG90eXBlLm11dGF0ZSA9IGZ1bmN0aW9uIChtdXRhdGlvbkZ1bmN0aW9uT3B0aW9ucykge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmdldE9wdGlvbnMoKSwgbXV0YXRpb24gPSBfYS5tdXRhdGlvbiwgdmFyaWFibGVzID0gX2EudmFyaWFibGVzLCBvcHRpbWlzdGljUmVzcG9uc2UgPSBfYS5vcHRpbWlzdGljUmVzcG9uc2UsIHVwZGF0ZSA9IF9hLnVwZGF0ZSwgX2IgPSBfYS5jb250ZXh0LCBtdXRhdGlvbkNvbnRleHQgPSBfYiA9PT0gdm9pZCAwID8ge30gOiBfYiwgX2MgPSBfYS5hd2FpdFJlZmV0Y2hRdWVyaWVzLCBhd2FpdFJlZmV0Y2hRdWVyaWVzID0gX2MgPT09IHZvaWQgMCA/IGZhbHNlIDogX2MsIGZldGNoUG9saWN5ID0gX2EuZmV0Y2hQb2xpY3k7XG4gICAgICAgIHZhciBtdXRhdGVPcHRpb25zID0gX19hc3NpZ24oe30sIG11dGF0aW9uRnVuY3Rpb25PcHRpb25zKTtcbiAgICAgICAgdmFyIG11dGF0ZVZhcmlhYmxlcyA9IE9iamVjdC5hc3NpZ24oe30sIHZhcmlhYmxlcywgbXV0YXRlT3B0aW9ucy52YXJpYWJsZXMpO1xuICAgICAgICBkZWxldGUgbXV0YXRlT3B0aW9ucy52YXJpYWJsZXM7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hDbGllbnQoKS5jbGllbnQubXV0YXRlKF9fYXNzaWduKHsgbXV0YXRpb246IG11dGF0aW9uLFxuICAgICAgICAgICAgb3B0aW1pc3RpY1Jlc3BvbnNlOiBvcHRpbWlzdGljUmVzcG9uc2UsIHJlZmV0Y2hRdWVyaWVzOiBtdXRhdGVPcHRpb25zLnJlZmV0Y2hRdWVyaWVzIHx8IHRoaXMuZ2V0T3B0aW9ucygpLnJlZmV0Y2hRdWVyaWVzLCBhd2FpdFJlZmV0Y2hRdWVyaWVzOiBhd2FpdFJlZmV0Y2hRdWVyaWVzLFxuICAgICAgICAgICAgdXBkYXRlOiB1cGRhdGUsIGNvbnRleHQ6IG11dGF0aW9uQ29udGV4dCwgZmV0Y2hQb2xpY3k6IGZldGNoUG9saWN5LCB2YXJpYWJsZXM6IG11dGF0ZVZhcmlhYmxlcyB9LCBtdXRhdGVPcHRpb25zKSk7XG4gICAgfTtcbiAgICBNdXRhdGlvbkRhdGEucHJvdG90eXBlLm9uTXV0YXRpb25TdGFydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlc3VsdC5sb2FkaW5nICYmICF0aGlzLmdldE9wdGlvbnMoKS5pZ25vcmVSZXN1bHRzKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVJlc3VsdCh7XG4gICAgICAgICAgICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlcnJvcjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGRhdGE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBjYWxsZWQ6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBNdXRhdGlvbkRhdGEucHJvdG90eXBlLm9uTXV0YXRpb25Db21wbGV0ZWQgPSBmdW5jdGlvbiAocmVzcG9uc2UsIG11dGF0aW9uSWQpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5nZXRPcHRpb25zKCksIG9uQ29tcGxldGVkID0gX2Eub25Db21wbGV0ZWQsIGlnbm9yZVJlc3VsdHMgPSBfYS5pZ25vcmVSZXN1bHRzO1xuICAgICAgICB2YXIgZGF0YSA9IHJlc3BvbnNlLmRhdGEsIGVycm9ycyA9IHJlc3BvbnNlLmVycm9ycztcbiAgICAgICAgdmFyIGVycm9yID0gZXJyb3JzICYmIGVycm9ycy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IG5ldyBBcG9sbG9FcnJvcih7IGdyYXBoUUxFcnJvcnM6IGVycm9ycyB9KVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIHZhciBjYWxsT25jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBvbkNvbXBsZXRlZCA/IG9uQ29tcGxldGVkKGRhdGEpIDogbnVsbDtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuaXNNb3N0UmVjZW50TXV0YXRpb24obXV0YXRpb25JZCkgJiYgIWlnbm9yZVJlc3VsdHMpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUmVzdWx0KHtcbiAgICAgICAgICAgICAgICBjYWxsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNhbGxPbmNvbXBsZXRlKCk7XG4gICAgfTtcbiAgICBNdXRhdGlvbkRhdGEucHJvdG90eXBlLm9uTXV0YXRpb25FcnJvciA9IGZ1bmN0aW9uIChlcnJvciwgbXV0YXRpb25JZCkge1xuICAgICAgICB2YXIgb25FcnJvciA9IHRoaXMuZ2V0T3B0aW9ucygpLm9uRXJyb3I7XG4gICAgICAgIGlmICh0aGlzLmlzTW9zdFJlY2VudE11dGF0aW9uKG11dGF0aW9uSWQpKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVJlc3VsdCh7XG4gICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yLFxuICAgICAgICAgICAgICAgIGRhdGE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBjYWxsZWQ6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvbkVycm9yKSB7XG4gICAgICAgICAgICBvbkVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgTXV0YXRpb25EYXRhLnByb3RvdHlwZS5nZW5lcmF0ZU5ld011dGF0aW9uSWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiArK3RoaXMubW9zdFJlY2VudE11dGF0aW9uSWQ7XG4gICAgfTtcbiAgICBNdXRhdGlvbkRhdGEucHJvdG90eXBlLmlzTW9zdFJlY2VudE11dGF0aW9uID0gZnVuY3Rpb24gKG11dGF0aW9uSWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9zdFJlY2VudE11dGF0aW9uSWQgPT09IG11dGF0aW9uSWQ7XG4gICAgfTtcbiAgICBNdXRhdGlvbkRhdGEucHJvdG90eXBlLnVwZGF0ZVJlc3VsdCA9IGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNNb3VudGVkICYmXG4gICAgICAgICAgICAoIXRoaXMucHJldmlvdXNSZXN1bHQgfHwgIWVxdWFsKHRoaXMucHJldmlvdXNSZXN1bHQsIHJlc3VsdCkpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFJlc3VsdChyZXN1bHQpO1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c1Jlc3VsdCA9IHJlc3VsdDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIE11dGF0aW9uRGF0YTtcbn0oT3BlcmF0aW9uRGF0YSkpO1xuXG5mdW5jdGlvbiB1c2VNdXRhdGlvbihtdXRhdGlvbiwgb3B0aW9ucykge1xuICAgIHZhciBjb250ZXh0ID0gdXNlQ29udGV4dChnZXRBcG9sbG9Db250ZXh0KCkpO1xuICAgIHZhciBfYSA9IHVzZVN0YXRlKHsgY2FsbGVkOiBmYWxzZSwgbG9hZGluZzogZmFsc2UgfSksIHJlc3VsdCA9IF9hWzBdLCBzZXRSZXN1bHQgPSBfYVsxXTtcbiAgICB2YXIgdXBkYXRlZE9wdGlvbnMgPSBvcHRpb25zID8gX19hc3NpZ24oX19hc3NpZ24oe30sIG9wdGlvbnMpLCB7IG11dGF0aW9uOiBtdXRhdGlvbiB9KSA6IHsgbXV0YXRpb246IG11dGF0aW9uIH07XG4gICAgdmFyIG11dGF0aW9uRGF0YVJlZiA9IHVzZVJlZigpO1xuICAgIGZ1bmN0aW9uIGdldE11dGF0aW9uRGF0YVJlZigpIHtcbiAgICAgICAgaWYgKCFtdXRhdGlvbkRhdGFSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgbXV0YXRpb25EYXRhUmVmLmN1cnJlbnQgPSBuZXcgTXV0YXRpb25EYXRhKHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB1cGRhdGVkT3B0aW9ucyxcbiAgICAgICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICAgICAgICAgIHJlc3VsdDogcmVzdWx0LFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdDogc2V0UmVzdWx0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbXV0YXRpb25EYXRhUmVmLmN1cnJlbnQ7XG4gICAgfVxuICAgIHZhciBtdXRhdGlvbkRhdGEgPSBnZXRNdXRhdGlvbkRhdGFSZWYoKTtcbiAgICBtdXRhdGlvbkRhdGEuc2V0T3B0aW9ucyh1cGRhdGVkT3B0aW9ucyk7XG4gICAgbXV0YXRpb25EYXRhLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7IHJldHVybiBtdXRhdGlvbkRhdGEuYWZ0ZXJFeGVjdXRlKCk7IH0pO1xuICAgIHJldHVybiBtdXRhdGlvbkRhdGEuZXhlY3V0ZShyZXN1bHQpO1xufVxuXG52YXIgU3Vic2NyaXB0aW9uRGF0YSA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFN1YnNjcmlwdGlvbkRhdGEsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU3Vic2NyaXB0aW9uRGF0YShfYSkge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IF9hLm9wdGlvbnMsIGNvbnRleHQgPSBfYS5jb250ZXh0LCBzZXRSZXN1bHQgPSBfYS5zZXRSZXN1bHQ7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIG9wdGlvbnMsIGNvbnRleHQpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmN1cnJlbnRPYnNlcnZhYmxlID0ge307XG4gICAgICAgIF90aGlzLnNldFJlc3VsdCA9IHNldFJlc3VsdDtcbiAgICAgICAgX3RoaXMuaW5pdGlhbGl6ZShvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBTdWJzY3JpcHRpb25EYXRhLnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICBpZiAodGhpcy5nZXRPcHRpb25zKCkuc2tpcCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy5jbGVhbnVwKCk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGVycm9yOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZGF0YTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdGhpcy5nZXRPcHRpb25zKCkudmFyaWFibGVzXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBjdXJyZW50UmVzdWx0ID0gcmVzdWx0O1xuICAgICAgICBpZiAodGhpcy5yZWZyZXNoQ2xpZW50KCkuaXNOZXcpIHtcbiAgICAgICAgICAgIGN1cnJlbnRSZXN1bHQgPSB0aGlzLmdldExvYWRpbmdSZXN1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2hvdWxkUmVzdWJzY3JpYmUgPSB0aGlzLmdldE9wdGlvbnMoKS5zaG91bGRSZXN1YnNjcmliZTtcbiAgICAgICAgaWYgKHR5cGVvZiBzaG91bGRSZXN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgc2hvdWxkUmVzdWJzY3JpYmUgPSAhIXNob3VsZFJlc3Vic2NyaWJlKHRoaXMuZ2V0T3B0aW9ucygpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hvdWxkUmVzdWJzY3JpYmUgIT09IGZhbHNlICYmXG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzT3B0aW9ucyAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXModGhpcy5wcmV2aW91c09wdGlvbnMpLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICh0aGlzLnByZXZpb3VzT3B0aW9ucy5zdWJzY3JpcHRpb24gIT09IHRoaXMuZ2V0T3B0aW9ucygpLnN1YnNjcmlwdGlvbiB8fFxuICAgICAgICAgICAgICAgICFlcXVhbCh0aGlzLnByZXZpb3VzT3B0aW9ucy52YXJpYWJsZXMsIHRoaXMuZ2V0T3B0aW9ucygpLnZhcmlhYmxlcykgfHxcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpb3VzT3B0aW9ucy5za2lwICE9PSB0aGlzLmdldE9wdGlvbnMoKS5za2lwKSkge1xuICAgICAgICAgICAgdGhpcy5jbGVhbnVwKCk7XG4gICAgICAgICAgICBjdXJyZW50UmVzdWx0ID0gdGhpcy5nZXRMb2FkaW5nUmVzdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0aWFsaXplKHRoaXMuZ2V0T3B0aW9ucygpKTtcbiAgICAgICAgdGhpcy5zdGFydFN1YnNjcmlwdGlvbigpO1xuICAgICAgICB0aGlzLnByZXZpb3VzT3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGN1cnJlbnRSZXN1bHQpLCB7IHZhcmlhYmxlczogdGhpcy5nZXRPcHRpb25zKCkudmFyaWFibGVzIH0pO1xuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uRGF0YS5wcm90b3R5cGUuYWZ0ZXJFeGVjdXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmlzTW91bnRlZCA9IHRydWU7XG4gICAgfTtcbiAgICBTdWJzY3JpcHRpb25EYXRhLnByb3RvdHlwZS5jbGVhbnVwID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmVuZFN1YnNjcmlwdGlvbigpO1xuICAgICAgICBkZWxldGUgdGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeTtcbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbkRhdGEucHJvdG90eXBlLmluaXRpYWxpemUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5xdWVyeSB8fCB0aGlzLmdldE9wdGlvbnMoKS5za2lwID09PSB0cnVlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnF1ZXJ5ID0gdGhpcy5yZWZyZXNoQ2xpZW50KCkuY2xpZW50LnN1YnNjcmliZSh7XG4gICAgICAgICAgICBxdWVyeTogb3B0aW9ucy5zdWJzY3JpcHRpb24sXG4gICAgICAgICAgICB2YXJpYWJsZXM6IG9wdGlvbnMudmFyaWFibGVzLFxuICAgICAgICAgICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnMuZmV0Y2hQb2xpY3lcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTdWJzY3JpcHRpb25EYXRhLnByb3RvdHlwZS5zdGFydFN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE9ic2VydmFibGUuc3Vic2NyaXB0aW9uKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnN1YnNjcmlwdGlvbiA9IHRoaXMuY3VycmVudE9ic2VydmFibGUucXVlcnkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IHRoaXMudXBkYXRlQ3VycmVudERhdGEuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIGVycm9yOiB0aGlzLnVwZGF0ZUVycm9yLmJpbmQodGhpcyksXG4gICAgICAgICAgICBjb21wbGV0ZTogdGhpcy5jb21wbGV0ZVN1YnNjcmlwdGlvbi5iaW5kKHRoaXMpXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uRGF0YS5wcm90b3R5cGUuZ2V0TG9hZGluZ1Jlc3VsdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvYWRpbmc6IHRydWUsXG4gICAgICAgICAgICBlcnJvcjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGF0YTogdW5kZWZpbmVkXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBTdWJzY3JpcHRpb25EYXRhLnByb3RvdHlwZS51cGRhdGVSZXN1bHQgPSBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIGlmICh0aGlzLmlzTW91bnRlZCkge1xuICAgICAgICAgICAgdGhpcy5zZXRSZXN1bHQocmVzdWx0KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uRGF0YS5wcm90b3R5cGUudXBkYXRlQ3VycmVudERhdGEgPSBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIHZhciBvblN1YnNjcmlwdGlvbkRhdGEgPSB0aGlzLmdldE9wdGlvbnMoKS5vblN1YnNjcmlwdGlvbkRhdGE7XG4gICAgICAgIHRoaXMudXBkYXRlUmVzdWx0KHtcbiAgICAgICAgICAgIGRhdGE6IHJlc3VsdC5kYXRhLFxuICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogdW5kZWZpbmVkXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob25TdWJzY3JpcHRpb25EYXRhKSB7XG4gICAgICAgICAgICBvblN1YnNjcmlwdGlvbkRhdGEoe1xuICAgICAgICAgICAgICAgIGNsaWVudDogdGhpcy5yZWZyZXNoQ2xpZW50KCkuY2xpZW50LFxuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbkRhdGE6IHJlc3VsdFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFN1YnNjcmlwdGlvbkRhdGEucHJvdG90eXBlLnVwZGF0ZUVycm9yID0gZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgIHRoaXMudXBkYXRlUmVzdWx0KHtcbiAgICAgICAgICAgIGVycm9yOiBlcnJvcixcbiAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3Vic2NyaXB0aW9uRGF0YS5wcm90b3R5cGUuY29tcGxldGVTdWJzY3JpcHRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBvblN1YnNjcmlwdGlvbkNvbXBsZXRlID0gdGhpcy5nZXRPcHRpb25zKCkub25TdWJzY3JpcHRpb25Db21wbGV0ZTtcbiAgICAgICAgaWYgKG9uU3Vic2NyaXB0aW9uQ29tcGxldGUpXG4gICAgICAgICAgICBvblN1YnNjcmlwdGlvbkNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuZW5kU3Vic2NyaXB0aW9uKCk7XG4gICAgfTtcbiAgICBTdWJzY3JpcHRpb25EYXRhLnByb3RvdHlwZS5lbmRTdWJzY3JpcHRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50T2JzZXJ2YWJsZS5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmN1cnJlbnRPYnNlcnZhYmxlLnN1YnNjcmlwdGlvbjtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIFN1YnNjcmlwdGlvbkRhdGE7XG59KE9wZXJhdGlvbkRhdGEpKTtcblxuZnVuY3Rpb24gdXNlU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbiwgb3B0aW9ucykge1xuICAgIHZhciBjb250ZXh0ID0gdXNlQ29udGV4dChnZXRBcG9sbG9Db250ZXh0KCkpO1xuICAgIHZhciB1cGRhdGVkT3B0aW9ucyA9IG9wdGlvbnNcbiAgICAgICAgPyBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3B0aW9ucyksIHsgc3Vic2NyaXB0aW9uOiBzdWJzY3JpcHRpb24gfSkgOiB7IHN1YnNjcmlwdGlvbjogc3Vic2NyaXB0aW9uIH07XG4gICAgdmFyIF9hID0gdXNlU3RhdGUoe1xuICAgICAgICBsb2FkaW5nOiAhdXBkYXRlZE9wdGlvbnMuc2tpcCxcbiAgICAgICAgZXJyb3I6IHVuZGVmaW5lZCxcbiAgICAgICAgZGF0YTogdW5kZWZpbmVkXG4gICAgfSksIHJlc3VsdCA9IF9hWzBdLCBzZXRSZXN1bHQgPSBfYVsxXTtcbiAgICB2YXIgc3Vic2NyaXB0aW9uRGF0YVJlZiA9IHVzZVJlZigpO1xuICAgIGZ1bmN0aW9uIGdldFN1YnNjcmlwdGlvbkRhdGFSZWYoKSB7XG4gICAgICAgIGlmICghc3Vic2NyaXB0aW9uRGF0YVJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb25EYXRhUmVmLmN1cnJlbnQgPSBuZXcgU3Vic2NyaXB0aW9uRGF0YSh7XG4gICAgICAgICAgICAgICAgb3B0aW9uczogdXBkYXRlZE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgY29udGV4dDogY29udGV4dCxcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQ6IHNldFJlc3VsdFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1YnNjcmlwdGlvbkRhdGFSZWYuY3VycmVudDtcbiAgICB9XG4gICAgdmFyIHN1YnNjcmlwdGlvbkRhdGEgPSBnZXRTdWJzY3JpcHRpb25EYXRhUmVmKCk7XG4gICAgc3Vic2NyaXB0aW9uRGF0YS5zZXRPcHRpb25zKHVwZGF0ZWRPcHRpb25zLCB0cnVlKTtcbiAgICBzdWJzY3JpcHRpb25EYXRhLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7IHJldHVybiBzdWJzY3JpcHRpb25EYXRhLmFmdGVyRXhlY3V0ZSgpOyB9KTtcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3Vic2NyaXB0aW9uRGF0YS5jbGVhbnVwLmJpbmQoc3Vic2NyaXB0aW9uRGF0YSk7IH0sIFtdKTtcbiAgICByZXR1cm4gc3Vic2NyaXB0aW9uRGF0YS5leGVjdXRlKHJlc3VsdCk7XG59XG5cbmZ1bmN0aW9uIHVzZUFwb2xsb0NsaWVudCgpIHtcbiAgICB2YXIgY2xpZW50ID0gUmVhY3QudXNlQ29udGV4dChnZXRBcG9sbG9Db250ZXh0KCkpLmNsaWVudDtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoY2xpZW50LCAxKSA6IGludmFyaWFudChjbGllbnQsICdObyBBcG9sbG8gQ2xpZW50IGluc3RhbmNlIGNhbiBiZSBmb3VuZC4gUGxlYXNlIGVuc3VyZSB0aGF0IHlvdSAnICtcbiAgICAgICAgJ2hhdmUgY2FsbGVkIGBBcG9sbG9Qcm92aWRlcmAgaGlnaGVyIHVwIGluIHlvdXIgdHJlZS4nKTtcbiAgICByZXR1cm4gY2xpZW50O1xufVxuXG5mdW5jdGlvbiBtYWtlRGVmYXVsdFF1ZXJ5SW5mbygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBzZWVuOiBmYWxzZSxcbiAgICAgICAgb2JzZXJ2YWJsZTogbnVsbFxuICAgIH07XG59XG52YXIgUmVuZGVyUHJvbWlzZXMgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFJlbmRlclByb21pc2VzKCkge1xuICAgICAgICB0aGlzLnF1ZXJ5UHJvbWlzZXMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMucXVlcnlJbmZvVHJpZSA9IG5ldyBNYXAoKTtcbiAgICB9XG4gICAgUmVuZGVyUHJvbWlzZXMucHJvdG90eXBlLnJlZ2lzdGVyU1NST2JzZXJ2YWJsZSA9IGZ1bmN0aW9uIChvYnNlcnZhYmxlLCBwcm9wcykge1xuICAgICAgICB0aGlzLmxvb2t1cFF1ZXJ5SW5mbyhwcm9wcykub2JzZXJ2YWJsZSA9IG9ic2VydmFibGU7XG4gICAgfTtcbiAgICBSZW5kZXJQcm9taXNlcy5wcm90b3R5cGUuZ2V0U1NST2JzZXJ2YWJsZSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICByZXR1cm4gdGhpcy5sb29rdXBRdWVyeUluZm8ocHJvcHMpLm9ic2VydmFibGU7XG4gICAgfTtcbiAgICBSZW5kZXJQcm9taXNlcy5wcm90b3R5cGUuYWRkUXVlcnlQcm9taXNlID0gZnVuY3Rpb24gKHF1ZXJ5SW5zdGFuY2UsIGZpbmlzaCkge1xuICAgICAgICB2YXIgaW5mbyA9IHRoaXMubG9va3VwUXVlcnlJbmZvKHF1ZXJ5SW5zdGFuY2UuZ2V0T3B0aW9ucygpKTtcbiAgICAgICAgaWYgKCFpbmZvLnNlZW4pIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlQcm9taXNlcy5zZXQocXVlcnlJbnN0YW5jZS5nZXRPcHRpb25zKCksIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShxdWVyeUluc3RhbmNlLmZldGNoRGF0YSgpKTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaW5pc2goKTtcbiAgICB9O1xuICAgIFJlbmRlclByb21pc2VzLnByb3RvdHlwZS5oYXNQcm9taXNlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlQcm9taXNlcy5zaXplID4gMDtcbiAgICB9O1xuICAgIFJlbmRlclByb21pc2VzLnByb3RvdHlwZS5jb25zdW1lQW5kQXdhaXRQcm9taXNlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHByb21pc2VzID0gW107XG4gICAgICAgIHRoaXMucXVlcnlQcm9taXNlcy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9taXNlLCBxdWVyeUluc3RhbmNlKSB7XG4gICAgICAgICAgICBfdGhpcy5sb29rdXBRdWVyeUluZm8ocXVlcnlJbnN0YW5jZSkuc2VlbiA9IHRydWU7XG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKHByb21pc2UpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5xdWVyeVByb21pc2VzLmNsZWFyKCk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgfTtcbiAgICBSZW5kZXJQcm9taXNlcy5wcm90b3R5cGUubG9va3VwUXVlcnlJbmZvID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgIHZhciBxdWVyeUluZm9UcmllID0gdGhpcy5xdWVyeUluZm9UcmllO1xuICAgICAgICB2YXIgcXVlcnkgPSBwcm9wcy5xdWVyeSwgdmFyaWFibGVzID0gcHJvcHMudmFyaWFibGVzO1xuICAgICAgICB2YXIgdmFyTWFwID0gcXVlcnlJbmZvVHJpZS5nZXQocXVlcnkpIHx8IG5ldyBNYXAoKTtcbiAgICAgICAgaWYgKCFxdWVyeUluZm9UcmllLmhhcyhxdWVyeSkpXG4gICAgICAgICAgICBxdWVyeUluZm9UcmllLnNldChxdWVyeSwgdmFyTWFwKTtcbiAgICAgICAgdmFyIHZhcmlhYmxlc1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KHZhcmlhYmxlcyk7XG4gICAgICAgIHZhciBpbmZvID0gdmFyTWFwLmdldCh2YXJpYWJsZXNTdHJpbmcpIHx8IG1ha2VEZWZhdWx0UXVlcnlJbmZvKCk7XG4gICAgICAgIGlmICghdmFyTWFwLmhhcyh2YXJpYWJsZXNTdHJpbmcpKVxuICAgICAgICAgICAgdmFyTWFwLnNldCh2YXJpYWJsZXNTdHJpbmcsIGluZm8pO1xuICAgICAgICByZXR1cm4gaW5mbztcbiAgICB9O1xuICAgIHJldHVybiBSZW5kZXJQcm9taXNlcztcbn0oKSk7XG5cbmV4cG9ydCB7IFJlbmRlclByb21pc2VzLCB1c2VBcG9sbG9DbGllbnQsIHVzZUxhenlRdWVyeSwgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5LCB1c2VTdWJzY3JpcHRpb24gfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlYWN0LWhvb2tzLmVzbS5qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/react-hooks/lib/react-hooks.esm.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/react-ssr/lib/react-ssr.esm.js":
/*!*************************************************************!*\
  !*** ./node_modules/@apollo/react-ssr/lib/react-ssr.esm.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getDataFromTree\": function() { return /* binding */ getDataFromTree; },\n/* harmony export */   \"getMarkupFromTree\": function() { return /* binding */ getMarkupFromTree; },\n/* harmony export */   \"renderToStringWithData\": function() { return /* binding */ renderToStringWithData; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _apollo_react_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @apollo/react-common */ \"./node_modules/@apollo/react-common/lib/react-common.esm.js\");\n/* harmony import */ var _apollo_react_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @apollo/react-hooks */ \"./node_modules/@apollo/react-hooks/lib/react-hooks.esm.js\");\n\n\n\n\n\nfunction getDataFromTree(tree, context) {\n    if (context === void 0) { context = {}; }\n    return getMarkupFromTree({\n        tree: tree,\n        context: context,\n        renderFunction: (__webpack_require__(/*! react-dom/server */ \"./node_modules/react-dom/server.browser.js\").renderToStaticMarkup)\n    });\n}\nfunction getMarkupFromTree(_a) {\n    var tree = _a.tree, _b = _a.context, context = _b === void 0 ? {} : _b, _c = _a.renderFunction, renderFunction = _c === void 0 ? (__webpack_require__(/*! react-dom/server */ \"./node_modules/react-dom/server.browser.js\").renderToStaticMarkup) : _c;\n    var renderPromises = new _apollo_react_hooks__WEBPACK_IMPORTED_MODULE_1__.RenderPromises();\n    function process() {\n        var ApolloContext = (0,_apollo_react_common__WEBPACK_IMPORTED_MODULE_2__.getApolloContext)();\n        var html = renderFunction(react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ApolloContext.Provider, { value: (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, context), { renderPromises: renderPromises }) }, tree));\n        return renderPromises.hasPromises()\n            ? renderPromises.consumeAndAwaitPromises().then(process)\n            : html;\n    }\n    return Promise.resolve().then(process);\n}\n\nfunction renderToStringWithData(component) {\n    return getMarkupFromTree({\n        tree: component,\n        renderFunction: (__webpack_require__(/*! react-dom/server */ \"./node_modules/react-dom/server.browser.js\").renderToString)\n    });\n}\n\n\n//# sourceMappingURL=react-ssr.esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9yZWFjdC1zc3IvbGliL3JlYWN0LXNzci5lc20uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBaUM7QUFDUDtBQUM4QjtBQUNIOztBQUVyRDtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0hBQWdEO0FBQ3hFLEtBQUs7QUFDTDtBQUNBO0FBQ0Esc0VBQXNFLCtEQUErRCxnSEFBZ0Q7QUFDckwsNkJBQTZCLCtEQUFjO0FBQzNDO0FBQ0EsNEJBQTRCLHNFQUFnQjtBQUM1QyxrQ0FBa0MsMERBQW1CLDJCQUEyQixPQUFPLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxjQUFjLGdDQUFnQyxHQUFHO0FBQzVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMEdBQTBDO0FBQ2xFLEtBQUs7QUFDTDs7QUFFc0U7QUFDdEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vcmVhY3Qtc3NyL2xpYi9yZWFjdC1zc3IuZXNtLmpzPzE5NDkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tICd0c2xpYic7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ2V0QXBvbGxvQ29udGV4dCB9IGZyb20gJ0BhcG9sbG8vcmVhY3QtY29tbW9uJztcbmltcG9ydCB7IFJlbmRlclByb21pc2VzIH0gZnJvbSAnQGFwb2xsby9yZWFjdC1ob29rcyc7XG5cbmZ1bmN0aW9uIGdldERhdGFGcm9tVHJlZSh0cmVlLCBjb250ZXh0KSB7XG4gICAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkgeyBjb250ZXh0ID0ge307IH1cbiAgICByZXR1cm4gZ2V0TWFya3VwRnJvbVRyZWUoe1xuICAgICAgICB0cmVlOiB0cmVlLFxuICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICByZW5kZXJGdW5jdGlvbjogcmVxdWlyZSgncmVhY3QtZG9tL3NlcnZlcicpLnJlbmRlclRvU3RhdGljTWFya3VwXG4gICAgfSk7XG59XG5mdW5jdGlvbiBnZXRNYXJrdXBGcm9tVHJlZShfYSkge1xuICAgIHZhciB0cmVlID0gX2EudHJlZSwgX2IgPSBfYS5jb250ZXh0LCBjb250ZXh0ID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2IsIF9jID0gX2EucmVuZGVyRnVuY3Rpb24sIHJlbmRlckZ1bmN0aW9uID0gX2MgPT09IHZvaWQgMCA/IHJlcXVpcmUoJ3JlYWN0LWRvbS9zZXJ2ZXInKS5yZW5kZXJUb1N0YXRpY01hcmt1cCA6IF9jO1xuICAgIHZhciByZW5kZXJQcm9taXNlcyA9IG5ldyBSZW5kZXJQcm9taXNlcygpO1xuICAgIGZ1bmN0aW9uIHByb2Nlc3MoKSB7XG4gICAgICAgIHZhciBBcG9sbG9Db250ZXh0ID0gZ2V0QXBvbGxvQ29udGV4dCgpO1xuICAgICAgICB2YXIgaHRtbCA9IHJlbmRlckZ1bmN0aW9uKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQXBvbGxvQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogX19hc3NpZ24oX19hc3NpZ24oe30sIGNvbnRleHQpLCB7IHJlbmRlclByb21pc2VzOiByZW5kZXJQcm9taXNlcyB9KSB9LCB0cmVlKSk7XG4gICAgICAgIHJldHVybiByZW5kZXJQcm9taXNlcy5oYXNQcm9taXNlcygpXG4gICAgICAgICAgICA/IHJlbmRlclByb21pc2VzLmNvbnN1bWVBbmRBd2FpdFByb21pc2VzKCkudGhlbihwcm9jZXNzKVxuICAgICAgICAgICAgOiBodG1sO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihwcm9jZXNzKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyVG9TdHJpbmdXaXRoRGF0YShjb21wb25lbnQpIHtcbiAgICByZXR1cm4gZ2V0TWFya3VwRnJvbVRyZWUoe1xuICAgICAgICB0cmVlOiBjb21wb25lbnQsXG4gICAgICAgIHJlbmRlckZ1bmN0aW9uOiByZXF1aXJlKCdyZWFjdC1kb20vc2VydmVyJykucmVuZGVyVG9TdHJpbmdcbiAgICB9KTtcbn1cblxuZXhwb3J0IHsgZ2V0RGF0YUZyb21UcmVlLCBnZXRNYXJrdXBGcm9tVHJlZSwgcmVuZGVyVG9TdHJpbmdXaXRoRGF0YSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVhY3Qtc3NyLmVzbS5qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/react-ssr/lib/react-ssr.esm.js\n");
 
/***/ }),
 
/***/ "./node_modules/@wry/context/lib/context.esm.js":
/*!******************************************************!*\
  !*** ./node_modules/@wry/context/lib/context.esm.js ***!
  \******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Slot\": function() { return /* binding */ Slot; },\n/* harmony export */   \"asyncFromGen\": function() { return /* binding */ asyncFromGen; },\n/* harmony export */   \"bind\": function() { return /* binding */ bind; },\n/* harmony export */   \"noContext\": function() { return /* binding */ noContext; },\n/* harmony export */   \"setTimeout\": function() { return /* binding */ setTimeoutWithContext; },\n/* harmony export */   \"wrapYieldingFiberMethods\": function() { return /* binding */ wrapYieldingFiberMethods; }\n/* harmony export */ });\n// This currentContext variable will only be used if the makeSlotClass\r\n// function is called, which happens only if this is the first copy of the\r\n// @wry/context package to be imported.\r\nvar currentContext = null;\r\n// This unique internal object is used to denote the absence of a value\r\n// for a given Slot, and is never exposed to outside code.\r\nvar MISSING_VALUE = {};\r\nvar idCounter = 1;\r\n// Although we can't do anything about the cost of duplicated code from\r\n// accidentally bundling multiple copies of the @wry/context package, we can\r\n// avoid creating the Slot class more than once using makeSlotClass.\r\nvar makeSlotClass = function () { return /** @class */ (function () {\r\n    function Slot() {\r\n        // If you have a Slot object, you can find out its slot.id, but you cannot\r\n        // guess the slot.id of a Slot you don't have access to, thanks to the\r\n        // randomized suffix.\r\n        this.id = [\r\n            \"slot\",\r\n            idCounter++,\r\n            Date.now(),\r\n            Math.random().toString(36).slice(2),\r\n        ].join(\":\");\r\n    }\r\n    Slot.prototype.hasValue = function () {\r\n        for (var context_1 = currentContext; context_1; context_1 = context_1.parent) {\r\n            // We use the Slot object iself as a key to its value, which means the\r\n            // value cannot be obtained without a reference to the Slot object.\r\n            if (this.id in context_1.slots) {\r\n                var value = context_1.slots[this.id];\r\n                if (value === MISSING_VALUE)\r\n                    break;\r\n                if (context_1 !== currentContext) {\r\n                    // Cache the value in currentContext.slots so the next lookup will\r\n                    // be faster. This caching is safe because the tree of contexts and\r\n                    // the values of the slots are logically immutable.\r\n                    currentContext.slots[this.id] = value;\r\n                }\r\n                return true;\r\n            }\r\n        }\r\n        if (currentContext) {\r\n            // If a value was not found for this Slot, it's never going to be found\r\n            // no matter how many times we look it up, so we might as well cache\r\n            // the absence of the value, too.\r\n            currentContext.slots[this.id] = MISSING_VALUE;\r\n        }\r\n        return false;\r\n    };\r\n    Slot.prototype.getValue = function () {\r\n        if (this.hasValue()) {\r\n            return currentContext.slots[this.id];\r\n        }\r\n    };\r\n    Slot.prototype.withValue = function (value, callback, \r\n    // Given the prevalence of arrow functions, specifying arguments is likely\r\n    // to be much more common than specifying `this`, hence this ordering:\r\n    args, thisArg) {\r\n        var _a;\r\n        var slots = (_a = {\r\n                __proto__: null\r\n            },\r\n            _a[this.id] = value,\r\n            _a);\r\n        var parent = currentContext;\r\n        currentContext = { parent: parent, slots: slots };\r\n        try {\r\n            // Function.prototype.apply allows the arguments array argument to be\r\n            // omitted or undefined, so args! is fine here.\r\n            return callback.apply(thisArg, args);\r\n        }\r\n        finally {\r\n            currentContext = parent;\r\n        }\r\n    };\r\n    // Capture the current context and wrap a callback function so that it\r\n    // reestablishes the captured context when called.\r\n    Slot.bind = function (callback) {\r\n        var context = currentContext;\r\n        return function () {\r\n            var saved = currentContext;\r\n            try {\r\n                currentContext = context;\r\n                return callback.apply(this, arguments);\r\n            }\r\n            finally {\r\n                currentContext = saved;\r\n            }\r\n        };\r\n    };\r\n    // Immediately run a callback function without any captured context.\r\n    Slot.noContext = function (callback, \r\n    // Given the prevalence of arrow functions, specifying arguments is likely\r\n    // to be much more common than specifying `this`, hence this ordering:\r\n    args, thisArg) {\r\n        if (currentContext) {\r\n            var saved = currentContext;\r\n            try {\r\n                currentContext = null;\r\n                // Function.prototype.apply allows the arguments array argument to be\r\n                // omitted or undefined, so args! is fine here.\r\n                return callback.apply(thisArg, args);\r\n            }\r\n            finally {\r\n                currentContext = saved;\r\n            }\r\n        }\r\n        else {\r\n            return callback.apply(thisArg, args);\r\n        }\r\n    };\r\n    return Slot;\r\n}()); };\r\n// We store a single global implementation of the Slot class as a permanent\r\n// non-enumerable symbol property of the Array constructor. This obfuscation\r\n// does nothing to prevent access to the Slot class, but at least it ensures\r\n// the implementation (i.e. currentContext) cannot be tampered with, and all\r\n// copies of the @wry/context package (hopefully just one) will share the\r\n// same Slot implementation. Since the first copy of the @wry/context package\r\n// to be imported wins, this technique imposes a very high cost for any\r\n// future breaking changes to the Slot class.\r\nvar globalKey = \"@wry/context:Slot\";\r\nvar host = Array;\r\nvar Slot = host[globalKey] || function () {\r\n    var Slot = makeSlotClass();\r\n    try {\r\n        Object.defineProperty(host, globalKey, {\r\n            value: host[globalKey] = Slot,\r\n            enumerable: false,\r\n            writable: false,\r\n            configurable: false,\r\n        });\r\n    }\r\n    finally {\r\n        return Slot;\r\n    }\r\n}();\n\nvar bind = Slot.bind, noContext = Slot.noContext;\r\nfunction setTimeoutWithContext(callback, delay) {\r\n    return setTimeout(bind(callback), delay);\r\n}\r\n// Turn any generator function into an async function (using yield instead\r\n// of await), with context automatically preserved across yields.\r\nfunction asyncFromGen(genFn) {\r\n    return function () {\r\n        var gen = genFn.apply(this, arguments);\r\n        var boundNext = bind(gen.next);\r\n        var boundThrow = bind(gen.throw);\r\n        return new Promise(function (resolve, reject) {\r\n            function invoke(method, argument) {\r\n                try {\r\n                    var result = method.call(gen, argument);\r\n                }\r\n                catch (error) {\r\n                    return reject(error);\r\n                }\r\n                var next = result.done ? resolve : invokeNext;\r\n                if (isPromiseLike(result.value)) {\r\n                    result.value.then(next, result.done ? reject : invokeThrow);\r\n                }\r\n                else {\r\n                    next(result.value);\r\n                }\r\n            }\r\n            var invokeNext = function (value) { return invoke(boundNext, value); };\r\n            var invokeThrow = function (error) { return invoke(boundThrow, error); };\r\n            invokeNext();\r\n        });\r\n    };\r\n}\r\nfunction isPromiseLike(value) {\r\n    return value && typeof value.then === \"function\";\r\n}\r\n// If you use the fibers npm package to implement coroutines in Node.js,\r\n// you should call this function at least once to ensure context management\r\n// remains coherent across any yields.\r\nvar wrappedFibers = [];\r\nfunction wrapYieldingFiberMethods(Fiber) {\r\n    // There can be only one implementation of Fiber per process, so this array\r\n    // should never grow longer than one element.\r\n    if (wrappedFibers.indexOf(Fiber) < 0) {\r\n        var wrap = function (obj, method) {\r\n            var fn = obj[method];\r\n            obj[method] = function () {\r\n                return noContext(fn, arguments, this);\r\n            };\r\n        };\r\n        // These methods can yield, according to\r\n        // https://github.com/laverdet/node-fibers/blob/ddebed9b8ae3883e57f822e2108e6943e5c8d2a8/fibers.js#L97-L100\r\n        wrap(Fiber, \"yield\");\r\n        wrap(Fiber.prototype, \"run\");\r\n        wrap(Fiber.prototype, \"throwInto\");\r\n        wrappedFibers.push(Fiber);\r\n    }\r\n    return Fiber;\r\n}\n\n\n//# sourceMappingURL=context.esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHdyeS9jb250ZXh0L2xpYi9jb250ZXh0LmVzbS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxXQUFXO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hELGlEQUFpRDtBQUNqRDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFOEc7QUFDOUciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0B3cnkvY29udGV4dC9saWIvY29udGV4dC5lc20uanM/Y2JiZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGN1cnJlbnRDb250ZXh0IHZhcmlhYmxlIHdpbGwgb25seSBiZSB1c2VkIGlmIHRoZSBtYWtlU2xvdENsYXNzXHJcbi8vIGZ1bmN0aW9uIGlzIGNhbGxlZCwgd2hpY2ggaGFwcGVucyBvbmx5IGlmIHRoaXMgaXMgdGhlIGZpcnN0IGNvcHkgb2YgdGhlXHJcbi8vIEB3cnkvY29udGV4dCBwYWNrYWdlIHRvIGJlIGltcG9ydGVkLlxyXG52YXIgY3VycmVudENvbnRleHQgPSBudWxsO1xyXG4vLyBUaGlzIHVuaXF1ZSBpbnRlcm5hbCBvYmplY3QgaXMgdXNlZCB0byBkZW5vdGUgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZVxyXG4vLyBmb3IgYSBnaXZlbiBTbG90LCBhbmQgaXMgbmV2ZXIgZXhwb3NlZCB0byBvdXRzaWRlIGNvZGUuXHJcbnZhciBNSVNTSU5HX1ZBTFVFID0ge307XHJcbnZhciBpZENvdW50ZXIgPSAxO1xyXG4vLyBBbHRob3VnaCB3ZSBjYW4ndCBkbyBhbnl0aGluZyBhYm91dCB0aGUgY29zdCBvZiBkdXBsaWNhdGVkIGNvZGUgZnJvbVxyXG4vLyBhY2NpZGVudGFsbHkgYnVuZGxpbmcgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBAd3J5L2NvbnRleHQgcGFja2FnZSwgd2UgY2FuXHJcbi8vIGF2b2lkIGNyZWF0aW5nIHRoZSBTbG90IGNsYXNzIG1vcmUgdGhhbiBvbmNlIHVzaW5nIG1ha2VTbG90Q2xhc3MuXHJcbnZhciBtYWtlU2xvdENsYXNzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gU2xvdCgpIHtcclxuICAgICAgICAvLyBJZiB5b3UgaGF2ZSBhIFNsb3Qgb2JqZWN0LCB5b3UgY2FuIGZpbmQgb3V0IGl0cyBzbG90LmlkLCBidXQgeW91IGNhbm5vdFxyXG4gICAgICAgIC8vIGd1ZXNzIHRoZSBzbG90LmlkIG9mIGEgU2xvdCB5b3UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8sIHRoYW5rcyB0byB0aGVcclxuICAgICAgICAvLyByYW5kb21pemVkIHN1ZmZpeC5cclxuICAgICAgICB0aGlzLmlkID0gW1xyXG4gICAgICAgICAgICBcInNsb3RcIixcclxuICAgICAgICAgICAgaWRDb3VudGVyKyssXHJcbiAgICAgICAgICAgIERhdGUubm93KCksXHJcbiAgICAgICAgICAgIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLFxyXG4gICAgICAgIF0uam9pbihcIjpcIik7XHJcbiAgICB9XHJcbiAgICBTbG90LnByb3RvdHlwZS5oYXNWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBmb3IgKHZhciBjb250ZXh0XzEgPSBjdXJyZW50Q29udGV4dDsgY29udGV4dF8xOyBjb250ZXh0XzEgPSBjb250ZXh0XzEucGFyZW50KSB7XHJcbiAgICAgICAgICAgIC8vIFdlIHVzZSB0aGUgU2xvdCBvYmplY3QgaXNlbGYgYXMgYSBrZXkgdG8gaXRzIHZhbHVlLCB3aGljaCBtZWFucyB0aGVcclxuICAgICAgICAgICAgLy8gdmFsdWUgY2Fubm90IGJlIG9idGFpbmVkIHdpdGhvdXQgYSByZWZlcmVuY2UgdG8gdGhlIFNsb3Qgb2JqZWN0LlxyXG4gICAgICAgICAgICBpZiAodGhpcy5pZCBpbiBjb250ZXh0XzEuc2xvdHMpIHtcclxuICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGNvbnRleHRfMS5zbG90c1t0aGlzLmlkXTtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gTUlTU0lOR19WQUxVRSlcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0XzEgIT09IGN1cnJlbnRDb250ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2FjaGUgdGhlIHZhbHVlIGluIGN1cnJlbnRDb250ZXh0LnNsb3RzIHNvIHRoZSBuZXh0IGxvb2t1cCB3aWxsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYmUgZmFzdGVyLiBUaGlzIGNhY2hpbmcgaXMgc2FmZSBiZWNhdXNlIHRoZSB0cmVlIG9mIGNvbnRleHRzIGFuZFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSB2YWx1ZXMgb2YgdGhlIHNsb3RzIGFyZSBsb2dpY2FsbHkgaW1tdXRhYmxlLlxyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb250ZXh0LnNsb3RzW3RoaXMuaWRdID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY3VycmVudENvbnRleHQpIHtcclxuICAgICAgICAgICAgLy8gSWYgYSB2YWx1ZSB3YXMgbm90IGZvdW5kIGZvciB0aGlzIFNsb3QsIGl0J3MgbmV2ZXIgZ29pbmcgdG8gYmUgZm91bmRcclxuICAgICAgICAgICAgLy8gbm8gbWF0dGVyIGhvdyBtYW55IHRpbWVzIHdlIGxvb2sgaXQgdXAsIHNvIHdlIG1pZ2h0IGFzIHdlbGwgY2FjaGVcclxuICAgICAgICAgICAgLy8gdGhlIGFic2VuY2Ugb2YgdGhlIHZhbHVlLCB0b28uXHJcbiAgICAgICAgICAgIGN1cnJlbnRDb250ZXh0LnNsb3RzW3RoaXMuaWRdID0gTUlTU0lOR19WQUxVRTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuICAgIFNsb3QucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc1ZhbHVlKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb250ZXh0LnNsb3RzW3RoaXMuaWRdO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBTbG90LnByb3RvdHlwZS53aXRoVmFsdWUgPSBmdW5jdGlvbiAodmFsdWUsIGNhbGxiYWNrLCBcclxuICAgIC8vIEdpdmVuIHRoZSBwcmV2YWxlbmNlIG9mIGFycm93IGZ1bmN0aW9ucywgc3BlY2lmeWluZyBhcmd1bWVudHMgaXMgbGlrZWx5XHJcbiAgICAvLyB0byBiZSBtdWNoIG1vcmUgY29tbW9uIHRoYW4gc3BlY2lmeWluZyBgdGhpc2AsIGhlbmNlIHRoaXMgb3JkZXJpbmc6XHJcbiAgICBhcmdzLCB0aGlzQXJnKSB7XHJcbiAgICAgICAgdmFyIF9hO1xyXG4gICAgICAgIHZhciBzbG90cyA9IChfYSA9IHtcclxuICAgICAgICAgICAgICAgIF9fcHJvdG9fXzogbnVsbFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBfYVt0aGlzLmlkXSA9IHZhbHVlLFxyXG4gICAgICAgICAgICBfYSk7XHJcbiAgICAgICAgdmFyIHBhcmVudCA9IGN1cnJlbnRDb250ZXh0O1xyXG4gICAgICAgIGN1cnJlbnRDb250ZXh0ID0geyBwYXJlbnQ6IHBhcmVudCwgc2xvdHM6IHNsb3RzIH07XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5IGFsbG93cyB0aGUgYXJndW1lbnRzIGFycmF5IGFyZ3VtZW50IHRvIGJlXHJcbiAgICAgICAgICAgIC8vIG9taXR0ZWQgb3IgdW5kZWZpbmVkLCBzbyBhcmdzISBpcyBmaW5lIGhlcmUuXHJcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjay5hcHBseSh0aGlzQXJnLCBhcmdzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7XHJcbiAgICAgICAgICAgIGN1cnJlbnRDb250ZXh0ID0gcGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvLyBDYXB0dXJlIHRoZSBjdXJyZW50IGNvbnRleHQgYW5kIHdyYXAgYSBjYWxsYmFjayBmdW5jdGlvbiBzbyB0aGF0IGl0XHJcbiAgICAvLyByZWVzdGFibGlzaGVzIHRoZSBjYXB0dXJlZCBjb250ZXh0IHdoZW4gY2FsbGVkLlxyXG4gICAgU2xvdC5iaW5kID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XHJcbiAgICAgICAgdmFyIGNvbnRleHQgPSBjdXJyZW50Q29udGV4dDtcclxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIgc2F2ZWQgPSBjdXJyZW50Q29udGV4dDtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRDb250ZXh0ID0gY29udGV4dDtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjay5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudENvbnRleHQgPSBzYXZlZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG4gICAgLy8gSW1tZWRpYXRlbHkgcnVuIGEgY2FsbGJhY2sgZnVuY3Rpb24gd2l0aG91dCBhbnkgY2FwdHVyZWQgY29udGV4dC5cclxuICAgIFNsb3Qubm9Db250ZXh0ID0gZnVuY3Rpb24gKGNhbGxiYWNrLCBcclxuICAgIC8vIEdpdmVuIHRoZSBwcmV2YWxlbmNlIG9mIGFycm93IGZ1bmN0aW9ucywgc3BlY2lmeWluZyBhcmd1bWVudHMgaXMgbGlrZWx5XHJcbiAgICAvLyB0byBiZSBtdWNoIG1vcmUgY29tbW9uIHRoYW4gc3BlY2lmeWluZyBgdGhpc2AsIGhlbmNlIHRoaXMgb3JkZXJpbmc6XHJcbiAgICBhcmdzLCB0aGlzQXJnKSB7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRDb250ZXh0KSB7XHJcbiAgICAgICAgICAgIHZhciBzYXZlZCA9IGN1cnJlbnRDb250ZXh0O1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudENvbnRleHQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgLy8gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5IGFsbG93cyB0aGUgYXJndW1lbnRzIGFycmF5IGFyZ3VtZW50IHRvIGJlXHJcbiAgICAgICAgICAgICAgICAvLyBvbWl0dGVkIG9yIHVuZGVmaW5lZCwgc28gYXJncyEgaXMgZmluZSBoZXJlLlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudENvbnRleHQgPSBzYXZlZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICByZXR1cm4gU2xvdDtcclxufSgpKTsgfTtcclxuLy8gV2Ugc3RvcmUgYSBzaW5nbGUgZ2xvYmFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTbG90IGNsYXNzIGFzIGEgcGVybWFuZW50XHJcbi8vIG5vbi1lbnVtZXJhYmxlIHN5bWJvbCBwcm9wZXJ0eSBvZiB0aGUgQXJyYXkgY29uc3RydWN0b3IuIFRoaXMgb2JmdXNjYXRpb25cclxuLy8gZG9lcyBub3RoaW5nIHRvIHByZXZlbnQgYWNjZXNzIHRvIHRoZSBTbG90IGNsYXNzLCBidXQgYXQgbGVhc3QgaXQgZW5zdXJlc1xyXG4vLyB0aGUgaW1wbGVtZW50YXRpb24gKGkuZS4gY3VycmVudENvbnRleHQpIGNhbm5vdCBiZSB0YW1wZXJlZCB3aXRoLCBhbmQgYWxsXHJcbi8vIGNvcGllcyBvZiB0aGUgQHdyeS9jb250ZXh0IHBhY2thZ2UgKGhvcGVmdWxseSBqdXN0IG9uZSkgd2lsbCBzaGFyZSB0aGVcclxuLy8gc2FtZSBTbG90IGltcGxlbWVudGF0aW9uLiBTaW5jZSB0aGUgZmlyc3QgY29weSBvZiB0aGUgQHdyeS9jb250ZXh0IHBhY2thZ2VcclxuLy8gdG8gYmUgaW1wb3J0ZWQgd2lucywgdGhpcyB0ZWNobmlxdWUgaW1wb3NlcyBhIHZlcnkgaGlnaCBjb3N0IGZvciBhbnlcclxuLy8gZnV0dXJlIGJyZWFraW5nIGNoYW5nZXMgdG8gdGhlIFNsb3QgY2xhc3MuXHJcbnZhciBnbG9iYWxLZXkgPSBcIkB3cnkvY29udGV4dDpTbG90XCI7XHJcbnZhciBob3N0ID0gQXJyYXk7XHJcbnZhciBTbG90ID0gaG9zdFtnbG9iYWxLZXldIHx8IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBTbG90ID0gbWFrZVNsb3RDbGFzcygpO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaG9zdCwgZ2xvYmFsS2V5LCB7XHJcbiAgICAgICAgICAgIHZhbHVlOiBob3N0W2dsb2JhbEtleV0gPSBTbG90LFxyXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgcmV0dXJuIFNsb3Q7XHJcbiAgICB9XHJcbn0oKTtcblxudmFyIGJpbmQgPSBTbG90LmJpbmQsIG5vQ29udGV4dCA9IFNsb3Qubm9Db250ZXh0O1xyXG5mdW5jdGlvbiBzZXRUaW1lb3V0V2l0aENvbnRleHQoY2FsbGJhY2ssIGRlbGF5KSB7XHJcbiAgICByZXR1cm4gc2V0VGltZW91dChiaW5kKGNhbGxiYWNrKSwgZGVsYXkpO1xyXG59XHJcbi8vIFR1cm4gYW55IGdlbmVyYXRvciBmdW5jdGlvbiBpbnRvIGFuIGFzeW5jIGZ1bmN0aW9uICh1c2luZyB5aWVsZCBpbnN0ZWFkXHJcbi8vIG9mIGF3YWl0KSwgd2l0aCBjb250ZXh0IGF1dG9tYXRpY2FsbHkgcHJlc2VydmVkIGFjcm9zcyB5aWVsZHMuXHJcbmZ1bmN0aW9uIGFzeW5jRnJvbUdlbihnZW5Gbikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgZ2VuID0gZ2VuRm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxuICAgICAgICB2YXIgYm91bmROZXh0ID0gYmluZChnZW4ubmV4dCk7XHJcbiAgICAgICAgdmFyIGJvdW5kVGhyb3cgPSBiaW5kKGdlbi50aHJvdyk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICAgICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJndW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG1ldGhvZC5jYWxsKGdlbiwgYXJndW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IHJlc3VsdC5kb25lID8gcmVzb2x2ZSA6IGludm9rZU5leHQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNQcm9taXNlTGlrZShyZXN1bHQudmFsdWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnZhbHVlLnRoZW4obmV4dCwgcmVzdWx0LmRvbmUgPyByZWplY3QgOiBpbnZva2VUaHJvdyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0KHJlc3VsdC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIGludm9rZU5leHQgPSBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIGludm9rZShib3VuZE5leHQsIHZhbHVlKTsgfTtcclxuICAgICAgICAgICAgdmFyIGludm9rZVRocm93ID0gZnVuY3Rpb24gKGVycm9yKSB7IHJldHVybiBpbnZva2UoYm91bmRUaHJvdywgZXJyb3IpOyB9O1xyXG4gICAgICAgICAgICBpbnZva2VOZXh0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIGlzUHJvbWlzZUxpa2UodmFsdWUpIHtcclxuICAgIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PT0gXCJmdW5jdGlvblwiO1xyXG59XHJcbi8vIElmIHlvdSB1c2UgdGhlIGZpYmVycyBucG0gcGFja2FnZSB0byBpbXBsZW1lbnQgY29yb3V0aW5lcyBpbiBOb2RlLmpzLFxyXG4vLyB5b3Ugc2hvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiBhdCBsZWFzdCBvbmNlIHRvIGVuc3VyZSBjb250ZXh0IG1hbmFnZW1lbnRcclxuLy8gcmVtYWlucyBjb2hlcmVudCBhY3Jvc3MgYW55IHlpZWxkcy5cclxudmFyIHdyYXBwZWRGaWJlcnMgPSBbXTtcclxuZnVuY3Rpb24gd3JhcFlpZWxkaW5nRmliZXJNZXRob2RzKEZpYmVyKSB7XHJcbiAgICAvLyBUaGVyZSBjYW4gYmUgb25seSBvbmUgaW1wbGVtZW50YXRpb24gb2YgRmliZXIgcGVyIHByb2Nlc3MsIHNvIHRoaXMgYXJyYXlcclxuICAgIC8vIHNob3VsZCBuZXZlciBncm93IGxvbmdlciB0aGFuIG9uZSBlbGVtZW50LlxyXG4gICAgaWYgKHdyYXBwZWRGaWJlcnMuaW5kZXhPZihGaWJlcikgPCAwKSB7XHJcbiAgICAgICAgdmFyIHdyYXAgPSBmdW5jdGlvbiAob2JqLCBtZXRob2QpIHtcclxuICAgICAgICAgICAgdmFyIGZuID0gb2JqW21ldGhvZF07XHJcbiAgICAgICAgICAgIG9ialttZXRob2RdID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vQ29udGV4dChmbiwgYXJndW1lbnRzLCB0aGlzKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIFRoZXNlIG1ldGhvZHMgY2FuIHlpZWxkLCBhY2NvcmRpbmcgdG9cclxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbGF2ZXJkZXQvbm9kZS1maWJlcnMvYmxvYi9kZGViZWQ5YjhhZTM4ODNlNTdmODIyZTIxMDhlNjk0M2U1YzhkMmE4L2ZpYmVycy5qcyNMOTctTDEwMFxyXG4gICAgICAgIHdyYXAoRmliZXIsIFwieWllbGRcIik7XHJcbiAgICAgICAgd3JhcChGaWJlci5wcm90b3R5cGUsIFwicnVuXCIpO1xyXG4gICAgICAgIHdyYXAoRmliZXIucHJvdG90eXBlLCBcInRocm93SW50b1wiKTtcclxuICAgICAgICB3cmFwcGVkRmliZXJzLnB1c2goRmliZXIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIEZpYmVyO1xyXG59XG5cbmV4cG9ydCB7IFNsb3QsIGFzeW5jRnJvbUdlbiwgYmluZCwgbm9Db250ZXh0LCBzZXRUaW1lb3V0V2l0aENvbnRleHQgYXMgc2V0VGltZW91dCwgd3JhcFlpZWxkaW5nRmliZXJNZXRob2RzIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jb250ZXh0LmVzbS5qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@wry/context/lib/context.esm.js\n");
 
/***/ }),
 
/***/ "./node_modules/@wry/equality/lib/equality.esm.js":
/*!********************************************************!*\
  !*** ./node_modules/@wry/equality/lib/equality.esm.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"equal\": function() { return /* binding */ equal; }\n/* harmony export */ });\nvar _a = Object.prototype, toString = _a.toString, hasOwnProperty = _a.hasOwnProperty;\r\nvar previousComparisons = new Map();\r\n/**\r\n * Performs a deep equality check on two JavaScript values, tolerating cycles.\r\n */\r\nfunction equal(a, b) {\r\n    try {\r\n        return check(a, b);\r\n    }\r\n    finally {\r\n        previousComparisons.clear();\r\n    }\r\n}\r\nfunction check(a, b) {\r\n    // If the two values are strictly equal, our job is easy.\r\n    if (a === b) {\r\n        return true;\r\n    }\r\n    // Object.prototype.toString returns a representation of the runtime type of\r\n    // the given value that is considerably more precise than typeof.\r\n    var aTag = toString.call(a);\r\n    var bTag = toString.call(b);\r\n    // If the runtime types of a and b are different, they could maybe be equal\r\n    // under some interpretation of equality, but for simplicity and performance\r\n    // we just return false instead.\r\n    if (aTag !== bTag) {\r\n        return false;\r\n    }\r\n    switch (aTag) {\r\n        case '[object Array]':\r\n            // Arrays are a lot like other objects, but we can cheaply compare their\r\n            // lengths as a short-cut before comparing their elements.\r\n            if (a.length !== b.length)\r\n                return false;\r\n        // Fall through to object case...\r\n        case '[object Object]': {\r\n            if (previouslyCompared(a, b))\r\n                return true;\r\n            var aKeys = Object.keys(a);\r\n            var bKeys = Object.keys(b);\r\n            // If `a` and `b` have a different number of enumerable keys, they\r\n            // must be different.\r\n            var keyCount = aKeys.length;\r\n            if (keyCount !== bKeys.length)\r\n                return false;\r\n            // Now make sure they have the same keys.\r\n            for (var k = 0; k < keyCount; ++k) {\r\n                if (!hasOwnProperty.call(b, aKeys[k])) {\r\n                    return false;\r\n                }\r\n            }\r\n            // Finally, check deep equality of all child properties.\r\n            for (var k = 0; k < keyCount; ++k) {\r\n                var key = aKeys[k];\r\n                if (!check(a[key], b[key])) {\r\n                    return false;\r\n                }\r\n            }\r\n            return true;\r\n        }\r\n        case '[object Error]':\r\n            return a.name === b.name && a.message === b.message;\r\n        case '[object Number]':\r\n            // Handle NaN, which is !== itself.\r\n            if (a !== a)\r\n                return b !== b;\r\n        // Fall through to shared +a === +b case...\r\n        case '[object Boolean]':\r\n        case '[object Date]':\r\n            return +a === +b;\r\n        case '[object RegExp]':\r\n        case '[object String]':\r\n            return a == \"\" + b;\r\n        case '[object Map]':\r\n        case '[object Set]': {\r\n            if (a.size !== b.size)\r\n                return false;\r\n            if (previouslyCompared(a, b))\r\n                return true;\r\n            var aIterator = a.entries();\r\n            var isMap = aTag === '[object Map]';\r\n            while (true) {\r\n                var info = aIterator.next();\r\n                if (info.done)\r\n                    break;\r\n                // If a instanceof Set, aValue === aKey.\r\n                var _a = info.value, aKey = _a[0], aValue = _a[1];\r\n                // So this works the same way for both Set and Map.\r\n                if (!b.has(aKey)) {\r\n                    return false;\r\n                }\r\n                // However, we care about deep equality of values only when dealing\r\n                // with Map structures.\r\n                if (isMap && !check(aValue, b.get(aKey))) {\r\n                    return false;\r\n                }\r\n            }\r\n            return true;\r\n        }\r\n    }\r\n    // Otherwise the values are not equal.\r\n    return false;\r\n}\r\nfunction previouslyCompared(a, b) {\r\n    // Though cyclic references can make an object graph appear infinite from the\r\n    // perspective of a depth-first traversal, the graph still contains a finite\r\n    // number of distinct object references. We use the previousComparisons cache\r\n    // to avoid comparing the same pair of object references more than once, which\r\n    // guarantees termination (even if we end up comparing every object in one\r\n    // graph to every object in the other graph, which is extremely unlikely),\r\n    // while still allowing weird isomorphic structures (like rings with different\r\n    // lengths) a chance to pass the equality test.\r\n    var bSet = previousComparisons.get(a);\r\n    if (bSet) {\r\n        // Return true here because we can be sure false will be returned somewhere\r\n        // else if the objects are not equivalent.\r\n        if (bSet.has(b))\r\n            return true;\r\n    }\r\n    else {\r\n        previousComparisons.set(a, bSet = new Set);\r\n    }\r\n    bSet.add(b);\r\n    return false;\r\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (equal);\n\n//# sourceMappingURL=equality.esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHdyeS9lcXVhbGl0eS9saWIvZXF1YWxpdHkuZXNtLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixjQUFjO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsY0FBYztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsK0RBQWUsS0FBSyxFQUFDO0FBQ0o7QUFDakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0B3cnkvZXF1YWxpdHkvbGliL2VxdWFsaXR5LmVzbS5qcz8xMTczIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfYSA9IE9iamVjdC5wcm90b3R5cGUsIHRvU3RyaW5nID0gX2EudG9TdHJpbmcsIGhhc093blByb3BlcnR5ID0gX2EuaGFzT3duUHJvcGVydHk7XHJcbnZhciBwcmV2aW91c0NvbXBhcmlzb25zID0gbmV3IE1hcCgpO1xyXG4vKipcclxuICogUGVyZm9ybXMgYSBkZWVwIGVxdWFsaXR5IGNoZWNrIG9uIHR3byBKYXZhU2NyaXB0IHZhbHVlcywgdG9sZXJhdGluZyBjeWNsZXMuXHJcbiAqL1xyXG5mdW5jdGlvbiBlcXVhbChhLCBiKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHJldHVybiBjaGVjayhhLCBiKTtcclxuICAgIH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHByZXZpb3VzQ29tcGFyaXNvbnMuY2xlYXIoKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjaGVjayhhLCBiKSB7XHJcbiAgICAvLyBJZiB0aGUgdHdvIHZhbHVlcyBhcmUgc3RyaWN0bHkgZXF1YWwsIG91ciBqb2IgaXMgZWFzeS5cclxuICAgIGlmIChhID09PSBiKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICAvLyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nIHJldHVybnMgYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcnVudGltZSB0eXBlIG9mXHJcbiAgICAvLyB0aGUgZ2l2ZW4gdmFsdWUgdGhhdCBpcyBjb25zaWRlcmFibHkgbW9yZSBwcmVjaXNlIHRoYW4gdHlwZW9mLlxyXG4gICAgdmFyIGFUYWcgPSB0b1N0cmluZy5jYWxsKGEpO1xyXG4gICAgdmFyIGJUYWcgPSB0b1N0cmluZy5jYWxsKGIpO1xyXG4gICAgLy8gSWYgdGhlIHJ1bnRpbWUgdHlwZXMgb2YgYSBhbmQgYiBhcmUgZGlmZmVyZW50LCB0aGV5IGNvdWxkIG1heWJlIGJlIGVxdWFsXHJcbiAgICAvLyB1bmRlciBzb21lIGludGVycHJldGF0aW9uIG9mIGVxdWFsaXR5LCBidXQgZm9yIHNpbXBsaWNpdHkgYW5kIHBlcmZvcm1hbmNlXHJcbiAgICAvLyB3ZSBqdXN0IHJldHVybiBmYWxzZSBpbnN0ZWFkLlxyXG4gICAgaWYgKGFUYWcgIT09IGJUYWcpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKGFUYWcpIHtcclxuICAgICAgICBjYXNlICdbb2JqZWN0IEFycmF5XSc6XHJcbiAgICAgICAgICAgIC8vIEFycmF5cyBhcmUgYSBsb3QgbGlrZSBvdGhlciBvYmplY3RzLCBidXQgd2UgY2FuIGNoZWFwbHkgY29tcGFyZSB0aGVpclxyXG4gICAgICAgICAgICAvLyBsZW5ndGhzIGFzIGEgc2hvcnQtY3V0IGJlZm9yZSBjb21wYXJpbmcgdGhlaXIgZWxlbWVudHMuXHJcbiAgICAgICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIG9iamVjdCBjYXNlLi4uXHJcbiAgICAgICAgY2FzZSAnW29iamVjdCBPYmplY3RdJzoge1xyXG4gICAgICAgICAgICBpZiAocHJldmlvdXNseUNvbXBhcmVkKGEsIGIpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIHZhciBhS2V5cyA9IE9iamVjdC5rZXlzKGEpO1xyXG4gICAgICAgICAgICB2YXIgYktleXMgPSBPYmplY3Qua2V5cyhiKTtcclxuICAgICAgICAgICAgLy8gSWYgYGFgIGFuZCBgYmAgaGF2ZSBhIGRpZmZlcmVudCBudW1iZXIgb2YgZW51bWVyYWJsZSBrZXlzLCB0aGV5XHJcbiAgICAgICAgICAgIC8vIG11c3QgYmUgZGlmZmVyZW50LlxyXG4gICAgICAgICAgICB2YXIga2V5Q291bnQgPSBhS2V5cy5sZW5ndGg7XHJcbiAgICAgICAgICAgIGlmIChrZXlDb3VudCAhPT0gYktleXMubGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAvLyBOb3cgbWFrZSBzdXJlIHRoZXkgaGF2ZSB0aGUgc2FtZSBrZXlzLlxyXG4gICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGtleUNvdW50OyArK2spIHtcclxuICAgICAgICAgICAgICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChiLCBhS2V5c1trXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gRmluYWxseSwgY2hlY2sgZGVlcCBlcXVhbGl0eSBvZiBhbGwgY2hpbGQgcHJvcGVydGllcy5cclxuICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBrZXlDb3VudDsgKytrKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0gYUtleXNba107XHJcbiAgICAgICAgICAgICAgICBpZiAoIWNoZWNrKGFba2V5XSwgYltrZXldKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnW29iamVjdCBFcnJvcl0nOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5uYW1lID09PSBiLm5hbWUgJiYgYS5tZXNzYWdlID09PSBiLm1lc3NhZ2U7XHJcbiAgICAgICAgY2FzZSAnW29iamVjdCBOdW1iZXJdJzpcclxuICAgICAgICAgICAgLy8gSGFuZGxlIE5hTiwgd2hpY2ggaXMgIT09IGl0c2VsZi5cclxuICAgICAgICAgICAgaWYgKGEgIT09IGEpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYiAhPT0gYjtcclxuICAgICAgICAvLyBGYWxsIHRocm91Z2ggdG8gc2hhcmVkICthID09PSArYiBjYXNlLi4uXHJcbiAgICAgICAgY2FzZSAnW29iamVjdCBCb29sZWFuXSc6XHJcbiAgICAgICAgY2FzZSAnW29iamVjdCBEYXRlXSc6XHJcbiAgICAgICAgICAgIHJldHVybiArYSA9PT0gK2I7XHJcbiAgICAgICAgY2FzZSAnW29iamVjdCBSZWdFeHBdJzpcclxuICAgICAgICBjYXNlICdbb2JqZWN0IFN0cmluZ10nOlxyXG4gICAgICAgICAgICByZXR1cm4gYSA9PSBcIlwiICsgYjtcclxuICAgICAgICBjYXNlICdbb2JqZWN0IE1hcF0nOlxyXG4gICAgICAgIGNhc2UgJ1tvYmplY3QgU2V0XSc6IHtcclxuICAgICAgICAgICAgaWYgKGEuc2l6ZSAhPT0gYi5zaXplKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAocHJldmlvdXNseUNvbXBhcmVkKGEsIGIpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIHZhciBhSXRlcmF0b3IgPSBhLmVudHJpZXMoKTtcclxuICAgICAgICAgICAgdmFyIGlzTWFwID0gYVRhZyA9PT0gJ1tvYmplY3QgTWFwXSc7XHJcbiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW5mbyA9IGFJdGVyYXRvci5uZXh0KCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5mby5kb25lKVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgLy8gSWYgYSBpbnN0YW5jZW9mIFNldCwgYVZhbHVlID09PSBhS2V5LlxyXG4gICAgICAgICAgICAgICAgdmFyIF9hID0gaW5mby52YWx1ZSwgYUtleSA9IF9hWzBdLCBhVmFsdWUgPSBfYVsxXTtcclxuICAgICAgICAgICAgICAgIC8vIFNvIHRoaXMgd29ya3MgdGhlIHNhbWUgd2F5IGZvciBib3RoIFNldCBhbmQgTWFwLlxyXG4gICAgICAgICAgICAgICAgaWYgKCFiLmhhcyhhS2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIEhvd2V2ZXIsIHdlIGNhcmUgYWJvdXQgZGVlcCBlcXVhbGl0eSBvZiB2YWx1ZXMgb25seSB3aGVuIGRlYWxpbmdcclxuICAgICAgICAgICAgICAgIC8vIHdpdGggTWFwIHN0cnVjdHVyZXMuXHJcbiAgICAgICAgICAgICAgICBpZiAoaXNNYXAgJiYgIWNoZWNrKGFWYWx1ZSwgYi5nZXQoYUtleSkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIE90aGVyd2lzZSB0aGUgdmFsdWVzIGFyZSBub3QgZXF1YWwuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuZnVuY3Rpb24gcHJldmlvdXNseUNvbXBhcmVkKGEsIGIpIHtcclxuICAgIC8vIFRob3VnaCBjeWNsaWMgcmVmZXJlbmNlcyBjYW4gbWFrZSBhbiBvYmplY3QgZ3JhcGggYXBwZWFyIGluZmluaXRlIGZyb20gdGhlXHJcbiAgICAvLyBwZXJzcGVjdGl2ZSBvZiBhIGRlcHRoLWZpcnN0IHRyYXZlcnNhbCwgdGhlIGdyYXBoIHN0aWxsIGNvbnRhaW5zIGEgZmluaXRlXHJcbiAgICAvLyBudW1iZXIgb2YgZGlzdGluY3Qgb2JqZWN0IHJlZmVyZW5jZXMuIFdlIHVzZSB0aGUgcHJldmlvdXNDb21wYXJpc29ucyBjYWNoZVxyXG4gICAgLy8gdG8gYXZvaWQgY29tcGFyaW5nIHRoZSBzYW1lIHBhaXIgb2Ygb2JqZWN0IHJlZmVyZW5jZXMgbW9yZSB0aGFuIG9uY2UsIHdoaWNoXHJcbiAgICAvLyBndWFyYW50ZWVzIHRlcm1pbmF0aW9uIChldmVuIGlmIHdlIGVuZCB1cCBjb21wYXJpbmcgZXZlcnkgb2JqZWN0IGluIG9uZVxyXG4gICAgLy8gZ3JhcGggdG8gZXZlcnkgb2JqZWN0IGluIHRoZSBvdGhlciBncmFwaCwgd2hpY2ggaXMgZXh0cmVtZWx5IHVubGlrZWx5KSxcclxuICAgIC8vIHdoaWxlIHN0aWxsIGFsbG93aW5nIHdlaXJkIGlzb21vcnBoaWMgc3RydWN0dXJlcyAobGlrZSByaW5ncyB3aXRoIGRpZmZlcmVudFxyXG4gICAgLy8gbGVuZ3RocykgYSBjaGFuY2UgdG8gcGFzcyB0aGUgZXF1YWxpdHkgdGVzdC5cclxuICAgIHZhciBiU2V0ID0gcHJldmlvdXNDb21wYXJpc29ucy5nZXQoYSk7XHJcbiAgICBpZiAoYlNldCkge1xyXG4gICAgICAgIC8vIFJldHVybiB0cnVlIGhlcmUgYmVjYXVzZSB3ZSBjYW4gYmUgc3VyZSBmYWxzZSB3aWxsIGJlIHJldHVybmVkIHNvbWV3aGVyZVxyXG4gICAgICAgIC8vIGVsc2UgaWYgdGhlIG9iamVjdHMgYXJlIG5vdCBlcXVpdmFsZW50LlxyXG4gICAgICAgIGlmIChiU2V0LmhhcyhiKSlcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBwcmV2aW91c0NvbXBhcmlzb25zLnNldChhLCBiU2V0ID0gbmV3IFNldCk7XHJcbiAgICB9XHJcbiAgICBiU2V0LmFkZChiKTtcclxuICAgIHJldHVybiBmYWxzZTtcclxufVxuXG5leHBvcnQgZGVmYXVsdCBlcXVhbDtcbmV4cG9ydCB7IGVxdWFsIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lcXVhbGl0eS5lc20uanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@wry/equality/lib/equality.esm.js\n");
 
/***/ }),
 
/***/ "./node_modules/@wry/trie/lib/trie.esm.js":
/*!************************************************!*\
  !*** ./node_modules/@wry/trie/lib/trie.esm.js ***!
  \************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Trie\": function() { return /* binding */ Trie; }\n/* harmony export */ });\n// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\r\n// object keys weakly, yet can also hold non-object keys, unlike the\r\n// native `WeakMap`.\r\n// If no makeData function is supplied, the looked-up data will be an empty,\r\n// null-prototype Object.\r\nvar defaultMakeData = function () { return Object.create(null); };\r\n// Useful for processing arguments objects as well as arrays.\r\nvar _a = Array.prototype, forEach = _a.forEach, slice = _a.slice;\r\nvar Trie = /** @class */ (function () {\r\n    function Trie(weakness, makeData) {\r\n        if (weakness === void 0) { weakness = true; }\r\n        if (makeData === void 0) { makeData = defaultMakeData; }\r\n        this.weakness = weakness;\r\n        this.makeData = makeData;\r\n    }\r\n    Trie.prototype.lookup = function () {\r\n        var array = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            array[_i] = arguments[_i];\r\n        }\r\n        return this.lookupArray(array);\r\n    };\r\n    Trie.prototype.lookupArray = function (array) {\r\n        var node = this;\r\n        forEach.call(array, function (key) { return node = node.getChildTrie(key); });\r\n        return node.data || (node.data = this.makeData(slice.call(array)));\r\n    };\r\n    Trie.prototype.getChildTrie = function (key) {\r\n        var map = this.weakness && isObjRef(key)\r\n            ? this.weak || (this.weak = new WeakMap())\r\n            : this.strong || (this.strong = new Map());\r\n        var child = map.get(key);\r\n        if (!child)\r\n            map.set(key, child = new Trie(this.weakness, this.makeData));\r\n        return child;\r\n    };\r\n    return Trie;\r\n}());\r\nfunction isObjRef(value) {\r\n    switch (typeof value) {\r\n        case \"object\":\r\n            if (value === null)\r\n                break;\r\n        // Fall through to return true...\r\n        case \"function\":\r\n            return true;\r\n    }\r\n    return false;\r\n}\n\n\n//# sourceMappingURL=trie.esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHdyeS90cmllL2xpYi90cmllLmVzbS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQyxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qix1QkFBdUI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDLHVDQUF1QztBQUNwRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFZ0I7QUFDaEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0B3cnkvdHJpZS9saWIvdHJpZS5lc20uanM/NWYyMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBIFt0cmllXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UcmllKSBkYXRhIHN0cnVjdHVyZSB0aGF0IGhvbGRzXHJcbi8vIG9iamVjdCBrZXlzIHdlYWtseSwgeWV0IGNhbiBhbHNvIGhvbGQgbm9uLW9iamVjdCBrZXlzLCB1bmxpa2UgdGhlXHJcbi8vIG5hdGl2ZSBgV2Vha01hcGAuXHJcbi8vIElmIG5vIG1ha2VEYXRhIGZ1bmN0aW9uIGlzIHN1cHBsaWVkLCB0aGUgbG9va2VkLXVwIGRhdGEgd2lsbCBiZSBhbiBlbXB0eSxcclxuLy8gbnVsbC1wcm90b3R5cGUgT2JqZWN0LlxyXG52YXIgZGVmYXVsdE1ha2VEYXRhID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKTsgfTtcclxuLy8gVXNlZnVsIGZvciBwcm9jZXNzaW5nIGFyZ3VtZW50cyBvYmplY3RzIGFzIHdlbGwgYXMgYXJyYXlzLlxyXG52YXIgX2EgPSBBcnJheS5wcm90b3R5cGUsIGZvckVhY2ggPSBfYS5mb3JFYWNoLCBzbGljZSA9IF9hLnNsaWNlO1xyXG52YXIgVHJpZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIFRyaWUod2Vha25lc3MsIG1ha2VEYXRhKSB7XHJcbiAgICAgICAgaWYgKHdlYWtuZXNzID09PSB2b2lkIDApIHsgd2Vha25lc3MgPSB0cnVlOyB9XHJcbiAgICAgICAgaWYgKG1ha2VEYXRhID09PSB2b2lkIDApIHsgbWFrZURhdGEgPSBkZWZhdWx0TWFrZURhdGE7IH1cclxuICAgICAgICB0aGlzLndlYWtuZXNzID0gd2Vha25lc3M7XHJcbiAgICAgICAgdGhpcy5tYWtlRGF0YSA9IG1ha2VEYXRhO1xyXG4gICAgfVxyXG4gICAgVHJpZS5wcm90b3R5cGUubG9va3VwID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBhcnJheSA9IFtdO1xyXG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XHJcbiAgICAgICAgICAgIGFycmF5W19pXSA9IGFyZ3VtZW50c1tfaV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmxvb2t1cEFycmF5KGFycmF5KTtcclxuICAgIH07XHJcbiAgICBUcmllLnByb3RvdHlwZS5sb29rdXBBcnJheSA9IGZ1bmN0aW9uIChhcnJheSkge1xyXG4gICAgICAgIHZhciBub2RlID0gdGhpcztcclxuICAgICAgICBmb3JFYWNoLmNhbGwoYXJyYXksIGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIG5vZGUgPSBub2RlLmdldENoaWxkVHJpZShrZXkpOyB9KTtcclxuICAgICAgICByZXR1cm4gbm9kZS5kYXRhIHx8IChub2RlLmRhdGEgPSB0aGlzLm1ha2VEYXRhKHNsaWNlLmNhbGwoYXJyYXkpKSk7XHJcbiAgICB9O1xyXG4gICAgVHJpZS5wcm90b3R5cGUuZ2V0Q2hpbGRUcmllID0gZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgIHZhciBtYXAgPSB0aGlzLndlYWtuZXNzICYmIGlzT2JqUmVmKGtleSlcclxuICAgICAgICAgICAgPyB0aGlzLndlYWsgfHwgKHRoaXMud2VhayA9IG5ldyBXZWFrTWFwKCkpXHJcbiAgICAgICAgICAgIDogdGhpcy5zdHJvbmcgfHwgKHRoaXMuc3Ryb25nID0gbmV3IE1hcCgpKTtcclxuICAgICAgICB2YXIgY2hpbGQgPSBtYXAuZ2V0KGtleSk7XHJcbiAgICAgICAgaWYgKCFjaGlsZClcclxuICAgICAgICAgICAgbWFwLnNldChrZXksIGNoaWxkID0gbmV3IFRyaWUodGhpcy53ZWFrbmVzcywgdGhpcy5tYWtlRGF0YSkpO1xyXG4gICAgICAgIHJldHVybiBjaGlsZDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gVHJpZTtcclxufSgpKTtcclxuZnVuY3Rpb24gaXNPYmpSZWYodmFsdWUpIHtcclxuICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XHJcbiAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxyXG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAvLyBGYWxsIHRocm91Z2ggdG8gcmV0dXJuIHRydWUuLi5cclxuICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cblxuZXhwb3J0IHsgVHJpZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dHJpZS5lc20uanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@wry/trie/lib/trie.esm.js\n");
 
/***/ }),
 
/***/ "./node_modules/apollo-client/bundle.esm.js":
/*!**************************************************!*\
  !*** ./node_modules/apollo-client/bundle.esm.js ***!
  \**************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloClient\": function() { return /* binding */ ApolloClient; },\n/* harmony export */   \"ApolloError\": function() { return /* binding */ ApolloError; },\n/* harmony export */   \"FetchType\": function() { return /* binding */ FetchType; },\n/* harmony export */   \"NetworkStatus\": function() { return /* binding */ NetworkStatus; },\n/* harmony export */   \"ObservableQuery\": function() { return /* binding */ ObservableQuery; },\n/* harmony export */   \"isApolloError\": function() { return /* binding */ isApolloError; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var apollo_utilities__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! apollo-utilities */ \"./node_modules/apollo-utilities/lib/bundle.esm.js\");\n/* harmony import */ var apollo_link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! apollo-link */ \"./node_modules/apollo-link/lib/bundle.esm.js\");\n/* harmony import */ var symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! symbol-observable */ \"./node_modules/apollo-client/node_modules/symbol-observable/es/index.js\");\n/* harmony import */ var ts_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ts-invariant */ \"./node_modules/ts-invariant/lib/invariant.esm.js\");\n/* harmony import */ var graphql_language_visitor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! graphql/language/visitor */ \"./node_modules/graphql/language/visitor.mjs\");\n\n\n\n\n\n\n\nvar NetworkStatus;\n(function (NetworkStatus) {\n    NetworkStatus[NetworkStatus[\"loading\"] = 1] = \"loading\";\n    NetworkStatus[NetworkStatus[\"setVariables\"] = 2] = \"setVariables\";\n    NetworkStatus[NetworkStatus[\"fetchMore\"] = 3] = \"fetchMore\";\n    NetworkStatus[NetworkStatus[\"refetch\"] = 4] = \"refetch\";\n    NetworkStatus[NetworkStatus[\"poll\"] = 6] = \"poll\";\n    NetworkStatus[NetworkStatus[\"ready\"] = 7] = \"ready\";\n    NetworkStatus[NetworkStatus[\"error\"] = 8] = \"error\";\n})(NetworkStatus || (NetworkStatus = {}));\nfunction isNetworkRequestInFlight(networkStatus) {\n    return networkStatus < 7;\n}\n\nvar Observable = (function (_super) {\n    (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(Observable, _super);\n    function Observable() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Observable.prototype[symbol_observable__WEBPACK_IMPORTED_MODULE_0__[\"default\"]] = function () {\n        return this;\n    };\n    Observable.prototype['@@observable'] = function () {\n        return this;\n    };\n    return Observable;\n}(apollo_link__WEBPACK_IMPORTED_MODULE_3__.Observable));\n\nfunction isNonEmptyArray(value) {\n    return Array.isArray(value) && value.length > 0;\n}\n\nfunction isApolloError(err) {\n    return err.hasOwnProperty('graphQLErrors');\n}\nvar generateErrorMessage = function (err) {\n    var message = '';\n    if (isNonEmptyArray(err.graphQLErrors)) {\n        err.graphQLErrors.forEach(function (graphQLError) {\n            var errorMessage = graphQLError\n                ? graphQLError.message\n                : 'Error message not found.';\n            message += \"GraphQL error: \" + errorMessage + \"\\n\";\n        });\n    }\n    if (err.networkError) {\n        message += 'Network error: ' + err.networkError.message + '\\n';\n    }\n    message = message.replace(/\\n$/, '');\n    return message;\n};\nvar ApolloError = (function (_super) {\n    (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(ApolloError, _super);\n    function ApolloError(_a) {\n        var graphQLErrors = _a.graphQLErrors, networkError = _a.networkError, errorMessage = _a.errorMessage, extraInfo = _a.extraInfo;\n        var _this = _super.call(this, errorMessage) || this;\n        _this.graphQLErrors = graphQLErrors || [];\n        _this.networkError = networkError || null;\n        if (!errorMessage) {\n            _this.message = generateErrorMessage(_this);\n        }\n        else {\n            _this.message = errorMessage;\n        }\n        _this.extraInfo = extraInfo;\n        _this.__proto__ = ApolloError.prototype;\n        return _this;\n    }\n    return ApolloError;\n}(Error));\n\nvar FetchType;\n(function (FetchType) {\n    FetchType[FetchType[\"normal\"] = 1] = \"normal\";\n    FetchType[FetchType[\"refetch\"] = 2] = \"refetch\";\n    FetchType[FetchType[\"poll\"] = 3] = \"poll\";\n})(FetchType || (FetchType = {}));\n\nvar hasError = function (storeValue, policy) {\n    if (policy === void 0) { policy = 'none'; }\n    return storeValue && (storeValue.networkError ||\n        (policy === 'none' && isNonEmptyArray(storeValue.graphQLErrors)));\n};\nvar ObservableQuery = (function (_super) {\n    (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(ObservableQuery, _super);\n    function ObservableQuery(_a) {\n        var queryManager = _a.queryManager, options = _a.options, _b = _a.shouldSubscribe, shouldSubscribe = _b === void 0 ? true : _b;\n        var _this = _super.call(this, function (observer) {\n            return _this.onSubscribe(observer);\n        }) || this;\n        _this.observers = new Set();\n        _this.subscriptions = new Set();\n        _this.isTornDown = false;\n        _this.options = options;\n        _this.variables = options.variables || {};\n        _this.queryId = queryManager.generateQueryId();\n        _this.shouldSubscribe = shouldSubscribe;\n        var opDef = (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.getOperationDefinition)(options.query);\n        _this.queryName = opDef && opDef.name && opDef.name.value;\n        _this.queryManager = queryManager;\n        return _this;\n    }\n    ObservableQuery.prototype.result = function () {\n        var _this = this;\n        return new Promise(function (resolve, reject) {\n            var observer = {\n                next: function (result) {\n                    resolve(result);\n                    _this.observers.delete(observer);\n                    if (!_this.observers.size) {\n                        _this.queryManager.removeQuery(_this.queryId);\n                    }\n                    setTimeout(function () {\n                        subscription.unsubscribe();\n                    }, 0);\n                },\n                error: reject,\n            };\n            var subscription = _this.subscribe(observer);\n        });\n    };\n    ObservableQuery.prototype.currentResult = function () {\n        var result = this.getCurrentResult();\n        if (result.data === undefined) {\n            result.data = {};\n        }\n        return result;\n    };\n    ObservableQuery.prototype.getCurrentResult = function () {\n        if (this.isTornDown) {\n            var lastResult = this.lastResult;\n            return {\n                data: !this.lastError && lastResult && lastResult.data || void 0,\n                error: this.lastError,\n                loading: false,\n                networkStatus: NetworkStatus.error,\n            };\n        }\n        var _a = this.queryManager.getCurrentQueryResult(this), data = _a.data, partial = _a.partial;\n        var queryStoreValue = this.queryManager.queryStore.get(this.queryId);\n        var result;\n        var fetchPolicy = this.options.fetchPolicy;\n        var isNetworkFetchPolicy = fetchPolicy === 'network-only' ||\n            fetchPolicy === 'no-cache';\n        if (queryStoreValue) {\n            var networkStatus = queryStoreValue.networkStatus;\n            if (hasError(queryStoreValue, this.options.errorPolicy)) {\n                return {\n                    data: void 0,\n                    loading: false,\n                    networkStatus: networkStatus,\n                    error: new ApolloError({\n                        graphQLErrors: queryStoreValue.graphQLErrors,\n                        networkError: queryStoreValue.networkError,\n                    }),\n                };\n            }\n            if (queryStoreValue.variables) {\n                this.options.variables = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.options.variables), queryStoreValue.variables);\n                this.variables = this.options.variables;\n            }\n            result = {\n                data: data,\n                loading: isNetworkRequestInFlight(networkStatus),\n                networkStatus: networkStatus,\n            };\n            if (queryStoreValue.graphQLErrors && this.options.errorPolicy === 'all') {\n                result.errors = queryStoreValue.graphQLErrors;\n            }\n        }\n        else {\n            var loading = isNetworkFetchPolicy ||\n                (partial && fetchPolicy !== 'cache-only');\n            result = {\n                data: data,\n                loading: loading,\n                networkStatus: loading ? NetworkStatus.loading : NetworkStatus.ready,\n            };\n        }\n        if (!partial) {\n            this.updateLastResult((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, result), { stale: false }));\n        }\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, result), { partial: partial });\n    };\n    ObservableQuery.prototype.isDifferentFromLastResult = function (newResult) {\n        var snapshot = this.lastResultSnapshot;\n        return !(snapshot &&\n            newResult &&\n            snapshot.networkStatus === newResult.networkStatus &&\n            snapshot.stale === newResult.stale &&\n            (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.isEqual)(snapshot.data, newResult.data));\n    };\n    ObservableQuery.prototype.getLastResult = function () {\n        return this.lastResult;\n    };\n    ObservableQuery.prototype.getLastError = function () {\n        return this.lastError;\n    };\n    ObservableQuery.prototype.resetLastResults = function () {\n        delete this.lastResult;\n        delete this.lastResultSnapshot;\n        delete this.lastError;\n        this.isTornDown = false;\n    };\n    ObservableQuery.prototype.resetQueryStoreErrors = function () {\n        var queryStore = this.queryManager.queryStore.get(this.queryId);\n        if (queryStore) {\n            queryStore.networkError = null;\n            queryStore.graphQLErrors = [];\n        }\n    };\n    ObservableQuery.prototype.refetch = function (variables) {\n        var fetchPolicy = this.options.fetchPolicy;\n        if (fetchPolicy === 'cache-only') {\n            return Promise.reject( false ? 0 : new ts_invariant__WEBPACK_IMPORTED_MODULE_1__.InvariantError('cache-only fetchPolicy option should not be used together with query refetch.'));\n        }\n        if (fetchPolicy !== 'no-cache' &&\n            fetchPolicy !== 'cache-and-network') {\n            fetchPolicy = 'network-only';\n        }\n        if (!(0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.isEqual)(this.variables, variables)) {\n            this.variables = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.variables), variables);\n        }\n        if (!(0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.isEqual)(this.options.variables, this.variables)) {\n            this.options.variables = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.options.variables), this.variables);\n        }\n        return this.queryManager.fetchQuery(this.queryId, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.options), { fetchPolicy: fetchPolicy }), FetchType.refetch);\n    };\n    ObservableQuery.prototype.fetchMore = function (fetchMoreOptions) {\n        var _this = this;\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(fetchMoreOptions.updateQuery, 'updateQuery option is required. This function defines how to update the query data with the new results.');\n        var combinedOptions = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, (fetchMoreOptions.query ? fetchMoreOptions : (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.options), fetchMoreOptions), { variables: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.variables), fetchMoreOptions.variables) }))), { fetchPolicy: 'network-only' });\n        var qid = this.queryManager.generateQueryId();\n        return this.queryManager\n            .fetchQuery(qid, combinedOptions, FetchType.normal, this.queryId)\n            .then(function (fetchMoreResult) {\n            _this.updateQuery(function (previousResult) {\n                return fetchMoreOptions.updateQuery(previousResult, {\n                    fetchMoreResult: fetchMoreResult.data,\n                    variables: combinedOptions.variables,\n                });\n            });\n            _this.queryManager.stopQuery(qid);\n            return fetchMoreResult;\n        }, function (error) {\n            _this.queryManager.stopQuery(qid);\n            throw error;\n        });\n    };\n    ObservableQuery.prototype.subscribeToMore = function (options) {\n        var _this = this;\n        var subscription = this.queryManager\n            .startGraphQLSubscription({\n            query: options.document,\n            variables: options.variables,\n        })\n            .subscribe({\n            next: function (subscriptionData) {\n                var updateQuery = options.updateQuery;\n                if (updateQuery) {\n                    _this.updateQuery(function (previous, _a) {\n                        var variables = _a.variables;\n                        return updateQuery(previous, {\n                            subscriptionData: subscriptionData,\n                            variables: variables,\n                        });\n                    });\n                }\n            },\n            error: function (err) {\n                if (options.onError) {\n                    options.onError(err);\n                    return;\n                }\n                 false || ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant.error('Unhandled GraphQL subscription error', err);\n            },\n        });\n        this.subscriptions.add(subscription);\n        return function () {\n            if (_this.subscriptions.delete(subscription)) {\n                subscription.unsubscribe();\n            }\n        };\n    };\n    ObservableQuery.prototype.setOptions = function (opts) {\n        var oldFetchPolicy = this.options.fetchPolicy;\n        this.options = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.options), opts);\n        if (opts.pollInterval) {\n            this.startPolling(opts.pollInterval);\n        }\n        else if (opts.pollInterval === 0) {\n            this.stopPolling();\n        }\n        var fetchPolicy = opts.fetchPolicy;\n        return this.setVariables(this.options.variables, oldFetchPolicy !== fetchPolicy && (oldFetchPolicy === 'cache-only' ||\n            oldFetchPolicy === 'standby' ||\n            fetchPolicy === 'network-only'), opts.fetchResults);\n    };\n    ObservableQuery.prototype.setVariables = function (variables, tryFetch, fetchResults) {\n        if (tryFetch === void 0) { tryFetch = false; }\n        if (fetchResults === void 0) { fetchResults = true; }\n        this.isTornDown = false;\n        variables = variables || this.variables;\n        if (!tryFetch && (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.isEqual)(variables, this.variables)) {\n            return this.observers.size && fetchResults\n                ? this.result()\n                : Promise.resolve();\n        }\n        this.variables = this.options.variables = variables;\n        if (!this.observers.size) {\n            return Promise.resolve();\n        }\n        return this.queryManager.fetchQuery(this.queryId, this.options);\n    };\n    ObservableQuery.prototype.updateQuery = function (mapFn) {\n        var queryManager = this.queryManager;\n        var _a = queryManager.getQueryWithPreviousResult(this.queryId), previousResult = _a.previousResult, variables = _a.variables, document = _a.document;\n        var newResult = (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.tryFunctionOrLogError)(function () {\n            return mapFn(previousResult, { variables: variables });\n        });\n        if (newResult) {\n            queryManager.dataStore.markUpdateQueryResult(document, variables, newResult);\n            queryManager.broadcastQueries();\n        }\n    };\n    ObservableQuery.prototype.stopPolling = function () {\n        this.queryManager.stopPollingQuery(this.queryId);\n        this.options.pollInterval = undefined;\n    };\n    ObservableQuery.prototype.startPolling = function (pollInterval) {\n        assertNotCacheFirstOrOnly(this);\n        this.options.pollInterval = pollInterval;\n        this.queryManager.startPollingQuery(this.options, this.queryId);\n    };\n    ObservableQuery.prototype.updateLastResult = function (newResult) {\n        var previousResult = this.lastResult;\n        this.lastResult = newResult;\n        this.lastResultSnapshot = this.queryManager.assumeImmutableResults\n            ? newResult\n            : (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(newResult);\n        return previousResult;\n    };\n    ObservableQuery.prototype.onSubscribe = function (observer) {\n        var _this = this;\n        try {\n            var subObserver = observer._subscription._observer;\n            if (subObserver && !subObserver.error) {\n                subObserver.error = defaultSubscriptionObserverErrorCallback;\n            }\n        }\n        catch (_a) { }\n        var first = !this.observers.size;\n        this.observers.add(observer);\n        if (observer.next && this.lastResult)\n            observer.next(this.lastResult);\n        if (observer.error && this.lastError)\n            observer.error(this.lastError);\n        if (first) {\n            this.setUpQuery();\n        }\n        return function () {\n            if (_this.observers.delete(observer) && !_this.observers.size) {\n                _this.tearDownQuery();\n            }\n        };\n    };\n    ObservableQuery.prototype.setUpQuery = function () {\n        var _this = this;\n        var _a = this, queryManager = _a.queryManager, queryId = _a.queryId;\n        if (this.shouldSubscribe) {\n            queryManager.addObservableQuery(queryId, this);\n        }\n        if (this.options.pollInterval) {\n            assertNotCacheFirstOrOnly(this);\n            queryManager.startPollingQuery(this.options, queryId);\n        }\n        var onError = function (error) {\n            _this.updateLastResult((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, _this.lastResult), { errors: error.graphQLErrors, networkStatus: NetworkStatus.error, loading: false }));\n            iterateObserversSafely(_this.observers, 'error', _this.lastError = error);\n        };\n        queryManager.observeQuery(queryId, this.options, {\n            next: function (result) {\n                if (_this.lastError || _this.isDifferentFromLastResult(result)) {\n                    var previousResult_1 = _this.updateLastResult(result);\n                    var _a = _this.options, query_1 = _a.query, variables = _a.variables, fetchPolicy_1 = _a.fetchPolicy;\n                    if (queryManager.transform(query_1).hasClientExports) {\n                        queryManager.getLocalState().addExportedVariables(query_1, variables).then(function (variables) {\n                            var previousVariables = _this.variables;\n                            _this.variables = _this.options.variables = variables;\n                            if (!result.loading &&\n                                previousResult_1 &&\n                                fetchPolicy_1 !== 'cache-only' &&\n                                queryManager.transform(query_1).serverQuery &&\n                                !(0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.isEqual)(previousVariables, variables)) {\n                                _this.refetch();\n                            }\n                            else {\n                                iterateObserversSafely(_this.observers, 'next', result);\n                            }\n                        });\n                    }\n                    else {\n                        iterateObserversSafely(_this.observers, 'next', result);\n                    }\n                }\n            },\n            error: onError,\n        }).catch(onError);\n    };\n    ObservableQuery.prototype.tearDownQuery = function () {\n        var queryManager = this.queryManager;\n        this.isTornDown = true;\n        queryManager.stopPollingQuery(this.queryId);\n        this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });\n        this.subscriptions.clear();\n        queryManager.removeObservableQuery(this.queryId);\n        queryManager.stopQuery(this.queryId);\n        this.observers.clear();\n    };\n    return ObservableQuery;\n}(Observable));\nfunction defaultSubscriptionObserverErrorCallback(error) {\n     false || ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant.error('Unhandled error', error.message, error.stack);\n}\nfunction iterateObserversSafely(observers, method, argument) {\n    var observersWithMethod = [];\n    observers.forEach(function (obs) { return obs[method] && observersWithMethod.push(obs); });\n    observersWithMethod.forEach(function (obs) { return obs[method](argument); });\n}\nfunction assertNotCacheFirstOrOnly(obsQuery) {\n    var fetchPolicy = obsQuery.options.fetchPolicy;\n     false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(fetchPolicy !== 'cache-first' && fetchPolicy !== 'cache-only', 'Queries that specify the cache-first and cache-only fetchPolicies cannot also be polling queries.');\n}\n\nvar MutationStore = (function () {\n    function MutationStore() {\n        this.store = {};\n    }\n    MutationStore.prototype.getStore = function () {\n        return this.store;\n    };\n    MutationStore.prototype.get = function (mutationId) {\n        return this.store[mutationId];\n    };\n    MutationStore.prototype.initMutation = function (mutationId, mutation, variables) {\n        this.store[mutationId] = {\n            mutation: mutation,\n            variables: variables || {},\n            loading: true,\n            error: null,\n        };\n    };\n    MutationStore.prototype.markMutationError = function (mutationId, error) {\n        var mutation = this.store[mutationId];\n        if (mutation) {\n            mutation.loading = false;\n            mutation.error = error;\n        }\n    };\n    MutationStore.prototype.markMutationResult = function (mutationId) {\n        var mutation = this.store[mutationId];\n        if (mutation) {\n            mutation.loading = false;\n            mutation.error = null;\n        }\n    };\n    MutationStore.prototype.reset = function () {\n        this.store = {};\n    };\n    return MutationStore;\n}());\n\nvar QueryStore = (function () {\n    function QueryStore() {\n        this.store = {};\n    }\n    QueryStore.prototype.getStore = function () {\n        return this.store;\n    };\n    QueryStore.prototype.get = function (queryId) {\n        return this.store[queryId];\n    };\n    QueryStore.prototype.initQuery = function (query) {\n        var previousQuery = this.store[query.queryId];\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(!previousQuery ||\n            previousQuery.document === query.document ||\n            (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.isEqual)(previousQuery.document, query.document), 'Internal Error: may not update existing query string in store');\n        var isSetVariables = false;\n        var previousVariables = null;\n        if (query.storePreviousVariables &&\n            previousQuery &&\n            previousQuery.networkStatus !== NetworkStatus.loading) {\n            if (!(0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.isEqual)(previousQuery.variables, query.variables)) {\n                isSetVariables = true;\n                previousVariables = previousQuery.variables;\n            }\n        }\n        var networkStatus;\n        if (isSetVariables) {\n            networkStatus = NetworkStatus.setVariables;\n        }\n        else if (query.isPoll) {\n            networkStatus = NetworkStatus.poll;\n        }\n        else if (query.isRefetch) {\n            networkStatus = NetworkStatus.refetch;\n        }\n        else {\n            networkStatus = NetworkStatus.loading;\n        }\n        var graphQLErrors = [];\n        if (previousQuery && previousQuery.graphQLErrors) {\n            graphQLErrors = previousQuery.graphQLErrors;\n        }\n        this.store[query.queryId] = {\n            document: query.document,\n            variables: query.variables,\n            previousVariables: previousVariables,\n            networkError: null,\n            graphQLErrors: graphQLErrors,\n            networkStatus: networkStatus,\n            metadata: query.metadata,\n        };\n        if (typeof query.fetchMoreForQueryId === 'string' &&\n            this.store[query.fetchMoreForQueryId]) {\n            this.store[query.fetchMoreForQueryId].networkStatus =\n                NetworkStatus.fetchMore;\n        }\n    };\n    QueryStore.prototype.markQueryResult = function (queryId, result, fetchMoreForQueryId) {\n        if (!this.store || !this.store[queryId])\n            return;\n        this.store[queryId].networkError = null;\n        this.store[queryId].graphQLErrors = isNonEmptyArray(result.errors) ? result.errors : [];\n        this.store[queryId].previousVariables = null;\n        this.store[queryId].networkStatus = NetworkStatus.ready;\n        if (typeof fetchMoreForQueryId === 'string' &&\n            this.store[fetchMoreForQueryId]) {\n            this.store[fetchMoreForQueryId].networkStatus = NetworkStatus.ready;\n        }\n    };\n    QueryStore.prototype.markQueryError = function (queryId, error, fetchMoreForQueryId) {\n        if (!this.store || !this.store[queryId])\n            return;\n        this.store[queryId].networkError = error;\n        this.store[queryId].networkStatus = NetworkStatus.error;\n        if (typeof fetchMoreForQueryId === 'string') {\n            this.markQueryResultClient(fetchMoreForQueryId, true);\n        }\n    };\n    QueryStore.prototype.markQueryResultClient = function (queryId, complete) {\n        var storeValue = this.store && this.store[queryId];\n        if (storeValue) {\n            storeValue.networkError = null;\n            storeValue.previousVariables = null;\n            if (complete) {\n                storeValue.networkStatus = NetworkStatus.ready;\n            }\n        }\n    };\n    QueryStore.prototype.stopQuery = function (queryId) {\n        delete this.store[queryId];\n    };\n    QueryStore.prototype.reset = function (observableQueryIds) {\n        var _this = this;\n        Object.keys(this.store).forEach(function (queryId) {\n            if (observableQueryIds.indexOf(queryId) < 0) {\n                _this.stopQuery(queryId);\n            }\n            else {\n                _this.store[queryId].networkStatus = NetworkStatus.loading;\n            }\n        });\n    };\n    return QueryStore;\n}());\n\nfunction capitalizeFirstLetter(str) {\n    return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nvar LocalState = (function () {\n    function LocalState(_a) {\n        var cache = _a.cache, client = _a.client, resolvers = _a.resolvers, fragmentMatcher = _a.fragmentMatcher;\n        this.cache = cache;\n        if (client) {\n            this.client = client;\n        }\n        if (resolvers) {\n            this.addResolvers(resolvers);\n        }\n        if (fragmentMatcher) {\n            this.setFragmentMatcher(fragmentMatcher);\n        }\n    }\n    LocalState.prototype.addResolvers = function (resolvers) {\n        var _this = this;\n        this.resolvers = this.resolvers || {};\n        if (Array.isArray(resolvers)) {\n            resolvers.forEach(function (resolverGroup) {\n                _this.resolvers = (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.mergeDeep)(_this.resolvers, resolverGroup);\n            });\n        }\n        else {\n            this.resolvers = (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.mergeDeep)(this.resolvers, resolvers);\n        }\n    };\n    LocalState.prototype.setResolvers = function (resolvers) {\n        this.resolvers = {};\n        this.addResolvers(resolvers);\n    };\n    LocalState.prototype.getResolvers = function () {\n        return this.resolvers || {};\n    };\n    LocalState.prototype.runResolvers = function (_a) {\n        var document = _a.document, remoteResult = _a.remoteResult, context = _a.context, variables = _a.variables, _b = _a.onlyRunForcedResolvers, onlyRunForcedResolvers = _b === void 0 ? false : _b;\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(this, void 0, void 0, function () {\n            return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__generator)(this, function (_c) {\n                if (document) {\n                    return [2, this.resolveDocument(document, remoteResult.data, context, variables, this.fragmentMatcher, onlyRunForcedResolvers).then(function (localResult) { return ((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, remoteResult), { data: localResult.result })); })];\n                }\n                return [2, remoteResult];\n            });\n        });\n    };\n    LocalState.prototype.setFragmentMatcher = function (fragmentMatcher) {\n        this.fragmentMatcher = fragmentMatcher;\n    };\n    LocalState.prototype.getFragmentMatcher = function () {\n        return this.fragmentMatcher;\n    };\n    LocalState.prototype.clientQuery = function (document) {\n        if ((0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.hasDirectives)(['client'], document)) {\n            if (this.resolvers) {\n                return document;\n            }\n             false || ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant.warn('Found @client directives in a query but no ApolloClient resolvers ' +\n                'were specified. This means ApolloClient local resolver handling ' +\n                'has been disabled, and @client directives will be passed through ' +\n                'to your link chain.');\n        }\n        return null;\n    };\n    LocalState.prototype.serverQuery = function (document) {\n        return this.resolvers ? (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.removeClientSetsFromDocument)(document) : document;\n    };\n    LocalState.prototype.prepareContext = function (context) {\n        if (context === void 0) { context = {}; }\n        var cache = this.cache;\n        var newContext = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, context), { cache: cache, getCacheKey: function (obj) {\n                if (cache.config) {\n                    return cache.config.dataIdFromObject(obj);\n                }\n                else {\n                     false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(false, 'To use context.getCacheKey, you need to use a cache that has ' +\n                        'a configurable dataIdFromObject, like apollo-cache-inmemory.');\n                }\n            } });\n        return newContext;\n    };\n    LocalState.prototype.addExportedVariables = function (document, variables, context) {\n        if (variables === void 0) { variables = {}; }\n        if (context === void 0) { context = {}; }\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(this, void 0, void 0, function () {\n            return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__generator)(this, function (_a) {\n                if (document) {\n                    return [2, this.resolveDocument(document, this.buildRootValueFromCache(document, variables) || {}, this.prepareContext(context), variables).then(function (data) { return ((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, variables), data.exportedVariables)); })];\n                }\n                return [2, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, variables)];\n            });\n        });\n    };\n    LocalState.prototype.shouldForceResolvers = function (document) {\n        var forceResolvers = false;\n        (0,graphql_language_visitor__WEBPACK_IMPORTED_MODULE_5__.visit)(document, {\n            Directive: {\n                enter: function (node) {\n                    if (node.name.value === 'client' && node.arguments) {\n                        forceResolvers = node.arguments.some(function (arg) {\n                            return arg.name.value === 'always' &&\n                                arg.value.kind === 'BooleanValue' &&\n                                arg.value.value === true;\n                        });\n                        if (forceResolvers) {\n                            return graphql_language_visitor__WEBPACK_IMPORTED_MODULE_5__.BREAK;\n                        }\n                    }\n                },\n            },\n        });\n        return forceResolvers;\n    };\n    LocalState.prototype.buildRootValueFromCache = function (document, variables) {\n        return this.cache.diff({\n            query: (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.buildQueryFromSelectionSet)(document),\n            variables: variables,\n            returnPartialData: true,\n            optimistic: false,\n        }).result;\n    };\n    LocalState.prototype.resolveDocument = function (document, rootValue, context, variables, fragmentMatcher, onlyRunForcedResolvers) {\n        if (context === void 0) { context = {}; }\n        if (variables === void 0) { variables = {}; }\n        if (fragmentMatcher === void 0) { fragmentMatcher = function () { return true; }; }\n        if (onlyRunForcedResolvers === void 0) { onlyRunForcedResolvers = false; }\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(this, void 0, void 0, function () {\n            var mainDefinition, fragments, fragmentMap, definitionOperation, defaultOperationType, _a, cache, client, execContext;\n            return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__generator)(this, function (_b) {\n                mainDefinition = (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.getMainDefinition)(document);\n                fragments = (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.getFragmentDefinitions)(document);\n                fragmentMap = (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.createFragmentMap)(fragments);\n                definitionOperation = mainDefinition\n                    .operation;\n                defaultOperationType = definitionOperation\n                    ? capitalizeFirstLetter(definitionOperation)\n                    : 'Query';\n                _a = this, cache = _a.cache, client = _a.client;\n                execContext = {\n                    fragmentMap: fragmentMap,\n                    context: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, context), { cache: cache,\n                        client: client }),\n                    variables: variables,\n                    fragmentMatcher: fragmentMatcher,\n                    defaultOperationType: defaultOperationType,\n                    exportedVariables: {},\n                    onlyRunForcedResolvers: onlyRunForcedResolvers,\n                };\n                return [2, this.resolveSelectionSet(mainDefinition.selectionSet, rootValue, execContext).then(function (result) { return ({\n                        result: result,\n                        exportedVariables: execContext.exportedVariables,\n                    }); })];\n            });\n        });\n    };\n    LocalState.prototype.resolveSelectionSet = function (selectionSet, rootValue, execContext) {\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(this, void 0, void 0, function () {\n            var fragmentMap, context, variables, resultsToMerge, execute;\n            var _this = this;\n            return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__generator)(this, function (_a) {\n                fragmentMap = execContext.fragmentMap, context = execContext.context, variables = execContext.variables;\n                resultsToMerge = [rootValue];\n                execute = function (selection) { return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(_this, void 0, void 0, function () {\n                    var fragment, typeCondition;\n                    return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__generator)(this, function (_a) {\n                        if (!(0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.shouldInclude)(selection, variables)) {\n                            return [2];\n                        }\n                        if ((0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.isField)(selection)) {\n                            return [2, this.resolveField(selection, rootValue, execContext).then(function (fieldResult) {\n                                    var _a;\n                                    if (typeof fieldResult !== 'undefined') {\n                                        resultsToMerge.push((_a = {},\n                                            _a[(0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.resultKeyNameFromField)(selection)] = fieldResult,\n                                            _a));\n                                    }\n                                })];\n                        }\n                        if ((0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.isInlineFragment)(selection)) {\n                            fragment = selection;\n                        }\n                        else {\n                            fragment = fragmentMap[selection.name.value];\n                             false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(fragment, \"No fragment named \" + selection.name.value);\n                        }\n                        if (fragment && fragment.typeCondition) {\n                            typeCondition = fragment.typeCondition.name.value;\n                            if (execContext.fragmentMatcher(rootValue, typeCondition, context)) {\n                                return [2, this.resolveSelectionSet(fragment.selectionSet, rootValue, execContext).then(function (fragmentResult) {\n                                        resultsToMerge.push(fragmentResult);\n                                    })];\n                            }\n                        }\n                        return [2];\n                    });\n                }); };\n                return [2, Promise.all(selectionSet.selections.map(execute)).then(function () {\n                        return (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.mergeDeepArray)(resultsToMerge);\n                    })];\n            });\n        });\n    };\n    LocalState.prototype.resolveField = function (field, rootValue, execContext) {\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(this, void 0, void 0, function () {\n            var variables, fieldName, aliasedFieldName, aliasUsed, defaultResult, resultPromise, resolverType, resolverMap, resolve;\n            var _this = this;\n            return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__generator)(this, function (_a) {\n                variables = execContext.variables;\n                fieldName = field.name.value;\n                aliasedFieldName = (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.resultKeyNameFromField)(field);\n                aliasUsed = fieldName !== aliasedFieldName;\n                defaultResult = rootValue[aliasedFieldName] || rootValue[fieldName];\n                resultPromise = Promise.resolve(defaultResult);\n                if (!execContext.onlyRunForcedResolvers ||\n                    this.shouldForceResolvers(field)) {\n                    resolverType = rootValue.__typename || execContext.defaultOperationType;\n                    resolverMap = this.resolvers && this.resolvers[resolverType];\n                    if (resolverMap) {\n                        resolve = resolverMap[aliasUsed ? fieldName : aliasedFieldName];\n                        if (resolve) {\n                            resultPromise = Promise.resolve(resolve(rootValue, (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.argumentsObjectFromField)(field, variables), execContext.context, { field: field, fragmentMap: execContext.fragmentMap }));\n                        }\n                    }\n                }\n                return [2, resultPromise.then(function (result) {\n                        if (result === void 0) { result = defaultResult; }\n                        if (field.directives) {\n                            field.directives.forEach(function (directive) {\n                                if (directive.name.value === 'export' && directive.arguments) {\n                                    directive.arguments.forEach(function (arg) {\n                                        if (arg.name.value === 'as' && arg.value.kind === 'StringValue') {\n                                            execContext.exportedVariables[arg.value.value] = result;\n                                        }\n                                    });\n                                }\n                            });\n                        }\n                        if (!field.selectionSet) {\n                            return result;\n                        }\n                        if (result == null) {\n                            return result;\n                        }\n                        if (Array.isArray(result)) {\n                            return _this.resolveSubSelectedArray(field, result, execContext);\n                        }\n                        if (field.selectionSet) {\n                            return _this.resolveSelectionSet(field.selectionSet, result, execContext);\n                        }\n                    })];\n            });\n        });\n    };\n    LocalState.prototype.resolveSubSelectedArray = function (field, result, execContext) {\n        var _this = this;\n        return Promise.all(result.map(function (item) {\n            if (item === null) {\n                return null;\n            }\n            if (Array.isArray(item)) {\n                return _this.resolveSubSelectedArray(field, item, execContext);\n            }\n            if (field.selectionSet) {\n                return _this.resolveSelectionSet(field.selectionSet, item, execContext);\n            }\n        }));\n    };\n    return LocalState;\n}());\n\nfunction multiplex(inner) {\n    var observers = new Set();\n    var sub = null;\n    return new Observable(function (observer) {\n        observers.add(observer);\n        sub = sub || inner.subscribe({\n            next: function (value) {\n                observers.forEach(function (obs) { return obs.next && obs.next(value); });\n            },\n            error: function (error) {\n                observers.forEach(function (obs) { return obs.error && obs.error(error); });\n            },\n            complete: function () {\n                observers.forEach(function (obs) { return obs.complete && obs.complete(); });\n            },\n        });\n        return function () {\n            if (observers.delete(observer) && !observers.size && sub) {\n                sub.unsubscribe();\n                sub = null;\n            }\n        };\n    });\n}\nfunction asyncMap(observable, mapFn) {\n    return new Observable(function (observer) {\n        var next = observer.next, error = observer.error, complete = observer.complete;\n        var activeNextCount = 0;\n        var completed = false;\n        var handler = {\n            next: function (value) {\n                ++activeNextCount;\n                new Promise(function (resolve) {\n                    resolve(mapFn(value));\n                }).then(function (result) {\n                    --activeNextCount;\n                    next && next.call(observer, result);\n                    completed && handler.complete();\n                }, function (e) {\n                    --activeNextCount;\n                    error && error.call(observer, e);\n                });\n            },\n            error: function (e) {\n                error && error.call(observer, e);\n            },\n            complete: function () {\n                completed = true;\n                if (!activeNextCount) {\n                    complete && complete.call(observer);\n                }\n            },\n        };\n        var sub = observable.subscribe(handler);\n        return function () { return sub.unsubscribe(); };\n    });\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar QueryManager = (function () {\n    function QueryManager(_a) {\n        var link = _a.link, _b = _a.queryDeduplication, queryDeduplication = _b === void 0 ? false : _b, store = _a.store, _c = _a.onBroadcast, onBroadcast = _c === void 0 ? function () { return undefined; } : _c, _d = _a.ssrMode, ssrMode = _d === void 0 ? false : _d, _e = _a.clientAwareness, clientAwareness = _e === void 0 ? {} : _e, localState = _a.localState, assumeImmutableResults = _a.assumeImmutableResults;\n        this.mutationStore = new MutationStore();\n        this.queryStore = new QueryStore();\n        this.clientAwareness = {};\n        this.idCounter = 1;\n        this.queries = new Map();\n        this.fetchQueryRejectFns = new Map();\n        this.transformCache = new (apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.canUseWeakMap ? WeakMap : Map)();\n        this.inFlightLinkObservables = new Map();\n        this.pollingInfoByQueryId = new Map();\n        this.link = link;\n        this.queryDeduplication = queryDeduplication;\n        this.dataStore = store;\n        this.onBroadcast = onBroadcast;\n        this.clientAwareness = clientAwareness;\n        this.localState = localState || new LocalState({ cache: store.getCache() });\n        this.ssrMode = ssrMode;\n        this.assumeImmutableResults = !!assumeImmutableResults;\n    }\n    QueryManager.prototype.stop = function () {\n        var _this = this;\n        this.queries.forEach(function (_info, queryId) {\n            _this.stopQueryNoBroadcast(queryId);\n        });\n        this.fetchQueryRejectFns.forEach(function (reject) {\n            reject( false ? 0 : new ts_invariant__WEBPACK_IMPORTED_MODULE_1__.InvariantError('QueryManager stopped while query was in flight'));\n        });\n    };\n    QueryManager.prototype.mutate = function (_a) {\n        var mutation = _a.mutation, variables = _a.variables, optimisticResponse = _a.optimisticResponse, updateQueriesByName = _a.updateQueries, _b = _a.refetchQueries, refetchQueries = _b === void 0 ? [] : _b, _c = _a.awaitRefetchQueries, awaitRefetchQueries = _c === void 0 ? false : _c, updateWithProxyFn = _a.update, _d = _a.errorPolicy, errorPolicy = _d === void 0 ? 'none' : _d, fetchPolicy = _a.fetchPolicy, _e = _a.context, context = _e === void 0 ? {} : _e;\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(this, void 0, void 0, function () {\n            var mutationId, generateUpdateQueriesInfo, self;\n            var _this = this;\n            return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__generator)(this, function (_f) {\n                switch (_f.label) {\n                    case 0:\n                         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(mutation, 'mutation option is required. You must specify your GraphQL document in the mutation option.');\n                         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(!fetchPolicy || fetchPolicy === 'no-cache', \"Mutations only support a 'no-cache' fetchPolicy. If you don't want to disable the cache, remove your fetchPolicy setting to proceed with the default mutation behavior.\");\n                        mutationId = this.generateQueryId();\n                        mutation = this.transform(mutation).document;\n                        this.setQuery(mutationId, function () { return ({ document: mutation }); });\n                        variables = this.getVariables(mutation, variables);\n                        if (!this.transform(mutation).hasClientExports) return [3, 2];\n                        return [4, this.localState.addExportedVariables(mutation, variables, context)];\n                    case 1:\n                        variables = _f.sent();\n                        _f.label = 2;\n                    case 2:\n                        generateUpdateQueriesInfo = function () {\n                            var ret = {};\n                            if (updateQueriesByName) {\n                                _this.queries.forEach(function (_a, queryId) {\n                                    var observableQuery = _a.observableQuery;\n                                    if (observableQuery) {\n                                        var queryName = observableQuery.queryName;\n                                        if (queryName &&\n                                            hasOwnProperty.call(updateQueriesByName, queryName)) {\n                                            ret[queryId] = {\n                                                updater: updateQueriesByName[queryName],\n                                                query: _this.queryStore.get(queryId),\n                                            };\n                                        }\n                                    }\n                                });\n                            }\n                            return ret;\n                        };\n                        this.mutationStore.initMutation(mutationId, mutation, variables);\n                        this.dataStore.markMutationInit({\n                            mutationId: mutationId,\n                            document: mutation,\n                            variables: variables,\n                            updateQueries: generateUpdateQueriesInfo(),\n                            update: updateWithProxyFn,\n                            optimisticResponse: optimisticResponse,\n                        });\n                        this.broadcastQueries();\n                        self = this;\n                        return [2, new Promise(function (resolve, reject) {\n                                var storeResult;\n                                var error;\n                                self.getObservableFromLink(mutation, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, context), { optimisticResponse: optimisticResponse }), variables, false).subscribe({\n                                    next: function (result) {\n                                        if ((0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.graphQLResultHasError)(result) && errorPolicy === 'none') {\n                                            error = new ApolloError({\n                                                graphQLErrors: result.errors,\n                                            });\n                                            return;\n                                        }\n                                        self.mutationStore.markMutationResult(mutationId);\n                                        if (fetchPolicy !== 'no-cache') {\n                                            self.dataStore.markMutationResult({\n                                                mutationId: mutationId,\n                                                result: result,\n                                                document: mutation,\n                                                variables: variables,\n                                                updateQueries: generateUpdateQueriesInfo(),\n                                                update: updateWithProxyFn,\n                                            });\n                                        }\n                                        storeResult = result;\n                                    },\n                                    error: function (err) {\n                                        self.mutationStore.markMutationError(mutationId, err);\n                                        self.dataStore.markMutationComplete({\n                                            mutationId: mutationId,\n                                            optimisticResponse: optimisticResponse,\n                                        });\n                                        self.broadcastQueries();\n                                        self.setQuery(mutationId, function () { return ({ document: null }); });\n                                        reject(new ApolloError({\n                                            networkError: err,\n                                        }));\n                                    },\n                                    complete: function () {\n                                        if (error) {\n                                            self.mutationStore.markMutationError(mutationId, error);\n                                        }\n                                        self.dataStore.markMutationComplete({\n                                            mutationId: mutationId,\n                                            optimisticResponse: optimisticResponse,\n                                        });\n                                        self.broadcastQueries();\n                                        if (error) {\n                                            reject(error);\n                                            return;\n                                        }\n                                        if (typeof refetchQueries === 'function') {\n                                            refetchQueries = refetchQueries(storeResult);\n                                        }\n                                        var refetchQueryPromises = [];\n                                        if (isNonEmptyArray(refetchQueries)) {\n                                            refetchQueries.forEach(function (refetchQuery) {\n                                                if (typeof refetchQuery === 'string') {\n                                                    self.queries.forEach(function (_a) {\n                                                        var observableQuery = _a.observableQuery;\n                                                        if (observableQuery &&\n                                                            observableQuery.queryName === refetchQuery) {\n                                                            refetchQueryPromises.push(observableQuery.refetch());\n                                                        }\n                                                    });\n                                                }\n                                                else {\n                                                    var queryOptions = {\n                                                        query: refetchQuery.query,\n                                                        variables: refetchQuery.variables,\n                                                        fetchPolicy: 'network-only',\n                                                    };\n                                                    if (refetchQuery.context) {\n                                                        queryOptions.context = refetchQuery.context;\n                                                    }\n                                                    refetchQueryPromises.push(self.query(queryOptions));\n                                                }\n                                            });\n                                        }\n                                        Promise.all(awaitRefetchQueries ? refetchQueryPromises : []).then(function () {\n                                            self.setQuery(mutationId, function () { return ({ document: null }); });\n                                            if (errorPolicy === 'ignore' &&\n                                                storeResult &&\n                                                (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.graphQLResultHasError)(storeResult)) {\n                                                delete storeResult.errors;\n                                            }\n                                            resolve(storeResult);\n                                        });\n                                    },\n                                });\n                            })];\n                }\n            });\n        });\n    };\n    QueryManager.prototype.fetchQuery = function (queryId, options, fetchType, fetchMoreForQueryId) {\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(this, void 0, void 0, function () {\n            var _a, metadata, _b, fetchPolicy, _c, context, query, variables, storeResult, isNetworkOnly, needToFetch, _d, complete, result, shouldFetch, requestId, cancel, networkResult;\n            var _this = this;\n            return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__generator)(this, function (_e) {\n                switch (_e.label) {\n                    case 0:\n                        _a = options.metadata, metadata = _a === void 0 ? null : _a, _b = options.fetchPolicy, fetchPolicy = _b === void 0 ? 'cache-first' : _b, _c = options.context, context = _c === void 0 ? {} : _c;\n                        query = this.transform(options.query).document;\n                        variables = this.getVariables(query, options.variables);\n                        if (!this.transform(query).hasClientExports) return [3, 2];\n                        return [4, this.localState.addExportedVariables(query, variables, context)];\n                    case 1:\n                        variables = _e.sent();\n                        _e.label = 2;\n                    case 2:\n                        options = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, options), { variables: variables });\n                        isNetworkOnly = fetchPolicy === 'network-only' || fetchPolicy === 'no-cache';\n                        needToFetch = isNetworkOnly;\n                        if (!isNetworkOnly) {\n                            _d = this.dataStore.getCache().diff({\n                                query: query,\n                                variables: variables,\n                                returnPartialData: true,\n                                optimistic: false,\n                            }), complete = _d.complete, result = _d.result;\n                            needToFetch = !complete || fetchPolicy === 'cache-and-network';\n                            storeResult = result;\n                        }\n                        shouldFetch = needToFetch && fetchPolicy !== 'cache-only' && fetchPolicy !== 'standby';\n                        if ((0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.hasDirectives)(['live'], query))\n                            shouldFetch = true;\n                        requestId = this.idCounter++;\n                        cancel = fetchPolicy !== 'no-cache'\n                            ? this.updateQueryWatch(queryId, query, options)\n                            : undefined;\n                        this.setQuery(queryId, function () { return ({\n                            document: query,\n                            lastRequestId: requestId,\n                            invalidated: true,\n                            cancel: cancel,\n                        }); });\n                        this.invalidate(fetchMoreForQueryId);\n                        this.queryStore.initQuery({\n                            queryId: queryId,\n                            document: query,\n                            storePreviousVariables: shouldFetch,\n                            variables: variables,\n                            isPoll: fetchType === FetchType.poll,\n                            isRefetch: fetchType === FetchType.refetch,\n                            metadata: metadata,\n                            fetchMoreForQueryId: fetchMoreForQueryId,\n                        });\n                        this.broadcastQueries();\n                        if (shouldFetch) {\n                            networkResult = this.fetchRequest({\n                                requestId: requestId,\n                                queryId: queryId,\n                                document: query,\n                                options: options,\n                                fetchMoreForQueryId: fetchMoreForQueryId,\n                            }).catch(function (error) {\n                                if (isApolloError(error)) {\n                                    throw error;\n                                }\n                                else {\n                                    if (requestId >= _this.getQuery(queryId).lastRequestId) {\n                                        _this.queryStore.markQueryError(queryId, error, fetchMoreForQueryId);\n                                        _this.invalidate(queryId);\n                                        _this.invalidate(fetchMoreForQueryId);\n                                        _this.broadcastQueries();\n                                    }\n                                    throw new ApolloError({ networkError: error });\n                                }\n                            });\n                            if (fetchPolicy !== 'cache-and-network') {\n                                return [2, networkResult];\n                            }\n                            networkResult.catch(function () { });\n                        }\n                        this.queryStore.markQueryResultClient(queryId, !shouldFetch);\n                        this.invalidate(queryId);\n                        this.invalidate(fetchMoreForQueryId);\n                        if (this.transform(query).hasForcedResolvers) {\n                            return [2, this.localState.runResolvers({\n                                    document: query,\n                                    remoteResult: { data: storeResult },\n                                    context: context,\n                                    variables: variables,\n                                    onlyRunForcedResolvers: true,\n                                }).then(function (result) {\n                                    _this.markQueryResult(queryId, result, options, fetchMoreForQueryId);\n                                    _this.broadcastQueries();\n                                    return result;\n                                })];\n                        }\n                        this.broadcastQueries();\n                        return [2, { data: storeResult }];\n                }\n            });\n        });\n    };\n    QueryManager.prototype.markQueryResult = function (queryId, result, _a, fetchMoreForQueryId) {\n        var fetchPolicy = _a.fetchPolicy, variables = _a.variables, errorPolicy = _a.errorPolicy;\n        if (fetchPolicy === 'no-cache') {\n            this.setQuery(queryId, function () { return ({\n                newData: { result: result.data, complete: true },\n            }); });\n        }\n        else {\n            this.dataStore.markQueryResult(result, this.getQuery(queryId).document, variables, fetchMoreForQueryId, errorPolicy === 'ignore' || errorPolicy === 'all');\n        }\n    };\n    QueryManager.prototype.queryListenerForObserver = function (queryId, options, observer) {\n        var _this = this;\n        function invoke(method, argument) {\n            if (observer[method]) {\n                try {\n                    observer[method](argument);\n                }\n                catch (e) {\n                     false || ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant.error(e);\n                }\n            }\n            else if (method === 'error') {\n                 false || ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant.error(argument);\n            }\n        }\n        return function (queryStoreValue, newData) {\n            _this.invalidate(queryId, false);\n            if (!queryStoreValue)\n                return;\n            var _a = _this.getQuery(queryId), observableQuery = _a.observableQuery, document = _a.document;\n            var fetchPolicy = observableQuery\n                ? observableQuery.options.fetchPolicy\n                : options.fetchPolicy;\n            if (fetchPolicy === 'standby')\n                return;\n            var loading = isNetworkRequestInFlight(queryStoreValue.networkStatus);\n            var lastResult = observableQuery && observableQuery.getLastResult();\n            var networkStatusChanged = !!(lastResult &&\n                lastResult.networkStatus !== queryStoreValue.networkStatus);\n            var shouldNotifyIfLoading = options.returnPartialData ||\n                (!newData && queryStoreValue.previousVariables) ||\n                (networkStatusChanged && options.notifyOnNetworkStatusChange) ||\n                fetchPolicy === 'cache-only' ||\n                fetchPolicy === 'cache-and-network';\n            if (loading && !shouldNotifyIfLoading) {\n                return;\n            }\n            var hasGraphQLErrors = isNonEmptyArray(queryStoreValue.graphQLErrors);\n            var errorPolicy = observableQuery\n                && observableQuery.options.errorPolicy\n                || options.errorPolicy\n                || 'none';\n            if (errorPolicy === 'none' && hasGraphQLErrors || queryStoreValue.networkError) {\n                return invoke('error', new ApolloError({\n                    graphQLErrors: queryStoreValue.graphQLErrors,\n                    networkError: queryStoreValue.networkError,\n                }));\n            }\n            try {\n                var data = void 0;\n                var isMissing = void 0;\n                if (newData) {\n                    if (fetchPolicy !== 'no-cache' && fetchPolicy !== 'network-only') {\n                        _this.setQuery(queryId, function () { return ({ newData: null }); });\n                    }\n                    data = newData.result;\n                    isMissing = !newData.complete;\n                }\n                else {\n                    var lastError = observableQuery && observableQuery.getLastError();\n                    var errorStatusChanged = errorPolicy !== 'none' &&\n                        (lastError && lastError.graphQLErrors) !==\n                            queryStoreValue.graphQLErrors;\n                    if (lastResult && lastResult.data && !errorStatusChanged) {\n                        data = lastResult.data;\n                        isMissing = false;\n                    }\n                    else {\n                        var diffResult = _this.dataStore.getCache().diff({\n                            query: document,\n                            variables: queryStoreValue.previousVariables ||\n                                queryStoreValue.variables,\n                            returnPartialData: true,\n                            optimistic: true,\n                        });\n                        data = diffResult.result;\n                        isMissing = !diffResult.complete;\n                    }\n                }\n                var stale = isMissing && !(options.returnPartialData ||\n                    fetchPolicy === 'cache-only');\n                var resultFromStore = {\n                    data: stale ? lastResult && lastResult.data : data,\n                    loading: loading,\n                    networkStatus: queryStoreValue.networkStatus,\n                    stale: stale,\n                };\n                if (errorPolicy === 'all' && hasGraphQLErrors) {\n                    resultFromStore.errors = queryStoreValue.graphQLErrors;\n                }\n                invoke('next', resultFromStore);\n            }\n            catch (networkError) {\n                invoke('error', new ApolloError({ networkError: networkError }));\n            }\n        };\n    };\n    QueryManager.prototype.transform = function (document) {\n        var transformCache = this.transformCache;\n        if (!transformCache.has(document)) {\n            var cache = this.dataStore.getCache();\n            var transformed = cache.transformDocument(document);\n            var forLink = (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.removeConnectionDirectiveFromDocument)(cache.transformForLink(transformed));\n            var clientQuery = this.localState.clientQuery(transformed);\n            var serverQuery = this.localState.serverQuery(forLink);\n            var cacheEntry_1 = {\n                document: transformed,\n                hasClientExports: (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.hasClientExports)(transformed),\n                hasForcedResolvers: this.localState.shouldForceResolvers(transformed),\n                clientQuery: clientQuery,\n                serverQuery: serverQuery,\n                defaultVars: (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.getDefaultValues)((0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.getOperationDefinition)(transformed)),\n            };\n            var add = function (doc) {\n                if (doc && !transformCache.has(doc)) {\n                    transformCache.set(doc, cacheEntry_1);\n                }\n            };\n            add(document);\n            add(transformed);\n            add(clientQuery);\n            add(serverQuery);\n        }\n        return transformCache.get(document);\n    };\n    QueryManager.prototype.getVariables = function (document, variables) {\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.transform(document).defaultVars), variables);\n    };\n    QueryManager.prototype.watchQuery = function (options, shouldSubscribe) {\n        if (shouldSubscribe === void 0) { shouldSubscribe = true; }\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(options.fetchPolicy !== 'standby', 'client.watchQuery cannot be called with fetchPolicy set to \"standby\"');\n        options.variables = this.getVariables(options.query, options.variables);\n        if (typeof options.notifyOnNetworkStatusChange === 'undefined') {\n            options.notifyOnNetworkStatusChange = false;\n        }\n        var transformedOptions = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, options);\n        return new ObservableQuery({\n            queryManager: this,\n            options: transformedOptions,\n            shouldSubscribe: shouldSubscribe,\n        });\n    };\n    QueryManager.prototype.query = function (options) {\n        var _this = this;\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(options.query, 'query option is required. You must specify your GraphQL document ' +\n            'in the query option.');\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(options.query.kind === 'Document', 'You must wrap the query string in a \"gql\" tag.');\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(!options.returnPartialData, 'returnPartialData option only supported on watchQuery.');\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(!options.pollInterval, 'pollInterval option only supported on watchQuery.');\n        return new Promise(function (resolve, reject) {\n            var watchedQuery = _this.watchQuery(options, false);\n            _this.fetchQueryRejectFns.set(\"query:\" + watchedQuery.queryId, reject);\n            watchedQuery\n                .result()\n                .then(resolve, reject)\n                .then(function () {\n                return _this.fetchQueryRejectFns.delete(\"query:\" + watchedQuery.queryId);\n            });\n        });\n    };\n    QueryManager.prototype.generateQueryId = function () {\n        return String(this.idCounter++);\n    };\n    QueryManager.prototype.stopQueryInStore = function (queryId) {\n        this.stopQueryInStoreNoBroadcast(queryId);\n        this.broadcastQueries();\n    };\n    QueryManager.prototype.stopQueryInStoreNoBroadcast = function (queryId) {\n        this.stopPollingQuery(queryId);\n        this.queryStore.stopQuery(queryId);\n        this.invalidate(queryId);\n    };\n    QueryManager.prototype.addQueryListener = function (queryId, listener) {\n        this.setQuery(queryId, function (_a) {\n            var listeners = _a.listeners;\n            listeners.add(listener);\n            return { invalidated: false };\n        });\n    };\n    QueryManager.prototype.updateQueryWatch = function (queryId, document, options) {\n        var _this = this;\n        var cancel = this.getQuery(queryId).cancel;\n        if (cancel)\n            cancel();\n        var previousResult = function () {\n            var previousResult = null;\n            var observableQuery = _this.getQuery(queryId).observableQuery;\n            if (observableQuery) {\n                var lastResult = observableQuery.getLastResult();\n                if (lastResult) {\n                    previousResult = lastResult.data;\n                }\n            }\n            return previousResult;\n        };\n        return this.dataStore.getCache().watch({\n            query: document,\n            variables: options.variables,\n            optimistic: true,\n            previousResult: previousResult,\n            callback: function (newData) {\n                _this.setQuery(queryId, function () { return ({ invalidated: true, newData: newData }); });\n            },\n        });\n    };\n    QueryManager.prototype.addObservableQuery = function (queryId, observableQuery) {\n        this.setQuery(queryId, function () { return ({ observableQuery: observableQuery }); });\n    };\n    QueryManager.prototype.removeObservableQuery = function (queryId) {\n        var cancel = this.getQuery(queryId).cancel;\n        this.setQuery(queryId, function () { return ({ observableQuery: null }); });\n        if (cancel)\n            cancel();\n    };\n    QueryManager.prototype.clearStore = function () {\n        this.fetchQueryRejectFns.forEach(function (reject) {\n            reject( false ? 0 : new ts_invariant__WEBPACK_IMPORTED_MODULE_1__.InvariantError('Store reset while query was in flight (not completed in link chain)'));\n        });\n        var resetIds = [];\n        this.queries.forEach(function (_a, queryId) {\n            var observableQuery = _a.observableQuery;\n            if (observableQuery)\n                resetIds.push(queryId);\n        });\n        this.queryStore.reset(resetIds);\n        this.mutationStore.reset();\n        return this.dataStore.reset();\n    };\n    QueryManager.prototype.resetStore = function () {\n        var _this = this;\n        return this.clearStore().then(function () {\n            return _this.reFetchObservableQueries();\n        });\n    };\n    QueryManager.prototype.reFetchObservableQueries = function (includeStandby) {\n        var _this = this;\n        if (includeStandby === void 0) { includeStandby = false; }\n        var observableQueryPromises = [];\n        this.queries.forEach(function (_a, queryId) {\n            var observableQuery = _a.observableQuery;\n            if (observableQuery) {\n                var fetchPolicy = observableQuery.options.fetchPolicy;\n                observableQuery.resetLastResults();\n                if (fetchPolicy !== 'cache-only' &&\n                    (includeStandby || fetchPolicy !== 'standby')) {\n                    observableQueryPromises.push(observableQuery.refetch());\n                }\n                _this.setQuery(queryId, function () { return ({ newData: null }); });\n                _this.invalidate(queryId);\n            }\n        });\n        this.broadcastQueries();\n        return Promise.all(observableQueryPromises);\n    };\n    QueryManager.prototype.observeQuery = function (queryId, options, observer) {\n        this.addQueryListener(queryId, this.queryListenerForObserver(queryId, options, observer));\n        return this.fetchQuery(queryId, options);\n    };\n    QueryManager.prototype.startQuery = function (queryId, options, listener) {\n         false || ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant.warn(\"The QueryManager.startQuery method has been deprecated\");\n        this.addQueryListener(queryId, listener);\n        this.fetchQuery(queryId, options)\n            .catch(function () { return undefined; });\n        return queryId;\n    };\n    QueryManager.prototype.startGraphQLSubscription = function (_a) {\n        var _this = this;\n        var query = _a.query, fetchPolicy = _a.fetchPolicy, variables = _a.variables;\n        query = this.transform(query).document;\n        variables = this.getVariables(query, variables);\n        var makeObservable = function (variables) {\n            return _this.getObservableFromLink(query, {}, variables, false).map(function (result) {\n                if (!fetchPolicy || fetchPolicy !== 'no-cache') {\n                    _this.dataStore.markSubscriptionResult(result, query, variables);\n                    _this.broadcastQueries();\n                }\n                if ((0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.graphQLResultHasError)(result)) {\n                    throw new ApolloError({\n                        graphQLErrors: result.errors,\n                    });\n                }\n                return result;\n            });\n        };\n        if (this.transform(query).hasClientExports) {\n            var observablePromise_1 = this.localState.addExportedVariables(query, variables).then(makeObservable);\n            return new Observable(function (observer) {\n                var sub = null;\n                observablePromise_1.then(function (observable) { return sub = observable.subscribe(observer); }, observer.error);\n                return function () { return sub && sub.unsubscribe(); };\n            });\n        }\n        return makeObservable(variables);\n    };\n    QueryManager.prototype.stopQuery = function (queryId) {\n        this.stopQueryNoBroadcast(queryId);\n        this.broadcastQueries();\n    };\n    QueryManager.prototype.stopQueryNoBroadcast = function (queryId) {\n        this.stopQueryInStoreNoBroadcast(queryId);\n        this.removeQuery(queryId);\n    };\n    QueryManager.prototype.removeQuery = function (queryId) {\n        this.fetchQueryRejectFns.delete(\"query:\" + queryId);\n        this.fetchQueryRejectFns.delete(\"fetchRequest:\" + queryId);\n        this.getQuery(queryId).subscriptions.forEach(function (x) { return x.unsubscribe(); });\n        this.queries.delete(queryId);\n    };\n    QueryManager.prototype.getCurrentQueryResult = function (observableQuery, optimistic) {\n        if (optimistic === void 0) { optimistic = true; }\n        var _a = observableQuery.options, variables = _a.variables, query = _a.query, fetchPolicy = _a.fetchPolicy, returnPartialData = _a.returnPartialData;\n        var lastResult = observableQuery.getLastResult();\n        var newData = this.getQuery(observableQuery.queryId).newData;\n        if (newData && newData.complete) {\n            return { data: newData.result, partial: false };\n        }\n        if (fetchPolicy === 'no-cache' || fetchPolicy === 'network-only') {\n            return { data: undefined, partial: false };\n        }\n        var _b = this.dataStore.getCache().diff({\n            query: query,\n            variables: variables,\n            previousResult: lastResult ? lastResult.data : undefined,\n            returnPartialData: true,\n            optimistic: optimistic,\n        }), result = _b.result, complete = _b.complete;\n        return {\n            data: (complete || returnPartialData) ? result : void 0,\n            partial: !complete,\n        };\n    };\n    QueryManager.prototype.getQueryWithPreviousResult = function (queryIdOrObservable) {\n        var observableQuery;\n        if (typeof queryIdOrObservable === 'string') {\n            var foundObserveableQuery = this.getQuery(queryIdOrObservable).observableQuery;\n             false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(foundObserveableQuery, \"ObservableQuery with this id doesn't exist: \" + queryIdOrObservable);\n            observableQuery = foundObserveableQuery;\n        }\n        else {\n            observableQuery = queryIdOrObservable;\n        }\n        var _a = observableQuery.options, variables = _a.variables, query = _a.query;\n        return {\n            previousResult: this.getCurrentQueryResult(observableQuery, false).data,\n            variables: variables,\n            document: query,\n        };\n    };\n    QueryManager.prototype.broadcastQueries = function () {\n        var _this = this;\n        this.onBroadcast();\n        this.queries.forEach(function (info, id) {\n            if (info.invalidated) {\n                info.listeners.forEach(function (listener) {\n                    if (listener) {\n                        listener(_this.queryStore.get(id), info.newData);\n                    }\n                });\n            }\n        });\n    };\n    QueryManager.prototype.getLocalState = function () {\n        return this.localState;\n    };\n    QueryManager.prototype.getObservableFromLink = function (query, context, variables, deduplication) {\n        var _this = this;\n        if (deduplication === void 0) { deduplication = this.queryDeduplication; }\n        var observable;\n        var serverQuery = this.transform(query).serverQuery;\n        if (serverQuery) {\n            var _a = this, inFlightLinkObservables_1 = _a.inFlightLinkObservables, link = _a.link;\n            var operation = {\n                query: serverQuery,\n                variables: variables,\n                operationName: (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.getOperationName)(serverQuery) || void 0,\n                context: this.prepareContext((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, context), { forceFetch: !deduplication })),\n            };\n            context = operation.context;\n            if (deduplication) {\n                var byVariables_1 = inFlightLinkObservables_1.get(serverQuery) || new Map();\n                inFlightLinkObservables_1.set(serverQuery, byVariables_1);\n                var varJson_1 = JSON.stringify(variables);\n                observable = byVariables_1.get(varJson_1);\n                if (!observable) {\n                    byVariables_1.set(varJson_1, observable = multiplex((0,apollo_link__WEBPACK_IMPORTED_MODULE_3__.execute)(link, operation)));\n                    var cleanup = function () {\n                        byVariables_1.delete(varJson_1);\n                        if (!byVariables_1.size)\n                            inFlightLinkObservables_1.delete(serverQuery);\n                        cleanupSub_1.unsubscribe();\n                    };\n                    var cleanupSub_1 = observable.subscribe({\n                        next: cleanup,\n                        error: cleanup,\n                        complete: cleanup,\n                    });\n                }\n            }\n            else {\n                observable = multiplex((0,apollo_link__WEBPACK_IMPORTED_MODULE_3__.execute)(link, operation));\n            }\n        }\n        else {\n            observable = Observable.of({ data: {} });\n            context = this.prepareContext(context);\n        }\n        var clientQuery = this.transform(query).clientQuery;\n        if (clientQuery) {\n            observable = asyncMap(observable, function (result) {\n                return _this.localState.runResolvers({\n                    document: clientQuery,\n                    remoteResult: result,\n                    context: context,\n                    variables: variables,\n                });\n            });\n        }\n        return observable;\n    };\n    QueryManager.prototype.fetchRequest = function (_a) {\n        var _this = this;\n        var requestId = _a.requestId, queryId = _a.queryId, document = _a.document, options = _a.options, fetchMoreForQueryId = _a.fetchMoreForQueryId;\n        var variables = options.variables, _b = options.errorPolicy, errorPolicy = _b === void 0 ? 'none' : _b, fetchPolicy = options.fetchPolicy;\n        var resultFromStore;\n        var errorsFromStore;\n        return new Promise(function (resolve, reject) {\n            var observable = _this.getObservableFromLink(document, options.context, variables);\n            var fqrfId = \"fetchRequest:\" + queryId;\n            _this.fetchQueryRejectFns.set(fqrfId, reject);\n            var cleanup = function () {\n                _this.fetchQueryRejectFns.delete(fqrfId);\n                _this.setQuery(queryId, function (_a) {\n                    var subscriptions = _a.subscriptions;\n                    subscriptions.delete(subscription);\n                });\n            };\n            var subscription = observable.map(function (result) {\n                if (requestId >= _this.getQuery(queryId).lastRequestId) {\n                    _this.markQueryResult(queryId, result, options, fetchMoreForQueryId);\n                    _this.queryStore.markQueryResult(queryId, result, fetchMoreForQueryId);\n                    _this.invalidate(queryId);\n                    _this.invalidate(fetchMoreForQueryId);\n                    _this.broadcastQueries();\n                }\n                if (errorPolicy === 'none' && isNonEmptyArray(result.errors)) {\n                    return reject(new ApolloError({\n                        graphQLErrors: result.errors,\n                    }));\n                }\n                if (errorPolicy === 'all') {\n                    errorsFromStore = result.errors;\n                }\n                if (fetchMoreForQueryId || fetchPolicy === 'no-cache') {\n                    resultFromStore = result.data;\n                }\n                else {\n                    var _a = _this.dataStore.getCache().diff({\n                        variables: variables,\n                        query: document,\n                        optimistic: false,\n                        returnPartialData: true,\n                    }), result_1 = _a.result, complete = _a.complete;\n                    if (complete || options.returnPartialData) {\n                        resultFromStore = result_1;\n                    }\n                }\n            }).subscribe({\n                error: function (error) {\n                    cleanup();\n                    reject(error);\n                },\n                complete: function () {\n                    cleanup();\n                    resolve({\n                        data: resultFromStore,\n                        errors: errorsFromStore,\n                        loading: false,\n                        networkStatus: NetworkStatus.ready,\n                        stale: false,\n                    });\n                },\n            });\n            _this.setQuery(queryId, function (_a) {\n                var subscriptions = _a.subscriptions;\n                subscriptions.add(subscription);\n            });\n        });\n    };\n    QueryManager.prototype.getQuery = function (queryId) {\n        return (this.queries.get(queryId) || {\n            listeners: new Set(),\n            invalidated: false,\n            document: null,\n            newData: null,\n            lastRequestId: 1,\n            observableQuery: null,\n            subscriptions: new Set(),\n        });\n    };\n    QueryManager.prototype.setQuery = function (queryId, updater) {\n        var prev = this.getQuery(queryId);\n        var newInfo = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, prev), updater(prev));\n        this.queries.set(queryId, newInfo);\n    };\n    QueryManager.prototype.invalidate = function (queryId, invalidated) {\n        if (invalidated === void 0) { invalidated = true; }\n        if (queryId) {\n            this.setQuery(queryId, function () { return ({ invalidated: invalidated }); });\n        }\n    };\n    QueryManager.prototype.prepareContext = function (context) {\n        if (context === void 0) { context = {}; }\n        var newContext = this.localState.prepareContext(context);\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, newContext), { clientAwareness: this.clientAwareness });\n    };\n    QueryManager.prototype.checkInFlight = function (queryId) {\n        var query = this.queryStore.get(queryId);\n        return (query &&\n            query.networkStatus !== NetworkStatus.ready &&\n            query.networkStatus !== NetworkStatus.error);\n    };\n    QueryManager.prototype.startPollingQuery = function (options, queryId, listener) {\n        var _this = this;\n        var pollInterval = options.pollInterval;\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(pollInterval, 'Attempted to start a polling query without a polling interval.');\n        if (!this.ssrMode) {\n            var info = this.pollingInfoByQueryId.get(queryId);\n            if (!info) {\n                this.pollingInfoByQueryId.set(queryId, (info = {}));\n            }\n            info.interval = pollInterval;\n            info.options = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, options), { fetchPolicy: 'network-only' });\n            var maybeFetch_1 = function () {\n                var info = _this.pollingInfoByQueryId.get(queryId);\n                if (info) {\n                    if (_this.checkInFlight(queryId)) {\n                        poll_1();\n                    }\n                    else {\n                        _this.fetchQuery(queryId, info.options, FetchType.poll).then(poll_1, poll_1);\n                    }\n                }\n            };\n            var poll_1 = function () {\n                var info = _this.pollingInfoByQueryId.get(queryId);\n                if (info) {\n                    clearTimeout(info.timeout);\n                    info.timeout = setTimeout(maybeFetch_1, info.interval);\n                }\n            };\n            if (listener) {\n                this.addQueryListener(queryId, listener);\n            }\n            poll_1();\n        }\n        return queryId;\n    };\n    QueryManager.prototype.stopPollingQuery = function (queryId) {\n        this.pollingInfoByQueryId.delete(queryId);\n    };\n    return QueryManager;\n}());\n\nvar DataStore = (function () {\n    function DataStore(initialCache) {\n        this.cache = initialCache;\n    }\n    DataStore.prototype.getCache = function () {\n        return this.cache;\n    };\n    DataStore.prototype.markQueryResult = function (result, document, variables, fetchMoreForQueryId, ignoreErrors) {\n        if (ignoreErrors === void 0) { ignoreErrors = false; }\n        var writeWithErrors = !(0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.graphQLResultHasError)(result);\n        if (ignoreErrors && (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.graphQLResultHasError)(result) && result.data) {\n            writeWithErrors = true;\n        }\n        if (!fetchMoreForQueryId && writeWithErrors) {\n            this.cache.write({\n                result: result.data,\n                dataId: 'ROOT_QUERY',\n                query: document,\n                variables: variables,\n            });\n        }\n    };\n    DataStore.prototype.markSubscriptionResult = function (result, document, variables) {\n        if (!(0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.graphQLResultHasError)(result)) {\n            this.cache.write({\n                result: result.data,\n                dataId: 'ROOT_SUBSCRIPTION',\n                query: document,\n                variables: variables,\n            });\n        }\n    };\n    DataStore.prototype.markMutationInit = function (mutation) {\n        var _this = this;\n        if (mutation.optimisticResponse) {\n            var optimistic_1;\n            if (typeof mutation.optimisticResponse === 'function') {\n                optimistic_1 = mutation.optimisticResponse(mutation.variables);\n            }\n            else {\n                optimistic_1 = mutation.optimisticResponse;\n            }\n            this.cache.recordOptimisticTransaction(function (c) {\n                var orig = _this.cache;\n                _this.cache = c;\n                try {\n                    _this.markMutationResult({\n                        mutationId: mutation.mutationId,\n                        result: { data: optimistic_1 },\n                        document: mutation.document,\n                        variables: mutation.variables,\n                        updateQueries: mutation.updateQueries,\n                        update: mutation.update,\n                    });\n                }\n                finally {\n                    _this.cache = orig;\n                }\n            }, mutation.mutationId);\n        }\n    };\n    DataStore.prototype.markMutationResult = function (mutation) {\n        var _this = this;\n        if (!(0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.graphQLResultHasError)(mutation.result)) {\n            var cacheWrites_1 = [{\n                    result: mutation.result.data,\n                    dataId: 'ROOT_MUTATION',\n                    query: mutation.document,\n                    variables: mutation.variables,\n                }];\n            var updateQueries_1 = mutation.updateQueries;\n            if (updateQueries_1) {\n                Object.keys(updateQueries_1).forEach(function (id) {\n                    var _a = updateQueries_1[id], query = _a.query, updater = _a.updater;\n                    var _b = _this.cache.diff({\n                        query: query.document,\n                        variables: query.variables,\n                        returnPartialData: true,\n                        optimistic: false,\n                    }), currentQueryResult = _b.result, complete = _b.complete;\n                    if (complete) {\n                        var nextQueryResult = (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.tryFunctionOrLogError)(function () {\n                            return updater(currentQueryResult, {\n                                mutationResult: mutation.result,\n                                queryName: (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.getOperationName)(query.document) || undefined,\n                                queryVariables: query.variables,\n                            });\n                        });\n                        if (nextQueryResult) {\n                            cacheWrites_1.push({\n                                result: nextQueryResult,\n                                dataId: 'ROOT_QUERY',\n                                query: query.document,\n                                variables: query.variables,\n                            });\n                        }\n                    }\n                });\n            }\n            this.cache.performTransaction(function (c) {\n                cacheWrites_1.forEach(function (write) { return c.write(write); });\n                var update = mutation.update;\n                if (update) {\n                    (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_4__.tryFunctionOrLogError)(function () { return update(c, mutation.result); });\n                }\n            });\n        }\n    };\n    DataStore.prototype.markMutationComplete = function (_a) {\n        var mutationId = _a.mutationId, optimisticResponse = _a.optimisticResponse;\n        if (optimisticResponse) {\n            this.cache.removeOptimistic(mutationId);\n        }\n    };\n    DataStore.prototype.markUpdateQueryResult = function (document, variables, newResult) {\n        this.cache.write({\n            result: newResult,\n            dataId: 'ROOT_QUERY',\n            variables: variables,\n            query: document,\n        });\n    };\n    DataStore.prototype.reset = function () {\n        return this.cache.reset();\n    };\n    return DataStore;\n}());\n\nvar version = \"2.6.10\";\n\nvar hasSuggestedDevtools = false;\nvar ApolloClient = (function () {\n    function ApolloClient(options) {\n        var _this = this;\n        this.defaultOptions = {};\n        this.resetStoreCallbacks = [];\n        this.clearStoreCallbacks = [];\n        var cache = options.cache, _a = options.ssrMode, ssrMode = _a === void 0 ? false : _a, _b = options.ssrForceFetchDelay, ssrForceFetchDelay = _b === void 0 ? 0 : _b, connectToDevTools = options.connectToDevTools, _c = options.queryDeduplication, queryDeduplication = _c === void 0 ? true : _c, defaultOptions = options.defaultOptions, _d = options.assumeImmutableResults, assumeImmutableResults = _d === void 0 ? false : _d, resolvers = options.resolvers, typeDefs = options.typeDefs, fragmentMatcher = options.fragmentMatcher, clientAwarenessName = options.name, clientAwarenessVersion = options.version;\n        var link = options.link;\n        if (!link && resolvers) {\n            link = apollo_link__WEBPACK_IMPORTED_MODULE_3__.ApolloLink.empty();\n        }\n        if (!link || !cache) {\n            throw  false ? 0 : new ts_invariant__WEBPACK_IMPORTED_MODULE_1__.InvariantError(\"In order to initialize Apollo Client, you must specify 'link' and 'cache' properties in the options object.\\n\" +\n                \"These options are part of the upgrade requirements when migrating from Apollo Client 1.x to Apollo Client 2.x.\\n\" +\n                \"For more information, please visit: https://www.apollographql.com/docs/tutorial/client.html#apollo-client-setup\");\n        }\n        this.link = link;\n        this.cache = cache;\n        this.store = new DataStore(cache);\n        this.disableNetworkFetches = ssrMode || ssrForceFetchDelay > 0;\n        this.queryDeduplication = queryDeduplication;\n        this.defaultOptions = defaultOptions || {};\n        this.typeDefs = typeDefs;\n        if (ssrForceFetchDelay) {\n            setTimeout(function () { return (_this.disableNetworkFetches = false); }, ssrForceFetchDelay);\n        }\n        this.watchQuery = this.watchQuery.bind(this);\n        this.query = this.query.bind(this);\n        this.mutate = this.mutate.bind(this);\n        this.resetStore = this.resetStore.bind(this);\n        this.reFetchObservableQueries = this.reFetchObservableQueries.bind(this);\n        var defaultConnectToDevTools =  true &&\n            typeof window !== 'undefined' &&\n            !window.__APOLLO_CLIENT__;\n        if (typeof connectToDevTools === 'undefined'\n            ? defaultConnectToDevTools\n            : connectToDevTools && typeof window !== 'undefined') {\n            window.__APOLLO_CLIENT__ = this;\n        }\n        if (!hasSuggestedDevtools && \"development\" !== 'production') {\n            hasSuggestedDevtools = true;\n            if (typeof window !== 'undefined' &&\n                window.document &&\n                window.top === window.self) {\n                if (typeof window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n                    if (window.navigator &&\n                        window.navigator.userAgent &&\n                        window.navigator.userAgent.indexOf('Chrome') > -1) {\n                        console.debug('Download the Apollo DevTools ' +\n                            'for a better development experience: ' +\n                            'https://chrome.google.com/webstore/detail/apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm');\n                    }\n                }\n            }\n        }\n        this.version = version;\n        this.localState = new LocalState({\n            cache: cache,\n            client: this,\n            resolvers: resolvers,\n            fragmentMatcher: fragmentMatcher,\n        });\n        this.queryManager = new QueryManager({\n            link: this.link,\n            store: this.store,\n            queryDeduplication: queryDeduplication,\n            ssrMode: ssrMode,\n            clientAwareness: {\n                name: clientAwarenessName,\n                version: clientAwarenessVersion,\n            },\n            localState: this.localState,\n            assumeImmutableResults: assumeImmutableResults,\n            onBroadcast: function () {\n                if (_this.devToolsHookCb) {\n                    _this.devToolsHookCb({\n                        action: {},\n                        state: {\n                            queries: _this.queryManager.queryStore.getStore(),\n                            mutations: _this.queryManager.mutationStore.getStore(),\n                        },\n                        dataWithOptimisticResults: _this.cache.extract(true),\n                    });\n                }\n            },\n        });\n    }\n    ApolloClient.prototype.stop = function () {\n        this.queryManager.stop();\n    };\n    ApolloClient.prototype.watchQuery = function (options) {\n        if (this.defaultOptions.watchQuery) {\n            options = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.defaultOptions.watchQuery), options);\n        }\n        if (this.disableNetworkFetches &&\n            (options.fetchPolicy === 'network-only' ||\n                options.fetchPolicy === 'cache-and-network')) {\n            options = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, options), { fetchPolicy: 'cache-first' });\n        }\n        return this.queryManager.watchQuery(options);\n    };\n    ApolloClient.prototype.query = function (options) {\n        if (this.defaultOptions.query) {\n            options = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.defaultOptions.query), options);\n        }\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant)(options.fetchPolicy !== 'cache-and-network', 'The cache-and-network fetchPolicy does not work with client.query, because ' +\n            'client.query can only return a single result. Please use client.watchQuery ' +\n            'to receive multiple results from the cache and the network, or consider ' +\n            'using a different fetchPolicy, such as cache-first or network-only.');\n        if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {\n            options = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, options), { fetchPolicy: 'cache-first' });\n        }\n        return this.queryManager.query(options);\n    };\n    ApolloClient.prototype.mutate = function (options) {\n        if (this.defaultOptions.mutate) {\n            options = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.defaultOptions.mutate), options);\n        }\n        return this.queryManager.mutate(options);\n    };\n    ApolloClient.prototype.subscribe = function (options) {\n        return this.queryManager.startGraphQLSubscription(options);\n    };\n    ApolloClient.prototype.readQuery = function (options, optimistic) {\n        if (optimistic === void 0) { optimistic = false; }\n        return this.cache.readQuery(options, optimistic);\n    };\n    ApolloClient.prototype.readFragment = function (options, optimistic) {\n        if (optimistic === void 0) { optimistic = false; }\n        return this.cache.readFragment(options, optimistic);\n    };\n    ApolloClient.prototype.writeQuery = function (options) {\n        var result = this.cache.writeQuery(options);\n        this.queryManager.broadcastQueries();\n        return result;\n    };\n    ApolloClient.prototype.writeFragment = function (options) {\n        var result = this.cache.writeFragment(options);\n        this.queryManager.broadcastQueries();\n        return result;\n    };\n    ApolloClient.prototype.writeData = function (options) {\n        var result = this.cache.writeData(options);\n        this.queryManager.broadcastQueries();\n        return result;\n    };\n    ApolloClient.prototype.__actionHookForDevTools = function (cb) {\n        this.devToolsHookCb = cb;\n    };\n    ApolloClient.prototype.__requestRaw = function (payload) {\n        return (0,apollo_link__WEBPACK_IMPORTED_MODULE_3__.execute)(this.link, payload);\n    };\n    ApolloClient.prototype.initQueryManager = function () {\n         false || ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant.warn('Calling the initQueryManager method is no longer necessary, ' +\n            'and it will be removed from ApolloClient in version 3.0.');\n        return this.queryManager;\n    };\n    ApolloClient.prototype.resetStore = function () {\n        var _this = this;\n        return Promise.resolve()\n            .then(function () { return _this.queryManager.clearStore(); })\n            .then(function () { return Promise.all(_this.resetStoreCallbacks.map(function (fn) { return fn(); })); })\n            .then(function () { return _this.reFetchObservableQueries(); });\n    };\n    ApolloClient.prototype.clearStore = function () {\n        var _this = this;\n        return Promise.resolve()\n            .then(function () { return _this.queryManager.clearStore(); })\n            .then(function () { return Promise.all(_this.clearStoreCallbacks.map(function (fn) { return fn(); })); });\n    };\n    ApolloClient.prototype.onResetStore = function (cb) {\n        var _this = this;\n        this.resetStoreCallbacks.push(cb);\n        return function () {\n            _this.resetStoreCallbacks = _this.resetStoreCallbacks.filter(function (c) { return c !== cb; });\n        };\n    };\n    ApolloClient.prototype.onClearStore = function (cb) {\n        var _this = this;\n        this.clearStoreCallbacks.push(cb);\n        return function () {\n            _this.clearStoreCallbacks = _this.clearStoreCallbacks.filter(function (c) { return c !== cb; });\n        };\n    };\n    ApolloClient.prototype.reFetchObservableQueries = function (includeStandby) {\n        return this.queryManager.reFetchObservableQueries(includeStandby);\n    };\n    ApolloClient.prototype.extract = function (optimistic) {\n        return this.cache.extract(optimistic);\n    };\n    ApolloClient.prototype.restore = function (serializedState) {\n        return this.cache.restore(serializedState);\n    };\n    ApolloClient.prototype.addResolvers = function (resolvers) {\n        this.localState.addResolvers(resolvers);\n    };\n    ApolloClient.prototype.setResolvers = function (resolvers) {\n        this.localState.setResolvers(resolvers);\n    };\n    ApolloClient.prototype.getResolvers = function () {\n        return this.localState.getResolvers();\n    };\n    ApolloClient.prototype.setLocalStateFragmentMatcher = function (fragmentMatcher) {\n        this.localState.setFragmentMatcher(fragmentMatcher);\n    };\n    return ApolloClient;\n}());\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ApolloClient);\n\n//# sourceMappingURL=bundle.esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXBvbGxvLWNsaWVudC9idW5kbGUuZXNtLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFvRTtBQUNrYTtBQUN4WjtBQUNqQztBQUNZO0FBQ0Q7O0FBRXhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsc0NBQXNDO0FBQ3ZDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUksZ0RBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIseURBQVk7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLG1EQUFZOztBQUVkO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDhCQUE4Qjs7QUFFL0I7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isd0VBQXNCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLCtDQUFRLENBQUMsK0NBQVEsR0FBRztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGFBQWEsY0FBYztBQUNqRjtBQUNBLGVBQWUsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGFBQWEsa0JBQWtCO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx5REFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLE1BQXFDLEdBQUcsQ0FBcUIsT0FBTyx3REFBYztBQUNwSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx5REFBTztBQUNwQiw2QkFBNkIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHO0FBQ2pEO0FBQ0EsYUFBYSx5REFBTztBQUNwQixxQ0FBcUMsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHO0FBQ3pEO0FBQ0EsMERBQTBELCtDQUFRLENBQUMsK0NBQVEsR0FBRyxtQkFBbUIsMEJBQTBCO0FBQzNIO0FBQ0E7QUFDQTtBQUNBLFFBQVEsTUFBcUMsR0FBRyxDQUEwQyxHQUFHLHVEQUFTO0FBQ3RHLDhCQUE4QiwrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsK0NBQStDLCtDQUFRLENBQUMsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLHNDQUFzQyxXQUFXLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxnREFBZ0QsT0FBTyw2QkFBNkI7QUFDdlI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2I7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QixxQkFBcUI7QUFDckI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixNQUFxQyxJQUFJLHlEQUFlO0FBQ3hFLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLCtDQUFRLENBQUMsK0NBQVEsR0FBRztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkMsdUNBQXVDO0FBQ3ZDO0FBQ0E7QUFDQSx5QkFBeUIseURBQU87QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsdUVBQXFCO0FBQzdDLDJDQUEyQyxzQkFBc0I7QUFDakUsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYywyREFBUztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQywrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsdUJBQXVCLGlGQUFpRjtBQUMvSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMseURBQU87QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0QsMkJBQTJCO0FBQy9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBLElBQUksTUFBcUMsSUFBSSx5REFBZTtBQUM1RDtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsc0RBQXNEO0FBQzdGLGlEQUFpRCwrQkFBK0I7QUFDaEY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxNQUFxQyxHQUFHLENBQTJFLEdBQUcsdURBQVM7QUFDbkk7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsTUFBcUMsR0FBRyxDQUVnQixHQUFHLHVEQUFTO0FBQzVFO0FBQ0EsWUFBWSx5REFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHlEQUFPO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQywyREFBUztBQUMzQyxhQUFhO0FBQ2I7QUFDQTtBQUNBLDZCQUE2QiwyREFBUztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxnREFBUztBQUN4QixtQkFBbUIsa0RBQVc7QUFDOUI7QUFDQSxpTEFBaUwsUUFBUSwrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsbUJBQW1CLDBCQUEwQixLQUFLO0FBQy9QO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLCtEQUFhO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLFlBQVksTUFBcUMsSUFBSSx3REFBYztBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyw4RUFBNEI7QUFDNUQ7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBLHlCQUF5QiwrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsY0FBYztBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixNQUFxQyxHQUFHLENBQW1CLEdBQUcsdURBQVM7QUFDM0Y7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEMsa0NBQWtDO0FBQ2xDLGVBQWUsZ0RBQVM7QUFDeEIsbUJBQW1CLGtEQUFXO0FBQzlCO0FBQ0EscUhBQXFILGtFQUFrRSxRQUFRLCtDQUFRLENBQUMsK0NBQVEsR0FBRyx5Q0FBeUM7QUFDNVA7QUFDQSwyQkFBMkIsK0NBQVEsR0FBRztBQUN0QyxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFFBQVEsK0RBQUs7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBLG1DQUFtQywyREFBSztBQUN4QztBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsNEVBQTBCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDLG9DQUFvQztBQUNwQywwQ0FBMEMsZ0NBQWdDO0FBQzFFLGlEQUFpRDtBQUNqRCxlQUFlLGdEQUFTO0FBQ3hCO0FBQ0EsbUJBQW1CLGtEQUFXO0FBQzlCLGlDQUFpQyxtRUFBaUI7QUFDbEQsNEJBQTRCLHdFQUFzQjtBQUNsRCw4QkFBOEIsbUVBQWlCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGNBQWM7QUFDL0Qsd0NBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0Esa0lBQWtJO0FBQ2xJO0FBQ0E7QUFDQSxxQkFBcUIsSUFBSTtBQUN6QixhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQSxlQUFlLGdEQUFTO0FBQ3hCO0FBQ0E7QUFDQSxtQkFBbUIsa0RBQVc7QUFDOUI7QUFDQTtBQUNBLGlEQUFpRCxPQUFPLGdEQUFTO0FBQ2pFO0FBQ0EsMkJBQTJCLGtEQUFXO0FBQ3RDLDZCQUE2QiwrREFBYTtBQUMxQztBQUNBO0FBQ0EsNEJBQTRCLHlEQUFPO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRTtBQUNwRSwrQ0FBK0Msd0VBQXNCO0FBQ3JFO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQSw0QkFBNEIsa0VBQWdCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLE1BQXFDLEdBQUcsQ0FBc0IsR0FBRyx1REFBUztBQUN0RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQjtBQUNBLCtCQUErQixnRUFBYztBQUM3QyxxQkFBcUI7QUFDckIsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0EsZUFBZSxnREFBUztBQUN4QjtBQUNBO0FBQ0EsbUJBQW1CLGtEQUFXO0FBQzlCO0FBQ0E7QUFDQSxtQ0FBbUMsd0VBQXNCO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0VBQStFLDBFQUF3QiwyQ0FBMkMsb0RBQW9EO0FBQ3RNO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlEO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBbUQscUNBQXFDO0FBQ3hGLGFBQWE7QUFDYjtBQUNBLG1EQUFtRCx1Q0FBdUM7QUFDMUYsYUFBYTtBQUNiO0FBQ0EsbURBQW1ELHdDQUF3QztBQUMzRixhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QixLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNExBQTRMLG9CQUFvQiwySEFBMkg7QUFDM1U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLDJEQUFhO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlELHlCQUF5QjtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLG1CQUFtQixNQUFxQyxHQUFHLENBQXFCLE9BQU8sd0RBQWM7QUFDckcsU0FBUztBQUNUO0FBQ0E7QUFDQSw4Y0FBOGM7QUFDOWMsZUFBZSxnREFBUztBQUN4QjtBQUNBO0FBQ0EsbUJBQW1CLGtEQUFXO0FBQzlCO0FBQ0E7QUFDQSx3QkFBd0IsTUFBcUMsR0FBRyxDQUFzQixHQUFHLHVEQUFTO0FBQ2xHLHdCQUF3QixNQUFxQyxHQUFHLENBQXlELEdBQUcsdURBQVM7QUFDckk7QUFDQTtBQUNBLGdFQUFnRSxVQUFVLG9CQUFvQixJQUFJO0FBQ2xHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFFQUFxRSwrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsY0FBYyx3Q0FBd0M7QUFDL0k7QUFDQSw0Q0FBNEMsdUVBQXFCO0FBQ2pFO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQSxnRkFBZ0YsVUFBVSxnQkFBZ0IsSUFBSTtBQUM5RztBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQ7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQSxvRkFBb0YsVUFBVSxnQkFBZ0IsSUFBSTtBQUNsSDtBQUNBO0FBQ0EsZ0RBQWdELHVFQUFxQjtBQUNyRTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekMscUNBQXFDO0FBQ3JDLGlDQUFpQztBQUNqQyw2QkFBNkI7QUFDN0I7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQSxlQUFlLGdEQUFTO0FBQ3hCO0FBQ0E7QUFDQSxtQkFBbUIsa0RBQVc7QUFDOUI7QUFDQTtBQUNBLG9OQUFvTjtBQUNwTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxjQUFjLHNCQUFzQjtBQUMxRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLCtEQUFhO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQ7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsSUFBSTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTRELHFCQUFxQjtBQUNqRjtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSwrREFBK0Q7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0QsbUJBQW1CO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBLHFDQUFxQyxtQkFBbUI7QUFDeEQ7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlEO0FBQ2pELDJCQUEyQixxQ0FBcUM7QUFDaEUsYUFBYSxJQUFJO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLE1BQXFDLElBQUkseURBQWU7QUFDNUU7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLE1BQXFDLElBQUkseURBQWU7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RCxVQUFVLGVBQWUsSUFBSTtBQUMzRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRCw0QkFBNEI7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQix1RkFBcUM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0Msa0VBQWdCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixrRUFBZ0IsQ0FBQyx3RUFBc0I7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQSwwQ0FBMEM7QUFDMUMsUUFBUSxNQUFxQyxHQUFHLENBQWdELEdBQUcsdURBQVM7QUFDNUc7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsK0NBQVEsR0FBRztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxRQUFRLE1BQXFDLEdBQUcsQ0FBNEIsR0FBRyx1REFBUztBQUN4RjtBQUNBLFFBQVEsTUFBcUMsR0FBRyxDQUFnRCxHQUFHLHVEQUFTO0FBQzVHLFFBQVEsTUFBcUMsR0FBRyxDQUF5QyxHQUFHLHVEQUFTO0FBQ3JHLFFBQVEsTUFBcUMsR0FBRyxDQUFvQyxHQUFHLHVEQUFTO0FBQ2hHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0QsVUFBVSxxQ0FBcUMsSUFBSTtBQUN6RyxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQSw2Q0FBNkMsVUFBVSxrQ0FBa0MsSUFBSTtBQUM3RjtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsVUFBVSx1QkFBdUIsSUFBSTtBQUNsRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLE1BQXFDLEdBQUcsQ0FBc0IsT0FBTyx3REFBYztBQUN0RyxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCxVQUFVLGVBQWUsSUFBSTtBQUNuRjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLE1BQXFDLElBQUksd0RBQWM7QUFDL0Q7QUFDQTtBQUNBLGlDQUFpQyxtQkFBbUI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RDtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix1RUFBcUI7QUFDekM7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBaUUsOENBQThDO0FBQy9HLHFDQUFxQztBQUNyQyxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRSx5QkFBeUI7QUFDN0Y7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxNQUFxQyxHQUFHLENBQW9DLEdBQUcsdURBQVM7QUFDcEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixrRUFBZ0I7QUFDL0MsNkNBQTZDLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxjQUFjLDRCQUE0QjtBQUMzRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0VBQXdFLG9EQUFPO0FBQy9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxvREFBTztBQUM5QztBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsVUFBVTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQixpQkFBaUI7QUFDakIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLCtDQUFRLENBQUMsK0NBQVEsR0FBRztBQUMxQztBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQSxpREFBaUQsVUFBVSwwQkFBMEIsSUFBSTtBQUN6RjtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQSxlQUFlLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxpQkFBaUIsdUNBQXVDO0FBQzNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxNQUFxQyxHQUFHLENBQTJCLEdBQUcsdURBQVM7QUFDdkY7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFO0FBQ2pFO0FBQ0E7QUFDQSwyQkFBMkIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGNBQWMsNkJBQTZCO0FBQzFGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkMsK0JBQStCLHVFQUFxQjtBQUNwRCw0QkFBNEIsdUVBQXFCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYSx1RUFBcUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0Msb0JBQW9CO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSx1RUFBcUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSw4Q0FBOEMsdUVBQXFCO0FBQ25FO0FBQ0E7QUFDQSwyQ0FBMkMsa0VBQWdCO0FBQzNEO0FBQ0EsNkJBQTZCO0FBQzdCLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EseURBQXlELHdCQUF3QjtBQUNqRjtBQUNBO0FBQ0Esb0JBQW9CLHVFQUFxQixlQUFlLG9DQUFvQztBQUM1RjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHlEQUFnQjtBQUNuQztBQUNBO0FBQ0Esa0JBQWtCLE1BQXFDLEdBQUcsQ0FBcUIsT0FBTyx3REFBYztBQUNwRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLCtDQUErQztBQUNwRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsS0FBcUM7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsYUFBb0I7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwrQ0FBUSxDQUFDLCtDQUFRLEdBQUc7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGNBQWMsNEJBQTRCO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHO0FBQzFDO0FBQ0EsUUFBUSxNQUFxQyxHQUFHLENBQXlELEdBQUcsdURBQVM7QUFDckg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGNBQWMsNEJBQTRCO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG9EQUFPO0FBQ3RCO0FBQ0E7QUFDQSxRQUFRLE1BQXFDLElBQUksd0RBQWM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLHlDQUF5QztBQUN6RSxnQ0FBZ0MsaUVBQWlFLGNBQWMsS0FBSztBQUNwSCxnQ0FBZ0MsMENBQTBDO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLHlDQUF5QztBQUN6RSxnQ0FBZ0MsaUVBQWlFLGNBQWMsS0FBSztBQUNwSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0ZBQXdGLGtCQUFrQjtBQUMxRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3RkFBd0Ysa0JBQWtCO0FBQzFHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQsK0RBQWUsWUFBWSxFQUFDO0FBQ21FO0FBQy9GIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9hcG9sbG8tY2xpZW50L2J1bmRsZS5lc20uanM/OTY5ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMsIF9fYXNzaWduLCBfX2F3YWl0ZXIsIF9fZ2VuZXJhdG9yIH0gZnJvbSAndHNsaWInO1xuaW1wb3J0IHsgZ2V0T3BlcmF0aW9uRGVmaW5pdGlvbiwgaXNFcXVhbCwgdHJ5RnVuY3Rpb25PckxvZ0Vycm9yLCBjbG9uZURlZXAsIG1lcmdlRGVlcCwgaGFzRGlyZWN0aXZlcywgcmVtb3ZlQ2xpZW50U2V0c0Zyb21Eb2N1bWVudCwgYnVpbGRRdWVyeUZyb21TZWxlY3Rpb25TZXQsIGdldE1haW5EZWZpbml0aW9uLCBnZXRGcmFnbWVudERlZmluaXRpb25zLCBjcmVhdGVGcmFnbWVudE1hcCwgbWVyZ2VEZWVwQXJyYXksIHJlc3VsdEtleU5hbWVGcm9tRmllbGQsIGFyZ3VtZW50c09iamVjdEZyb21GaWVsZCwgc2hvdWxkSW5jbHVkZSwgaXNGaWVsZCwgaXNJbmxpbmVGcmFnbWVudCwgY2FuVXNlV2Vha01hcCwgZ3JhcGhRTFJlc3VsdEhhc0Vycm9yLCByZW1vdmVDb25uZWN0aW9uRGlyZWN0aXZlRnJvbURvY3VtZW50LCBoYXNDbGllbnRFeHBvcnRzLCBnZXREZWZhdWx0VmFsdWVzLCBnZXRPcGVyYXRpb25OYW1lIH0gZnJvbSAnYXBvbGxvLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIGFzIE9ic2VydmFibGUkMSwgZXhlY3V0ZSwgQXBvbGxvTGluayB9IGZyb20gJ2Fwb2xsby1saW5rJztcbmltcG9ydCAkJG9ic2VydmFibGUgZnJvbSAnc3ltYm9sLW9ic2VydmFibGUnO1xuaW1wb3J0IHsgSW52YXJpYW50RXJyb3IsIGludmFyaWFudCB9IGZyb20gJ3RzLWludmFyaWFudCc7XG5pbXBvcnQgeyB2aXNpdCwgQlJFQUsgfSBmcm9tICdncmFwaHFsL2xhbmd1YWdlL3Zpc2l0b3InO1xuXG52YXIgTmV0d29ya1N0YXR1cztcbihmdW5jdGlvbiAoTmV0d29ya1N0YXR1cykge1xuICAgIE5ldHdvcmtTdGF0dXNbTmV0d29ya1N0YXR1c1tcImxvYWRpbmdcIl0gPSAxXSA9IFwibG9hZGluZ1wiO1xuICAgIE5ldHdvcmtTdGF0dXNbTmV0d29ya1N0YXR1c1tcInNldFZhcmlhYmxlc1wiXSA9IDJdID0gXCJzZXRWYXJpYWJsZXNcIjtcbiAgICBOZXR3b3JrU3RhdHVzW05ldHdvcmtTdGF0dXNbXCJmZXRjaE1vcmVcIl0gPSAzXSA9IFwiZmV0Y2hNb3JlXCI7XG4gICAgTmV0d29ya1N0YXR1c1tOZXR3b3JrU3RhdHVzW1wicmVmZXRjaFwiXSA9IDRdID0gXCJyZWZldGNoXCI7XG4gICAgTmV0d29ya1N0YXR1c1tOZXR3b3JrU3RhdHVzW1wicG9sbFwiXSA9IDZdID0gXCJwb2xsXCI7XG4gICAgTmV0d29ya1N0YXR1c1tOZXR3b3JrU3RhdHVzW1wicmVhZHlcIl0gPSA3XSA9IFwicmVhZHlcIjtcbiAgICBOZXR3b3JrU3RhdHVzW05ldHdvcmtTdGF0dXNbXCJlcnJvclwiXSA9IDhdID0gXCJlcnJvclwiO1xufSkoTmV0d29ya1N0YXR1cyB8fCAoTmV0d29ya1N0YXR1cyA9IHt9KSk7XG5mdW5jdGlvbiBpc05ldHdvcmtSZXF1ZXN0SW5GbGlnaHQobmV0d29ya1N0YXR1cykge1xuICAgIHJldHVybiBuZXR3b3JrU3RhdHVzIDwgNztcbn1cblxudmFyIE9ic2VydmFibGUgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhPYnNlcnZhYmxlLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE9ic2VydmFibGUoKSB7XG4gICAgICAgIHJldHVybiBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICB9XG4gICAgT2JzZXJ2YWJsZS5wcm90b3R5cGVbJCRvYnNlcnZhYmxlXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlLnByb3RvdHlwZVsnQEBvYnNlcnZhYmxlJ10gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgcmV0dXJuIE9ic2VydmFibGU7XG59KE9ic2VydmFibGUkMSkpO1xuXG5mdW5jdGlvbiBpc05vbkVtcHR5QXJyYXkodmFsdWUpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMDtcbn1cblxuZnVuY3Rpb24gaXNBcG9sbG9FcnJvcihlcnIpIHtcbiAgICByZXR1cm4gZXJyLmhhc093blByb3BlcnR5KCdncmFwaFFMRXJyb3JzJyk7XG59XG52YXIgZ2VuZXJhdGVFcnJvck1lc3NhZ2UgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgdmFyIG1lc3NhZ2UgPSAnJztcbiAgICBpZiAoaXNOb25FbXB0eUFycmF5KGVyci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICBlcnIuZ3JhcGhRTEVycm9ycy5mb3JFYWNoKGZ1bmN0aW9uIChncmFwaFFMRXJyb3IpIHtcbiAgICAgICAgICAgIHZhciBlcnJvck1lc3NhZ2UgPSBncmFwaFFMRXJyb3JcbiAgICAgICAgICAgICAgICA/IGdyYXBoUUxFcnJvci5tZXNzYWdlXG4gICAgICAgICAgICAgICAgOiAnRXJyb3IgbWVzc2FnZSBub3QgZm91bmQuJztcbiAgICAgICAgICAgIG1lc3NhZ2UgKz0gXCJHcmFwaFFMIGVycm9yOiBcIiArIGVycm9yTWVzc2FnZSArIFwiXFxuXCI7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZXJyLm5ldHdvcmtFcnJvcikge1xuICAgICAgICBtZXNzYWdlICs9ICdOZXR3b3JrIGVycm9yOiAnICsgZXJyLm5ldHdvcmtFcnJvci5tZXNzYWdlICsgJ1xcbic7XG4gICAgfVxuICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoL1xcbiQvLCAnJyk7XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG59O1xudmFyIEFwb2xsb0Vycm9yID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQXBvbGxvRXJyb3IsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQXBvbGxvRXJyb3IoX2EpIHtcbiAgICAgICAgdmFyIGdyYXBoUUxFcnJvcnMgPSBfYS5ncmFwaFFMRXJyb3JzLCBuZXR3b3JrRXJyb3IgPSBfYS5uZXR3b3JrRXJyb3IsIGVycm9yTWVzc2FnZSA9IF9hLmVycm9yTWVzc2FnZSwgZXh0cmFJbmZvID0gX2EuZXh0cmFJbmZvO1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBlcnJvck1lc3NhZ2UpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmdyYXBoUUxFcnJvcnMgPSBncmFwaFFMRXJyb3JzIHx8IFtdO1xuICAgICAgICBfdGhpcy5uZXR3b3JrRXJyb3IgPSBuZXR3b3JrRXJyb3IgfHwgbnVsbDtcbiAgICAgICAgaWYgKCFlcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgIF90aGlzLm1lc3NhZ2UgPSBnZW5lcmF0ZUVycm9yTWVzc2FnZShfdGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5tZXNzYWdlID0gZXJyb3JNZXNzYWdlO1xuICAgICAgICB9XG4gICAgICAgIF90aGlzLmV4dHJhSW5mbyA9IGV4dHJhSW5mbztcbiAgICAgICAgX3RoaXMuX19wcm90b19fID0gQXBvbGxvRXJyb3IucHJvdG90eXBlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIHJldHVybiBBcG9sbG9FcnJvcjtcbn0oRXJyb3IpKTtcblxudmFyIEZldGNoVHlwZTtcbihmdW5jdGlvbiAoRmV0Y2hUeXBlKSB7XG4gICAgRmV0Y2hUeXBlW0ZldGNoVHlwZVtcIm5vcm1hbFwiXSA9IDFdID0gXCJub3JtYWxcIjtcbiAgICBGZXRjaFR5cGVbRmV0Y2hUeXBlW1wicmVmZXRjaFwiXSA9IDJdID0gXCJyZWZldGNoXCI7XG4gICAgRmV0Y2hUeXBlW0ZldGNoVHlwZVtcInBvbGxcIl0gPSAzXSA9IFwicG9sbFwiO1xufSkoRmV0Y2hUeXBlIHx8IChGZXRjaFR5cGUgPSB7fSkpO1xuXG52YXIgaGFzRXJyb3IgPSBmdW5jdGlvbiAoc3RvcmVWYWx1ZSwgcG9saWN5KSB7XG4gICAgaWYgKHBvbGljeSA9PT0gdm9pZCAwKSB7IHBvbGljeSA9ICdub25lJzsgfVxuICAgIHJldHVybiBzdG9yZVZhbHVlICYmIChzdG9yZVZhbHVlLm5ldHdvcmtFcnJvciB8fFxuICAgICAgICAocG9saWN5ID09PSAnbm9uZScgJiYgaXNOb25FbXB0eUFycmF5KHN0b3JlVmFsdWUuZ3JhcGhRTEVycm9ycykpKTtcbn07XG52YXIgT2JzZXJ2YWJsZVF1ZXJ5ID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoT2JzZXJ2YWJsZVF1ZXJ5LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIE9ic2VydmFibGVRdWVyeShfYSkge1xuICAgICAgICB2YXIgcXVlcnlNYW5hZ2VyID0gX2EucXVlcnlNYW5hZ2VyLCBvcHRpb25zID0gX2Eub3B0aW9ucywgX2IgPSBfYS5zaG91bGRTdWJzY3JpYmUsIHNob3VsZFN1YnNjcmliZSA9IF9iID09PSB2b2lkIDAgPyB0cnVlIDogX2I7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzLm9uU3Vic2NyaWJlKG9ic2VydmVyKTtcbiAgICAgICAgfSkgfHwgdGhpcztcbiAgICAgICAgX3RoaXMub2JzZXJ2ZXJzID0gbmV3IFNldCgpO1xuICAgICAgICBfdGhpcy5zdWJzY3JpcHRpb25zID0gbmV3IFNldCgpO1xuICAgICAgICBfdGhpcy5pc1Rvcm5Eb3duID0gZmFsc2U7XG4gICAgICAgIF90aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICBfdGhpcy52YXJpYWJsZXMgPSBvcHRpb25zLnZhcmlhYmxlcyB8fCB7fTtcbiAgICAgICAgX3RoaXMucXVlcnlJZCA9IHF1ZXJ5TWFuYWdlci5nZW5lcmF0ZVF1ZXJ5SWQoKTtcbiAgICAgICAgX3RoaXMuc2hvdWxkU3Vic2NyaWJlID0gc2hvdWxkU3Vic2NyaWJlO1xuICAgICAgICB2YXIgb3BEZWYgPSBnZXRPcGVyYXRpb25EZWZpbml0aW9uKG9wdGlvbnMucXVlcnkpO1xuICAgICAgICBfdGhpcy5xdWVyeU5hbWUgPSBvcERlZiAmJiBvcERlZi5uYW1lICYmIG9wRGVmLm5hbWUudmFsdWU7XG4gICAgICAgIF90aGlzLnF1ZXJ5TWFuYWdlciA9IHF1ZXJ5TWFuYWdlcjtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYnNlcnZhYmxlUXVlcnkucHJvdG90eXBlLnJlc3VsdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBvYnNlcnZlciA9IHtcbiAgICAgICAgICAgICAgICBuZXh0OiBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMub2JzZXJ2ZXJzLmRlbGV0ZShvYnNlcnZlcik7XG4gICAgICAgICAgICAgICAgICAgIGlmICghX3RoaXMub2JzZXJ2ZXJzLnNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnF1ZXJ5TWFuYWdlci5yZW1vdmVRdWVyeShfdGhpcy5xdWVyeUlkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiByZWplY3QsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIHN1YnNjcmlwdGlvbiA9IF90aGlzLnN1YnNjcmliZShvYnNlcnZlcik7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZVF1ZXJ5LnByb3RvdHlwZS5jdXJyZW50UmVzdWx0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5nZXRDdXJyZW50UmVzdWx0KCk7XG4gICAgICAgIGlmIChyZXN1bHQuZGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXN1bHQuZGF0YSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlUXVlcnkucHJvdG90eXBlLmdldEN1cnJlbnRSZXN1bHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzVG9ybkRvd24pIHtcbiAgICAgICAgICAgIHZhciBsYXN0UmVzdWx0ID0gdGhpcy5sYXN0UmVzdWx0O1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkYXRhOiAhdGhpcy5sYXN0RXJyb3IgJiYgbGFzdFJlc3VsdCAmJiBsYXN0UmVzdWx0LmRhdGEgfHwgdm9pZCAwLFxuICAgICAgICAgICAgICAgIGVycm9yOiB0aGlzLmxhc3RFcnJvcixcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBuZXR3b3JrU3RhdHVzOiBOZXR3b3JrU3RhdHVzLmVycm9yLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX2EgPSB0aGlzLnF1ZXJ5TWFuYWdlci5nZXRDdXJyZW50UXVlcnlSZXN1bHQodGhpcyksIGRhdGEgPSBfYS5kYXRhLCBwYXJ0aWFsID0gX2EucGFydGlhbDtcbiAgICAgICAgdmFyIHF1ZXJ5U3RvcmVWYWx1ZSA9IHRoaXMucXVlcnlNYW5hZ2VyLnF1ZXJ5U3RvcmUuZ2V0KHRoaXMucXVlcnlJZCk7XG4gICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgIHZhciBmZXRjaFBvbGljeSA9IHRoaXMub3B0aW9ucy5mZXRjaFBvbGljeTtcbiAgICAgICAgdmFyIGlzTmV0d29ya0ZldGNoUG9saWN5ID0gZmV0Y2hQb2xpY3kgPT09ICduZXR3b3JrLW9ubHknIHx8XG4gICAgICAgICAgICBmZXRjaFBvbGljeSA9PT0gJ25vLWNhY2hlJztcbiAgICAgICAgaWYgKHF1ZXJ5U3RvcmVWYWx1ZSkge1xuICAgICAgICAgICAgdmFyIG5ldHdvcmtTdGF0dXMgPSBxdWVyeVN0b3JlVmFsdWUubmV0d29ya1N0YXR1cztcbiAgICAgICAgICAgIGlmIChoYXNFcnJvcihxdWVyeVN0b3JlVmFsdWUsIHRoaXMub3B0aW9ucy5lcnJvclBvbGljeSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiB2b2lkIDAsXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBuZXR3b3JrU3RhdHVzOiBuZXR3b3JrU3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogbmV3IEFwb2xsb0Vycm9yKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoUUxFcnJvcnM6IHF1ZXJ5U3RvcmVWYWx1ZS5ncmFwaFFMRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29ya0Vycm9yOiBxdWVyeVN0b3JlVmFsdWUubmV0d29ya0Vycm9yLFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHF1ZXJ5U3RvcmVWYWx1ZS52YXJpYWJsZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMudmFyaWFibGVzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHRoaXMub3B0aW9ucy52YXJpYWJsZXMpLCBxdWVyeVN0b3JlVmFsdWUudmFyaWFibGVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnZhcmlhYmxlcyA9IHRoaXMub3B0aW9ucy52YXJpYWJsZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBpc05ldHdvcmtSZXF1ZXN0SW5GbGlnaHQobmV0d29ya1N0YXR1cyksXG4gICAgICAgICAgICAgICAgbmV0d29ya1N0YXR1czogbmV0d29ya1N0YXR1cyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAocXVlcnlTdG9yZVZhbHVlLmdyYXBoUUxFcnJvcnMgJiYgdGhpcy5vcHRpb25zLmVycm9yUG9saWN5ID09PSAnYWxsJykge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5lcnJvcnMgPSBxdWVyeVN0b3JlVmFsdWUuZ3JhcGhRTEVycm9ycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBsb2FkaW5nID0gaXNOZXR3b3JrRmV0Y2hQb2xpY3kgfHxcbiAgICAgICAgICAgICAgICAocGFydGlhbCAmJiBmZXRjaFBvbGljeSAhPT0gJ2NhY2hlLW9ubHknKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgICAgIGxvYWRpbmc6IGxvYWRpbmcsXG4gICAgICAgICAgICAgICAgbmV0d29ya1N0YXR1czogbG9hZGluZyA/IE5ldHdvcmtTdGF0dXMubG9hZGluZyA6IE5ldHdvcmtTdGF0dXMucmVhZHksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICghcGFydGlhbCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYXN0UmVzdWx0KF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXN1bHQpLCB7IHN0YWxlOiBmYWxzZSB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXN1bHQpLCB7IHBhcnRpYWw6IHBhcnRpYWwgfSk7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlUXVlcnkucHJvdG90eXBlLmlzRGlmZmVyZW50RnJvbUxhc3RSZXN1bHQgPSBmdW5jdGlvbiAobmV3UmVzdWx0KSB7XG4gICAgICAgIHZhciBzbmFwc2hvdCA9IHRoaXMubGFzdFJlc3VsdFNuYXBzaG90O1xuICAgICAgICByZXR1cm4gIShzbmFwc2hvdCAmJlxuICAgICAgICAgICAgbmV3UmVzdWx0ICYmXG4gICAgICAgICAgICBzbmFwc2hvdC5uZXR3b3JrU3RhdHVzID09PSBuZXdSZXN1bHQubmV0d29ya1N0YXR1cyAmJlxuICAgICAgICAgICAgc25hcHNob3Quc3RhbGUgPT09IG5ld1Jlc3VsdC5zdGFsZSAmJlxuICAgICAgICAgICAgaXNFcXVhbChzbmFwc2hvdC5kYXRhLCBuZXdSZXN1bHQuZGF0YSkpO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZVF1ZXJ5LnByb3RvdHlwZS5nZXRMYXN0UmVzdWx0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXN0UmVzdWx0O1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZVF1ZXJ5LnByb3RvdHlwZS5nZXRMYXN0RXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhc3RFcnJvcjtcbiAgICB9O1xuICAgIE9ic2VydmFibGVRdWVyeS5wcm90b3R5cGUucmVzZXRMYXN0UmVzdWx0cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMubGFzdFJlc3VsdDtcbiAgICAgICAgZGVsZXRlIHRoaXMubGFzdFJlc3VsdFNuYXBzaG90O1xuICAgICAgICBkZWxldGUgdGhpcy5sYXN0RXJyb3I7XG4gICAgICAgIHRoaXMuaXNUb3JuRG93biA9IGZhbHNlO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZVF1ZXJ5LnByb3RvdHlwZS5yZXNldFF1ZXJ5U3RvcmVFcnJvcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBxdWVyeVN0b3JlID0gdGhpcy5xdWVyeU1hbmFnZXIucXVlcnlTdG9yZS5nZXQodGhpcy5xdWVyeUlkKTtcbiAgICAgICAgaWYgKHF1ZXJ5U3RvcmUpIHtcbiAgICAgICAgICAgIHF1ZXJ5U3RvcmUubmV0d29ya0Vycm9yID0gbnVsbDtcbiAgICAgICAgICAgIHF1ZXJ5U3RvcmUuZ3JhcGhRTEVycm9ycyA9IFtdO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlUXVlcnkucHJvdG90eXBlLnJlZmV0Y2ggPSBmdW5jdGlvbiAodmFyaWFibGVzKSB7XG4gICAgICAgIHZhciBmZXRjaFBvbGljeSA9IHRoaXMub3B0aW9ucy5mZXRjaFBvbGljeTtcbiAgICAgICAgaWYgKGZldGNoUG9saWN5ID09PSAnY2FjaGUtb25seScpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBuZXcgSW52YXJpYW50RXJyb3IoMSkgOiBuZXcgSW52YXJpYW50RXJyb3IoJ2NhY2hlLW9ubHkgZmV0Y2hQb2xpY3kgb3B0aW9uIHNob3VsZCBub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIHF1ZXJ5IHJlZmV0Y2guJykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmZXRjaFBvbGljeSAhPT0gJ25vLWNhY2hlJyAmJlxuICAgICAgICAgICAgZmV0Y2hQb2xpY3kgIT09ICdjYWNoZS1hbmQtbmV0d29yaycpIHtcbiAgICAgICAgICAgIGZldGNoUG9saWN5ID0gJ25ldHdvcmstb25seSc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0VxdWFsKHRoaXMudmFyaWFibGVzLCB2YXJpYWJsZXMpKSB7XG4gICAgICAgICAgICB0aGlzLnZhcmlhYmxlcyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCB0aGlzLnZhcmlhYmxlcyksIHZhcmlhYmxlcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0VxdWFsKHRoaXMub3B0aW9ucy52YXJpYWJsZXMsIHRoaXMudmFyaWFibGVzKSkge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnZhcmlhYmxlcyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCB0aGlzLm9wdGlvbnMudmFyaWFibGVzKSwgdGhpcy52YXJpYWJsZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5TWFuYWdlci5mZXRjaFF1ZXJ5KHRoaXMucXVlcnlJZCwgX19hc3NpZ24oX19hc3NpZ24oe30sIHRoaXMub3B0aW9ucyksIHsgZmV0Y2hQb2xpY3k6IGZldGNoUG9saWN5IH0pLCBGZXRjaFR5cGUucmVmZXRjaCk7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlUXVlcnkucHJvdG90eXBlLmZldGNoTW9yZSA9IGZ1bmN0aW9uIChmZXRjaE1vcmVPcHRpb25zKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmZXRjaE1vcmVPcHRpb25zLnVwZGF0ZVF1ZXJ5LCAyKSA6IGludmFyaWFudChmZXRjaE1vcmVPcHRpb25zLnVwZGF0ZVF1ZXJ5LCAndXBkYXRlUXVlcnkgb3B0aW9uIGlzIHJlcXVpcmVkLiBUaGlzIGZ1bmN0aW9uIGRlZmluZXMgaG93IHRvIHVwZGF0ZSB0aGUgcXVlcnkgZGF0YSB3aXRoIHRoZSBuZXcgcmVzdWx0cy4nKTtcbiAgICAgICAgdmFyIGNvbWJpbmVkT3B0aW9ucyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCAoZmV0Y2hNb3JlT3B0aW9ucy5xdWVyeSA/IGZldGNoTW9yZU9wdGlvbnMgOiBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdGhpcy5vcHRpb25zKSwgZmV0Y2hNb3JlT3B0aW9ucyksIHsgdmFyaWFibGVzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdGhpcy52YXJpYWJsZXMpLCBmZXRjaE1vcmVPcHRpb25zLnZhcmlhYmxlcykgfSkpKSwgeyBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScgfSk7XG4gICAgICAgIHZhciBxaWQgPSB0aGlzLnF1ZXJ5TWFuYWdlci5nZW5lcmF0ZVF1ZXJ5SWQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlNYW5hZ2VyXG4gICAgICAgICAgICAuZmV0Y2hRdWVyeShxaWQsIGNvbWJpbmVkT3B0aW9ucywgRmV0Y2hUeXBlLm5vcm1hbCwgdGhpcy5xdWVyeUlkKVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKGZldGNoTW9yZVJlc3VsdCkge1xuICAgICAgICAgICAgX3RoaXMudXBkYXRlUXVlcnkoZnVuY3Rpb24gKHByZXZpb3VzUmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZldGNoTW9yZU9wdGlvbnMudXBkYXRlUXVlcnkocHJldmlvdXNSZXN1bHQsIHtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hNb3JlUmVzdWx0OiBmZXRjaE1vcmVSZXN1bHQuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiBjb21iaW5lZE9wdGlvbnMudmFyaWFibGVzLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBfdGhpcy5xdWVyeU1hbmFnZXIuc3RvcFF1ZXJ5KHFpZCk7XG4gICAgICAgICAgICByZXR1cm4gZmV0Y2hNb3JlUmVzdWx0O1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIF90aGlzLnF1ZXJ5TWFuYWdlci5zdG9wUXVlcnkocWlkKTtcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIE9ic2VydmFibGVRdWVyeS5wcm90b3R5cGUuc3Vic2NyaWJlVG9Nb3JlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHN1YnNjcmlwdGlvbiA9IHRoaXMucXVlcnlNYW5hZ2VyXG4gICAgICAgICAgICAuc3RhcnRHcmFwaFFMU3Vic2NyaXB0aW9uKHtcbiAgICAgICAgICAgIHF1ZXJ5OiBvcHRpb25zLmRvY3VtZW50LFxuICAgICAgICAgICAgdmFyaWFibGVzOiBvcHRpb25zLnZhcmlhYmxlcyxcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24gKHN1YnNjcmlwdGlvbkRhdGEpIHtcbiAgICAgICAgICAgICAgICB2YXIgdXBkYXRlUXVlcnkgPSBvcHRpb25zLnVwZGF0ZVF1ZXJ5O1xuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVRdWVyeSkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy51cGRhdGVRdWVyeShmdW5jdGlvbiAocHJldmlvdXMsIF9hKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFyaWFibGVzID0gX2EudmFyaWFibGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZVF1ZXJ5KHByZXZpb3VzLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uRGF0YTogc3Vic2NyaXB0aW9uRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5vbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMub25FcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiB8fCBpbnZhcmlhbnQuZXJyb3IoJ1VuaGFuZGxlZCBHcmFwaFFMIHN1YnNjcmlwdGlvbiBlcnJvcicsIGVycik7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChzdWJzY3JpcHRpb24pO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKF90aGlzLnN1YnNjcmlwdGlvbnMuZGVsZXRlKHN1YnNjcmlwdGlvbikpIHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuICAgIE9ic2VydmFibGVRdWVyeS5wcm90b3R5cGUuc2V0T3B0aW9ucyA9IGZ1bmN0aW9uIChvcHRzKSB7XG4gICAgICAgIHZhciBvbGRGZXRjaFBvbGljeSA9IHRoaXMub3B0aW9ucy5mZXRjaFBvbGljeTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHRoaXMub3B0aW9ucyksIG9wdHMpO1xuICAgICAgICBpZiAob3B0cy5wb2xsSW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRQb2xsaW5nKG9wdHMucG9sbEludGVydmFsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvcHRzLnBvbGxJbnRlcnZhbCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zdG9wUG9sbGluZygpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmZXRjaFBvbGljeSA9IG9wdHMuZmV0Y2hQb2xpY3k7XG4gICAgICAgIHJldHVybiB0aGlzLnNldFZhcmlhYmxlcyh0aGlzLm9wdGlvbnMudmFyaWFibGVzLCBvbGRGZXRjaFBvbGljeSAhPT0gZmV0Y2hQb2xpY3kgJiYgKG9sZEZldGNoUG9saWN5ID09PSAnY2FjaGUtb25seScgfHxcbiAgICAgICAgICAgIG9sZEZldGNoUG9saWN5ID09PSAnc3RhbmRieScgfHxcbiAgICAgICAgICAgIGZldGNoUG9saWN5ID09PSAnbmV0d29yay1vbmx5JyksIG9wdHMuZmV0Y2hSZXN1bHRzKTtcbiAgICB9O1xuICAgIE9ic2VydmFibGVRdWVyeS5wcm90b3R5cGUuc2V0VmFyaWFibGVzID0gZnVuY3Rpb24gKHZhcmlhYmxlcywgdHJ5RmV0Y2gsIGZldGNoUmVzdWx0cykge1xuICAgICAgICBpZiAodHJ5RmV0Y2ggPT09IHZvaWQgMCkgeyB0cnlGZXRjaCA9IGZhbHNlOyB9XG4gICAgICAgIGlmIChmZXRjaFJlc3VsdHMgPT09IHZvaWQgMCkgeyBmZXRjaFJlc3VsdHMgPSB0cnVlOyB9XG4gICAgICAgIHRoaXMuaXNUb3JuRG93biA9IGZhbHNlO1xuICAgICAgICB2YXJpYWJsZXMgPSB2YXJpYWJsZXMgfHwgdGhpcy52YXJpYWJsZXM7XG4gICAgICAgIGlmICghdHJ5RmV0Y2ggJiYgaXNFcXVhbCh2YXJpYWJsZXMsIHRoaXMudmFyaWFibGVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub2JzZXJ2ZXJzLnNpemUgJiYgZmV0Y2hSZXN1bHRzXG4gICAgICAgICAgICAgICAgPyB0aGlzLnJlc3VsdCgpXG4gICAgICAgICAgICAgICAgOiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhcmlhYmxlcyA9IHRoaXMub3B0aW9ucy52YXJpYWJsZXMgPSB2YXJpYWJsZXM7XG4gICAgICAgIGlmICghdGhpcy5vYnNlcnZlcnMuc2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5TWFuYWdlci5mZXRjaFF1ZXJ5KHRoaXMucXVlcnlJZCwgdGhpcy5vcHRpb25zKTtcbiAgICB9O1xuICAgIE9ic2VydmFibGVRdWVyeS5wcm90b3R5cGUudXBkYXRlUXVlcnkgPSBmdW5jdGlvbiAobWFwRm4pIHtcbiAgICAgICAgdmFyIHF1ZXJ5TWFuYWdlciA9IHRoaXMucXVlcnlNYW5hZ2VyO1xuICAgICAgICB2YXIgX2EgPSBxdWVyeU1hbmFnZXIuZ2V0UXVlcnlXaXRoUHJldmlvdXNSZXN1bHQodGhpcy5xdWVyeUlkKSwgcHJldmlvdXNSZXN1bHQgPSBfYS5wcmV2aW91c1Jlc3VsdCwgdmFyaWFibGVzID0gX2EudmFyaWFibGVzLCBkb2N1bWVudCA9IF9hLmRvY3VtZW50O1xuICAgICAgICB2YXIgbmV3UmVzdWx0ID0gdHJ5RnVuY3Rpb25PckxvZ0Vycm9yKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXBGbihwcmV2aW91c1Jlc3VsdCwgeyB2YXJpYWJsZXM6IHZhcmlhYmxlcyB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChuZXdSZXN1bHQpIHtcbiAgICAgICAgICAgIHF1ZXJ5TWFuYWdlci5kYXRhU3RvcmUubWFya1VwZGF0ZVF1ZXJ5UmVzdWx0KGRvY3VtZW50LCB2YXJpYWJsZXMsIG5ld1Jlc3VsdCk7XG4gICAgICAgICAgICBxdWVyeU1hbmFnZXIuYnJvYWRjYXN0UXVlcmllcygpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlUXVlcnkucHJvdG90eXBlLnN0b3BQb2xsaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnF1ZXJ5TWFuYWdlci5zdG9wUG9sbGluZ1F1ZXJ5KHRoaXMucXVlcnlJZCk7XG4gICAgICAgIHRoaXMub3B0aW9ucy5wb2xsSW50ZXJ2YWwgPSB1bmRlZmluZWQ7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlUXVlcnkucHJvdG90eXBlLnN0YXJ0UG9sbGluZyA9IGZ1bmN0aW9uIChwb2xsSW50ZXJ2YWwpIHtcbiAgICAgICAgYXNzZXJ0Tm90Q2FjaGVGaXJzdE9yT25seSh0aGlzKTtcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvbGxJbnRlcnZhbCA9IHBvbGxJbnRlcnZhbDtcbiAgICAgICAgdGhpcy5xdWVyeU1hbmFnZXIuc3RhcnRQb2xsaW5nUXVlcnkodGhpcy5vcHRpb25zLCB0aGlzLnF1ZXJ5SWQpO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZVF1ZXJ5LnByb3RvdHlwZS51cGRhdGVMYXN0UmVzdWx0ID0gZnVuY3Rpb24gKG5ld1Jlc3VsdCkge1xuICAgICAgICB2YXIgcHJldmlvdXNSZXN1bHQgPSB0aGlzLmxhc3RSZXN1bHQ7XG4gICAgICAgIHRoaXMubGFzdFJlc3VsdCA9IG5ld1Jlc3VsdDtcbiAgICAgICAgdGhpcy5sYXN0UmVzdWx0U25hcHNob3QgPSB0aGlzLnF1ZXJ5TWFuYWdlci5hc3N1bWVJbW11dGFibGVSZXN1bHRzXG4gICAgICAgICAgICA/IG5ld1Jlc3VsdFxuICAgICAgICAgICAgOiBjbG9uZURlZXAobmV3UmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzUmVzdWx0O1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZVF1ZXJ5LnByb3RvdHlwZS5vblN1YnNjcmliZSA9IGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIHN1Yk9ic2VydmVyID0gb2JzZXJ2ZXIuX3N1YnNjcmlwdGlvbi5fb2JzZXJ2ZXI7XG4gICAgICAgICAgICBpZiAoc3ViT2JzZXJ2ZXIgJiYgIXN1Yk9ic2VydmVyLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgc3ViT2JzZXJ2ZXIuZXJyb3IgPSBkZWZhdWx0U3Vic2NyaXB0aW9uT2JzZXJ2ZXJFcnJvckNhbGxiYWNrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfYSkgeyB9XG4gICAgICAgIHZhciBmaXJzdCA9ICF0aGlzLm9ic2VydmVycy5zaXplO1xuICAgICAgICB0aGlzLm9ic2VydmVycy5hZGQob2JzZXJ2ZXIpO1xuICAgICAgICBpZiAob2JzZXJ2ZXIubmV4dCAmJiB0aGlzLmxhc3RSZXN1bHQpXG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KHRoaXMubGFzdFJlc3VsdCk7XG4gICAgICAgIGlmIChvYnNlcnZlci5lcnJvciAmJiB0aGlzLmxhc3RFcnJvcilcbiAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKHRoaXMubGFzdEVycm9yKTtcbiAgICAgICAgaWYgKGZpcnN0KSB7XG4gICAgICAgICAgICB0aGlzLnNldFVwUXVlcnkoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKF90aGlzLm9ic2VydmVycy5kZWxldGUob2JzZXJ2ZXIpICYmICFfdGhpcy5vYnNlcnZlcnMuc2l6ZSkge1xuICAgICAgICAgICAgICAgIF90aGlzLnRlYXJEb3duUXVlcnkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuICAgIE9ic2VydmFibGVRdWVyeS5wcm90b3R5cGUuc2V0VXBRdWVyeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIF9hID0gdGhpcywgcXVlcnlNYW5hZ2VyID0gX2EucXVlcnlNYW5hZ2VyLCBxdWVyeUlkID0gX2EucXVlcnlJZDtcbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkU3Vic2NyaWJlKSB7XG4gICAgICAgICAgICBxdWVyeU1hbmFnZXIuYWRkT2JzZXJ2YWJsZVF1ZXJ5KHF1ZXJ5SWQsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucG9sbEludGVydmFsKSB7XG4gICAgICAgICAgICBhc3NlcnROb3RDYWNoZUZpcnN0T3JPbmx5KHRoaXMpO1xuICAgICAgICAgICAgcXVlcnlNYW5hZ2VyLnN0YXJ0UG9sbGluZ1F1ZXJ5KHRoaXMub3B0aW9ucywgcXVlcnlJZCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG9uRXJyb3IgPSBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIF90aGlzLnVwZGF0ZUxhc3RSZXN1bHQoX19hc3NpZ24oX19hc3NpZ24oe30sIF90aGlzLmxhc3RSZXN1bHQpLCB7IGVycm9yczogZXJyb3IuZ3JhcGhRTEVycm9ycywgbmV0d29ya1N0YXR1czogTmV0d29ya1N0YXR1cy5lcnJvciwgbG9hZGluZzogZmFsc2UgfSkpO1xuICAgICAgICAgICAgaXRlcmF0ZU9ic2VydmVyc1NhZmVseShfdGhpcy5vYnNlcnZlcnMsICdlcnJvcicsIF90aGlzLmxhc3RFcnJvciA9IGVycm9yKTtcbiAgICAgICAgfTtcbiAgICAgICAgcXVlcnlNYW5hZ2VyLm9ic2VydmVRdWVyeShxdWVyeUlkLCB0aGlzLm9wdGlvbnMsIHtcbiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMubGFzdEVycm9yIHx8IF90aGlzLmlzRGlmZmVyZW50RnJvbUxhc3RSZXN1bHQocmVzdWx0KSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcHJldmlvdXNSZXN1bHRfMSA9IF90aGlzLnVwZGF0ZUxhc3RSZXN1bHQocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hID0gX3RoaXMub3B0aW9ucywgcXVlcnlfMSA9IF9hLnF1ZXJ5LCB2YXJpYWJsZXMgPSBfYS52YXJpYWJsZXMsIGZldGNoUG9saWN5XzEgPSBfYS5mZXRjaFBvbGljeTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXJ5TWFuYWdlci50cmFuc2Zvcm0ocXVlcnlfMSkuaGFzQ2xpZW50RXhwb3J0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlNYW5hZ2VyLmdldExvY2FsU3RhdGUoKS5hZGRFeHBvcnRlZFZhcmlhYmxlcyhxdWVyeV8xLCB2YXJpYWJsZXMpLnRoZW4oZnVuY3Rpb24gKHZhcmlhYmxlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmV2aW91c1ZhcmlhYmxlcyA9IF90aGlzLnZhcmlhYmxlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy52YXJpYWJsZXMgPSBfdGhpcy5vcHRpb25zLnZhcmlhYmxlcyA9IHZhcmlhYmxlcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5sb2FkaW5nICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzUmVzdWx0XzEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hQb2xpY3lfMSAhPT0gJ2NhY2hlLW9ubHknICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5TWFuYWdlci50cmFuc2Zvcm0ocXVlcnlfMSkuc2VydmVyUXVlcnkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzRXF1YWwocHJldmlvdXNWYXJpYWJsZXMsIHZhcmlhYmxlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMucmVmZXRjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0ZU9ic2VydmVyc1NhZmVseShfdGhpcy5vYnNlcnZlcnMsICduZXh0JywgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdGVPYnNlcnZlcnNTYWZlbHkoX3RoaXMub2JzZXJ2ZXJzLCAnbmV4dCcsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6IG9uRXJyb3IsXG4gICAgICAgIH0pLmNhdGNoKG9uRXJyb3IpO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZVF1ZXJ5LnByb3RvdHlwZS50ZWFyRG93blF1ZXJ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcXVlcnlNYW5hZ2VyID0gdGhpcy5xdWVyeU1hbmFnZXI7XG4gICAgICAgIHRoaXMuaXNUb3JuRG93biA9IHRydWU7XG4gICAgICAgIHF1ZXJ5TWFuYWdlci5zdG9wUG9sbGluZ1F1ZXJ5KHRoaXMucXVlcnlJZCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi51bnN1YnNjcmliZSgpOyB9KTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmNsZWFyKCk7XG4gICAgICAgIHF1ZXJ5TWFuYWdlci5yZW1vdmVPYnNlcnZhYmxlUXVlcnkodGhpcy5xdWVyeUlkKTtcbiAgICAgICAgcXVlcnlNYW5hZ2VyLnN0b3BRdWVyeSh0aGlzLnF1ZXJ5SWQpO1xuICAgICAgICB0aGlzLm9ic2VydmVycy5jbGVhcigpO1xuICAgIH07XG4gICAgcmV0dXJuIE9ic2VydmFibGVRdWVyeTtcbn0oT2JzZXJ2YWJsZSkpO1xuZnVuY3Rpb24gZGVmYXVsdFN1YnNjcmlwdGlvbk9ic2VydmVyRXJyb3JDYWxsYmFjayhlcnJvcikge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiB8fCBpbnZhcmlhbnQuZXJyb3IoJ1VuaGFuZGxlZCBlcnJvcicsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrKTtcbn1cbmZ1bmN0aW9uIGl0ZXJhdGVPYnNlcnZlcnNTYWZlbHkob2JzZXJ2ZXJzLCBtZXRob2QsIGFyZ3VtZW50KSB7XG4gICAgdmFyIG9ic2VydmVyc1dpdGhNZXRob2QgPSBbXTtcbiAgICBvYnNlcnZlcnMuZm9yRWFjaChmdW5jdGlvbiAob2JzKSB7IHJldHVybiBvYnNbbWV0aG9kXSAmJiBvYnNlcnZlcnNXaXRoTWV0aG9kLnB1c2gob2JzKTsgfSk7XG4gICAgb2JzZXJ2ZXJzV2l0aE1ldGhvZC5mb3JFYWNoKGZ1bmN0aW9uIChvYnMpIHsgcmV0dXJuIG9ic1ttZXRob2RdKGFyZ3VtZW50KTsgfSk7XG59XG5mdW5jdGlvbiBhc3NlcnROb3RDYWNoZUZpcnN0T3JPbmx5KG9ic1F1ZXJ5KSB7XG4gICAgdmFyIGZldGNoUG9saWN5ID0gb2JzUXVlcnkub3B0aW9ucy5mZXRjaFBvbGljeTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmV0Y2hQb2xpY3kgIT09ICdjYWNoZS1maXJzdCcgJiYgZmV0Y2hQb2xpY3kgIT09ICdjYWNoZS1vbmx5JywgMykgOiBpbnZhcmlhbnQoZmV0Y2hQb2xpY3kgIT09ICdjYWNoZS1maXJzdCcgJiYgZmV0Y2hQb2xpY3kgIT09ICdjYWNoZS1vbmx5JywgJ1F1ZXJpZXMgdGhhdCBzcGVjaWZ5IHRoZSBjYWNoZS1maXJzdCBhbmQgY2FjaGUtb25seSBmZXRjaFBvbGljaWVzIGNhbm5vdCBhbHNvIGJlIHBvbGxpbmcgcXVlcmllcy4nKTtcbn1cblxudmFyIE11dGF0aW9uU3RvcmUgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE11dGF0aW9uU3RvcmUoKSB7XG4gICAgICAgIHRoaXMuc3RvcmUgPSB7fTtcbiAgICB9XG4gICAgTXV0YXRpb25TdG9yZS5wcm90b3R5cGUuZ2V0U3RvcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JlO1xuICAgIH07XG4gICAgTXV0YXRpb25TdG9yZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKG11dGF0aW9uSWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmVbbXV0YXRpb25JZF07XG4gICAgfTtcbiAgICBNdXRhdGlvblN0b3JlLnByb3RvdHlwZS5pbml0TXV0YXRpb24gPSBmdW5jdGlvbiAobXV0YXRpb25JZCwgbXV0YXRpb24sIHZhcmlhYmxlcykge1xuICAgICAgICB0aGlzLnN0b3JlW211dGF0aW9uSWRdID0ge1xuICAgICAgICAgICAgbXV0YXRpb246IG11dGF0aW9uLFxuICAgICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMgfHwge30sXG4gICAgICAgICAgICBsb2FkaW5nOiB0cnVlLFxuICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBNdXRhdGlvblN0b3JlLnByb3RvdHlwZS5tYXJrTXV0YXRpb25FcnJvciA9IGZ1bmN0aW9uIChtdXRhdGlvbklkLCBlcnJvcikge1xuICAgICAgICB2YXIgbXV0YXRpb24gPSB0aGlzLnN0b3JlW211dGF0aW9uSWRdO1xuICAgICAgICBpZiAobXV0YXRpb24pIHtcbiAgICAgICAgICAgIG11dGF0aW9uLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIG11dGF0aW9uLmVycm9yID0gZXJyb3I7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIE11dGF0aW9uU3RvcmUucHJvdG90eXBlLm1hcmtNdXRhdGlvblJlc3VsdCA9IGZ1bmN0aW9uIChtdXRhdGlvbklkKSB7XG4gICAgICAgIHZhciBtdXRhdGlvbiA9IHRoaXMuc3RvcmVbbXV0YXRpb25JZF07XG4gICAgICAgIGlmIChtdXRhdGlvbikge1xuICAgICAgICAgICAgbXV0YXRpb24ubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgbXV0YXRpb24uZXJyb3IgPSBudWxsO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBNdXRhdGlvblN0b3JlLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zdG9yZSA9IHt9O1xuICAgIH07XG4gICAgcmV0dXJuIE11dGF0aW9uU3RvcmU7XG59KCkpO1xuXG52YXIgUXVlcnlTdG9yZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUXVlcnlTdG9yZSgpIHtcbiAgICAgICAgdGhpcy5zdG9yZSA9IHt9O1xuICAgIH1cbiAgICBRdWVyeVN0b3JlLnByb3RvdHlwZS5nZXRTdG9yZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmU7XG4gICAgfTtcbiAgICBRdWVyeVN0b3JlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAocXVlcnlJZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZVtxdWVyeUlkXTtcbiAgICB9O1xuICAgIFF1ZXJ5U3RvcmUucHJvdG90eXBlLmluaXRRdWVyeSA9IGZ1bmN0aW9uIChxdWVyeSkge1xuICAgICAgICB2YXIgcHJldmlvdXNRdWVyeSA9IHRoaXMuc3RvcmVbcXVlcnkucXVlcnlJZF07XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudCghcHJldmlvdXNRdWVyeSB8fFxuICAgICAgICAgICAgcHJldmlvdXNRdWVyeS5kb2N1bWVudCA9PT0gcXVlcnkuZG9jdW1lbnQgfHxcbiAgICAgICAgICAgIGlzRXF1YWwocHJldmlvdXNRdWVyeS5kb2N1bWVudCwgcXVlcnkuZG9jdW1lbnQpLCAxOSkgOiBpbnZhcmlhbnQoIXByZXZpb3VzUXVlcnkgfHxcbiAgICAgICAgICAgIHByZXZpb3VzUXVlcnkuZG9jdW1lbnQgPT09IHF1ZXJ5LmRvY3VtZW50IHx8XG4gICAgICAgICAgICBpc0VxdWFsKHByZXZpb3VzUXVlcnkuZG9jdW1lbnQsIHF1ZXJ5LmRvY3VtZW50KSwgJ0ludGVybmFsIEVycm9yOiBtYXkgbm90IHVwZGF0ZSBleGlzdGluZyBxdWVyeSBzdHJpbmcgaW4gc3RvcmUnKTtcbiAgICAgICAgdmFyIGlzU2V0VmFyaWFibGVzID0gZmFsc2U7XG4gICAgICAgIHZhciBwcmV2aW91c1ZhcmlhYmxlcyA9IG51bGw7XG4gICAgICAgIGlmIChxdWVyeS5zdG9yZVByZXZpb3VzVmFyaWFibGVzICYmXG4gICAgICAgICAgICBwcmV2aW91c1F1ZXJ5ICYmXG4gICAgICAgICAgICBwcmV2aW91c1F1ZXJ5Lm5ldHdvcmtTdGF0dXMgIT09IE5ldHdvcmtTdGF0dXMubG9hZGluZykge1xuICAgICAgICAgICAgaWYgKCFpc0VxdWFsKHByZXZpb3VzUXVlcnkudmFyaWFibGVzLCBxdWVyeS52YXJpYWJsZXMpKSB7XG4gICAgICAgICAgICAgICAgaXNTZXRWYXJpYWJsZXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHByZXZpb3VzVmFyaWFibGVzID0gcHJldmlvdXNRdWVyeS52YXJpYWJsZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5ldHdvcmtTdGF0dXM7XG4gICAgICAgIGlmIChpc1NldFZhcmlhYmxlcykge1xuICAgICAgICAgICAgbmV0d29ya1N0YXR1cyA9IE5ldHdvcmtTdGF0dXMuc2V0VmFyaWFibGVzO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHF1ZXJ5LmlzUG9sbCkge1xuICAgICAgICAgICAgbmV0d29ya1N0YXR1cyA9IE5ldHdvcmtTdGF0dXMucG9sbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChxdWVyeS5pc1JlZmV0Y2gpIHtcbiAgICAgICAgICAgIG5ldHdvcmtTdGF0dXMgPSBOZXR3b3JrU3RhdHVzLnJlZmV0Y2g7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBuZXR3b3JrU3RhdHVzID0gTmV0d29ya1N0YXR1cy5sb2FkaW5nO1xuICAgICAgICB9XG4gICAgICAgIHZhciBncmFwaFFMRXJyb3JzID0gW107XG4gICAgICAgIGlmIChwcmV2aW91c1F1ZXJ5ICYmIHByZXZpb3VzUXVlcnkuZ3JhcGhRTEVycm9ycykge1xuICAgICAgICAgICAgZ3JhcGhRTEVycm9ycyA9IHByZXZpb3VzUXVlcnkuZ3JhcGhRTEVycm9ycztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0b3JlW3F1ZXJ5LnF1ZXJ5SWRdID0ge1xuICAgICAgICAgICAgZG9jdW1lbnQ6IHF1ZXJ5LmRvY3VtZW50LFxuICAgICAgICAgICAgdmFyaWFibGVzOiBxdWVyeS52YXJpYWJsZXMsXG4gICAgICAgICAgICBwcmV2aW91c1ZhcmlhYmxlczogcHJldmlvdXNWYXJpYWJsZXMsXG4gICAgICAgICAgICBuZXR3b3JrRXJyb3I6IG51bGwsXG4gICAgICAgICAgICBncmFwaFFMRXJyb3JzOiBncmFwaFFMRXJyb3JzLFxuICAgICAgICAgICAgbmV0d29ya1N0YXR1czogbmV0d29ya1N0YXR1cyxcbiAgICAgICAgICAgIG1ldGFkYXRhOiBxdWVyeS5tZXRhZGF0YSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHR5cGVvZiBxdWVyeS5mZXRjaE1vcmVGb3JRdWVyeUlkID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgdGhpcy5zdG9yZVtxdWVyeS5mZXRjaE1vcmVGb3JRdWVyeUlkXSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZVtxdWVyeS5mZXRjaE1vcmVGb3JRdWVyeUlkXS5uZXR3b3JrU3RhdHVzID1cbiAgICAgICAgICAgICAgICBOZXR3b3JrU3RhdHVzLmZldGNoTW9yZTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUXVlcnlTdG9yZS5wcm90b3R5cGUubWFya1F1ZXJ5UmVzdWx0ID0gZnVuY3Rpb24gKHF1ZXJ5SWQsIHJlc3VsdCwgZmV0Y2hNb3JlRm9yUXVlcnlJZCkge1xuICAgICAgICBpZiAoIXRoaXMuc3RvcmUgfHwgIXRoaXMuc3RvcmVbcXVlcnlJZF0pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuc3RvcmVbcXVlcnlJZF0ubmV0d29ya0Vycm9yID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdG9yZVtxdWVyeUlkXS5ncmFwaFFMRXJyb3JzID0gaXNOb25FbXB0eUFycmF5KHJlc3VsdC5lcnJvcnMpID8gcmVzdWx0LmVycm9ycyA6IFtdO1xuICAgICAgICB0aGlzLnN0b3JlW3F1ZXJ5SWRdLnByZXZpb3VzVmFyaWFibGVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdG9yZVtxdWVyeUlkXS5uZXR3b3JrU3RhdHVzID0gTmV0d29ya1N0YXR1cy5yZWFkeTtcbiAgICAgICAgaWYgKHR5cGVvZiBmZXRjaE1vcmVGb3JRdWVyeUlkID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgdGhpcy5zdG9yZVtmZXRjaE1vcmVGb3JRdWVyeUlkXSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yZVtmZXRjaE1vcmVGb3JRdWVyeUlkXS5uZXR3b3JrU3RhdHVzID0gTmV0d29ya1N0YXR1cy5yZWFkeTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUXVlcnlTdG9yZS5wcm90b3R5cGUubWFya1F1ZXJ5RXJyb3IgPSBmdW5jdGlvbiAocXVlcnlJZCwgZXJyb3IsIGZldGNoTW9yZUZvclF1ZXJ5SWQpIHtcbiAgICAgICAgaWYgKCF0aGlzLnN0b3JlIHx8ICF0aGlzLnN0b3JlW3F1ZXJ5SWRdKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLnN0b3JlW3F1ZXJ5SWRdLm5ldHdvcmtFcnJvciA9IGVycm9yO1xuICAgICAgICB0aGlzLnN0b3JlW3F1ZXJ5SWRdLm5ldHdvcmtTdGF0dXMgPSBOZXR3b3JrU3RhdHVzLmVycm9yO1xuICAgICAgICBpZiAodHlwZW9mIGZldGNoTW9yZUZvclF1ZXJ5SWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLm1hcmtRdWVyeVJlc3VsdENsaWVudChmZXRjaE1vcmVGb3JRdWVyeUlkLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUXVlcnlTdG9yZS5wcm90b3R5cGUubWFya1F1ZXJ5UmVzdWx0Q2xpZW50ID0gZnVuY3Rpb24gKHF1ZXJ5SWQsIGNvbXBsZXRlKSB7XG4gICAgICAgIHZhciBzdG9yZVZhbHVlID0gdGhpcy5zdG9yZSAmJiB0aGlzLnN0b3JlW3F1ZXJ5SWRdO1xuICAgICAgICBpZiAoc3RvcmVWYWx1ZSkge1xuICAgICAgICAgICAgc3RvcmVWYWx1ZS5uZXR3b3JrRXJyb3IgPSBudWxsO1xuICAgICAgICAgICAgc3RvcmVWYWx1ZS5wcmV2aW91c1ZhcmlhYmxlcyA9IG51bGw7XG4gICAgICAgICAgICBpZiAoY29tcGxldGUpIHtcbiAgICAgICAgICAgICAgICBzdG9yZVZhbHVlLm5ldHdvcmtTdGF0dXMgPSBOZXR3b3JrU3RhdHVzLnJlYWR5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBRdWVyeVN0b3JlLnByb3RvdHlwZS5zdG9wUXVlcnkgPSBmdW5jdGlvbiAocXVlcnlJZCkge1xuICAgICAgICBkZWxldGUgdGhpcy5zdG9yZVtxdWVyeUlkXTtcbiAgICB9O1xuICAgIFF1ZXJ5U3RvcmUucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKG9ic2VydmFibGVRdWVyeUlkcykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnN0b3JlKS5mb3JFYWNoKGZ1bmN0aW9uIChxdWVyeUlkKSB7XG4gICAgICAgICAgICBpZiAob2JzZXJ2YWJsZVF1ZXJ5SWRzLmluZGV4T2YocXVlcnlJZCkgPCAwKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuc3RvcFF1ZXJ5KHF1ZXJ5SWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuc3RvcmVbcXVlcnlJZF0ubmV0d29ya1N0YXR1cyA9IE5ldHdvcmtTdGF0dXMubG9hZGluZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gUXVlcnlTdG9yZTtcbn0oKSk7XG5cbmZ1bmN0aW9uIGNhcGl0YWxpemVGaXJzdExldHRlcihzdHIpIHtcbiAgICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xufVxuXG52YXIgTG9jYWxTdGF0ZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTG9jYWxTdGF0ZShfYSkge1xuICAgICAgICB2YXIgY2FjaGUgPSBfYS5jYWNoZSwgY2xpZW50ID0gX2EuY2xpZW50LCByZXNvbHZlcnMgPSBfYS5yZXNvbHZlcnMsIGZyYWdtZW50TWF0Y2hlciA9IF9hLmZyYWdtZW50TWF0Y2hlcjtcbiAgICAgICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICAgICAgICBpZiAoY2xpZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNsaWVudCA9IGNsaWVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzb2x2ZXJzKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFJlc29sdmVycyhyZXNvbHZlcnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmcmFnbWVudE1hdGNoZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RnJhZ21lbnRNYXRjaGVyKGZyYWdtZW50TWF0Y2hlcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgTG9jYWxTdGF0ZS5wcm90b3R5cGUuYWRkUmVzb2x2ZXJzID0gZnVuY3Rpb24gKHJlc29sdmVycykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLnJlc29sdmVycyA9IHRoaXMucmVzb2x2ZXJzIHx8IHt9O1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXNvbHZlcnMpKSB7XG4gICAgICAgICAgICByZXNvbHZlcnMuZm9yRWFjaChmdW5jdGlvbiAocmVzb2x2ZXJHcm91cCkge1xuICAgICAgICAgICAgICAgIF90aGlzLnJlc29sdmVycyA9IG1lcmdlRGVlcChfdGhpcy5yZXNvbHZlcnMsIHJlc29sdmVyR3JvdXApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc29sdmVycyA9IG1lcmdlRGVlcCh0aGlzLnJlc29sdmVycywgcmVzb2x2ZXJzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgTG9jYWxTdGF0ZS5wcm90b3R5cGUuc2V0UmVzb2x2ZXJzID0gZnVuY3Rpb24gKHJlc29sdmVycykge1xuICAgICAgICB0aGlzLnJlc29sdmVycyA9IHt9O1xuICAgICAgICB0aGlzLmFkZFJlc29sdmVycyhyZXNvbHZlcnMpO1xuICAgIH07XG4gICAgTG9jYWxTdGF0ZS5wcm90b3R5cGUuZ2V0UmVzb2x2ZXJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlcnMgfHwge307XG4gICAgfTtcbiAgICBMb2NhbFN0YXRlLnByb3RvdHlwZS5ydW5SZXNvbHZlcnMgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIGRvY3VtZW50ID0gX2EuZG9jdW1lbnQsIHJlbW90ZVJlc3VsdCA9IF9hLnJlbW90ZVJlc3VsdCwgY29udGV4dCA9IF9hLmNvbnRleHQsIHZhcmlhYmxlcyA9IF9hLnZhcmlhYmxlcywgX2IgPSBfYS5vbmx5UnVuRm9yY2VkUmVzb2x2ZXJzLCBvbmx5UnVuRm9yY2VkUmVzb2x2ZXJzID0gX2IgPT09IHZvaWQgMCA/IGZhbHNlIDogX2I7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2MpIHtcbiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyLCB0aGlzLnJlc29sdmVEb2N1bWVudChkb2N1bWVudCwgcmVtb3RlUmVzdWx0LmRhdGEsIGNvbnRleHQsIHZhcmlhYmxlcywgdGhpcy5mcmFnbWVudE1hdGNoZXIsIG9ubHlSdW5Gb3JjZWRSZXNvbHZlcnMpLnRoZW4oZnVuY3Rpb24gKGxvY2FsUmVzdWx0KSB7IHJldHVybiAoX19hc3NpZ24oX19hc3NpZ24oe30sIHJlbW90ZVJlc3VsdCksIHsgZGF0YTogbG9jYWxSZXN1bHQucmVzdWx0IH0pKTsgfSldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gWzIsIHJlbW90ZVJlc3VsdF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBMb2NhbFN0YXRlLnByb3RvdHlwZS5zZXRGcmFnbWVudE1hdGNoZXIgPSBmdW5jdGlvbiAoZnJhZ21lbnRNYXRjaGVyKSB7XG4gICAgICAgIHRoaXMuZnJhZ21lbnRNYXRjaGVyID0gZnJhZ21lbnRNYXRjaGVyO1xuICAgIH07XG4gICAgTG9jYWxTdGF0ZS5wcm90b3R5cGUuZ2V0RnJhZ21lbnRNYXRjaGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcmFnbWVudE1hdGNoZXI7XG4gICAgfTtcbiAgICBMb2NhbFN0YXRlLnByb3RvdHlwZS5jbGllbnRRdWVyeSA9IGZ1bmN0aW9uIChkb2N1bWVudCkge1xuICAgICAgICBpZiAoaGFzRGlyZWN0aXZlcyhbJ2NsaWVudCddLCBkb2N1bWVudCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlc29sdmVycykge1xuICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiB8fCBpbnZhcmlhbnQud2FybignRm91bmQgQGNsaWVudCBkaXJlY3RpdmVzIGluIGEgcXVlcnkgYnV0IG5vIEFwb2xsb0NsaWVudCByZXNvbHZlcnMgJyArXG4gICAgICAgICAgICAgICAgJ3dlcmUgc3BlY2lmaWVkLiBUaGlzIG1lYW5zIEFwb2xsb0NsaWVudCBsb2NhbCByZXNvbHZlciBoYW5kbGluZyAnICtcbiAgICAgICAgICAgICAgICAnaGFzIGJlZW4gZGlzYWJsZWQsIGFuZCBAY2xpZW50IGRpcmVjdGl2ZXMgd2lsbCBiZSBwYXNzZWQgdGhyb3VnaCAnICtcbiAgICAgICAgICAgICAgICAndG8geW91ciBsaW5rIGNoYWluLicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgTG9jYWxTdGF0ZS5wcm90b3R5cGUuc2VydmVyUXVlcnkgPSBmdW5jdGlvbiAoZG9jdW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZXJzID8gcmVtb3ZlQ2xpZW50U2V0c0Zyb21Eb2N1bWVudChkb2N1bWVudCkgOiBkb2N1bWVudDtcbiAgICB9O1xuICAgIExvY2FsU3RhdGUucHJvdG90eXBlLnByZXBhcmVDb250ZXh0ID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkgeyBjb250ZXh0ID0ge307IH1cbiAgICAgICAgdmFyIGNhY2hlID0gdGhpcy5jYWNoZTtcbiAgICAgICAgdmFyIG5ld0NvbnRleHQgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgY29udGV4dCksIHsgY2FjaGU6IGNhY2hlLCBnZXRDYWNoZUtleTogZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChjYWNoZS5jb25maWcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhY2hlLmNvbmZpZy5kYXRhSWRGcm9tT2JqZWN0KG9iaik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIDYpIDogaW52YXJpYW50KGZhbHNlLCAnVG8gdXNlIGNvbnRleHQuZ2V0Q2FjaGVLZXksIHlvdSBuZWVkIHRvIHVzZSBhIGNhY2hlIHRoYXQgaGFzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2EgY29uZmlndXJhYmxlIGRhdGFJZEZyb21PYmplY3QsIGxpa2UgYXBvbGxvLWNhY2hlLWlubWVtb3J5LicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gfSk7XG4gICAgICAgIHJldHVybiBuZXdDb250ZXh0O1xuICAgIH07XG4gICAgTG9jYWxTdGF0ZS5wcm90b3R5cGUuYWRkRXhwb3J0ZWRWYXJpYWJsZXMgPSBmdW5jdGlvbiAoZG9jdW1lbnQsIHZhcmlhYmxlcywgY29udGV4dCkge1xuICAgICAgICBpZiAodmFyaWFibGVzID09PSB2b2lkIDApIHsgdmFyaWFibGVzID0ge307IH1cbiAgICAgICAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkgeyBjb250ZXh0ID0ge307IH1cbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIsIHRoaXMucmVzb2x2ZURvY3VtZW50KGRvY3VtZW50LCB0aGlzLmJ1aWxkUm9vdFZhbHVlRnJvbUNhY2hlKGRvY3VtZW50LCB2YXJpYWJsZXMpIHx8IHt9LCB0aGlzLnByZXBhcmVDb250ZXh0KGNvbnRleHQpLCB2YXJpYWJsZXMpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsgcmV0dXJuIChfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdmFyaWFibGVzKSwgZGF0YS5leHBvcnRlZFZhcmlhYmxlcykpOyB9KV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBbMiwgX19hc3NpZ24oe30sIHZhcmlhYmxlcyldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgTG9jYWxTdGF0ZS5wcm90b3R5cGUuc2hvdWxkRm9yY2VSZXNvbHZlcnMgPSBmdW5jdGlvbiAoZG9jdW1lbnQpIHtcbiAgICAgICAgdmFyIGZvcmNlUmVzb2x2ZXJzID0gZmFsc2U7XG4gICAgICAgIHZpc2l0KGRvY3VtZW50LCB7XG4gICAgICAgICAgICBEaXJlY3RpdmU6IHtcbiAgICAgICAgICAgICAgICBlbnRlcjogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUubmFtZS52YWx1ZSA9PT0gJ2NsaWVudCcgJiYgbm9kZS5hcmd1bWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlUmVzb2x2ZXJzID0gbm9kZS5hcmd1bWVudHMuc29tZShmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZy5uYW1lLnZhbHVlID09PSAnYWx3YXlzJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcudmFsdWUua2luZCA9PT0gJ0Jvb2xlYW5WYWx1ZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLnZhbHVlLnZhbHVlID09PSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9yY2VSZXNvbHZlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQlJFQUs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmb3JjZVJlc29sdmVycztcbiAgICB9O1xuICAgIExvY2FsU3RhdGUucHJvdG90eXBlLmJ1aWxkUm9vdFZhbHVlRnJvbUNhY2hlID0gZnVuY3Rpb24gKGRvY3VtZW50LCB2YXJpYWJsZXMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGUuZGlmZih7XG4gICAgICAgICAgICBxdWVyeTogYnVpbGRRdWVyeUZyb21TZWxlY3Rpb25TZXQoZG9jdW1lbnQpLFxuICAgICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMsXG4gICAgICAgICAgICByZXR1cm5QYXJ0aWFsRGF0YTogdHJ1ZSxcbiAgICAgICAgICAgIG9wdGltaXN0aWM6IGZhbHNlLFxuICAgICAgICB9KS5yZXN1bHQ7XG4gICAgfTtcbiAgICBMb2NhbFN0YXRlLnByb3RvdHlwZS5yZXNvbHZlRG9jdW1lbnQgPSBmdW5jdGlvbiAoZG9jdW1lbnQsIHJvb3RWYWx1ZSwgY29udGV4dCwgdmFyaWFibGVzLCBmcmFnbWVudE1hdGNoZXIsIG9ubHlSdW5Gb3JjZWRSZXNvbHZlcnMpIHtcbiAgICAgICAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkgeyBjb250ZXh0ID0ge307IH1cbiAgICAgICAgaWYgKHZhcmlhYmxlcyA9PT0gdm9pZCAwKSB7IHZhcmlhYmxlcyA9IHt9OyB9XG4gICAgICAgIGlmIChmcmFnbWVudE1hdGNoZXIgPT09IHZvaWQgMCkgeyBmcmFnbWVudE1hdGNoZXIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9OyB9XG4gICAgICAgIGlmIChvbmx5UnVuRm9yY2VkUmVzb2x2ZXJzID09PSB2b2lkIDApIHsgb25seVJ1bkZvcmNlZFJlc29sdmVycyA9IGZhbHNlOyB9XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBtYWluRGVmaW5pdGlvbiwgZnJhZ21lbnRzLCBmcmFnbWVudE1hcCwgZGVmaW5pdGlvbk9wZXJhdGlvbiwgZGVmYXVsdE9wZXJhdGlvblR5cGUsIF9hLCBjYWNoZSwgY2xpZW50LCBleGVjQ29udGV4dDtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2IpIHtcbiAgICAgICAgICAgICAgICBtYWluRGVmaW5pdGlvbiA9IGdldE1haW5EZWZpbml0aW9uKGRvY3VtZW50KTtcbiAgICAgICAgICAgICAgICBmcmFnbWVudHMgPSBnZXRGcmFnbWVudERlZmluaXRpb25zKGRvY3VtZW50KTtcbiAgICAgICAgICAgICAgICBmcmFnbWVudE1hcCA9IGNyZWF0ZUZyYWdtZW50TWFwKGZyYWdtZW50cyk7XG4gICAgICAgICAgICAgICAgZGVmaW5pdGlvbk9wZXJhdGlvbiA9IG1haW5EZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIC5vcGVyYXRpb247XG4gICAgICAgICAgICAgICAgZGVmYXVsdE9wZXJhdGlvblR5cGUgPSBkZWZpbml0aW9uT3BlcmF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKGRlZmluaXRpb25PcGVyYXRpb24pXG4gICAgICAgICAgICAgICAgICAgIDogJ1F1ZXJ5JztcbiAgICAgICAgICAgICAgICBfYSA9IHRoaXMsIGNhY2hlID0gX2EuY2FjaGUsIGNsaWVudCA9IF9hLmNsaWVudDtcbiAgICAgICAgICAgICAgICBleGVjQ29udGV4dCA9IHtcbiAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRNYXA6IGZyYWdtZW50TWFwLFxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgY29udGV4dCksIHsgY2FjaGU6IGNhY2hlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50OiBjbGllbnQgfSksXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzLFxuICAgICAgICAgICAgICAgICAgICBmcmFnbWVudE1hdGNoZXI6IGZyYWdtZW50TWF0Y2hlcixcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE9wZXJhdGlvblR5cGU6IGRlZmF1bHRPcGVyYXRpb25UeXBlLFxuICAgICAgICAgICAgICAgICAgICBleHBvcnRlZFZhcmlhYmxlczoge30sXG4gICAgICAgICAgICAgICAgICAgIG9ubHlSdW5Gb3JjZWRSZXNvbHZlcnM6IG9ubHlSdW5Gb3JjZWRSZXNvbHZlcnMsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWzIsIHRoaXMucmVzb2x2ZVNlbGVjdGlvblNldChtYWluRGVmaW5pdGlvbi5zZWxlY3Rpb25TZXQsIHJvb3RWYWx1ZSwgZXhlY0NvbnRleHQpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDogcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0ZWRWYXJpYWJsZXM6IGV4ZWNDb250ZXh0LmV4cG9ydGVkVmFyaWFibGVzLFxuICAgICAgICAgICAgICAgICAgICB9KTsgfSldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgTG9jYWxTdGF0ZS5wcm90b3R5cGUucmVzb2x2ZVNlbGVjdGlvblNldCA9IGZ1bmN0aW9uIChzZWxlY3Rpb25TZXQsIHJvb3RWYWx1ZSwgZXhlY0NvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGZyYWdtZW50TWFwLCBjb250ZXh0LCB2YXJpYWJsZXMsIHJlc3VsdHNUb01lcmdlLCBleGVjdXRlO1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBmcmFnbWVudE1hcCA9IGV4ZWNDb250ZXh0LmZyYWdtZW50TWFwLCBjb250ZXh0ID0gZXhlY0NvbnRleHQuY29udGV4dCwgdmFyaWFibGVzID0gZXhlY0NvbnRleHQudmFyaWFibGVzO1xuICAgICAgICAgICAgICAgIHJlc3VsdHNUb01lcmdlID0gW3Jvb3RWYWx1ZV07XG4gICAgICAgICAgICAgICAgZXhlY3V0ZSA9IGZ1bmN0aW9uIChzZWxlY3Rpb24pIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZyYWdtZW50LCB0eXBlQ29uZGl0aW9uO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNob3VsZEluY2x1ZGUoc2VsZWN0aW9uLCB2YXJpYWJsZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0ZpZWxkKHNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIsIHRoaXMucmVzb2x2ZUZpZWxkKHNlbGVjdGlvbiwgcm9vdFZhbHVlLCBleGVjQ29udGV4dCkudGhlbihmdW5jdGlvbiAoZmllbGRSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZmllbGRSZXN1bHQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1RvTWVyZ2UucHVzaCgoX2EgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2FbcmVzdWx0S2V5TmFtZUZyb21GaWVsZChzZWxlY3Rpb24pXSA9IGZpZWxkUmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbmxpbmVGcmFnbWVudChzZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSBzZWxlY3Rpb247XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudCA9IGZyYWdtZW50TWFwW3NlbGVjdGlvbi5uYW1lLnZhbHVlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZnJhZ21lbnQsIDcpIDogaW52YXJpYW50KGZyYWdtZW50LCBcIk5vIGZyYWdtZW50IG5hbWVkIFwiICsgc2VsZWN0aW9uLm5hbWUudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZyYWdtZW50ICYmIGZyYWdtZW50LnR5cGVDb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlQ29uZGl0aW9uID0gZnJhZ21lbnQudHlwZUNvbmRpdGlvbi5uYW1lLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGVjQ29udGV4dC5mcmFnbWVudE1hdGNoZXIocm9vdFZhbHVlLCB0eXBlQ29uZGl0aW9uLCBjb250ZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIsIHRoaXMucmVzb2x2ZVNlbGVjdGlvblNldChmcmFnbWVudC5zZWxlY3Rpb25TZXQsIHJvb3RWYWx1ZSwgZXhlY0NvbnRleHQpLnRoZW4oZnVuY3Rpb24gKGZyYWdtZW50UmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1RvTWVyZ2UucHVzaChmcmFnbWVudFJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyXTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7IH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyLCBQcm9taXNlLmFsbChzZWxlY3Rpb25TZXQuc2VsZWN0aW9ucy5tYXAoZXhlY3V0ZSkpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlRGVlcEFycmF5KHJlc3VsdHNUb01lcmdlKTtcbiAgICAgICAgICAgICAgICAgICAgfSldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgTG9jYWxTdGF0ZS5wcm90b3R5cGUucmVzb2x2ZUZpZWxkID0gZnVuY3Rpb24gKGZpZWxkLCByb290VmFsdWUsIGV4ZWNDb250ZXh0KSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB2YXJpYWJsZXMsIGZpZWxkTmFtZSwgYWxpYXNlZEZpZWxkTmFtZSwgYWxpYXNVc2VkLCBkZWZhdWx0UmVzdWx0LCByZXN1bHRQcm9taXNlLCByZXNvbHZlclR5cGUsIHJlc29sdmVyTWFwLCByZXNvbHZlO1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBleGVjQ29udGV4dC52YXJpYWJsZXM7XG4gICAgICAgICAgICAgICAgZmllbGROYW1lID0gZmllbGQubmFtZS52YWx1ZTtcbiAgICAgICAgICAgICAgICBhbGlhc2VkRmllbGROYW1lID0gcmVzdWx0S2V5TmFtZUZyb21GaWVsZChmaWVsZCk7XG4gICAgICAgICAgICAgICAgYWxpYXNVc2VkID0gZmllbGROYW1lICE9PSBhbGlhc2VkRmllbGROYW1lO1xuICAgICAgICAgICAgICAgIGRlZmF1bHRSZXN1bHQgPSByb290VmFsdWVbYWxpYXNlZEZpZWxkTmFtZV0gfHwgcm9vdFZhbHVlW2ZpZWxkTmFtZV07XG4gICAgICAgICAgICAgICAgcmVzdWx0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShkZWZhdWx0UmVzdWx0KTtcbiAgICAgICAgICAgICAgICBpZiAoIWV4ZWNDb250ZXh0Lm9ubHlSdW5Gb3JjZWRSZXNvbHZlcnMgfHxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG91bGRGb3JjZVJlc29sdmVycyhmaWVsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXJUeXBlID0gcm9vdFZhbHVlLl9fdHlwZW5hbWUgfHwgZXhlY0NvbnRleHQuZGVmYXVsdE9wZXJhdGlvblR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVyTWFwID0gdGhpcy5yZXNvbHZlcnMgJiYgdGhpcy5yZXNvbHZlcnNbcmVzb2x2ZXJUeXBlXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc29sdmVyTWFwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlID0gcmVzb2x2ZXJNYXBbYWxpYXNVc2VkID8gZmllbGROYW1lIDogYWxpYXNlZEZpZWxkTmFtZV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzb2x2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUocmVzb2x2ZShyb290VmFsdWUsIGFyZ3VtZW50c09iamVjdEZyb21GaWVsZChmaWVsZCwgdmFyaWFibGVzKSwgZXhlY0NvbnRleHQuY29udGV4dCwgeyBmaWVsZDogZmllbGQsIGZyYWdtZW50TWFwOiBleGVjQ29udGV4dC5mcmFnbWVudE1hcCB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyLCByZXN1bHRQcm9taXNlLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdm9pZCAwKSB7IHJlc3VsdCA9IGRlZmF1bHRSZXN1bHQ7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5kaXJlY3RpdmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuZGlyZWN0aXZlcy5mb3JFYWNoKGZ1bmN0aW9uIChkaXJlY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZS5uYW1lLnZhbHVlID09PSAnZXhwb3J0JyAmJiBkaXJlY3RpdmUuYXJndW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmUuYXJndW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKGFyZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmcubmFtZS52YWx1ZSA9PT0gJ2FzJyAmJiBhcmcudmFsdWUua2luZCA9PT0gJ1N0cmluZ1ZhbHVlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjQ29udGV4dC5leHBvcnRlZFZhcmlhYmxlc1thcmcudmFsdWUudmFsdWVdID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpZWxkLnNlbGVjdGlvblNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5yZXNvbHZlU3ViU2VsZWN0ZWRBcnJheShmaWVsZCwgcmVzdWx0LCBleGVjQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQuc2VsZWN0aW9uU2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLnJlc29sdmVTZWxlY3Rpb25TZXQoZmllbGQuc2VsZWN0aW9uU2V0LCByZXN1bHQsIGV4ZWNDb250ZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgTG9jYWxTdGF0ZS5wcm90b3R5cGUucmVzb2x2ZVN1YlNlbGVjdGVkQXJyYXkgPSBmdW5jdGlvbiAoZmllbGQsIHJlc3VsdCwgZXhlY0NvbnRleHQpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHJlc3VsdC5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgIGlmIChpdGVtID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5yZXNvbHZlU3ViU2VsZWN0ZWRBcnJheShmaWVsZCwgaXRlbSwgZXhlY0NvbnRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZpZWxkLnNlbGVjdGlvblNldCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5yZXNvbHZlU2VsZWN0aW9uU2V0KGZpZWxkLnNlbGVjdGlvblNldCwgaXRlbSwgZXhlY0NvbnRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgfTtcbiAgICByZXR1cm4gTG9jYWxTdGF0ZTtcbn0oKSk7XG5cbmZ1bmN0aW9uIG11bHRpcGxleChpbm5lcikge1xuICAgIHZhciBvYnNlcnZlcnMgPSBuZXcgU2V0KCk7XG4gICAgdmFyIHN1YiA9IG51bGw7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICBvYnNlcnZlcnMuYWRkKG9ic2VydmVyKTtcbiAgICAgICAgc3ViID0gc3ViIHx8IGlubmVyLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlcnMuZm9yRWFjaChmdW5jdGlvbiAob2JzKSB7IHJldHVybiBvYnMubmV4dCAmJiBvYnMubmV4dCh2YWx1ZSk7IH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlcnMuZm9yRWFjaChmdW5jdGlvbiAob2JzKSB7IHJldHVybiBvYnMuZXJyb3IgJiYgb2JzLmVycm9yKGVycm9yKTsgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlcnMuZm9yRWFjaChmdW5jdGlvbiAob2JzKSB7IHJldHVybiBvYnMuY29tcGxldGUgJiYgb2JzLmNvbXBsZXRlKCk7IH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAob2JzZXJ2ZXJzLmRlbGV0ZShvYnNlcnZlcikgJiYgIW9ic2VydmVycy5zaXplICYmIHN1Yikge1xuICAgICAgICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIHN1YiA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSk7XG59XG5mdW5jdGlvbiBhc3luY01hcChvYnNlcnZhYmxlLCBtYXBGbikge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgdmFyIG5leHQgPSBvYnNlcnZlci5uZXh0LCBlcnJvciA9IG9ic2VydmVyLmVycm9yLCBjb21wbGV0ZSA9IG9ic2VydmVyLmNvbXBsZXRlO1xuICAgICAgICB2YXIgYWN0aXZlTmV4dENvdW50ID0gMDtcbiAgICAgICAgdmFyIGNvbXBsZXRlZCA9IGZhbHNlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IHtcbiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICsrYWN0aXZlTmV4dENvdW50O1xuICAgICAgICAgICAgICAgIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUobWFwRm4odmFsdWUpKTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgLS1hY3RpdmVOZXh0Q291bnQ7XG4gICAgICAgICAgICAgICAgICAgIG5leHQgJiYgbmV4dC5jYWxsKG9ic2VydmVyLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQgJiYgaGFuZGxlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIC0tYWN0aXZlTmV4dENvdW50O1xuICAgICAgICAgICAgICAgICAgICBlcnJvciAmJiBlcnJvci5jYWxsKG9ic2VydmVyLCBlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBlcnJvciAmJiBlcnJvci5jYWxsKG9ic2VydmVyLCBlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKCFhY3RpdmVOZXh0Q291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGUgJiYgY29tcGxldGUuY2FsbChvYnNlcnZlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHN1YiA9IG9ic2VydmFibGUuc3Vic2NyaWJlKGhhbmRsZXIpO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gc3ViLnVuc3Vic2NyaWJlKCk7IH07XG4gICAgfSk7XG59XG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgUXVlcnlNYW5hZ2VyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBRdWVyeU1hbmFnZXIoX2EpIHtcbiAgICAgICAgdmFyIGxpbmsgPSBfYS5saW5rLCBfYiA9IF9hLnF1ZXJ5RGVkdXBsaWNhdGlvbiwgcXVlcnlEZWR1cGxpY2F0aW9uID0gX2IgPT09IHZvaWQgMCA/IGZhbHNlIDogX2IsIHN0b3JlID0gX2Euc3RvcmUsIF9jID0gX2Eub25Ccm9hZGNhc3QsIG9uQnJvYWRjYXN0ID0gX2MgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSA6IF9jLCBfZCA9IF9hLnNzck1vZGUsIHNzck1vZGUgPSBfZCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfZCwgX2UgPSBfYS5jbGllbnRBd2FyZW5lc3MsIGNsaWVudEF3YXJlbmVzcyA9IF9lID09PSB2b2lkIDAgPyB7fSA6IF9lLCBsb2NhbFN0YXRlID0gX2EubG9jYWxTdGF0ZSwgYXNzdW1lSW1tdXRhYmxlUmVzdWx0cyA9IF9hLmFzc3VtZUltbXV0YWJsZVJlc3VsdHM7XG4gICAgICAgIHRoaXMubXV0YXRpb25TdG9yZSA9IG5ldyBNdXRhdGlvblN0b3JlKCk7XG4gICAgICAgIHRoaXMucXVlcnlTdG9yZSA9IG5ldyBRdWVyeVN0b3JlKCk7XG4gICAgICAgIHRoaXMuY2xpZW50QXdhcmVuZXNzID0ge307XG4gICAgICAgIHRoaXMuaWRDb3VudGVyID0gMTtcbiAgICAgICAgdGhpcy5xdWVyaWVzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLmZldGNoUXVlcnlSZWplY3RGbnMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtQ2FjaGUgPSBuZXcgKGNhblVzZVdlYWtNYXAgPyBXZWFrTWFwIDogTWFwKSgpO1xuICAgICAgICB0aGlzLmluRmxpZ2h0TGlua09ic2VydmFibGVzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLnBvbGxpbmdJbmZvQnlRdWVyeUlkID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLmxpbmsgPSBsaW5rO1xuICAgICAgICB0aGlzLnF1ZXJ5RGVkdXBsaWNhdGlvbiA9IHF1ZXJ5RGVkdXBsaWNhdGlvbjtcbiAgICAgICAgdGhpcy5kYXRhU3RvcmUgPSBzdG9yZTtcbiAgICAgICAgdGhpcy5vbkJyb2FkY2FzdCA9IG9uQnJvYWRjYXN0O1xuICAgICAgICB0aGlzLmNsaWVudEF3YXJlbmVzcyA9IGNsaWVudEF3YXJlbmVzcztcbiAgICAgICAgdGhpcy5sb2NhbFN0YXRlID0gbG9jYWxTdGF0ZSB8fCBuZXcgTG9jYWxTdGF0ZSh7IGNhY2hlOiBzdG9yZS5nZXRDYWNoZSgpIH0pO1xuICAgICAgICB0aGlzLnNzck1vZGUgPSBzc3JNb2RlO1xuICAgICAgICB0aGlzLmFzc3VtZUltbXV0YWJsZVJlc3VsdHMgPSAhIWFzc3VtZUltbXV0YWJsZVJlc3VsdHM7XG4gICAgfVxuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUuc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdGhpcy5xdWVyaWVzLmZvckVhY2goZnVuY3Rpb24gKF9pbmZvLCBxdWVyeUlkKSB7XG4gICAgICAgICAgICBfdGhpcy5zdG9wUXVlcnlOb0Jyb2FkY2FzdChxdWVyeUlkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZmV0Y2hRdWVyeVJlamVjdEZucy5mb3JFYWNoKGZ1bmN0aW9uIChyZWplY3QpIHtcbiAgICAgICAgICAgIHJlamVjdChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBuZXcgSW52YXJpYW50RXJyb3IoOCkgOiBuZXcgSW52YXJpYW50RXJyb3IoJ1F1ZXJ5TWFuYWdlciBzdG9wcGVkIHdoaWxlIHF1ZXJ5IHdhcyBpbiBmbGlnaHQnKSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5tdXRhdGUgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIG11dGF0aW9uID0gX2EubXV0YXRpb24sIHZhcmlhYmxlcyA9IF9hLnZhcmlhYmxlcywgb3B0aW1pc3RpY1Jlc3BvbnNlID0gX2Eub3B0aW1pc3RpY1Jlc3BvbnNlLCB1cGRhdGVRdWVyaWVzQnlOYW1lID0gX2EudXBkYXRlUXVlcmllcywgX2IgPSBfYS5yZWZldGNoUXVlcmllcywgcmVmZXRjaFF1ZXJpZXMgPSBfYiA9PT0gdm9pZCAwID8gW10gOiBfYiwgX2MgPSBfYS5hd2FpdFJlZmV0Y2hRdWVyaWVzLCBhd2FpdFJlZmV0Y2hRdWVyaWVzID0gX2MgPT09IHZvaWQgMCA/IGZhbHNlIDogX2MsIHVwZGF0ZVdpdGhQcm94eUZuID0gX2EudXBkYXRlLCBfZCA9IF9hLmVycm9yUG9saWN5LCBlcnJvclBvbGljeSA9IF9kID09PSB2b2lkIDAgPyAnbm9uZScgOiBfZCwgZmV0Y2hQb2xpY3kgPSBfYS5mZXRjaFBvbGljeSwgX2UgPSBfYS5jb250ZXh0LCBjb250ZXh0ID0gX2UgPT09IHZvaWQgMCA/IHt9IDogX2U7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBtdXRhdGlvbklkLCBnZW5lcmF0ZVVwZGF0ZVF1ZXJpZXNJbmZvLCBzZWxmO1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2YpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9mLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChtdXRhdGlvbiwgOSkgOiBpbnZhcmlhbnQobXV0YXRpb24sICdtdXRhdGlvbiBvcHRpb24gaXMgcmVxdWlyZWQuIFlvdSBtdXN0IHNwZWNpZnkgeW91ciBHcmFwaFFMIGRvY3VtZW50IGluIHRoZSBtdXRhdGlvbiBvcHRpb24uJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoIWZldGNoUG9saWN5IHx8IGZldGNoUG9saWN5ID09PSAnbm8tY2FjaGUnLCAxMCkgOiBpbnZhcmlhbnQoIWZldGNoUG9saWN5IHx8IGZldGNoUG9saWN5ID09PSAnbm8tY2FjaGUnLCBcIk11dGF0aW9ucyBvbmx5IHN1cHBvcnQgYSAnbm8tY2FjaGUnIGZldGNoUG9saWN5LiBJZiB5b3UgZG9uJ3Qgd2FudCB0byBkaXNhYmxlIHRoZSBjYWNoZSwgcmVtb3ZlIHlvdXIgZmV0Y2hQb2xpY3kgc2V0dGluZyB0byBwcm9jZWVkIHdpdGggdGhlIGRlZmF1bHQgbXV0YXRpb24gYmVoYXZpb3IuXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb25JZCA9IHRoaXMuZ2VuZXJhdGVRdWVyeUlkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbiA9IHRoaXMudHJhbnNmb3JtKG11dGF0aW9uKS5kb2N1bWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UXVlcnkobXV0YXRpb25JZCwgZnVuY3Rpb24gKCkgeyByZXR1cm4gKHsgZG9jdW1lbnQ6IG11dGF0aW9uIH0pOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHRoaXMuZ2V0VmFyaWFibGVzKG11dGF0aW9uLCB2YXJpYWJsZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRyYW5zZm9ybShtdXRhdGlvbikuaGFzQ2xpZW50RXhwb3J0cykgcmV0dXJuIFszLCAyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCwgdGhpcy5sb2NhbFN0YXRlLmFkZEV4cG9ydGVkVmFyaWFibGVzKG11dGF0aW9uLCB2YXJpYWJsZXMsIGNvbnRleHQpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzID0gX2Yuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgX2YubGFiZWwgPSAyO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZVVwZGF0ZVF1ZXJpZXNJbmZvID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXQgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXBkYXRlUXVlcmllc0J5TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5xdWVyaWVzLmZvckVhY2goZnVuY3Rpb24gKF9hLCBxdWVyeUlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2JzZXJ2YWJsZVF1ZXJ5ID0gX2Eub2JzZXJ2YWJsZVF1ZXJ5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9ic2VydmFibGVRdWVyeSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxdWVyeU5hbWUgPSBvYnNlcnZhYmxlUXVlcnkucXVlcnlOYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxdWVyeU5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3duUHJvcGVydHkuY2FsbCh1cGRhdGVRdWVyaWVzQnlOYW1lLCBxdWVyeU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldFtxdWVyeUlkXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZXI6IHVwZGF0ZVF1ZXJpZXNCeU5hbWVbcXVlcnlOYW1lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBfdGhpcy5xdWVyeVN0b3JlLmdldChxdWVyeUlkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubXV0YXRpb25TdG9yZS5pbml0TXV0YXRpb24obXV0YXRpb25JZCwgbXV0YXRpb24sIHZhcmlhYmxlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFTdG9yZS5tYXJrTXV0YXRpb25Jbml0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbklkOiBtdXRhdGlvbklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50OiBtdXRhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVRdWVyaWVzOiBnZW5lcmF0ZVVwZGF0ZVF1ZXJpZXNJbmZvKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlOiB1cGRhdGVXaXRoUHJveHlGbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWlzdGljUmVzcG9uc2U6IG9wdGltaXN0aWNSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RRdWVyaWVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiwgbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RvcmVSZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRPYnNlcnZhYmxlRnJvbUxpbmsobXV0YXRpb24sIF9fYXNzaWduKF9fYXNzaWduKHt9LCBjb250ZXh0KSwgeyBvcHRpbWlzdGljUmVzcG9uc2U6IG9wdGltaXN0aWNSZXNwb25zZSB9KSwgdmFyaWFibGVzLCBmYWxzZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3JhcGhRTFJlc3VsdEhhc0Vycm9yKHJlc3VsdCkgJiYgZXJyb3JQb2xpY3kgPT09ICdub25lJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IG5ldyBBcG9sbG9FcnJvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFwaFFMRXJyb3JzOiByZXN1bHQuZXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm11dGF0aW9uU3RvcmUubWFya011dGF0aW9uUmVzdWx0KG11dGF0aW9uSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZXRjaFBvbGljeSAhPT0gJ25vLWNhY2hlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFTdG9yZS5tYXJrTXV0YXRpb25SZXN1bHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb25JZDogbXV0YXRpb25JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDogcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ6IG11dGF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVRdWVyaWVzOiBnZW5lcmF0ZVVwZGF0ZVF1ZXJpZXNJbmZvKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGU6IHVwZGF0ZVdpdGhQcm94eUZuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVSZXN1bHQgPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm11dGF0aW9uU3RvcmUubWFya011dGF0aW9uRXJyb3IobXV0YXRpb25JZCwgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFTdG9yZS5tYXJrTXV0YXRpb25Db21wbGV0ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uSWQ6IG11dGF0aW9uSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXN0aWNSZXNwb25zZTogb3B0aW1pc3RpY1Jlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0UXVlcmllcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0UXVlcnkobXV0YXRpb25JZCwgZnVuY3Rpb24gKCkgeyByZXR1cm4gKHsgZG9jdW1lbnQ6IG51bGwgfSk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgQXBvbGxvRXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrRXJyb3I6IGVycixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tdXRhdGlvblN0b3JlLm1hcmtNdXRhdGlvbkVycm9yKG11dGF0aW9uSWQsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3RvcmUubWFya011dGF0aW9uQ29tcGxldGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbklkOiBtdXRhdGlvbklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWlzdGljUmVzcG9uc2U6IG9wdGltaXN0aWNSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdFF1ZXJpZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlZmV0Y2hRdWVyaWVzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmV0Y2hRdWVyaWVzID0gcmVmZXRjaFF1ZXJpZXMoc3RvcmVSZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmZXRjaFF1ZXJ5UHJvbWlzZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNOb25FbXB0eUFycmF5KHJlZmV0Y2hRdWVyaWVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZldGNoUXVlcmllcy5mb3JFYWNoKGZ1bmN0aW9uIChyZWZldGNoUXVlcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVmZXRjaFF1ZXJ5ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucXVlcmllcy5mb3JFYWNoKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2JzZXJ2YWJsZVF1ZXJ5ID0gX2Eub2JzZXJ2YWJsZVF1ZXJ5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JzZXJ2YWJsZVF1ZXJ5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZhYmxlUXVlcnkucXVlcnlOYW1lID09PSByZWZldGNoUXVlcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmV0Y2hRdWVyeVByb21pc2VzLnB1c2gob2JzZXJ2YWJsZVF1ZXJ5LnJlZmV0Y2goKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxdWVyeU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiByZWZldGNoUXVlcnkucXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogcmVmZXRjaFF1ZXJ5LnZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZmV0Y2hRdWVyeS5jb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5T3B0aW9ucy5jb250ZXh0ID0gcmVmZXRjaFF1ZXJ5LmNvbnRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmV0Y2hRdWVyeVByb21pc2VzLnB1c2goc2VsZi5xdWVyeShxdWVyeU9wdGlvbnMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb21pc2UuYWxsKGF3YWl0UmVmZXRjaFF1ZXJpZXMgPyByZWZldGNoUXVlcnlQcm9taXNlcyA6IFtdKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXRRdWVyeShtdXRhdGlvbklkLCBmdW5jdGlvbiAoKSB7IHJldHVybiAoeyBkb2N1bWVudDogbnVsbCB9KTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvclBvbGljeSA9PT0gJ2lnbm9yZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlUmVzdWx0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFwaFFMUmVzdWx0SGFzRXJyb3Ioc3RvcmVSZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgc3RvcmVSZXN1bHQuZXJyb3JzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoc3RvcmVSZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUuZmV0Y2hRdWVyeSA9IGZ1bmN0aW9uIChxdWVyeUlkLCBvcHRpb25zLCBmZXRjaFR5cGUsIGZldGNoTW9yZUZvclF1ZXJ5SWQpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hLCBtZXRhZGF0YSwgX2IsIGZldGNoUG9saWN5LCBfYywgY29udGV4dCwgcXVlcnksIHZhcmlhYmxlcywgc3RvcmVSZXN1bHQsIGlzTmV0d29ya09ubHksIG5lZWRUb0ZldGNoLCBfZCwgY29tcGxldGUsIHJlc3VsdCwgc2hvdWxkRmV0Y2gsIHJlcXVlc3RJZCwgY2FuY2VsLCBuZXR3b3JrUmVzdWx0O1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2UpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9lLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hID0gb3B0aW9ucy5tZXRhZGF0YSwgbWV0YWRhdGEgPSBfYSA9PT0gdm9pZCAwID8gbnVsbCA6IF9hLCBfYiA9IG9wdGlvbnMuZmV0Y2hQb2xpY3ksIGZldGNoUG9saWN5ID0gX2IgPT09IHZvaWQgMCA/ICdjYWNoZS1maXJzdCcgOiBfYiwgX2MgPSBvcHRpb25zLmNvbnRleHQsIGNvbnRleHQgPSBfYyA9PT0gdm9pZCAwID8ge30gOiBfYztcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5ID0gdGhpcy50cmFuc2Zvcm0ob3B0aW9ucy5xdWVyeSkuZG9jdW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSB0aGlzLmdldFZhcmlhYmxlcyhxdWVyeSwgb3B0aW9ucy52YXJpYWJsZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRyYW5zZm9ybShxdWVyeSkuaGFzQ2xpZW50RXhwb3J0cykgcmV0dXJuIFszLCAyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCwgdGhpcy5sb2NhbFN0YXRlLmFkZEV4cG9ydGVkVmFyaWFibGVzKHF1ZXJ5LCB2YXJpYWJsZXMsIGNvbnRleHQpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzID0gX2Uuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgX2UubGFiZWwgPSAyO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9wdGlvbnMpLCB7IHZhcmlhYmxlczogdmFyaWFibGVzIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXR3b3JrT25seSA9IGZldGNoUG9saWN5ID09PSAnbmV0d29yay1vbmx5JyB8fCBmZXRjaFBvbGljeSA9PT0gJ25vLWNhY2hlJztcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRUb0ZldGNoID0gaXNOZXR3b3JrT25seTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNOZXR3b3JrT25seSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kID0gdGhpcy5kYXRhU3RvcmUuZ2V0Q2FjaGUoKS5kaWZmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuUGFydGlhbERhdGE6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXN0aWM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBjb21wbGV0ZSA9IF9kLmNvbXBsZXRlLCByZXN1bHQgPSBfZC5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZFRvRmV0Y2ggPSAhY29tcGxldGUgfHwgZmV0Y2hQb2xpY3kgPT09ICdjYWNoZS1hbmQtbmV0d29yayc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVSZXN1bHQgPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRGZXRjaCA9IG5lZWRUb0ZldGNoICYmIGZldGNoUG9saWN5ICE9PSAnY2FjaGUtb25seScgJiYgZmV0Y2hQb2xpY3kgIT09ICdzdGFuZGJ5JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNEaXJlY3RpdmVzKFsnbGl2ZSddLCBxdWVyeSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkRmV0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkID0gdGhpcy5pZENvdW50ZXIrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbCA9IGZldGNoUG9saWN5ICE9PSAnbm8tY2FjaGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnVwZGF0ZVF1ZXJ5V2F0Y2gocXVlcnlJZCwgcXVlcnksIG9wdGlvbnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFF1ZXJ5KHF1ZXJ5SWQsIGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ6IHF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RSZXF1ZXN0SWQ6IHJlcXVlc3RJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkYXRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWw6IGNhbmNlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZGF0ZShmZXRjaE1vcmVGb3JRdWVyeUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVlcnlTdG9yZS5pbml0UXVlcnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5SWQ6IHF1ZXJ5SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ6IHF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlUHJldmlvdXNWYXJpYWJsZXM6IHNob3VsZEZldGNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUG9sbDogZmV0Y2hUeXBlID09PSBGZXRjaFR5cGUucG9sbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlZmV0Y2g6IGZldGNoVHlwZSA9PT0gRmV0Y2hUeXBlLnJlZmV0Y2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGE6IG1ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoTW9yZUZvclF1ZXJ5SWQ6IGZldGNoTW9yZUZvclF1ZXJ5SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0UXVlcmllcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEZldGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29ya1Jlc3VsdCA9IHRoaXMuZmV0Y2hSZXF1ZXN0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdElkOiByZXF1ZXN0SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5SWQ6IHF1ZXJ5SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50OiBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hNb3JlRm9yUXVlcnlJZDogZmV0Y2hNb3JlRm9yUXVlcnlJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXBvbGxvRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0SWQgPj0gX3RoaXMuZ2V0UXVlcnkocXVlcnlJZCkubGFzdFJlcXVlc3RJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnF1ZXJ5U3RvcmUubWFya1F1ZXJ5RXJyb3IocXVlcnlJZCwgZXJyb3IsIGZldGNoTW9yZUZvclF1ZXJ5SWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLmludmFsaWRhdGUocXVlcnlJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuaW52YWxpZGF0ZShmZXRjaE1vcmVGb3JRdWVyeUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5icm9hZGNhc3RRdWVyaWVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXBvbGxvRXJyb3IoeyBuZXR3b3JrRXJyb3I6IGVycm9yIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZldGNoUG9saWN5ICE9PSAnY2FjaGUtYW5kLW5ldHdvcmsnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiwgbmV0d29ya1Jlc3VsdF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtSZXN1bHQuY2F0Y2goZnVuY3Rpb24gKCkgeyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucXVlcnlTdG9yZS5tYXJrUXVlcnlSZXN1bHRDbGllbnQocXVlcnlJZCwgIXNob3VsZEZldGNoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZGF0ZShxdWVyeUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZGF0ZShmZXRjaE1vcmVGb3JRdWVyeUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyYW5zZm9ybShxdWVyeSkuaGFzRm9yY2VkUmVzb2x2ZXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyLCB0aGlzLmxvY2FsU3RhdGUucnVuUmVzb2x2ZXJzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50OiBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZVJlc3VsdDogeyBkYXRhOiBzdG9yZVJlc3VsdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25seVJ1bkZvcmNlZFJlc29sdmVyczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5tYXJrUXVlcnlSZXN1bHQocXVlcnlJZCwgcmVzdWx0LCBvcHRpb25zLCBmZXRjaE1vcmVGb3JRdWVyeUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLmJyb2FkY2FzdFF1ZXJpZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0UXVlcmllcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyLCB7IGRhdGE6IHN0b3JlUmVzdWx0IH1dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUubWFya1F1ZXJ5UmVzdWx0ID0gZnVuY3Rpb24gKHF1ZXJ5SWQsIHJlc3VsdCwgX2EsIGZldGNoTW9yZUZvclF1ZXJ5SWQpIHtcbiAgICAgICAgdmFyIGZldGNoUG9saWN5ID0gX2EuZmV0Y2hQb2xpY3ksIHZhcmlhYmxlcyA9IF9hLnZhcmlhYmxlcywgZXJyb3JQb2xpY3kgPSBfYS5lcnJvclBvbGljeTtcbiAgICAgICAgaWYgKGZldGNoUG9saWN5ID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAgICAgICB0aGlzLnNldFF1ZXJ5KHF1ZXJ5SWQsIGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7XG4gICAgICAgICAgICAgICAgbmV3RGF0YTogeyByZXN1bHQ6IHJlc3VsdC5kYXRhLCBjb21wbGV0ZTogdHJ1ZSB9LFxuICAgICAgICAgICAgfSk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kYXRhU3RvcmUubWFya1F1ZXJ5UmVzdWx0KHJlc3VsdCwgdGhpcy5nZXRRdWVyeShxdWVyeUlkKS5kb2N1bWVudCwgdmFyaWFibGVzLCBmZXRjaE1vcmVGb3JRdWVyeUlkLCBlcnJvclBvbGljeSA9PT0gJ2lnbm9yZScgfHwgZXJyb3JQb2xpY3kgPT09ICdhbGwnKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5xdWVyeUxpc3RlbmVyRm9yT2JzZXJ2ZXIgPSBmdW5jdGlvbiAocXVlcnlJZCwgb3B0aW9ucywgb2JzZXJ2ZXIpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJndW1lbnQpIHtcbiAgICAgICAgICAgIGlmIChvYnNlcnZlclttZXRob2RdKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXJbbWV0aG9kXShhcmd1bWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiB8fCBpbnZhcmlhbnQuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAobWV0aG9kID09PSAnZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiIHx8IGludmFyaWFudC5lcnJvcihhcmd1bWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChxdWVyeVN0b3JlVmFsdWUsIG5ld0RhdGEpIHtcbiAgICAgICAgICAgIF90aGlzLmludmFsaWRhdGUocXVlcnlJZCwgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKCFxdWVyeVN0b3JlVmFsdWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgdmFyIF9hID0gX3RoaXMuZ2V0UXVlcnkocXVlcnlJZCksIG9ic2VydmFibGVRdWVyeSA9IF9hLm9ic2VydmFibGVRdWVyeSwgZG9jdW1lbnQgPSBfYS5kb2N1bWVudDtcbiAgICAgICAgICAgIHZhciBmZXRjaFBvbGljeSA9IG9ic2VydmFibGVRdWVyeVxuICAgICAgICAgICAgICAgID8gb2JzZXJ2YWJsZVF1ZXJ5Lm9wdGlvbnMuZmV0Y2hQb2xpY3lcbiAgICAgICAgICAgICAgICA6IG9wdGlvbnMuZmV0Y2hQb2xpY3k7XG4gICAgICAgICAgICBpZiAoZmV0Y2hQb2xpY3kgPT09ICdzdGFuZGJ5JylcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB2YXIgbG9hZGluZyA9IGlzTmV0d29ya1JlcXVlc3RJbkZsaWdodChxdWVyeVN0b3JlVmFsdWUubmV0d29ya1N0YXR1cyk7XG4gICAgICAgICAgICB2YXIgbGFzdFJlc3VsdCA9IG9ic2VydmFibGVRdWVyeSAmJiBvYnNlcnZhYmxlUXVlcnkuZ2V0TGFzdFJlc3VsdCgpO1xuICAgICAgICAgICAgdmFyIG5ldHdvcmtTdGF0dXNDaGFuZ2VkID0gISEobGFzdFJlc3VsdCAmJlxuICAgICAgICAgICAgICAgIGxhc3RSZXN1bHQubmV0d29ya1N0YXR1cyAhPT0gcXVlcnlTdG9yZVZhbHVlLm5ldHdvcmtTdGF0dXMpO1xuICAgICAgICAgICAgdmFyIHNob3VsZE5vdGlmeUlmTG9hZGluZyA9IG9wdGlvbnMucmV0dXJuUGFydGlhbERhdGEgfHxcbiAgICAgICAgICAgICAgICAoIW5ld0RhdGEgJiYgcXVlcnlTdG9yZVZhbHVlLnByZXZpb3VzVmFyaWFibGVzKSB8fFxuICAgICAgICAgICAgICAgIChuZXR3b3JrU3RhdHVzQ2hhbmdlZCAmJiBvcHRpb25zLm5vdGlmeU9uTmV0d29ya1N0YXR1c0NoYW5nZSkgfHxcbiAgICAgICAgICAgICAgICBmZXRjaFBvbGljeSA9PT0gJ2NhY2hlLW9ubHknIHx8XG4gICAgICAgICAgICAgICAgZmV0Y2hQb2xpY3kgPT09ICdjYWNoZS1hbmQtbmV0d29yayc7XG4gICAgICAgICAgICBpZiAobG9hZGluZyAmJiAhc2hvdWxkTm90aWZ5SWZMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGhhc0dyYXBoUUxFcnJvcnMgPSBpc05vbkVtcHR5QXJyYXkocXVlcnlTdG9yZVZhbHVlLmdyYXBoUUxFcnJvcnMpO1xuICAgICAgICAgICAgdmFyIGVycm9yUG9saWN5ID0gb2JzZXJ2YWJsZVF1ZXJ5XG4gICAgICAgICAgICAgICAgJiYgb2JzZXJ2YWJsZVF1ZXJ5Lm9wdGlvbnMuZXJyb3JQb2xpY3lcbiAgICAgICAgICAgICAgICB8fCBvcHRpb25zLmVycm9yUG9saWN5XG4gICAgICAgICAgICAgICAgfHwgJ25vbmUnO1xuICAgICAgICAgICAgaWYgKGVycm9yUG9saWN5ID09PSAnbm9uZScgJiYgaGFzR3JhcGhRTEVycm9ycyB8fCBxdWVyeVN0b3JlVmFsdWUubmV0d29ya0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGludm9rZSgnZXJyb3InLCBuZXcgQXBvbGxvRXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgICBncmFwaFFMRXJyb3JzOiBxdWVyeVN0b3JlVmFsdWUuZ3JhcGhRTEVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgbmV0d29ya0Vycm9yOiBxdWVyeVN0b3JlVmFsdWUubmV0d29ya0Vycm9yLFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgdmFyIGlzTWlzc2luZyA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICBpZiAobmV3RGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmV0Y2hQb2xpY3kgIT09ICduby1jYWNoZScgJiYgZmV0Y2hQb2xpY3kgIT09ICduZXR3b3JrLW9ubHknKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5zZXRRdWVyeShxdWVyeUlkLCBmdW5jdGlvbiAoKSB7IHJldHVybiAoeyBuZXdEYXRhOiBudWxsIH0pOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBkYXRhID0gbmV3RGF0YS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgIGlzTWlzc2luZyA9ICFuZXdEYXRhLmNvbXBsZXRlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxhc3RFcnJvciA9IG9ic2VydmFibGVRdWVyeSAmJiBvYnNlcnZhYmxlUXVlcnkuZ2V0TGFzdEVycm9yKCk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlcnJvclN0YXR1c0NoYW5nZWQgPSBlcnJvclBvbGljeSAhPT0gJ25vbmUnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAobGFzdEVycm9yICYmIGxhc3RFcnJvci5ncmFwaFFMRXJyb3JzKSAhPT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVN0b3JlVmFsdWUuZ3JhcGhRTEVycm9ycztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RSZXN1bHQgJiYgbGFzdFJlc3VsdC5kYXRhICYmICFlcnJvclN0YXR1c0NoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBsYXN0UmVzdWx0LmRhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc01pc3NpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkaWZmUmVzdWx0ID0gX3RoaXMuZGF0YVN0b3JlLmdldENhY2hlKCkuZGlmZih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IGRvY3VtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogcXVlcnlTdG9yZVZhbHVlLnByZXZpb3VzVmFyaWFibGVzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5U3RvcmVWYWx1ZS52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuUGFydGlhbERhdGE6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pc3RpYzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRpZmZSZXN1bHQucmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNNaXNzaW5nID0gIWRpZmZSZXN1bHQuY29tcGxldGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHN0YWxlID0gaXNNaXNzaW5nICYmICEob3B0aW9ucy5yZXR1cm5QYXJ0aWFsRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICBmZXRjaFBvbGljeSA9PT0gJ2NhY2hlLW9ubHknKTtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0RnJvbVN0b3JlID0ge1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiBzdGFsZSA/IGxhc3RSZXN1bHQgJiYgbGFzdFJlc3VsdC5kYXRhIDogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogbG9hZGluZyxcbiAgICAgICAgICAgICAgICAgICAgbmV0d29ya1N0YXR1czogcXVlcnlTdG9yZVZhbHVlLm5ldHdvcmtTdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgIHN0YWxlOiBzdGFsZSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChlcnJvclBvbGljeSA9PT0gJ2FsbCcgJiYgaGFzR3JhcGhRTEVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRGcm9tU3RvcmUuZXJyb3JzID0gcXVlcnlTdG9yZVZhbHVlLmdyYXBoUUxFcnJvcnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGludm9rZSgnbmV4dCcsIHJlc3VsdEZyb21TdG9yZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAobmV0d29ya0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgaW52b2tlKCdlcnJvcicsIG5ldyBBcG9sbG9FcnJvcih7IG5ldHdvcmtFcnJvcjogbmV0d29ya0Vycm9yIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gKGRvY3VtZW50KSB7XG4gICAgICAgIHZhciB0cmFuc2Zvcm1DYWNoZSA9IHRoaXMudHJhbnNmb3JtQ2FjaGU7XG4gICAgICAgIGlmICghdHJhbnNmb3JtQ2FjaGUuaGFzKGRvY3VtZW50KSkge1xuICAgICAgICAgICAgdmFyIGNhY2hlID0gdGhpcy5kYXRhU3RvcmUuZ2V0Q2FjaGUoKTtcbiAgICAgICAgICAgIHZhciB0cmFuc2Zvcm1lZCA9IGNhY2hlLnRyYW5zZm9ybURvY3VtZW50KGRvY3VtZW50KTtcbiAgICAgICAgICAgIHZhciBmb3JMaW5rID0gcmVtb3ZlQ29ubmVjdGlvbkRpcmVjdGl2ZUZyb21Eb2N1bWVudChjYWNoZS50cmFuc2Zvcm1Gb3JMaW5rKHRyYW5zZm9ybWVkKSk7XG4gICAgICAgICAgICB2YXIgY2xpZW50UXVlcnkgPSB0aGlzLmxvY2FsU3RhdGUuY2xpZW50UXVlcnkodHJhbnNmb3JtZWQpO1xuICAgICAgICAgICAgdmFyIHNlcnZlclF1ZXJ5ID0gdGhpcy5sb2NhbFN0YXRlLnNlcnZlclF1ZXJ5KGZvckxpbmspO1xuICAgICAgICAgICAgdmFyIGNhY2hlRW50cnlfMSA9IHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudDogdHJhbnNmb3JtZWQsXG4gICAgICAgICAgICAgICAgaGFzQ2xpZW50RXhwb3J0czogaGFzQ2xpZW50RXhwb3J0cyh0cmFuc2Zvcm1lZCksXG4gICAgICAgICAgICAgICAgaGFzRm9yY2VkUmVzb2x2ZXJzOiB0aGlzLmxvY2FsU3RhdGUuc2hvdWxkRm9yY2VSZXNvbHZlcnModHJhbnNmb3JtZWQpLFxuICAgICAgICAgICAgICAgIGNsaWVudFF1ZXJ5OiBjbGllbnRRdWVyeSxcbiAgICAgICAgICAgICAgICBzZXJ2ZXJRdWVyeTogc2VydmVyUXVlcnksXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhcnM6IGdldERlZmF1bHRWYWx1ZXMoZ2V0T3BlcmF0aW9uRGVmaW5pdGlvbih0cmFuc2Zvcm1lZCkpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciBhZGQgPSBmdW5jdGlvbiAoZG9jKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRvYyAmJiAhdHJhbnNmb3JtQ2FjaGUuaGFzKGRvYykpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtQ2FjaGUuc2V0KGRvYywgY2FjaGVFbnRyeV8xKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgYWRkKGRvY3VtZW50KTtcbiAgICAgICAgICAgIGFkZCh0cmFuc2Zvcm1lZCk7XG4gICAgICAgICAgICBhZGQoY2xpZW50UXVlcnkpO1xuICAgICAgICAgICAgYWRkKHNlcnZlclF1ZXJ5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJhbnNmb3JtQ2FjaGUuZ2V0KGRvY3VtZW50KTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUuZ2V0VmFyaWFibGVzID0gZnVuY3Rpb24gKGRvY3VtZW50LCB2YXJpYWJsZXMpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCB0aGlzLnRyYW5zZm9ybShkb2N1bWVudCkuZGVmYXVsdFZhcnMpLCB2YXJpYWJsZXMpO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS53YXRjaFF1ZXJ5ID0gZnVuY3Rpb24gKG9wdGlvbnMsIHNob3VsZFN1YnNjcmliZSkge1xuICAgICAgICBpZiAoc2hvdWxkU3Vic2NyaWJlID09PSB2b2lkIDApIHsgc2hvdWxkU3Vic2NyaWJlID0gdHJ1ZTsgfVxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQob3B0aW9ucy5mZXRjaFBvbGljeSAhPT0gJ3N0YW5kYnknLCAxMSkgOiBpbnZhcmlhbnQob3B0aW9ucy5mZXRjaFBvbGljeSAhPT0gJ3N0YW5kYnknLCAnY2xpZW50LndhdGNoUXVlcnkgY2Fubm90IGJlIGNhbGxlZCB3aXRoIGZldGNoUG9saWN5IHNldCB0byBcInN0YW5kYnlcIicpO1xuICAgICAgICBvcHRpb25zLnZhcmlhYmxlcyA9IHRoaXMuZ2V0VmFyaWFibGVzKG9wdGlvbnMucXVlcnksIG9wdGlvbnMudmFyaWFibGVzKTtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm5vdGlmeU9uTmV0d29ya1N0YXR1c0NoYW5nZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIG9wdGlvbnMubm90aWZ5T25OZXR3b3JrU3RhdHVzQ2hhbmdlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRyYW5zZm9ybWVkT3B0aW9ucyA9IF9fYXNzaWduKHt9LCBvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlUXVlcnkoe1xuICAgICAgICAgICAgcXVlcnlNYW5hZ2VyOiB0aGlzLFxuICAgICAgICAgICAgb3B0aW9uczogdHJhbnNmb3JtZWRPcHRpb25zLFxuICAgICAgICAgICAgc2hvdWxkU3Vic2NyaWJlOiBzaG91bGRTdWJzY3JpYmUsXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChvcHRpb25zLnF1ZXJ5LCAxMikgOiBpbnZhcmlhbnQob3B0aW9ucy5xdWVyeSwgJ3F1ZXJ5IG9wdGlvbiBpcyByZXF1aXJlZC4gWW91IG11c3Qgc3BlY2lmeSB5b3VyIEdyYXBoUUwgZG9jdW1lbnQgJyArXG4gICAgICAgICAgICAnaW4gdGhlIHF1ZXJ5IG9wdGlvbi4nKTtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KG9wdGlvbnMucXVlcnkua2luZCA9PT0gJ0RvY3VtZW50JywgMTMpIDogaW52YXJpYW50KG9wdGlvbnMucXVlcnkua2luZCA9PT0gJ0RvY3VtZW50JywgJ1lvdSBtdXN0IHdyYXAgdGhlIHF1ZXJ5IHN0cmluZyBpbiBhIFwiZ3FsXCIgdGFnLicpO1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoIW9wdGlvbnMucmV0dXJuUGFydGlhbERhdGEsIDE0KSA6IGludmFyaWFudCghb3B0aW9ucy5yZXR1cm5QYXJ0aWFsRGF0YSwgJ3JldHVyblBhcnRpYWxEYXRhIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBvbiB3YXRjaFF1ZXJ5LicpO1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoIW9wdGlvbnMucG9sbEludGVydmFsLCAxNSkgOiBpbnZhcmlhbnQoIW9wdGlvbnMucG9sbEludGVydmFsLCAncG9sbEludGVydmFsIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBvbiB3YXRjaFF1ZXJ5LicpO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIHdhdGNoZWRRdWVyeSA9IF90aGlzLndhdGNoUXVlcnkob3B0aW9ucywgZmFsc2UpO1xuICAgICAgICAgICAgX3RoaXMuZmV0Y2hRdWVyeVJlamVjdEZucy5zZXQoXCJxdWVyeTpcIiArIHdhdGNoZWRRdWVyeS5xdWVyeUlkLCByZWplY3QpO1xuICAgICAgICAgICAgd2F0Y2hlZFF1ZXJ5XG4gICAgICAgICAgICAgICAgLnJlc3VsdCgpXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KVxuICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuZmV0Y2hRdWVyeVJlamVjdEZucy5kZWxldGUoXCJxdWVyeTpcIiArIHdhdGNoZWRRdWVyeS5xdWVyeUlkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUuZ2VuZXJhdGVRdWVyeUlkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHRoaXMuaWRDb3VudGVyKyspO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5zdG9wUXVlcnlJblN0b3JlID0gZnVuY3Rpb24gKHF1ZXJ5SWQpIHtcbiAgICAgICAgdGhpcy5zdG9wUXVlcnlJblN0b3JlTm9Ccm9hZGNhc3QocXVlcnlJZCk7XG4gICAgICAgIHRoaXMuYnJvYWRjYXN0UXVlcmllcygpO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5zdG9wUXVlcnlJblN0b3JlTm9Ccm9hZGNhc3QgPSBmdW5jdGlvbiAocXVlcnlJZCkge1xuICAgICAgICB0aGlzLnN0b3BQb2xsaW5nUXVlcnkocXVlcnlJZCk7XG4gICAgICAgIHRoaXMucXVlcnlTdG9yZS5zdG9wUXVlcnkocXVlcnlJZCk7XG4gICAgICAgIHRoaXMuaW52YWxpZGF0ZShxdWVyeUlkKTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUuYWRkUXVlcnlMaXN0ZW5lciA9IGZ1bmN0aW9uIChxdWVyeUlkLCBsaXN0ZW5lcikge1xuICAgICAgICB0aGlzLnNldFF1ZXJ5KHF1ZXJ5SWQsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgdmFyIGxpc3RlbmVycyA9IF9hLmxpc3RlbmVycztcbiAgICAgICAgICAgIGxpc3RlbmVycy5hZGQobGlzdGVuZXIpO1xuICAgICAgICAgICAgcmV0dXJuIHsgaW52YWxpZGF0ZWQ6IGZhbHNlIH07XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS51cGRhdGVRdWVyeVdhdGNoID0gZnVuY3Rpb24gKHF1ZXJ5SWQsIGRvY3VtZW50LCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBjYW5jZWwgPSB0aGlzLmdldFF1ZXJ5KHF1ZXJ5SWQpLmNhbmNlbDtcbiAgICAgICAgaWYgKGNhbmNlbClcbiAgICAgICAgICAgIGNhbmNlbCgpO1xuICAgICAgICB2YXIgcHJldmlvdXNSZXN1bHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcHJldmlvdXNSZXN1bHQgPSBudWxsO1xuICAgICAgICAgICAgdmFyIG9ic2VydmFibGVRdWVyeSA9IF90aGlzLmdldFF1ZXJ5KHF1ZXJ5SWQpLm9ic2VydmFibGVRdWVyeTtcbiAgICAgICAgICAgIGlmIChvYnNlcnZhYmxlUXVlcnkpIHtcbiAgICAgICAgICAgICAgICB2YXIgbGFzdFJlc3VsdCA9IG9ic2VydmFibGVRdWVyeS5nZXRMYXN0UmVzdWx0KCk7XG4gICAgICAgICAgICAgICAgaWYgKGxhc3RSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNSZXN1bHQgPSBsYXN0UmVzdWx0LmRhdGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzUmVzdWx0O1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhU3RvcmUuZ2V0Q2FjaGUoKS53YXRjaCh7XG4gICAgICAgICAgICBxdWVyeTogZG9jdW1lbnQsXG4gICAgICAgICAgICB2YXJpYWJsZXM6IG9wdGlvbnMudmFyaWFibGVzLFxuICAgICAgICAgICAgb3B0aW1pc3RpYzogdHJ1ZSxcbiAgICAgICAgICAgIHByZXZpb3VzUmVzdWx0OiBwcmV2aW91c1Jlc3VsdCxcbiAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiAobmV3RGF0YSkge1xuICAgICAgICAgICAgICAgIF90aGlzLnNldFF1ZXJ5KHF1ZXJ5SWQsIGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7IGludmFsaWRhdGVkOiB0cnVlLCBuZXdEYXRhOiBuZXdEYXRhIH0pOyB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5hZGRPYnNlcnZhYmxlUXVlcnkgPSBmdW5jdGlvbiAocXVlcnlJZCwgb2JzZXJ2YWJsZVF1ZXJ5KSB7XG4gICAgICAgIHRoaXMuc2V0UXVlcnkocXVlcnlJZCwgZnVuY3Rpb24gKCkgeyByZXR1cm4gKHsgb2JzZXJ2YWJsZVF1ZXJ5OiBvYnNlcnZhYmxlUXVlcnkgfSk7IH0pO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVPYnNlcnZhYmxlUXVlcnkgPSBmdW5jdGlvbiAocXVlcnlJZCkge1xuICAgICAgICB2YXIgY2FuY2VsID0gdGhpcy5nZXRRdWVyeShxdWVyeUlkKS5jYW5jZWw7XG4gICAgICAgIHRoaXMuc2V0UXVlcnkocXVlcnlJZCwgZnVuY3Rpb24gKCkgeyByZXR1cm4gKHsgb2JzZXJ2YWJsZVF1ZXJ5OiBudWxsIH0pOyB9KTtcbiAgICAgICAgaWYgKGNhbmNlbClcbiAgICAgICAgICAgIGNhbmNlbCgpO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5jbGVhclN0b3JlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmZldGNoUXVlcnlSZWplY3RGbnMuZm9yRWFjaChmdW5jdGlvbiAocmVqZWN0KSB7XG4gICAgICAgICAgICByZWplY3QocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gbmV3IEludmFyaWFudEVycm9yKDE2KSA6IG5ldyBJbnZhcmlhbnRFcnJvcignU3RvcmUgcmVzZXQgd2hpbGUgcXVlcnkgd2FzIGluIGZsaWdodCAobm90IGNvbXBsZXRlZCBpbiBsaW5rIGNoYWluKScpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZXNldElkcyA9IFtdO1xuICAgICAgICB0aGlzLnF1ZXJpZXMuZm9yRWFjaChmdW5jdGlvbiAoX2EsIHF1ZXJ5SWQpIHtcbiAgICAgICAgICAgIHZhciBvYnNlcnZhYmxlUXVlcnkgPSBfYS5vYnNlcnZhYmxlUXVlcnk7XG4gICAgICAgICAgICBpZiAob2JzZXJ2YWJsZVF1ZXJ5KVxuICAgICAgICAgICAgICAgIHJlc2V0SWRzLnB1c2gocXVlcnlJZCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnF1ZXJ5U3RvcmUucmVzZXQocmVzZXRJZHMpO1xuICAgICAgICB0aGlzLm11dGF0aW9uU3RvcmUucmVzZXQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVN0b3JlLnJlc2V0KCk7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLnJlc2V0U3RvcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiB0aGlzLmNsZWFyU3RvcmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5yZUZldGNoT2JzZXJ2YWJsZVF1ZXJpZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLnJlRmV0Y2hPYnNlcnZhYmxlUXVlcmllcyA9IGZ1bmN0aW9uIChpbmNsdWRlU3RhbmRieSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAoaW5jbHVkZVN0YW5kYnkgPT09IHZvaWQgMCkgeyBpbmNsdWRlU3RhbmRieSA9IGZhbHNlOyB9XG4gICAgICAgIHZhciBvYnNlcnZhYmxlUXVlcnlQcm9taXNlcyA9IFtdO1xuICAgICAgICB0aGlzLnF1ZXJpZXMuZm9yRWFjaChmdW5jdGlvbiAoX2EsIHF1ZXJ5SWQpIHtcbiAgICAgICAgICAgIHZhciBvYnNlcnZhYmxlUXVlcnkgPSBfYS5vYnNlcnZhYmxlUXVlcnk7XG4gICAgICAgICAgICBpZiAob2JzZXJ2YWJsZVF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgdmFyIGZldGNoUG9saWN5ID0gb2JzZXJ2YWJsZVF1ZXJ5Lm9wdGlvbnMuZmV0Y2hQb2xpY3k7XG4gICAgICAgICAgICAgICAgb2JzZXJ2YWJsZVF1ZXJ5LnJlc2V0TGFzdFJlc3VsdHMoKTtcbiAgICAgICAgICAgICAgICBpZiAoZmV0Y2hQb2xpY3kgIT09ICdjYWNoZS1vbmx5JyAmJlxuICAgICAgICAgICAgICAgICAgICAoaW5jbHVkZVN0YW5kYnkgfHwgZmV0Y2hQb2xpY3kgIT09ICdzdGFuZGJ5JykpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2YWJsZVF1ZXJ5UHJvbWlzZXMucHVzaChvYnNlcnZhYmxlUXVlcnkucmVmZXRjaCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgX3RoaXMuc2V0UXVlcnkocXVlcnlJZCwgZnVuY3Rpb24gKCkgeyByZXR1cm4gKHsgbmV3RGF0YTogbnVsbCB9KTsgfSk7XG4gICAgICAgICAgICAgICAgX3RoaXMuaW52YWxpZGF0ZShxdWVyeUlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYnJvYWRjYXN0UXVlcmllcygpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwob2JzZXJ2YWJsZVF1ZXJ5UHJvbWlzZXMpO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5vYnNlcnZlUXVlcnkgPSBmdW5jdGlvbiAocXVlcnlJZCwgb3B0aW9ucywgb2JzZXJ2ZXIpIHtcbiAgICAgICAgdGhpcy5hZGRRdWVyeUxpc3RlbmVyKHF1ZXJ5SWQsIHRoaXMucXVlcnlMaXN0ZW5lckZvck9ic2VydmVyKHF1ZXJ5SWQsIG9wdGlvbnMsIG9ic2VydmVyKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmZldGNoUXVlcnkocXVlcnlJZCwgb3B0aW9ucyk7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLnN0YXJ0UXVlcnkgPSBmdW5jdGlvbiAocXVlcnlJZCwgb3B0aW9ucywgbGlzdGVuZXIpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiIHx8IGludmFyaWFudC53YXJuKFwiVGhlIFF1ZXJ5TWFuYWdlci5zdGFydFF1ZXJ5IG1ldGhvZCBoYXMgYmVlbiBkZXByZWNhdGVkXCIpO1xuICAgICAgICB0aGlzLmFkZFF1ZXJ5TGlzdGVuZXIocXVlcnlJZCwgbGlzdGVuZXIpO1xuICAgICAgICB0aGlzLmZldGNoUXVlcnkocXVlcnlJZCwgb3B0aW9ucylcbiAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7IHJldHVybiB1bmRlZmluZWQ7IH0pO1xuICAgICAgICByZXR1cm4gcXVlcnlJZDtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUuc3RhcnRHcmFwaFFMU3Vic2NyaXB0aW9uID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBxdWVyeSA9IF9hLnF1ZXJ5LCBmZXRjaFBvbGljeSA9IF9hLmZldGNoUG9saWN5LCB2YXJpYWJsZXMgPSBfYS52YXJpYWJsZXM7XG4gICAgICAgIHF1ZXJ5ID0gdGhpcy50cmFuc2Zvcm0ocXVlcnkpLmRvY3VtZW50O1xuICAgICAgICB2YXJpYWJsZXMgPSB0aGlzLmdldFZhcmlhYmxlcyhxdWVyeSwgdmFyaWFibGVzKTtcbiAgICAgICAgdmFyIG1ha2VPYnNlcnZhYmxlID0gZnVuY3Rpb24gKHZhcmlhYmxlcykge1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzLmdldE9ic2VydmFibGVGcm9tTGluayhxdWVyeSwge30sIHZhcmlhYmxlcywgZmFsc2UpLm1hcChmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFmZXRjaFBvbGljeSB8fCBmZXRjaFBvbGljeSAhPT0gJ25vLWNhY2hlJykge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5kYXRhU3RvcmUubWFya1N1YnNjcmlwdGlvblJlc3VsdChyZXN1bHQsIHF1ZXJ5LCB2YXJpYWJsZXMpO1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5icm9hZGNhc3RRdWVyaWVzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChncmFwaFFMUmVzdWx0SGFzRXJyb3IocmVzdWx0KSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXBvbGxvRXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGhRTEVycm9yczogcmVzdWx0LmVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMudHJhbnNmb3JtKHF1ZXJ5KS5oYXNDbGllbnRFeHBvcnRzKSB7XG4gICAgICAgICAgICB2YXIgb2JzZXJ2YWJsZVByb21pc2VfMSA9IHRoaXMubG9jYWxTdGF0ZS5hZGRFeHBvcnRlZFZhcmlhYmxlcyhxdWVyeSwgdmFyaWFibGVzKS50aGVuKG1ha2VPYnNlcnZhYmxlKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICB2YXIgc3ViID0gbnVsbDtcbiAgICAgICAgICAgICAgICBvYnNlcnZhYmxlUHJvbWlzZV8xLnRoZW4oZnVuY3Rpb24gKG9ic2VydmFibGUpIHsgcmV0dXJuIHN1YiA9IG9ic2VydmFibGUuc3Vic2NyaWJlKG9ic2VydmVyKTsgfSwgb2JzZXJ2ZXIuZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBzdWIgJiYgc3ViLnVuc3Vic2NyaWJlKCk7IH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFrZU9ic2VydmFibGUodmFyaWFibGVzKTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUuc3RvcFF1ZXJ5ID0gZnVuY3Rpb24gKHF1ZXJ5SWQpIHtcbiAgICAgICAgdGhpcy5zdG9wUXVlcnlOb0Jyb2FkY2FzdChxdWVyeUlkKTtcbiAgICAgICAgdGhpcy5icm9hZGNhc3RRdWVyaWVzKCk7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLnN0b3BRdWVyeU5vQnJvYWRjYXN0ID0gZnVuY3Rpb24gKHF1ZXJ5SWQpIHtcbiAgICAgICAgdGhpcy5zdG9wUXVlcnlJblN0b3JlTm9Ccm9hZGNhc3QocXVlcnlJZCk7XG4gICAgICAgIHRoaXMucmVtb3ZlUXVlcnkocXVlcnlJZCk7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLnJlbW92ZVF1ZXJ5ID0gZnVuY3Rpb24gKHF1ZXJ5SWQpIHtcbiAgICAgICAgdGhpcy5mZXRjaFF1ZXJ5UmVqZWN0Rm5zLmRlbGV0ZShcInF1ZXJ5OlwiICsgcXVlcnlJZCk7XG4gICAgICAgIHRoaXMuZmV0Y2hRdWVyeVJlamVjdEZucy5kZWxldGUoXCJmZXRjaFJlcXVlc3Q6XCIgKyBxdWVyeUlkKTtcbiAgICAgICAgdGhpcy5nZXRRdWVyeShxdWVyeUlkKS5zdWJzY3JpcHRpb25zLmZvckVhY2goZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHgudW5zdWJzY3JpYmUoKTsgfSk7XG4gICAgICAgIHRoaXMucXVlcmllcy5kZWxldGUocXVlcnlJZCk7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLmdldEN1cnJlbnRRdWVyeVJlc3VsdCA9IGZ1bmN0aW9uIChvYnNlcnZhYmxlUXVlcnksIG9wdGltaXN0aWMpIHtcbiAgICAgICAgaWYgKG9wdGltaXN0aWMgPT09IHZvaWQgMCkgeyBvcHRpbWlzdGljID0gdHJ1ZTsgfVxuICAgICAgICB2YXIgX2EgPSBvYnNlcnZhYmxlUXVlcnkub3B0aW9ucywgdmFyaWFibGVzID0gX2EudmFyaWFibGVzLCBxdWVyeSA9IF9hLnF1ZXJ5LCBmZXRjaFBvbGljeSA9IF9hLmZldGNoUG9saWN5LCByZXR1cm5QYXJ0aWFsRGF0YSA9IF9hLnJldHVyblBhcnRpYWxEYXRhO1xuICAgICAgICB2YXIgbGFzdFJlc3VsdCA9IG9ic2VydmFibGVRdWVyeS5nZXRMYXN0UmVzdWx0KCk7XG4gICAgICAgIHZhciBuZXdEYXRhID0gdGhpcy5nZXRRdWVyeShvYnNlcnZhYmxlUXVlcnkucXVlcnlJZCkubmV3RGF0YTtcbiAgICAgICAgaWYgKG5ld0RhdGEgJiYgbmV3RGF0YS5jb21wbGV0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgZGF0YTogbmV3RGF0YS5yZXN1bHQsIHBhcnRpYWw6IGZhbHNlIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZldGNoUG9saWN5ID09PSAnbm8tY2FjaGUnIHx8IGZldGNoUG9saWN5ID09PSAnbmV0d29yay1vbmx5Jykge1xuICAgICAgICAgICAgcmV0dXJuIHsgZGF0YTogdW5kZWZpbmVkLCBwYXJ0aWFsOiBmYWxzZSB9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBfYiA9IHRoaXMuZGF0YVN0b3JlLmdldENhY2hlKCkuZGlmZih7XG4gICAgICAgICAgICBxdWVyeTogcXVlcnksXG4gICAgICAgICAgICB2YXJpYWJsZXM6IHZhcmlhYmxlcyxcbiAgICAgICAgICAgIHByZXZpb3VzUmVzdWx0OiBsYXN0UmVzdWx0ID8gbGFzdFJlc3VsdC5kYXRhIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcmV0dXJuUGFydGlhbERhdGE6IHRydWUsXG4gICAgICAgICAgICBvcHRpbWlzdGljOiBvcHRpbWlzdGljLFxuICAgICAgICB9KSwgcmVzdWx0ID0gX2IucmVzdWx0LCBjb21wbGV0ZSA9IF9iLmNvbXBsZXRlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YTogKGNvbXBsZXRlIHx8IHJldHVyblBhcnRpYWxEYXRhKSA/IHJlc3VsdCA6IHZvaWQgMCxcbiAgICAgICAgICAgIHBhcnRpYWw6ICFjb21wbGV0ZSxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUuZ2V0UXVlcnlXaXRoUHJldmlvdXNSZXN1bHQgPSBmdW5jdGlvbiAocXVlcnlJZE9yT2JzZXJ2YWJsZSkge1xuICAgICAgICB2YXIgb2JzZXJ2YWJsZVF1ZXJ5O1xuICAgICAgICBpZiAodHlwZW9mIHF1ZXJ5SWRPck9ic2VydmFibGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YXIgZm91bmRPYnNlcnZlYWJsZVF1ZXJ5ID0gdGhpcy5nZXRRdWVyeShxdWVyeUlkT3JPYnNlcnZhYmxlKS5vYnNlcnZhYmxlUXVlcnk7XG4gICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZm91bmRPYnNlcnZlYWJsZVF1ZXJ5LCAxNykgOiBpbnZhcmlhbnQoZm91bmRPYnNlcnZlYWJsZVF1ZXJ5LCBcIk9ic2VydmFibGVRdWVyeSB3aXRoIHRoaXMgaWQgZG9lc24ndCBleGlzdDogXCIgKyBxdWVyeUlkT3JPYnNlcnZhYmxlKTtcbiAgICAgICAgICAgIG9ic2VydmFibGVRdWVyeSA9IGZvdW5kT2JzZXJ2ZWFibGVRdWVyeTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9ic2VydmFibGVRdWVyeSA9IHF1ZXJ5SWRPck9ic2VydmFibGU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9hID0gb2JzZXJ2YWJsZVF1ZXJ5Lm9wdGlvbnMsIHZhcmlhYmxlcyA9IF9hLnZhcmlhYmxlcywgcXVlcnkgPSBfYS5xdWVyeTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXZpb3VzUmVzdWx0OiB0aGlzLmdldEN1cnJlbnRRdWVyeVJlc3VsdChvYnNlcnZhYmxlUXVlcnksIGZhbHNlKS5kYXRhLFxuICAgICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMsXG4gICAgICAgICAgICBkb2N1bWVudDogcXVlcnksXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLmJyb2FkY2FzdFF1ZXJpZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHRoaXMub25Ccm9hZGNhc3QoKTtcbiAgICAgICAgdGhpcy5xdWVyaWVzLmZvckVhY2goZnVuY3Rpb24gKGluZm8sIGlkKSB7XG4gICAgICAgICAgICBpZiAoaW5mby5pbnZhbGlkYXRlZCkge1xuICAgICAgICAgICAgICAgIGluZm8ubGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24gKGxpc3RlbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsaXN0ZW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIoX3RoaXMucXVlcnlTdG9yZS5nZXQoaWQpLCBpbmZvLm5ld0RhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5nZXRMb2NhbFN0YXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbFN0YXRlO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5nZXRPYnNlcnZhYmxlRnJvbUxpbmsgPSBmdW5jdGlvbiAocXVlcnksIGNvbnRleHQsIHZhcmlhYmxlcywgZGVkdXBsaWNhdGlvbikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAoZGVkdXBsaWNhdGlvbiA9PT0gdm9pZCAwKSB7IGRlZHVwbGljYXRpb24gPSB0aGlzLnF1ZXJ5RGVkdXBsaWNhdGlvbjsgfVxuICAgICAgICB2YXIgb2JzZXJ2YWJsZTtcbiAgICAgICAgdmFyIHNlcnZlclF1ZXJ5ID0gdGhpcy50cmFuc2Zvcm0ocXVlcnkpLnNlcnZlclF1ZXJ5O1xuICAgICAgICBpZiAoc2VydmVyUXVlcnkpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGluRmxpZ2h0TGlua09ic2VydmFibGVzXzEgPSBfYS5pbkZsaWdodExpbmtPYnNlcnZhYmxlcywgbGluayA9IF9hLmxpbms7XG4gICAgICAgICAgICB2YXIgb3BlcmF0aW9uID0ge1xuICAgICAgICAgICAgICAgIHF1ZXJ5OiBzZXJ2ZXJRdWVyeSxcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb25OYW1lOiBnZXRPcGVyYXRpb25OYW1lKHNlcnZlclF1ZXJ5KSB8fCB2b2lkIDAsXG4gICAgICAgICAgICAgICAgY29udGV4dDogdGhpcy5wcmVwYXJlQ29udGV4dChfX2Fzc2lnbihfX2Fzc2lnbih7fSwgY29udGV4dCksIHsgZm9yY2VGZXRjaDogIWRlZHVwbGljYXRpb24gfSkpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnRleHQgPSBvcGVyYXRpb24uY29udGV4dDtcbiAgICAgICAgICAgIGlmIChkZWR1cGxpY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJ5VmFyaWFibGVzXzEgPSBpbkZsaWdodExpbmtPYnNlcnZhYmxlc18xLmdldChzZXJ2ZXJRdWVyeSkgfHwgbmV3IE1hcCgpO1xuICAgICAgICAgICAgICAgIGluRmxpZ2h0TGlua09ic2VydmFibGVzXzEuc2V0KHNlcnZlclF1ZXJ5LCBieVZhcmlhYmxlc18xKTtcbiAgICAgICAgICAgICAgICB2YXIgdmFySnNvbl8xID0gSlNPTi5zdHJpbmdpZnkodmFyaWFibGVzKTtcbiAgICAgICAgICAgICAgICBvYnNlcnZhYmxlID0gYnlWYXJpYWJsZXNfMS5nZXQodmFySnNvbl8xKTtcbiAgICAgICAgICAgICAgICBpZiAoIW9ic2VydmFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnlWYXJpYWJsZXNfMS5zZXQodmFySnNvbl8xLCBvYnNlcnZhYmxlID0gbXVsdGlwbGV4KGV4ZWN1dGUobGluaywgb3BlcmF0aW9uKSkpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2xlYW51cCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ5VmFyaWFibGVzXzEuZGVsZXRlKHZhckpzb25fMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWJ5VmFyaWFibGVzXzEuc2l6ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbkZsaWdodExpbmtPYnNlcnZhYmxlc18xLmRlbGV0ZShzZXJ2ZXJRdWVyeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhbnVwU3ViXzEudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNsZWFudXBTdWJfMSA9IG9ic2VydmFibGUuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IGNsZWFudXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogY2xlYW51cCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBjbGVhbnVwLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBvYnNlcnZhYmxlID0gbXVsdGlwbGV4KGV4ZWN1dGUobGluaywgb3BlcmF0aW9uKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBvYnNlcnZhYmxlID0gT2JzZXJ2YWJsZS5vZih7IGRhdGE6IHt9IH0pO1xuICAgICAgICAgICAgY29udGV4dCA9IHRoaXMucHJlcGFyZUNvbnRleHQoY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNsaWVudFF1ZXJ5ID0gdGhpcy50cmFuc2Zvcm0ocXVlcnkpLmNsaWVudFF1ZXJ5O1xuICAgICAgICBpZiAoY2xpZW50UXVlcnkpIHtcbiAgICAgICAgICAgIG9ic2VydmFibGUgPSBhc3luY01hcChvYnNlcnZhYmxlLCBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmxvY2FsU3RhdGUucnVuUmVzb2x2ZXJzKHtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ6IGNsaWVudFF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICByZW1vdGVSZXN1bHQ6IHJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUuZmV0Y2hSZXF1ZXN0ID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciByZXF1ZXN0SWQgPSBfYS5yZXF1ZXN0SWQsIHF1ZXJ5SWQgPSBfYS5xdWVyeUlkLCBkb2N1bWVudCA9IF9hLmRvY3VtZW50LCBvcHRpb25zID0gX2Eub3B0aW9ucywgZmV0Y2hNb3JlRm9yUXVlcnlJZCA9IF9hLmZldGNoTW9yZUZvclF1ZXJ5SWQ7XG4gICAgICAgIHZhciB2YXJpYWJsZXMgPSBvcHRpb25zLnZhcmlhYmxlcywgX2IgPSBvcHRpb25zLmVycm9yUG9saWN5LCBlcnJvclBvbGljeSA9IF9iID09PSB2b2lkIDAgPyAnbm9uZScgOiBfYiwgZmV0Y2hQb2xpY3kgPSBvcHRpb25zLmZldGNoUG9saWN5O1xuICAgICAgICB2YXIgcmVzdWx0RnJvbVN0b3JlO1xuICAgICAgICB2YXIgZXJyb3JzRnJvbVN0b3JlO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIG9ic2VydmFibGUgPSBfdGhpcy5nZXRPYnNlcnZhYmxlRnJvbUxpbmsoZG9jdW1lbnQsIG9wdGlvbnMuY29udGV4dCwgdmFyaWFibGVzKTtcbiAgICAgICAgICAgIHZhciBmcXJmSWQgPSBcImZldGNoUmVxdWVzdDpcIiArIHF1ZXJ5SWQ7XG4gICAgICAgICAgICBfdGhpcy5mZXRjaFF1ZXJ5UmVqZWN0Rm5zLnNldChmcXJmSWQsIHJlamVjdCk7XG4gICAgICAgICAgICB2YXIgY2xlYW51cCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5mZXRjaFF1ZXJ5UmVqZWN0Rm5zLmRlbGV0ZShmcXJmSWQpO1xuICAgICAgICAgICAgICAgIF90aGlzLnNldFF1ZXJ5KHF1ZXJ5SWQsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3Vic2NyaXB0aW9ucyA9IF9hLnN1YnNjcmlwdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbnMuZGVsZXRlKHN1YnNjcmlwdGlvbik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIHN1YnNjcmlwdGlvbiA9IG9ic2VydmFibGUubWFwKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVxdWVzdElkID49IF90aGlzLmdldFF1ZXJ5KHF1ZXJ5SWQpLmxhc3RSZXF1ZXN0SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMubWFya1F1ZXJ5UmVzdWx0KHF1ZXJ5SWQsIHJlc3VsdCwgb3B0aW9ucywgZmV0Y2hNb3JlRm9yUXVlcnlJZCk7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLnF1ZXJ5U3RvcmUubWFya1F1ZXJ5UmVzdWx0KHF1ZXJ5SWQsIHJlc3VsdCwgZmV0Y2hNb3JlRm9yUXVlcnlJZCk7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmludmFsaWRhdGUocXVlcnlJZCk7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmludmFsaWRhdGUoZmV0Y2hNb3JlRm9yUXVlcnlJZCk7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmJyb2FkY2FzdFF1ZXJpZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yUG9saWN5ID09PSAnbm9uZScgJiYgaXNOb25FbXB0eUFycmF5KHJlc3VsdC5lcnJvcnMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QobmV3IEFwb2xsb0Vycm9yKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoUUxFcnJvcnM6IHJlc3VsdC5lcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yUG9saWN5ID09PSAnYWxsJykge1xuICAgICAgICAgICAgICAgICAgICBlcnJvcnNGcm9tU3RvcmUgPSByZXN1bHQuZXJyb3JzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZmV0Y2hNb3JlRm9yUXVlcnlJZCB8fCBmZXRjaFBvbGljeSA9PT0gJ25vLWNhY2hlJykge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRGcm9tU3RvcmUgPSByZXN1bHQuZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYSA9IF90aGlzLmRhdGFTdG9yZS5nZXRDYWNoZSgpLmRpZmYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeTogZG9jdW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWlzdGljOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblBhcnRpYWxEYXRhOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9KSwgcmVzdWx0XzEgPSBfYS5yZXN1bHQsIGNvbXBsZXRlID0gX2EuY29tcGxldGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wbGV0ZSB8fCBvcHRpb25zLnJldHVyblBhcnRpYWxEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRGcm9tU3RvcmUgPSByZXN1bHRfMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBjbGVhbnVwKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBjbGVhbnVwKCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogcmVzdWx0RnJvbVN0b3JlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzOiBlcnJvcnNGcm9tU3RvcmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtTdGF0dXM6IE5ldHdvcmtTdGF0dXMucmVhZHksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF90aGlzLnNldFF1ZXJ5KHF1ZXJ5SWQsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHZhciBzdWJzY3JpcHRpb25zID0gX2Euc3Vic2NyaXB0aW9ucztcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25zLmFkZChzdWJzY3JpcHRpb24pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5nZXRRdWVyeSA9IGZ1bmN0aW9uIChxdWVyeUlkKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5xdWVyaWVzLmdldChxdWVyeUlkKSB8fCB7XG4gICAgICAgICAgICBsaXN0ZW5lcnM6IG5ldyBTZXQoKSxcbiAgICAgICAgICAgIGludmFsaWRhdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGRvY3VtZW50OiBudWxsLFxuICAgICAgICAgICAgbmV3RGF0YTogbnVsbCxcbiAgICAgICAgICAgIGxhc3RSZXF1ZXN0SWQ6IDEsXG4gICAgICAgICAgICBvYnNlcnZhYmxlUXVlcnk6IG51bGwsXG4gICAgICAgICAgICBzdWJzY3JpcHRpb25zOiBuZXcgU2V0KCksXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5zZXRRdWVyeSA9IGZ1bmN0aW9uIChxdWVyeUlkLCB1cGRhdGVyKSB7XG4gICAgICAgIHZhciBwcmV2ID0gdGhpcy5nZXRRdWVyeShxdWVyeUlkKTtcbiAgICAgICAgdmFyIG5ld0luZm8gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcHJldiksIHVwZGF0ZXIocHJldikpO1xuICAgICAgICB0aGlzLnF1ZXJpZXMuc2V0KHF1ZXJ5SWQsIG5ld0luZm8pO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5pbnZhbGlkYXRlID0gZnVuY3Rpb24gKHF1ZXJ5SWQsIGludmFsaWRhdGVkKSB7XG4gICAgICAgIGlmIChpbnZhbGlkYXRlZCA9PT0gdm9pZCAwKSB7IGludmFsaWRhdGVkID0gdHJ1ZTsgfVxuICAgICAgICBpZiAocXVlcnlJZCkge1xuICAgICAgICAgICAgdGhpcy5zZXRRdWVyeShxdWVyeUlkLCBmdW5jdGlvbiAoKSB7IHJldHVybiAoeyBpbnZhbGlkYXRlZDogaW52YWxpZGF0ZWQgfSk7IH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLnByZXBhcmVDb250ZXh0ID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkgeyBjb250ZXh0ID0ge307IH1cbiAgICAgICAgdmFyIG5ld0NvbnRleHQgPSB0aGlzLmxvY2FsU3RhdGUucHJlcGFyZUNvbnRleHQoY29udGV4dCk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbmV3Q29udGV4dCksIHsgY2xpZW50QXdhcmVuZXNzOiB0aGlzLmNsaWVudEF3YXJlbmVzcyB9KTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUuY2hlY2tJbkZsaWdodCA9IGZ1bmN0aW9uIChxdWVyeUlkKSB7XG4gICAgICAgIHZhciBxdWVyeSA9IHRoaXMucXVlcnlTdG9yZS5nZXQocXVlcnlJZCk7XG4gICAgICAgIHJldHVybiAocXVlcnkgJiZcbiAgICAgICAgICAgIHF1ZXJ5Lm5ldHdvcmtTdGF0dXMgIT09IE5ldHdvcmtTdGF0dXMucmVhZHkgJiZcbiAgICAgICAgICAgIHF1ZXJ5Lm5ldHdvcmtTdGF0dXMgIT09IE5ldHdvcmtTdGF0dXMuZXJyb3IpO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5zdGFydFBvbGxpbmdRdWVyeSA9IGZ1bmN0aW9uIChvcHRpb25zLCBxdWVyeUlkLCBsaXN0ZW5lcikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgcG9sbEludGVydmFsID0gb3B0aW9ucy5wb2xsSW50ZXJ2YWw7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChwb2xsSW50ZXJ2YWwsIDE4KSA6IGludmFyaWFudChwb2xsSW50ZXJ2YWwsICdBdHRlbXB0ZWQgdG8gc3RhcnQgYSBwb2xsaW5nIHF1ZXJ5IHdpdGhvdXQgYSBwb2xsaW5nIGludGVydmFsLicpO1xuICAgICAgICBpZiAoIXRoaXMuc3NyTW9kZSkge1xuICAgICAgICAgICAgdmFyIGluZm8gPSB0aGlzLnBvbGxpbmdJbmZvQnlRdWVyeUlkLmdldChxdWVyeUlkKTtcbiAgICAgICAgICAgIGlmICghaW5mbykge1xuICAgICAgICAgICAgICAgIHRoaXMucG9sbGluZ0luZm9CeVF1ZXJ5SWQuc2V0KHF1ZXJ5SWQsIChpbmZvID0ge30pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluZm8uaW50ZXJ2YWwgPSBwb2xsSW50ZXJ2YWw7XG4gICAgICAgICAgICBpbmZvLm9wdGlvbnMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3B0aW9ucyksIHsgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknIH0pO1xuICAgICAgICAgICAgdmFyIG1heWJlRmV0Y2hfMSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgaW5mbyA9IF90aGlzLnBvbGxpbmdJbmZvQnlRdWVyeUlkLmdldChxdWVyeUlkKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5mbykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXMuY2hlY2tJbkZsaWdodChxdWVyeUlkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9sbF8xKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5mZXRjaFF1ZXJ5KHF1ZXJ5SWQsIGluZm8ub3B0aW9ucywgRmV0Y2hUeXBlLnBvbGwpLnRoZW4ocG9sbF8xLCBwb2xsXzEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciBwb2xsXzEgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGluZm8gPSBfdGhpcy5wb2xsaW5nSW5mb0J5UXVlcnlJZC5nZXQocXVlcnlJZCk7XG4gICAgICAgICAgICAgICAgaWYgKGluZm8pIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGluZm8udGltZW91dCk7XG4gICAgICAgICAgICAgICAgICAgIGluZm8udGltZW91dCA9IHNldFRpbWVvdXQobWF5YmVGZXRjaF8xLCBpbmZvLmludGVydmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKGxpc3RlbmVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRRdWVyeUxpc3RlbmVyKHF1ZXJ5SWQsIGxpc3RlbmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBvbGxfMSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBxdWVyeUlkO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5zdG9wUG9sbGluZ1F1ZXJ5ID0gZnVuY3Rpb24gKHF1ZXJ5SWQpIHtcbiAgICAgICAgdGhpcy5wb2xsaW5nSW5mb0J5UXVlcnlJZC5kZWxldGUocXVlcnlJZCk7XG4gICAgfTtcbiAgICByZXR1cm4gUXVlcnlNYW5hZ2VyO1xufSgpKTtcblxudmFyIERhdGFTdG9yZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGF0YVN0b3JlKGluaXRpYWxDYWNoZSkge1xuICAgICAgICB0aGlzLmNhY2hlID0gaW5pdGlhbENhY2hlO1xuICAgIH1cbiAgICBEYXRhU3RvcmUucHJvdG90eXBlLmdldENhY2hlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZTtcbiAgICB9O1xuICAgIERhdGFTdG9yZS5wcm90b3R5cGUubWFya1F1ZXJ5UmVzdWx0ID0gZnVuY3Rpb24gKHJlc3VsdCwgZG9jdW1lbnQsIHZhcmlhYmxlcywgZmV0Y2hNb3JlRm9yUXVlcnlJZCwgaWdub3JlRXJyb3JzKSB7XG4gICAgICAgIGlmIChpZ25vcmVFcnJvcnMgPT09IHZvaWQgMCkgeyBpZ25vcmVFcnJvcnMgPSBmYWxzZTsgfVxuICAgICAgICB2YXIgd3JpdGVXaXRoRXJyb3JzID0gIWdyYXBoUUxSZXN1bHRIYXNFcnJvcihyZXN1bHQpO1xuICAgICAgICBpZiAoaWdub3JlRXJyb3JzICYmIGdyYXBoUUxSZXN1bHRIYXNFcnJvcihyZXN1bHQpICYmIHJlc3VsdC5kYXRhKSB7XG4gICAgICAgICAgICB3cml0ZVdpdGhFcnJvcnMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZmV0Y2hNb3JlRm9yUXVlcnlJZCAmJiB3cml0ZVdpdGhFcnJvcnMpIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGUud3JpdGUoe1xuICAgICAgICAgICAgICAgIHJlc3VsdDogcmVzdWx0LmRhdGEsXG4gICAgICAgICAgICAgICAgZGF0YUlkOiAnUk9PVF9RVUVSWScsXG4gICAgICAgICAgICAgICAgcXVlcnk6IGRvY3VtZW50LFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERhdGFTdG9yZS5wcm90b3R5cGUubWFya1N1YnNjcmlwdGlvblJlc3VsdCA9IGZ1bmN0aW9uIChyZXN1bHQsIGRvY3VtZW50LCB2YXJpYWJsZXMpIHtcbiAgICAgICAgaWYgKCFncmFwaFFMUmVzdWx0SGFzRXJyb3IocmVzdWx0KSkge1xuICAgICAgICAgICAgdGhpcy5jYWNoZS53cml0ZSh7XG4gICAgICAgICAgICAgICAgcmVzdWx0OiByZXN1bHQuZGF0YSxcbiAgICAgICAgICAgICAgICBkYXRhSWQ6ICdST09UX1NVQlNDUklQVElPTicsXG4gICAgICAgICAgICAgICAgcXVlcnk6IGRvY3VtZW50LFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERhdGFTdG9yZS5wcm90b3R5cGUubWFya011dGF0aW9uSW5pdCA9IGZ1bmN0aW9uIChtdXRhdGlvbikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAobXV0YXRpb24ub3B0aW1pc3RpY1Jlc3BvbnNlKSB7XG4gICAgICAgICAgICB2YXIgb3B0aW1pc3RpY18xO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBtdXRhdGlvbi5vcHRpbWlzdGljUmVzcG9uc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBvcHRpbWlzdGljXzEgPSBtdXRhdGlvbi5vcHRpbWlzdGljUmVzcG9uc2UobXV0YXRpb24udmFyaWFibGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG9wdGltaXN0aWNfMSA9IG11dGF0aW9uLm9wdGltaXN0aWNSZXNwb25zZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2FjaGUucmVjb3JkT3B0aW1pc3RpY1RyYW5zYWN0aW9uKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICAgICAgdmFyIG9yaWcgPSBfdGhpcy5jYWNoZTtcbiAgICAgICAgICAgICAgICBfdGhpcy5jYWNoZSA9IGM7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMubWFya011dGF0aW9uUmVzdWx0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uSWQ6IG11dGF0aW9uLm11dGF0aW9uSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ6IHsgZGF0YTogb3B0aW1pc3RpY18xIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudDogbXV0YXRpb24uZG9jdW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IG11dGF0aW9uLnZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVF1ZXJpZXM6IG11dGF0aW9uLnVwZGF0ZVF1ZXJpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGU6IG11dGF0aW9uLnVwZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5jYWNoZSA9IG9yaWc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgbXV0YXRpb24ubXV0YXRpb25JZCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERhdGFTdG9yZS5wcm90b3R5cGUubWFya011dGF0aW9uUmVzdWx0ID0gZnVuY3Rpb24gKG11dGF0aW9uKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICghZ3JhcGhRTFJlc3VsdEhhc0Vycm9yKG11dGF0aW9uLnJlc3VsdCkpIHtcbiAgICAgICAgICAgIHZhciBjYWNoZVdyaXRlc18xID0gW3tcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBtdXRhdGlvbi5yZXN1bHQuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YUlkOiAnUk9PVF9NVVRBVElPTicsXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBtdXRhdGlvbi5kb2N1bWVudCxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiBtdXRhdGlvbi52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgfV07XG4gICAgICAgICAgICB2YXIgdXBkYXRlUXVlcmllc18xID0gbXV0YXRpb24udXBkYXRlUXVlcmllcztcbiAgICAgICAgICAgIGlmICh1cGRhdGVRdWVyaWVzXzEpIHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh1cGRhdGVRdWVyaWVzXzEpLmZvckVhY2goZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYSA9IHVwZGF0ZVF1ZXJpZXNfMVtpZF0sIHF1ZXJ5ID0gX2EucXVlcnksIHVwZGF0ZXIgPSBfYS51cGRhdGVyO1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2IgPSBfdGhpcy5jYWNoZS5kaWZmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeS5kb2N1bWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogcXVlcnkudmFyaWFibGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuUGFydGlhbERhdGE6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWlzdGljOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSksIGN1cnJlbnRRdWVyeVJlc3VsdCA9IF9iLnJlc3VsdCwgY29tcGxldGUgPSBfYi5jb21wbGV0ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBsZXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dFF1ZXJ5UmVzdWx0ID0gdHJ5RnVuY3Rpb25PckxvZ0Vycm9yKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXBkYXRlcihjdXJyZW50UXVlcnlSZXN1bHQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb25SZXN1bHQ6IG11dGF0aW9uLnJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlOYW1lOiBnZXRPcGVyYXRpb25OYW1lKHF1ZXJ5LmRvY3VtZW50KSB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5VmFyaWFibGVzOiBxdWVyeS52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0UXVlcnlSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVdyaXRlc18xLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ6IG5leHRRdWVyeVJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUlkOiAnUk9PVF9RVUVSWScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeS5kb2N1bWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiBxdWVyeS52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2FjaGUucGVyZm9ybVRyYW5zYWN0aW9uKGZ1bmN0aW9uIChjKSB7XG4gICAgICAgICAgICAgICAgY2FjaGVXcml0ZXNfMS5mb3JFYWNoKGZ1bmN0aW9uICh3cml0ZSkgeyByZXR1cm4gYy53cml0ZSh3cml0ZSk7IH0pO1xuICAgICAgICAgICAgICAgIHZhciB1cGRhdGUgPSBtdXRhdGlvbi51cGRhdGU7XG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICB0cnlGdW5jdGlvbk9yTG9nRXJyb3IoZnVuY3Rpb24gKCkgeyByZXR1cm4gdXBkYXRlKGMsIG11dGF0aW9uLnJlc3VsdCk7IH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBEYXRhU3RvcmUucHJvdG90eXBlLm1hcmtNdXRhdGlvbkNvbXBsZXRlID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciBtdXRhdGlvbklkID0gX2EubXV0YXRpb25JZCwgb3B0aW1pc3RpY1Jlc3BvbnNlID0gX2Eub3B0aW1pc3RpY1Jlc3BvbnNlO1xuICAgICAgICBpZiAob3B0aW1pc3RpY1Jlc3BvbnNlKSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlLnJlbW92ZU9wdGltaXN0aWMobXV0YXRpb25JZCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERhdGFTdG9yZS5wcm90b3R5cGUubWFya1VwZGF0ZVF1ZXJ5UmVzdWx0ID0gZnVuY3Rpb24gKGRvY3VtZW50LCB2YXJpYWJsZXMsIG5ld1Jlc3VsdCkge1xuICAgICAgICB0aGlzLmNhY2hlLndyaXRlKHtcbiAgICAgICAgICAgIHJlc3VsdDogbmV3UmVzdWx0LFxuICAgICAgICAgICAgZGF0YUlkOiAnUk9PVF9RVUVSWScsXG4gICAgICAgICAgICB2YXJpYWJsZXM6IHZhcmlhYmxlcyxcbiAgICAgICAgICAgIHF1ZXJ5OiBkb2N1bWVudCxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBEYXRhU3RvcmUucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZS5yZXNldCgpO1xuICAgIH07XG4gICAgcmV0dXJuIERhdGFTdG9yZTtcbn0oKSk7XG5cbnZhciB2ZXJzaW9uID0gXCIyLjYuMTBcIjtcblxudmFyIGhhc1N1Z2dlc3RlZERldnRvb2xzID0gZmFsc2U7XG52YXIgQXBvbGxvQ2xpZW50ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBBcG9sbG9DbGllbnQob3B0aW9ucykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLmRlZmF1bHRPcHRpb25zID0ge307XG4gICAgICAgIHRoaXMucmVzZXRTdG9yZUNhbGxiYWNrcyA9IFtdO1xuICAgICAgICB0aGlzLmNsZWFyU3RvcmVDYWxsYmFja3MgPSBbXTtcbiAgICAgICAgdmFyIGNhY2hlID0gb3B0aW9ucy5jYWNoZSwgX2EgPSBvcHRpb25zLnNzck1vZGUsIHNzck1vZGUgPSBfYSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYSwgX2IgPSBvcHRpb25zLnNzckZvcmNlRmV0Y2hEZWxheSwgc3NyRm9yY2VGZXRjaERlbGF5ID0gX2IgPT09IHZvaWQgMCA/IDAgOiBfYiwgY29ubmVjdFRvRGV2VG9vbHMgPSBvcHRpb25zLmNvbm5lY3RUb0RldlRvb2xzLCBfYyA9IG9wdGlvbnMucXVlcnlEZWR1cGxpY2F0aW9uLCBxdWVyeURlZHVwbGljYXRpb24gPSBfYyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9jLCBkZWZhdWx0T3B0aW9ucyA9IG9wdGlvbnMuZGVmYXVsdE9wdGlvbnMsIF9kID0gb3B0aW9ucy5hc3N1bWVJbW11dGFibGVSZXN1bHRzLCBhc3N1bWVJbW11dGFibGVSZXN1bHRzID0gX2QgPT09IHZvaWQgMCA/IGZhbHNlIDogX2QsIHJlc29sdmVycyA9IG9wdGlvbnMucmVzb2x2ZXJzLCB0eXBlRGVmcyA9IG9wdGlvbnMudHlwZURlZnMsIGZyYWdtZW50TWF0Y2hlciA9IG9wdGlvbnMuZnJhZ21lbnRNYXRjaGVyLCBjbGllbnRBd2FyZW5lc3NOYW1lID0gb3B0aW9ucy5uYW1lLCBjbGllbnRBd2FyZW5lc3NWZXJzaW9uID0gb3B0aW9ucy52ZXJzaW9uO1xuICAgICAgICB2YXIgbGluayA9IG9wdGlvbnMubGluaztcbiAgICAgICAgaWYgKCFsaW5rICYmIHJlc29sdmVycykge1xuICAgICAgICAgICAgbGluayA9IEFwb2xsb0xpbmsuZW1wdHkoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWxpbmsgfHwgIWNhY2hlKSB7XG4gICAgICAgICAgICB0aHJvdyBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBuZXcgSW52YXJpYW50RXJyb3IoNCkgOiBuZXcgSW52YXJpYW50RXJyb3IoXCJJbiBvcmRlciB0byBpbml0aWFsaXplIEFwb2xsbyBDbGllbnQsIHlvdSBtdXN0IHNwZWNpZnkgJ2xpbmsnIGFuZCAnY2FjaGUnIHByb3BlcnRpZXMgaW4gdGhlIG9wdGlvbnMgb2JqZWN0LlxcblwiICtcbiAgICAgICAgICAgICAgICBcIlRoZXNlIG9wdGlvbnMgYXJlIHBhcnQgb2YgdGhlIHVwZ3JhZGUgcmVxdWlyZW1lbnRzIHdoZW4gbWlncmF0aW5nIGZyb20gQXBvbGxvIENsaWVudCAxLnggdG8gQXBvbGxvIENsaWVudCAyLnguXFxuXCIgK1xuICAgICAgICAgICAgICAgIFwiRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSB2aXNpdDogaHR0cHM6Ly93d3cuYXBvbGxvZ3JhcGhxbC5jb20vZG9jcy90dXRvcmlhbC9jbGllbnQuaHRtbCNhcG9sbG8tY2xpZW50LXNldHVwXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGluayA9IGxpbms7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBjYWNoZTtcbiAgICAgICAgdGhpcy5zdG9yZSA9IG5ldyBEYXRhU3RvcmUoY2FjaGUpO1xuICAgICAgICB0aGlzLmRpc2FibGVOZXR3b3JrRmV0Y2hlcyA9IHNzck1vZGUgfHwgc3NyRm9yY2VGZXRjaERlbGF5ID4gMDtcbiAgICAgICAgdGhpcy5xdWVyeURlZHVwbGljYXRpb24gPSBxdWVyeURlZHVwbGljYXRpb247XG4gICAgICAgIHRoaXMuZGVmYXVsdE9wdGlvbnMgPSBkZWZhdWx0T3B0aW9ucyB8fCB7fTtcbiAgICAgICAgdGhpcy50eXBlRGVmcyA9IHR5cGVEZWZzO1xuICAgICAgICBpZiAoc3NyRm9yY2VGZXRjaERlbGF5KSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIChfdGhpcy5kaXNhYmxlTmV0d29ya0ZldGNoZXMgPSBmYWxzZSk7IH0sIHNzckZvcmNlRmV0Y2hEZWxheSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53YXRjaFF1ZXJ5ID0gdGhpcy53YXRjaFF1ZXJ5LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMucXVlcnkgPSB0aGlzLnF1ZXJ5LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMubXV0YXRlID0gdGhpcy5tdXRhdGUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5yZXNldFN0b3JlID0gdGhpcy5yZXNldFN0b3JlLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMucmVGZXRjaE9ic2VydmFibGVRdWVyaWVzID0gdGhpcy5yZUZldGNoT2JzZXJ2YWJsZVF1ZXJpZXMuYmluZCh0aGlzKTtcbiAgICAgICAgdmFyIGRlZmF1bHRDb25uZWN0VG9EZXZUb29scyA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgICAgICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICAhd2luZG93Ll9fQVBPTExPX0NMSUVOVF9fO1xuICAgICAgICBpZiAodHlwZW9mIGNvbm5lY3RUb0RldlRvb2xzID09PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgPyBkZWZhdWx0Q29ubmVjdFRvRGV2VG9vbHNcbiAgICAgICAgICAgIDogY29ubmVjdFRvRGV2VG9vbHMgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHdpbmRvdy5fX0FQT0xMT19DTElFTlRfXyA9IHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFoYXNTdWdnZXN0ZWREZXZ0b29scyAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICBoYXNTdWdnZXN0ZWREZXZ0b29scyA9IHRydWU7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgICAgICB3aW5kb3cuZG9jdW1lbnQgJiZcbiAgICAgICAgICAgICAgICB3aW5kb3cudG9wID09PSB3aW5kb3cuc2VsZikge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygd2luZG93Ll9fQVBPTExPX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubmF2aWdhdG9yICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignQ2hyb21lJykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZygnRG93bmxvYWQgdGhlIEFwb2xsbyBEZXZUb29scyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9yIGEgYmV0dGVyIGRldmVsb3BtZW50IGV4cGVyaWVuY2U6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdodHRwczovL2Nocm9tZS5nb29nbGUuY29tL3dlYnN0b3JlL2RldGFpbC9hcG9sbG8tY2xpZW50LWRldmVsb3Blci10L2pka2tua2tiZWJiYXBpbGdvZWNjY2lnbGtmYm1ibmZtJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgdGhpcy5sb2NhbFN0YXRlID0gbmV3IExvY2FsU3RhdGUoe1xuICAgICAgICAgICAgY2FjaGU6IGNhY2hlLFxuICAgICAgICAgICAgY2xpZW50OiB0aGlzLFxuICAgICAgICAgICAgcmVzb2x2ZXJzOiByZXNvbHZlcnMsXG4gICAgICAgICAgICBmcmFnbWVudE1hdGNoZXI6IGZyYWdtZW50TWF0Y2hlcixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucXVlcnlNYW5hZ2VyID0gbmV3IFF1ZXJ5TWFuYWdlcih7XG4gICAgICAgICAgICBsaW5rOiB0aGlzLmxpbmssXG4gICAgICAgICAgICBzdG9yZTogdGhpcy5zdG9yZSxcbiAgICAgICAgICAgIHF1ZXJ5RGVkdXBsaWNhdGlvbjogcXVlcnlEZWR1cGxpY2F0aW9uLFxuICAgICAgICAgICAgc3NyTW9kZTogc3NyTW9kZSxcbiAgICAgICAgICAgIGNsaWVudEF3YXJlbmVzczoge1xuICAgICAgICAgICAgICAgIG5hbWU6IGNsaWVudEF3YXJlbmVzc05hbWUsXG4gICAgICAgICAgICAgICAgdmVyc2lvbjogY2xpZW50QXdhcmVuZXNzVmVyc2lvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2NhbFN0YXRlOiB0aGlzLmxvY2FsU3RhdGUsXG4gICAgICAgICAgICBhc3N1bWVJbW11dGFibGVSZXN1bHRzOiBhc3N1bWVJbW11dGFibGVSZXN1bHRzLFxuICAgICAgICAgICAgb25Ccm9hZGNhc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMuZGV2VG9vbHNIb29rQ2IpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuZGV2VG9vbHNIb29rQ2Ioe1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcmllczogX3RoaXMucXVlcnlNYW5hZ2VyLnF1ZXJ5U3RvcmUuZ2V0U3RvcmUoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbnM6IF90aGlzLnF1ZXJ5TWFuYWdlci5tdXRhdGlvblN0b3JlLmdldFN0b3JlKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVdpdGhPcHRpbWlzdGljUmVzdWx0czogX3RoaXMuY2FjaGUuZXh0cmFjdCh0cnVlKSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUuc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5xdWVyeU1hbmFnZXIuc3RvcCgpO1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS53YXRjaFF1ZXJ5ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdE9wdGlvbnMud2F0Y2hRdWVyeSkge1xuICAgICAgICAgICAgb3B0aW9ucyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCB0aGlzLmRlZmF1bHRPcHRpb25zLndhdGNoUXVlcnkpLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlTmV0d29ya0ZldGNoZXMgJiZcbiAgICAgICAgICAgIChvcHRpb25zLmZldGNoUG9saWN5ID09PSAnbmV0d29yay1vbmx5JyB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbnMuZmV0Y2hQb2xpY3kgPT09ICdjYWNoZS1hbmQtbmV0d29yaycpKSB7XG4gICAgICAgICAgICBvcHRpb25zID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9wdGlvbnMpLCB7IGZldGNoUG9saWN5OiAnY2FjaGUtZmlyc3QnIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5TWFuYWdlci53YXRjaFF1ZXJ5KG9wdGlvbnMpO1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRPcHRpb25zLnF1ZXJ5KSB7XG4gICAgICAgICAgICBvcHRpb25zID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHRoaXMuZGVmYXVsdE9wdGlvbnMucXVlcnkpLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQob3B0aW9ucy5mZXRjaFBvbGljeSAhPT0gJ2NhY2hlLWFuZC1uZXR3b3JrJywgNSkgOiBpbnZhcmlhbnQob3B0aW9ucy5mZXRjaFBvbGljeSAhPT0gJ2NhY2hlLWFuZC1uZXR3b3JrJywgJ1RoZSBjYWNoZS1hbmQtbmV0d29yayBmZXRjaFBvbGljeSBkb2VzIG5vdCB3b3JrIHdpdGggY2xpZW50LnF1ZXJ5LCBiZWNhdXNlICcgK1xuICAgICAgICAgICAgJ2NsaWVudC5xdWVyeSBjYW4gb25seSByZXR1cm4gYSBzaW5nbGUgcmVzdWx0LiBQbGVhc2UgdXNlIGNsaWVudC53YXRjaFF1ZXJ5ICcgK1xuICAgICAgICAgICAgJ3RvIHJlY2VpdmUgbXVsdGlwbGUgcmVzdWx0cyBmcm9tIHRoZSBjYWNoZSBhbmQgdGhlIG5ldHdvcmssIG9yIGNvbnNpZGVyICcgK1xuICAgICAgICAgICAgJ3VzaW5nIGEgZGlmZmVyZW50IGZldGNoUG9saWN5LCBzdWNoIGFzIGNhY2hlLWZpcnN0IG9yIG5ldHdvcmstb25seS4nKTtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZU5ldHdvcmtGZXRjaGVzICYmIG9wdGlvbnMuZmV0Y2hQb2xpY3kgPT09ICduZXR3b3JrLW9ubHknKSB7XG4gICAgICAgICAgICBvcHRpb25zID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9wdGlvbnMpLCB7IGZldGNoUG9saWN5OiAnY2FjaGUtZmlyc3QnIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5TWFuYWdlci5xdWVyeShvcHRpb25zKTtcbiAgICB9O1xuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUubXV0YXRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdE9wdGlvbnMubXV0YXRlKSB7XG4gICAgICAgICAgICBvcHRpb25zID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHRoaXMuZGVmYXVsdE9wdGlvbnMubXV0YXRlKSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlNYW5hZ2VyLm11dGF0ZShvcHRpb25zKTtcbiAgICB9O1xuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlNYW5hZ2VyLnN0YXJ0R3JhcGhRTFN1YnNjcmlwdGlvbihvcHRpb25zKTtcbiAgICB9O1xuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUucmVhZFF1ZXJ5ID0gZnVuY3Rpb24gKG9wdGlvbnMsIG9wdGltaXN0aWMpIHtcbiAgICAgICAgaWYgKG9wdGltaXN0aWMgPT09IHZvaWQgMCkgeyBvcHRpbWlzdGljID0gZmFsc2U7IH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGUucmVhZFF1ZXJ5KG9wdGlvbnMsIG9wdGltaXN0aWMpO1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS5yZWFkRnJhZ21lbnQgPSBmdW5jdGlvbiAob3B0aW9ucywgb3B0aW1pc3RpYykge1xuICAgICAgICBpZiAob3B0aW1pc3RpYyA9PT0gdm9pZCAwKSB7IG9wdGltaXN0aWMgPSBmYWxzZTsgfVxuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZS5yZWFkRnJhZ21lbnQob3B0aW9ucywgb3B0aW1pc3RpYyk7XG4gICAgfTtcbiAgICBBcG9sbG9DbGllbnQucHJvdG90eXBlLndyaXRlUXVlcnkgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5jYWNoZS53cml0ZVF1ZXJ5KG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnF1ZXJ5TWFuYWdlci5icm9hZGNhc3RRdWVyaWVzKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBBcG9sbG9DbGllbnQucHJvdG90eXBlLndyaXRlRnJhZ21lbnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5jYWNoZS53cml0ZUZyYWdtZW50KG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnF1ZXJ5TWFuYWdlci5icm9hZGNhc3RRdWVyaWVzKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBBcG9sbG9DbGllbnQucHJvdG90eXBlLndyaXRlRGF0YSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzLmNhY2hlLndyaXRlRGF0YShvcHRpb25zKTtcbiAgICAgICAgdGhpcy5xdWVyeU1hbmFnZXIuYnJvYWRjYXN0UXVlcmllcygpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS5fX2FjdGlvbkhvb2tGb3JEZXZUb29scyA9IGZ1bmN0aW9uIChjYikge1xuICAgICAgICB0aGlzLmRldlRvb2xzSG9va0NiID0gY2I7XG4gICAgfTtcbiAgICBBcG9sbG9DbGllbnQucHJvdG90eXBlLl9fcmVxdWVzdFJhdyA9IGZ1bmN0aW9uIChwYXlsb2FkKSB7XG4gICAgICAgIHJldHVybiBleGVjdXRlKHRoaXMubGluaywgcGF5bG9hZCk7XG4gICAgfTtcbiAgICBBcG9sbG9DbGllbnQucHJvdG90eXBlLmluaXRRdWVyeU1hbmFnZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiB8fCBpbnZhcmlhbnQud2FybignQ2FsbGluZyB0aGUgaW5pdFF1ZXJ5TWFuYWdlciBtZXRob2QgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgJyArXG4gICAgICAgICAgICAnYW5kIGl0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIEFwb2xsb0NsaWVudCBpbiB2ZXJzaW9uIDMuMC4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlNYW5hZ2VyO1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS5yZXNldFN0b3JlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF90aGlzLnF1ZXJ5TWFuYWdlci5jbGVhclN0b3JlKCk7IH0pXG4gICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBQcm9taXNlLmFsbChfdGhpcy5yZXNldFN0b3JlQ2FsbGJhY2tzLm1hcChmdW5jdGlvbiAoZm4pIHsgcmV0dXJuIGZuKCk7IH0pKTsgfSlcbiAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF90aGlzLnJlRmV0Y2hPYnNlcnZhYmxlUXVlcmllcygpOyB9KTtcbiAgICB9O1xuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUuY2xlYXJTdG9yZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBfdGhpcy5xdWVyeU1hbmFnZXIuY2xlYXJTdG9yZSgpOyB9KVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gUHJvbWlzZS5hbGwoX3RoaXMuY2xlYXJTdG9yZUNhbGxiYWNrcy5tYXAoZnVuY3Rpb24gKGZuKSB7IHJldHVybiBmbigpOyB9KSk7IH0pO1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS5vblJlc2V0U3RvcmUgPSBmdW5jdGlvbiAoY2IpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdGhpcy5yZXNldFN0b3JlQ2FsbGJhY2tzLnB1c2goY2IpO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMucmVzZXRTdG9yZUNhbGxiYWNrcyA9IF90aGlzLnJlc2V0U3RvcmVDYWxsYmFja3MuZmlsdGVyKGZ1bmN0aW9uIChjKSB7IHJldHVybiBjICE9PSBjYjsgfSk7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICBBcG9sbG9DbGllbnQucHJvdG90eXBlLm9uQ2xlYXJTdG9yZSA9IGZ1bmN0aW9uIChjYikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLmNsZWFyU3RvcmVDYWxsYmFja3MucHVzaChjYik7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpcy5jbGVhclN0b3JlQ2FsbGJhY2tzID0gX3RoaXMuY2xlYXJTdG9yZUNhbGxiYWNrcy5maWx0ZXIoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMgIT09IGNiOyB9KTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUucmVGZXRjaE9ic2VydmFibGVRdWVyaWVzID0gZnVuY3Rpb24gKGluY2x1ZGVTdGFuZGJ5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5TWFuYWdlci5yZUZldGNoT2JzZXJ2YWJsZVF1ZXJpZXMoaW5jbHVkZVN0YW5kYnkpO1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24gKG9wdGltaXN0aWMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGUuZXh0cmFjdChvcHRpbWlzdGljKTtcbiAgICB9O1xuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUucmVzdG9yZSA9IGZ1bmN0aW9uIChzZXJpYWxpemVkU3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGUucmVzdG9yZShzZXJpYWxpemVkU3RhdGUpO1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS5hZGRSZXNvbHZlcnMgPSBmdW5jdGlvbiAocmVzb2x2ZXJzKSB7XG4gICAgICAgIHRoaXMubG9jYWxTdGF0ZS5hZGRSZXNvbHZlcnMocmVzb2x2ZXJzKTtcbiAgICB9O1xuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUuc2V0UmVzb2x2ZXJzID0gZnVuY3Rpb24gKHJlc29sdmVycykge1xuICAgICAgICB0aGlzLmxvY2FsU3RhdGUuc2V0UmVzb2x2ZXJzKHJlc29sdmVycyk7XG4gICAgfTtcbiAgICBBcG9sbG9DbGllbnQucHJvdG90eXBlLmdldFJlc29sdmVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxTdGF0ZS5nZXRSZXNvbHZlcnMoKTtcbiAgICB9O1xuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUuc2V0TG9jYWxTdGF0ZUZyYWdtZW50TWF0Y2hlciA9IGZ1bmN0aW9uIChmcmFnbWVudE1hdGNoZXIpIHtcbiAgICAgICAgdGhpcy5sb2NhbFN0YXRlLnNldEZyYWdtZW50TWF0Y2hlcihmcmFnbWVudE1hdGNoZXIpO1xuICAgIH07XG4gICAgcmV0dXJuIEFwb2xsb0NsaWVudDtcbn0oKSk7XG5cbmV4cG9ydCBkZWZhdWx0IEFwb2xsb0NsaWVudDtcbmV4cG9ydCB7IEFwb2xsb0NsaWVudCwgQXBvbGxvRXJyb3IsIEZldGNoVHlwZSwgTmV0d29ya1N0YXR1cywgT2JzZXJ2YWJsZVF1ZXJ5LCBpc0Fwb2xsb0Vycm9yIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1idW5kbGUuZXNtLmpzLm1hcFxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/apollo-client/bundle.esm.js\n");
 
/***/ }),
 
/***/ "./node_modules/apollo-client/node_modules/symbol-observable/es/index.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/apollo-client/node_modules/symbol-observable/es/index.js ***!
  \*******************************************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ponyfill_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ponyfill.js */ \"./node_modules/apollo-client/node_modules/symbol-observable/es/ponyfill.js\");\n/* module decorator */ module = __webpack_require__.hmd(module);\n/* global window */\n\n\nvar root;\n\nif (typeof self !== 'undefined') {\n  root = self;\n} else if (typeof window !== 'undefined') {\n  root = window;\n} else if (typeof __webpack_require__.g !== 'undefined') {\n  root = __webpack_require__.g;\n} else if (true) {\n  root = module;\n} else {}\n\nvar result = (0,_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(root);\n/* harmony default export */ __webpack_exports__[\"default\"] = (result);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXBvbGxvLWNsaWVudC9ub2RlX21vZHVsZXMvc3ltYm9sLW9ic2VydmFibGUvZXMvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDcUM7O0FBRXJDOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQSxFQUFFLGdCQUFnQixxQkFBTTtBQUN4QixTQUFTLHFCQUFNO0FBQ2YsRUFBRSxTQUFTLElBQTZCO0FBQ3hDO0FBQ0EsRUFBRSxLQUFLLEVBRU47O0FBRUQsYUFBYSx3REFBUTtBQUNyQiwrREFBZSxNQUFNLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2Fwb2xsby1jbGllbnQvbm9kZV9tb2R1bGVzL3N5bWJvbC1vYnNlcnZhYmxlL2VzL2luZGV4LmpzPzIxN2UiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIHdpbmRvdyAqL1xuaW1wb3J0IHBvbnlmaWxsIGZyb20gJy4vcG9ueWZpbGwuanMnO1xuXG52YXIgcm9vdDtcblxuaWYgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJykge1xuICByb290ID0gc2VsZjtcbn0gZWxzZSBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgcm9vdCA9IHdpbmRvdztcbn0gZWxzZSBpZiAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgcm9vdCA9IGdsb2JhbDtcbn0gZWxzZSBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgcm9vdCA9IG1vZHVsZTtcbn0gZWxzZSB7XG4gIHJvb3QgPSBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xufVxuXG52YXIgcmVzdWx0ID0gcG9ueWZpbGwocm9vdCk7XG5leHBvcnQgZGVmYXVsdCByZXN1bHQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/apollo-client/node_modules/symbol-observable/es/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/apollo-client/node_modules/symbol-observable/es/ponyfill.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/apollo-client/node_modules/symbol-observable/es/ponyfill.js ***!
  \**********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ symbolObservablePonyfill; }\n/* harmony export */ });\nfunction symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXBvbGxvLWNsaWVudC9ub2RlX21vZHVsZXMvc3ltYm9sLW9ic2VydmFibGUvZXMvcG9ueWZpbGwuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXBvbGxvLWNsaWVudC9ub2RlX21vZHVsZXMvc3ltYm9sLW9ic2VydmFibGUvZXMvcG9ueWZpbGwuanM/NWRhMCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzeW1ib2xPYnNlcnZhYmxlUG9ueWZpbGwocm9vdCkge1xuXHR2YXIgcmVzdWx0O1xuXHR2YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cblx0aWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicpIHtcblx0XHRpZiAoU3ltYm9sLm9ic2VydmFibGUpIHtcblx0XHRcdHJlc3VsdCA9IFN5bWJvbC5vYnNlcnZhYmxlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXN1bHQgPSBTeW1ib2woJ29ic2VydmFibGUnKTtcblx0XHRcdFN5bWJvbC5vYnNlcnZhYmxlID0gcmVzdWx0O1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRyZXN1bHQgPSAnQEBvYnNlcnZhYmxlJztcblx0fVxuXG5cdHJldHVybiByZXN1bHQ7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/apollo-client/node_modules/symbol-observable/es/ponyfill.js\n");
 
/***/ }),
 
/***/ "./node_modules/apollo-link/lib/bundle.esm.js":
/*!****************************************************!*\
  !*** ./node_modules/apollo-link/lib/bundle.esm.js ***!
  \****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloLink\": function() { return /* binding */ ApolloLink; },\n/* harmony export */   \"Observable\": function() { return /* reexport safe */ zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */   \"concat\": function() { return /* binding */ concat; },\n/* harmony export */   \"createOperation\": function() { return /* binding */ createOperation; },\n/* harmony export */   \"empty\": function() { return /* binding */ empty; },\n/* harmony export */   \"execute\": function() { return /* binding */ execute; },\n/* harmony export */   \"from\": function() { return /* binding */ from; },\n/* harmony export */   \"fromError\": function() { return /* binding */ fromError; },\n/* harmony export */   \"fromPromise\": function() { return /* binding */ fromPromise; },\n/* harmony export */   \"getOperationName\": function() { return /* reexport safe */ apollo_utilities__WEBPACK_IMPORTED_MODULE_2__.getOperationName; },\n/* harmony export */   \"makePromise\": function() { return /* binding */ makePromise; },\n/* harmony export */   \"split\": function() { return /* binding */ split; },\n/* harmony export */   \"toPromise\": function() { return /* binding */ toPromise; }\n/* harmony export */ });\n/* harmony import */ var zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! zen-observable-ts */ \"./node_modules/apollo-link/node_modules/zen-observable-ts/lib/bundle.esm.js\");\n/* harmony import */ var ts_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ts-invariant */ \"./node_modules/ts-invariant/lib/invariant.esm.js\");\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var apollo_utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! apollo-utilities */ \"./node_modules/apollo-utilities/lib/bundle.esm.js\");\n\n\n\n\n\n\n\nfunction validateOperation(operation) {\n    var OPERATION_FIELDS = [\n        'query',\n        'operationName',\n        'variables',\n        'extensions',\n        'context',\n    ];\n    for (var _i = 0, _a = Object.keys(operation); _i < _a.length; _i++) {\n        var key = _a[_i];\n        if (OPERATION_FIELDS.indexOf(key) < 0) {\n            throw  false ? 0 : new ts_invariant__WEBPACK_IMPORTED_MODULE_1__.InvariantError(\"illegal argument: \" + key);\n        }\n    }\n    return operation;\n}\nvar LinkError = (function (_super) {\n    (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__extends)(LinkError, _super);\n    function LinkError(message, link) {\n        var _this = _super.call(this, message) || this;\n        _this.link = link;\n        return _this;\n    }\n    return LinkError;\n}(Error));\nfunction isTerminating(link) {\n    return link.request.length <= 1;\n}\nfunction toPromise(observable) {\n    var completed = false;\n    return new Promise(function (resolve, reject) {\n        observable.subscribe({\n            next: function (data) {\n                if (completed) {\n                     false || ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant.warn(\"Promise Wrapper does not support multiple results from Observable\");\n                }\n                else {\n                    completed = true;\n                    resolve(data);\n                }\n            },\n            error: reject,\n        });\n    });\n}\nvar makePromise = toPromise;\nfunction fromPromise(promise) {\n    return new zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__[\"default\"](function (observer) {\n        promise\n            .then(function (value) {\n            observer.next(value);\n            observer.complete();\n        })\n            .catch(observer.error.bind(observer));\n    });\n}\nfunction fromError(errorValue) {\n    return new zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__[\"default\"](function (observer) {\n        observer.error(errorValue);\n    });\n}\nfunction transformOperation(operation) {\n    var transformedOperation = {\n        variables: operation.variables || {},\n        extensions: operation.extensions || {},\n        operationName: operation.operationName,\n        query: operation.query,\n    };\n    if (!transformedOperation.operationName) {\n        transformedOperation.operationName =\n            typeof transformedOperation.query !== 'string'\n                ? (0,apollo_utilities__WEBPACK_IMPORTED_MODULE_2__.getOperationName)(transformedOperation.query)\n                : '';\n    }\n    return transformedOperation;\n}\nfunction createOperation(starting, operation) {\n    var context = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, starting);\n    var setContext = function (next) {\n        if (typeof next === 'function') {\n            context = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, context, next(context));\n        }\n        else {\n            context = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, context, next);\n        }\n    };\n    var getContext = function () { return ((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, context)); };\n    Object.defineProperty(operation, 'setContext', {\n        enumerable: false,\n        value: setContext,\n    });\n    Object.defineProperty(operation, 'getContext', {\n        enumerable: false,\n        value: getContext,\n    });\n    Object.defineProperty(operation, 'toKey', {\n        enumerable: false,\n        value: function () { return getKey(operation); },\n    });\n    return operation;\n}\nfunction getKey(operation) {\n    var query = operation.query, variables = operation.variables, operationName = operation.operationName;\n    return JSON.stringify([operationName, query, variables]);\n}\n\nfunction passthrough(op, forward) {\n    return forward ? forward(op) : zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__[\"default\"].of();\n}\nfunction toLink(handler) {\n    return typeof handler === 'function' ? new ApolloLink(handler) : handler;\n}\nfunction empty() {\n    return new ApolloLink(function () { return zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__[\"default\"].of(); });\n}\nfunction from(links) {\n    if (links.length === 0)\n        return empty();\n    return links.map(toLink).reduce(function (x, y) { return x.concat(y); });\n}\nfunction split(test, left, right) {\n    var leftLink = toLink(left);\n    var rightLink = toLink(right || new ApolloLink(passthrough));\n    if (isTerminating(leftLink) && isTerminating(rightLink)) {\n        return new ApolloLink(function (operation) {\n            return test(operation)\n                ? leftLink.request(operation) || zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__[\"default\"].of()\n                : rightLink.request(operation) || zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__[\"default\"].of();\n        });\n    }\n    else {\n        return new ApolloLink(function (operation, forward) {\n            return test(operation)\n                ? leftLink.request(operation, forward) || zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__[\"default\"].of()\n                : rightLink.request(operation, forward) || zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__[\"default\"].of();\n        });\n    }\n}\nvar concat = function (first, second) {\n    var firstLink = toLink(first);\n    if (isTerminating(firstLink)) {\n         false || ts_invariant__WEBPACK_IMPORTED_MODULE_1__.invariant.warn(new LinkError(\"You are calling concat on a terminating link, which will have no effect\", firstLink));\n        return firstLink;\n    }\n    var nextLink = toLink(second);\n    if (isTerminating(nextLink)) {\n        return new ApolloLink(function (operation) {\n            return firstLink.request(operation, function (op) { return nextLink.request(op) || zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__[\"default\"].of(); }) || zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__[\"default\"].of();\n        });\n    }\n    else {\n        return new ApolloLink(function (operation, forward) {\n            return (firstLink.request(operation, function (op) {\n                return nextLink.request(op, forward) || zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__[\"default\"].of();\n            }) || zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__[\"default\"].of());\n        });\n    }\n};\nvar ApolloLink = (function () {\n    function ApolloLink(request) {\n        if (request)\n            this.request = request;\n    }\n    ApolloLink.prototype.split = function (test, left, right) {\n        return this.concat(split(test, left, right || new ApolloLink(passthrough)));\n    };\n    ApolloLink.prototype.concat = function (next) {\n        return concat(this, next);\n    };\n    ApolloLink.prototype.request = function (operation, forward) {\n        throw  false ? 0 : new ts_invariant__WEBPACK_IMPORTED_MODULE_1__.InvariantError('request is not implemented');\n    };\n    ApolloLink.empty = empty;\n    ApolloLink.from = from;\n    ApolloLink.split = split;\n    ApolloLink.execute = execute;\n    return ApolloLink;\n}());\nfunction execute(link, operation) {\n    return (link.request(createOperation(operation.context, transformOperation(validateOperation(operation)))) || zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__[\"default\"].of());\n}\n\n\n//# sourceMappingURL=bundle.esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXBvbGxvLWxpbmsvbGliL2J1bmRsZS5lc20uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMkM7QUFDZTtBQUNEO0FBQ2I7QUFDUTtBQUNBOztBQUVwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELGdCQUFnQjtBQUNsRTtBQUNBO0FBQ0Esa0JBQWtCLE1BQXFDLEdBQUcsQ0FBcUIsT0FBTyx3REFBYztBQUNwRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxnREFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsTUFBcUMsSUFBSSx3REFBYztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlEQUFVO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxlQUFlLHlEQUFVO0FBQ3pCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1Qyw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGtFQUFnQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLCtDQUFRLEdBQUc7QUFDN0I7QUFDQTtBQUNBLHNCQUFzQiwrQ0FBUSxHQUFHO0FBQ2pDO0FBQ0E7QUFDQSxzQkFBc0IsK0NBQVEsR0FBRztBQUNqQztBQUNBO0FBQ0EsbUNBQW1DLFFBQVEsK0NBQVEsR0FBRztBQUN0RDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSw2QkFBNkIsMkJBQTJCO0FBQ3hELEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQ0FBbUMsNERBQWE7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxPQUFPLDREQUFhLEtBQUs7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0QscUJBQXFCO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQWlELDREQUFhO0FBQzlELGtEQUFrRCw0REFBYTtBQUMvRCxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsNERBQWE7QUFDdkUsMkRBQTJELDREQUFhO0FBQ3hFLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxNQUFxQyxJQUFJLHdEQUFjO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRUFBZ0UsK0JBQStCLDREQUFhLEtBQUssS0FBSyw0REFBYTtBQUNuSSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0QsNERBQWE7QUFDckUsYUFBYSxLQUFLLDREQUFhO0FBQy9CLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFxQyxHQUFHLENBQXFCLE9BQU8sd0RBQWM7QUFDaEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0Esa0hBQWtILDREQUFhO0FBQy9IOztBQUU0SDtBQUM1SCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXBvbGxvLWxpbmsvbGliL2J1bmRsZS5lc20uanM/M2UxYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT2JzZXJ2YWJsZSBmcm9tICd6ZW4tb2JzZXJ2YWJsZS10cyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE9ic2VydmFibGUgfSBmcm9tICd6ZW4tb2JzZXJ2YWJsZS10cyc7XG5pbXBvcnQgeyBpbnZhcmlhbnQsIEludmFyaWFudEVycm9yIH0gZnJvbSAndHMtaW52YXJpYW50JztcbmltcG9ydCB7IF9fZXh0ZW5kcywgX19hc3NpZ24gfSBmcm9tICd0c2xpYic7XG5pbXBvcnQgeyBnZXRPcGVyYXRpb25OYW1lIH0gZnJvbSAnYXBvbGxvLXV0aWxpdGllcyc7XG5leHBvcnQgeyBnZXRPcGVyYXRpb25OYW1lIH0gZnJvbSAnYXBvbGxvLXV0aWxpdGllcyc7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlT3BlcmF0aW9uKG9wZXJhdGlvbikge1xuICAgIHZhciBPUEVSQVRJT05fRklFTERTID0gW1xuICAgICAgICAncXVlcnknLFxuICAgICAgICAnb3BlcmF0aW9uTmFtZScsXG4gICAgICAgICd2YXJpYWJsZXMnLFxuICAgICAgICAnZXh0ZW5zaW9ucycsXG4gICAgICAgICdjb250ZXh0JyxcbiAgICBdO1xuICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSBPYmplY3Qua2V5cyhvcGVyYXRpb24pOyBfaSA8IF9hLmxlbmd0aDsgX2krKykge1xuICAgICAgICB2YXIga2V5ID0gX2FbX2ldO1xuICAgICAgICBpZiAoT1BFUkFUSU9OX0ZJRUxEUy5pbmRleE9mKGtleSkgPCAwKSB7XG4gICAgICAgICAgICB0aHJvdyBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBuZXcgSW52YXJpYW50RXJyb3IoMikgOiBuZXcgSW52YXJpYW50RXJyb3IoXCJpbGxlZ2FsIGFyZ3VtZW50OiBcIiArIGtleSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9wZXJhdGlvbjtcbn1cbnZhciBMaW5rRXJyb3IgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhMaW5rRXJyb3IsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTGlua0Vycm9yKG1lc3NhZ2UsIGxpbmspIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgbWVzc2FnZSkgfHwgdGhpcztcbiAgICAgICAgX3RoaXMubGluayA9IGxpbms7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIExpbmtFcnJvcjtcbn0oRXJyb3IpKTtcbmZ1bmN0aW9uIGlzVGVybWluYXRpbmcobGluaykge1xuICAgIHJldHVybiBsaW5rLnJlcXVlc3QubGVuZ3RoIDw9IDE7XG59XG5mdW5jdGlvbiB0b1Byb21pc2Uob2JzZXJ2YWJsZSkge1xuICAgIHZhciBjb21wbGV0ZWQgPSBmYWxzZTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBvYnNlcnZhYmxlLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIGlmIChjb21wbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiIHx8IGludmFyaWFudC53YXJuKFwiUHJvbWlzZSBXcmFwcGVyIGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgcmVzdWx0cyBmcm9tIE9ic2VydmFibGVcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogcmVqZWN0LFxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbnZhciBtYWtlUHJvbWlzZSA9IHRvUHJvbWlzZTtcbmZ1bmN0aW9uIGZyb21Qcm9taXNlKHByb21pc2UpIHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoZnVuY3Rpb24gKG9ic2VydmVyKSB7XG4gICAgICAgIHByb21pc2VcbiAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKG9ic2VydmVyLmVycm9yLmJpbmQob2JzZXJ2ZXIpKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGZyb21FcnJvcihlcnJvclZhbHVlKSB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJvclZhbHVlKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHRyYW5zZm9ybU9wZXJhdGlvbihvcGVyYXRpb24pIHtcbiAgICB2YXIgdHJhbnNmb3JtZWRPcGVyYXRpb24gPSB7XG4gICAgICAgIHZhcmlhYmxlczogb3BlcmF0aW9uLnZhcmlhYmxlcyB8fCB7fSxcbiAgICAgICAgZXh0ZW5zaW9uczogb3BlcmF0aW9uLmV4dGVuc2lvbnMgfHwge30sXG4gICAgICAgIG9wZXJhdGlvbk5hbWU6IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLFxuICAgICAgICBxdWVyeTogb3BlcmF0aW9uLnF1ZXJ5LFxuICAgIH07XG4gICAgaWYgKCF0cmFuc2Zvcm1lZE9wZXJhdGlvbi5vcGVyYXRpb25OYW1lKSB7XG4gICAgICAgIHRyYW5zZm9ybWVkT3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgPVxuICAgICAgICAgICAgdHlwZW9mIHRyYW5zZm9ybWVkT3BlcmF0aW9uLnF1ZXJ5ICE9PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgID8gZ2V0T3BlcmF0aW9uTmFtZSh0cmFuc2Zvcm1lZE9wZXJhdGlvbi5xdWVyeSlcbiAgICAgICAgICAgICAgICA6ICcnO1xuICAgIH1cbiAgICByZXR1cm4gdHJhbnNmb3JtZWRPcGVyYXRpb247XG59XG5mdW5jdGlvbiBjcmVhdGVPcGVyYXRpb24oc3RhcnRpbmcsIG9wZXJhdGlvbikge1xuICAgIHZhciBjb250ZXh0ID0gX19hc3NpZ24oe30sIHN0YXJ0aW5nKTtcbiAgICB2YXIgc2V0Q29udGV4dCA9IGZ1bmN0aW9uIChuZXh0KSB7XG4gICAgICAgIGlmICh0eXBlb2YgbmV4dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29udGV4dCA9IF9fYXNzaWduKHt9LCBjb250ZXh0LCBuZXh0KGNvbnRleHQpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRleHQgPSBfX2Fzc2lnbih7fSwgY29udGV4dCwgbmV4dCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHZhciBnZXRDb250ZXh0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKF9fYXNzaWduKHt9LCBjb250ZXh0KSk7IH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9wZXJhdGlvbiwgJ3NldENvbnRleHQnLCB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB2YWx1ZTogc2V0Q29udGV4dCxcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob3BlcmF0aW9uLCAnZ2V0Q29udGV4dCcsIHtcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiBnZXRDb250ZXh0LFxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvcGVyYXRpb24sICd0b0tleScsIHtcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7IHJldHVybiBnZXRLZXkob3BlcmF0aW9uKTsgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gb3BlcmF0aW9uO1xufVxuZnVuY3Rpb24gZ2V0S2V5KG9wZXJhdGlvbikge1xuICAgIHZhciBxdWVyeSA9IG9wZXJhdGlvbi5xdWVyeSwgdmFyaWFibGVzID0gb3BlcmF0aW9uLnZhcmlhYmxlcywgb3BlcmF0aW9uTmFtZSA9IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lO1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShbb3BlcmF0aW9uTmFtZSwgcXVlcnksIHZhcmlhYmxlc10pO1xufVxuXG5mdW5jdGlvbiBwYXNzdGhyb3VnaChvcCwgZm9yd2FyZCkge1xuICAgIHJldHVybiBmb3J3YXJkID8gZm9yd2FyZChvcCkgOiBPYnNlcnZhYmxlLm9mKCk7XG59XG5mdW5jdGlvbiB0b0xpbmsoaGFuZGxlcikge1xuICAgIHJldHVybiB0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJyA/IG5ldyBBcG9sbG9MaW5rKGhhbmRsZXIpIDogaGFuZGxlcjtcbn1cbmZ1bmN0aW9uIGVtcHR5KCkge1xuICAgIHJldHVybiBuZXcgQXBvbGxvTGluayhmdW5jdGlvbiAoKSB7IHJldHVybiBPYnNlcnZhYmxlLm9mKCk7IH0pO1xufVxuZnVuY3Rpb24gZnJvbShsaW5rcykge1xuICAgIGlmIChsaW5rcy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiBlbXB0eSgpO1xuICAgIHJldHVybiBsaW5rcy5tYXAodG9MaW5rKS5yZWR1Y2UoZnVuY3Rpb24gKHgsIHkpIHsgcmV0dXJuIHguY29uY2F0KHkpOyB9KTtcbn1cbmZ1bmN0aW9uIHNwbGl0KHRlc3QsIGxlZnQsIHJpZ2h0KSB7XG4gICAgdmFyIGxlZnRMaW5rID0gdG9MaW5rKGxlZnQpO1xuICAgIHZhciByaWdodExpbmsgPSB0b0xpbmsocmlnaHQgfHwgbmV3IEFwb2xsb0xpbmsocGFzc3Rocm91Z2gpKTtcbiAgICBpZiAoaXNUZXJtaW5hdGluZyhsZWZ0TGluaykgJiYgaXNUZXJtaW5hdGluZyhyaWdodExpbmspKSB7XG4gICAgICAgIHJldHVybiBuZXcgQXBvbGxvTGluayhmdW5jdGlvbiAob3BlcmF0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdGVzdChvcGVyYXRpb24pXG4gICAgICAgICAgICAgICAgPyBsZWZ0TGluay5yZXF1ZXN0KG9wZXJhdGlvbikgfHwgT2JzZXJ2YWJsZS5vZigpXG4gICAgICAgICAgICAgICAgOiByaWdodExpbmsucmVxdWVzdChvcGVyYXRpb24pIHx8IE9ic2VydmFibGUub2YoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV3IEFwb2xsb0xpbmsoZnVuY3Rpb24gKG9wZXJhdGlvbiwgZm9yd2FyZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRlc3Qob3BlcmF0aW9uKVxuICAgICAgICAgICAgICAgID8gbGVmdExpbmsucmVxdWVzdChvcGVyYXRpb24sIGZvcndhcmQpIHx8IE9ic2VydmFibGUub2YoKVxuICAgICAgICAgICAgICAgIDogcmlnaHRMaW5rLnJlcXVlc3Qob3BlcmF0aW9uLCBmb3J3YXJkKSB8fCBPYnNlcnZhYmxlLm9mKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbnZhciBjb25jYXQgPSBmdW5jdGlvbiAoZmlyc3QsIHNlY29uZCkge1xuICAgIHZhciBmaXJzdExpbmsgPSB0b0xpbmsoZmlyc3QpO1xuICAgIGlmIChpc1Rlcm1pbmF0aW5nKGZpcnN0TGluaykpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiIHx8IGludmFyaWFudC53YXJuKG5ldyBMaW5rRXJyb3IoXCJZb3UgYXJlIGNhbGxpbmcgY29uY2F0IG9uIGEgdGVybWluYXRpbmcgbGluaywgd2hpY2ggd2lsbCBoYXZlIG5vIGVmZmVjdFwiLCBmaXJzdExpbmspKTtcbiAgICAgICAgcmV0dXJuIGZpcnN0TGluaztcbiAgICB9XG4gICAgdmFyIG5leHRMaW5rID0gdG9MaW5rKHNlY29uZCk7XG4gICAgaWYgKGlzVGVybWluYXRpbmcobmV4dExpbmspKSB7XG4gICAgICAgIHJldHVybiBuZXcgQXBvbGxvTGluayhmdW5jdGlvbiAob3BlcmF0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlyc3RMaW5rLnJlcXVlc3Qob3BlcmF0aW9uLCBmdW5jdGlvbiAob3ApIHsgcmV0dXJuIG5leHRMaW5rLnJlcXVlc3Qob3ApIHx8IE9ic2VydmFibGUub2YoKTsgfSkgfHwgT2JzZXJ2YWJsZS5vZigpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgQXBvbGxvTGluayhmdW5jdGlvbiAob3BlcmF0aW9uLCBmb3J3YXJkKSB7XG4gICAgICAgICAgICByZXR1cm4gKGZpcnN0TGluay5yZXF1ZXN0KG9wZXJhdGlvbiwgZnVuY3Rpb24gKG9wKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5leHRMaW5rLnJlcXVlc3Qob3AsIGZvcndhcmQpIHx8IE9ic2VydmFibGUub2YoKTtcbiAgICAgICAgICAgIH0pIHx8IE9ic2VydmFibGUub2YoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn07XG52YXIgQXBvbGxvTGluayA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQXBvbGxvTGluayhyZXF1ZXN0KSB7XG4gICAgICAgIGlmIChyZXF1ZXN0KVxuICAgICAgICAgICAgdGhpcy5yZXF1ZXN0ID0gcmVxdWVzdDtcbiAgICB9XG4gICAgQXBvbGxvTGluay5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiAodGVzdCwgbGVmdCwgcmlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uY2F0KHNwbGl0KHRlc3QsIGxlZnQsIHJpZ2h0IHx8IG5ldyBBcG9sbG9MaW5rKHBhc3N0aHJvdWdoKSkpO1xuICAgIH07XG4gICAgQXBvbGxvTGluay5wcm90b3R5cGUuY29uY2F0ID0gZnVuY3Rpb24gKG5leHQpIHtcbiAgICAgICAgcmV0dXJuIGNvbmNhdCh0aGlzLCBuZXh0KTtcbiAgICB9O1xuICAgIEFwb2xsb0xpbmsucHJvdG90eXBlLnJlcXVlc3QgPSBmdW5jdGlvbiAob3BlcmF0aW9uLCBmb3J3YXJkKSB7XG4gICAgICAgIHRocm93IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IG5ldyBJbnZhcmlhbnRFcnJvcigxKSA6IG5ldyBJbnZhcmlhbnRFcnJvcigncmVxdWVzdCBpcyBub3QgaW1wbGVtZW50ZWQnKTtcbiAgICB9O1xuICAgIEFwb2xsb0xpbmsuZW1wdHkgPSBlbXB0eTtcbiAgICBBcG9sbG9MaW5rLmZyb20gPSBmcm9tO1xuICAgIEFwb2xsb0xpbmsuc3BsaXQgPSBzcGxpdDtcbiAgICBBcG9sbG9MaW5rLmV4ZWN1dGUgPSBleGVjdXRlO1xuICAgIHJldHVybiBBcG9sbG9MaW5rO1xufSgpKTtcbmZ1bmN0aW9uIGV4ZWN1dGUobGluaywgb3BlcmF0aW9uKSB7XG4gICAgcmV0dXJuIChsaW5rLnJlcXVlc3QoY3JlYXRlT3BlcmF0aW9uKG9wZXJhdGlvbi5jb250ZXh0LCB0cmFuc2Zvcm1PcGVyYXRpb24odmFsaWRhdGVPcGVyYXRpb24ob3BlcmF0aW9uKSkpKSB8fCBPYnNlcnZhYmxlLm9mKCkpO1xufVxuXG5leHBvcnQgeyBBcG9sbG9MaW5rLCBjb25jYXQsIGNyZWF0ZU9wZXJhdGlvbiwgZW1wdHksIGV4ZWN1dGUsIGZyb20sIGZyb21FcnJvciwgZnJvbVByb21pc2UsIG1ha2VQcm9taXNlLCBzcGxpdCwgdG9Qcm9taXNlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1idW5kbGUuZXNtLmpzLm1hcFxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/apollo-link/lib/bundle.esm.js\n");
 
/***/ }),
 
/***/ "./node_modules/apollo-link/node_modules/zen-observable-ts/lib/bundle.esm.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/apollo-link/node_modules/zen-observable-ts/lib/bundle.esm.js ***!
  \***********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Observable\": function() { return /* binding */ Observable; }\n/* harmony export */ });\n/* harmony import */ var zen_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! zen-observable */ \"./node_modules/zen-observable/index.js\");\n/* harmony import */ var zen_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(zen_observable__WEBPACK_IMPORTED_MODULE_0__);\n\n\nvar Observable = (zen_observable__WEBPACK_IMPORTED_MODULE_0___default());\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Observable);\n\n//# sourceMappingURL=bundle.esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXBvbGxvLWxpbmsvbm9kZV9tb2R1bGVzL3plbi1vYnNlcnZhYmxlLXRzL2xpYi9idW5kbGUuZXNtLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUEyQzs7QUFFM0MsaUJBQWlCLHVEQUFhOztBQUU5QiwrREFBZSxVQUFVLEVBQUM7QUFDSjtBQUN0QiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvYXBvbGxvLWxpbmsvbm9kZV9tb2R1bGVzL3plbi1vYnNlcnZhYmxlLXRzL2xpYi9idW5kbGUuZXNtLmpzP2U0NWYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHplbk9ic2VydmFibGUgZnJvbSAnemVuLW9ic2VydmFibGUnO1xuXG52YXIgT2JzZXJ2YWJsZSA9IHplbk9ic2VydmFibGU7XG5cbmV4cG9ydCBkZWZhdWx0IE9ic2VydmFibGU7XG5leHBvcnQgeyBPYnNlcnZhYmxlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1idW5kbGUuZXNtLmpzLm1hcFxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/apollo-link/node_modules/zen-observable-ts/lib/bundle.esm.js\n");
 
/***/ }),
 
/***/ "./node_modules/apollo-utilities/lib/bundle.esm.js":
/*!*********************************************************!*\
  !*** ./node_modules/apollo-utilities/lib/bundle.esm.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"addTypenameToDocument\": function() { return /* binding */ addTypenameToDocument; },\n/* harmony export */   \"argumentsObjectFromField\": function() { return /* binding */ argumentsObjectFromField; },\n/* harmony export */   \"assign\": function() { return /* binding */ assign; },\n/* harmony export */   \"buildQueryFromSelectionSet\": function() { return /* binding */ buildQueryFromSelectionSet; },\n/* harmony export */   \"canUseWeakMap\": function() { return /* binding */ canUseWeakMap; },\n/* harmony export */   \"checkDocument\": function() { return /* binding */ checkDocument; },\n/* harmony export */   \"cloneDeep\": function() { return /* binding */ cloneDeep; },\n/* harmony export */   \"createFragmentMap\": function() { return /* binding */ createFragmentMap; },\n/* harmony export */   \"getDefaultValues\": function() { return /* binding */ getDefaultValues; },\n/* harmony export */   \"getDirectiveInfoFromField\": function() { return /* binding */ getDirectiveInfoFromField; },\n/* harmony export */   \"getDirectiveNames\": function() { return /* binding */ getDirectiveNames; },\n/* harmony export */   \"getDirectivesFromDocument\": function() { return /* binding */ getDirectivesFromDocument; },\n/* harmony export */   \"getEnv\": function() { return /* binding */ getEnv; },\n/* harmony export */   \"getFragmentDefinition\": function() { return /* binding */ getFragmentDefinition; },\n/* harmony export */   \"getFragmentDefinitions\": function() { return /* binding */ getFragmentDefinitions; },\n/* harmony export */   \"getFragmentQueryDocument\": function() { return /* binding */ getFragmentQueryDocument; },\n/* harmony export */   \"getInclusionDirectives\": function() { return /* binding */ getInclusionDirectives; },\n/* harmony export */   \"getMainDefinition\": function() { return /* binding */ getMainDefinition; },\n/* harmony export */   \"getMutationDefinition\": function() { return /* binding */ getMutationDefinition; },\n/* harmony export */   \"getOperationDefinition\": function() { return /* binding */ getOperationDefinition; },\n/* harmony export */   \"getOperationDefinitionOrDie\": function() { return /* binding */ getOperationDefinitionOrDie; },\n/* harmony export */   \"getOperationName\": function() { return /* binding */ getOperationName; },\n/* harmony export */   \"getQueryDefinition\": function() { return /* binding */ getQueryDefinition; },\n/* harmony export */   \"getStoreKeyName\": function() { return /* binding */ getStoreKeyName; },\n/* harmony export */   \"graphQLResultHasError\": function() { return /* binding */ graphQLResultHasError; },\n/* harmony export */   \"hasClientExports\": function() { return /* binding */ hasClientExports; },\n/* harmony export */   \"hasDirectives\": function() { return /* binding */ hasDirectives; },\n/* harmony export */   \"isDevelopment\": function() { return /* binding */ isDevelopment; },\n/* harmony export */   \"isEnv\": function() { return /* binding */ isEnv; },\n/* harmony export */   \"isEqual\": function() { return /* reexport safe */ _wry_equality__WEBPACK_IMPORTED_MODULE_2__.equal; },\n/* harmony export */   \"isField\": function() { return /* binding */ isField; },\n/* harmony export */   \"isIdValue\": function() { return /* binding */ isIdValue; },\n/* harmony export */   \"isInlineFragment\": function() { return /* binding */ isInlineFragment; },\n/* harmony export */   \"isJsonValue\": function() { return /* binding */ isJsonValue; },\n/* harmony export */   \"isNumberValue\": function() { return /* binding */ isNumberValue; },\n/* harmony export */   \"isProduction\": function() { return /* binding */ isProduction; },\n/* harmony export */   \"isScalarValue\": function() { return /* binding */ isScalarValue; },\n/* harmony export */   \"isTest\": function() { return /* binding */ isTest; },\n/* harmony export */   \"maybeDeepFreeze\": function() { return /* binding */ maybeDeepFreeze; },\n/* harmony export */   \"mergeDeep\": function() { return /* binding */ mergeDeep; },\n/* harmony export */   \"mergeDeepArray\": function() { return /* binding */ mergeDeepArray; },\n/* harmony export */   \"removeArgumentsFromDocument\": function() { return /* binding */ removeArgumentsFromDocument; },\n/* harmony export */   \"removeClientSetsFromDocument\": function() { return /* binding */ removeClientSetsFromDocument; },\n/* harmony export */   \"removeConnectionDirectiveFromDocument\": function() { return /* binding */ removeConnectionDirectiveFromDocument; },\n/* harmony export */   \"removeDirectivesFromDocument\": function() { return /* binding */ removeDirectivesFromDocument; },\n/* harmony export */   \"removeFragmentSpreadFromDocument\": function() { return /* binding */ removeFragmentSpreadFromDocument; },\n/* harmony export */   \"resultKeyNameFromField\": function() { return /* binding */ resultKeyNameFromField; },\n/* harmony export */   \"shouldInclude\": function() { return /* binding */ shouldInclude; },\n/* harmony export */   \"storeKeyNameFromField\": function() { return /* binding */ storeKeyNameFromField; },\n/* harmony export */   \"stripSymbols\": function() { return /* binding */ stripSymbols; },\n/* harmony export */   \"toIdValue\": function() { return /* binding */ toIdValue; },\n/* harmony export */   \"tryFunctionOrLogError\": function() { return /* binding */ tryFunctionOrLogError; },\n/* harmony export */   \"valueFromNode\": function() { return /* binding */ valueFromNode; },\n/* harmony export */   \"valueToObjectRepresentation\": function() { return /* binding */ valueToObjectRepresentation; },\n/* harmony export */   \"variablesInOperation\": function() { return /* binding */ variablesInOperation; },\n/* harmony export */   \"warnOnceInDevelopment\": function() { return /* binding */ warnOnceInDevelopment; }\n/* harmony export */ });\n/* harmony import */ var graphql_language_visitor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! graphql/language/visitor */ \"./node_modules/graphql/language/visitor.mjs\");\n/* harmony import */ var ts_invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ts-invariant */ \"./node_modules/ts-invariant/lib/invariant.esm.js\");\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var fast_json_stable_stringify__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fast-json-stable-stringify */ \"./node_modules/fast-json-stable-stringify/index.js\");\n/* harmony import */ var fast_json_stable_stringify__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(fast_json_stable_stringify__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _wry_equality__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wry/equality */ \"./node_modules/@wry/equality/lib/equality.esm.js\");\n/* provided dependency */ var process = __webpack_require__(/*! process */ \"./node_modules/next/dist/build/polyfills/process.js\");\n\n\n\n\n\n\nfunction isScalarValue(value) {\n    return ['StringValue', 'BooleanValue', 'EnumValue'].indexOf(value.kind) > -1;\n}\nfunction isNumberValue(value) {\n    return ['IntValue', 'FloatValue'].indexOf(value.kind) > -1;\n}\nfunction isStringValue(value) {\n    return value.kind === 'StringValue';\n}\nfunction isBooleanValue(value) {\n    return value.kind === 'BooleanValue';\n}\nfunction isIntValue(value) {\n    return value.kind === 'IntValue';\n}\nfunction isFloatValue(value) {\n    return value.kind === 'FloatValue';\n}\nfunction isVariable(value) {\n    return value.kind === 'Variable';\n}\nfunction isObjectValue(value) {\n    return value.kind === 'ObjectValue';\n}\nfunction isListValue(value) {\n    return value.kind === 'ListValue';\n}\nfunction isEnumValue(value) {\n    return value.kind === 'EnumValue';\n}\nfunction isNullValue(value) {\n    return value.kind === 'NullValue';\n}\nfunction valueToObjectRepresentation(argObj, name, value, variables) {\n    if (isIntValue(value) || isFloatValue(value)) {\n        argObj[name.value] = Number(value.value);\n    }\n    else if (isBooleanValue(value) || isStringValue(value)) {\n        argObj[name.value] = value.value;\n    }\n    else if (isObjectValue(value)) {\n        var nestedArgObj_1 = {};\n        value.fields.map(function (obj) {\n            return valueToObjectRepresentation(nestedArgObj_1, obj.name, obj.value, variables);\n        });\n        argObj[name.value] = nestedArgObj_1;\n    }\n    else if (isVariable(value)) {\n        var variableValue = (variables || {})[value.name.value];\n        argObj[name.value] = variableValue;\n    }\n    else if (isListValue(value)) {\n        argObj[name.value] = value.values.map(function (listValue) {\n            var nestedArgArrayObj = {};\n            valueToObjectRepresentation(nestedArgArrayObj, name, listValue, variables);\n            return nestedArgArrayObj[name.value];\n        });\n    }\n    else if (isEnumValue(value)) {\n        argObj[name.value] = value.value;\n    }\n    else if (isNullValue(value)) {\n        argObj[name.value] = null;\n    }\n    else {\n        throw  false ? 0 : new ts_invariant__WEBPACK_IMPORTED_MODULE_0__.InvariantError(\"The inline argument \\\"\" + name.value + \"\\\" of kind \\\"\" + value.kind + \"\\\"\" +\n            'is not supported. Use variables instead of inline arguments to ' +\n            'overcome this limitation.');\n    }\n}\nfunction storeKeyNameFromField(field, variables) {\n    var directivesObj = null;\n    if (field.directives) {\n        directivesObj = {};\n        field.directives.forEach(function (directive) {\n            directivesObj[directive.name.value] = {};\n            if (directive.arguments) {\n                directive.arguments.forEach(function (_a) {\n                    var name = _a.name, value = _a.value;\n                    return valueToObjectRepresentation(directivesObj[directive.name.value], name, value, variables);\n                });\n            }\n        });\n    }\n    var argObj = null;\n    if (field.arguments && field.arguments.length) {\n        argObj = {};\n        field.arguments.forEach(function (_a) {\n            var name = _a.name, value = _a.value;\n            return valueToObjectRepresentation(argObj, name, value, variables);\n        });\n    }\n    return getStoreKeyName(field.name.value, argObj, directivesObj);\n}\nvar KNOWN_DIRECTIVES = [\n    'connection',\n    'include',\n    'skip',\n    'client',\n    'rest',\n    'export',\n];\nfunction getStoreKeyName(fieldName, args, directives) {\n    if (directives &&\n        directives['connection'] &&\n        directives['connection']['key']) {\n        if (directives['connection']['filter'] &&\n            directives['connection']['filter'].length > 0) {\n            var filterKeys = directives['connection']['filter']\n                ? directives['connection']['filter']\n                : [];\n            filterKeys.sort();\n            var queryArgs_1 = args;\n            var filteredArgs_1 = {};\n            filterKeys.forEach(function (key) {\n                filteredArgs_1[key] = queryArgs_1[key];\n            });\n            return directives['connection']['key'] + \"(\" + JSON.stringify(filteredArgs_1) + \")\";\n        }\n        else {\n            return directives['connection']['key'];\n        }\n    }\n    var completeFieldName = fieldName;\n    if (args) {\n        var stringifiedArgs = fast_json_stable_stringify__WEBPACK_IMPORTED_MODULE_1___default()(args);\n        completeFieldName += \"(\" + stringifiedArgs + \")\";\n    }\n    if (directives) {\n        Object.keys(directives).forEach(function (key) {\n            if (KNOWN_DIRECTIVES.indexOf(key) !== -1)\n                return;\n            if (directives[key] && Object.keys(directives[key]).length) {\n                completeFieldName += \"@\" + key + \"(\" + JSON.stringify(directives[key]) + \")\";\n            }\n            else {\n                completeFieldName += \"@\" + key;\n            }\n        });\n    }\n    return completeFieldName;\n}\nfunction argumentsObjectFromField(field, variables) {\n    if (field.arguments && field.arguments.length) {\n        var argObj_1 = {};\n        field.arguments.forEach(function (_a) {\n            var name = _a.name, value = _a.value;\n            return valueToObjectRepresentation(argObj_1, name, value, variables);\n        });\n        return argObj_1;\n    }\n    return null;\n}\nfunction resultKeyNameFromField(field) {\n    return field.alias ? field.alias.value : field.name.value;\n}\nfunction isField(selection) {\n    return selection.kind === 'Field';\n}\nfunction isInlineFragment(selection) {\n    return selection.kind === 'InlineFragment';\n}\nfunction isIdValue(idObject) {\n    return idObject &&\n        idObject.type === 'id' &&\n        typeof idObject.generated === 'boolean';\n}\nfunction toIdValue(idConfig, generated) {\n    if (generated === void 0) { generated = false; }\n    return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({ type: 'id', generated: generated }, (typeof idConfig === 'string'\n        ? { id: idConfig, typename: undefined }\n        : idConfig));\n}\nfunction isJsonValue(jsonObject) {\n    return (jsonObject != null &&\n        typeof jsonObject === 'object' &&\n        jsonObject.type === 'json');\n}\nfunction defaultValueFromVariable(node) {\n    throw  false ? 0 : new ts_invariant__WEBPACK_IMPORTED_MODULE_0__.InvariantError(\"Variable nodes are not supported by valueFromNode\");\n}\nfunction valueFromNode(node, onVariable) {\n    if (onVariable === void 0) { onVariable = defaultValueFromVariable; }\n    switch (node.kind) {\n        case 'Variable':\n            return onVariable(node);\n        case 'NullValue':\n            return null;\n        case 'IntValue':\n            return parseInt(node.value, 10);\n        case 'FloatValue':\n            return parseFloat(node.value);\n        case 'ListValue':\n            return node.values.map(function (v) { return valueFromNode(v, onVariable); });\n        case 'ObjectValue': {\n            var value = {};\n            for (var _i = 0, _a = node.fields; _i < _a.length; _i++) {\n                var field = _a[_i];\n                value[field.name.value] = valueFromNode(field.value, onVariable);\n            }\n            return value;\n        }\n        default:\n            return node.value;\n    }\n}\n\nfunction getDirectiveInfoFromField(field, variables) {\n    if (field.directives && field.directives.length) {\n        var directiveObj_1 = {};\n        field.directives.forEach(function (directive) {\n            directiveObj_1[directive.name.value] = argumentsObjectFromField(directive, variables);\n        });\n        return directiveObj_1;\n    }\n    return null;\n}\nfunction shouldInclude(selection, variables) {\n    if (variables === void 0) { variables = {}; }\n    return getInclusionDirectives(selection.directives).every(function (_a) {\n        var directive = _a.directive, ifArgument = _a.ifArgument;\n        var evaledValue = false;\n        if (ifArgument.value.kind === 'Variable') {\n            evaledValue = variables[ifArgument.value.name.value];\n             false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(evaledValue !== void 0, \"Invalid variable referenced in @\" + directive.name.value + \" directive.\");\n        }\n        else {\n            evaledValue = ifArgument.value.value;\n        }\n        return directive.name.value === 'skip' ? !evaledValue : evaledValue;\n    });\n}\nfunction getDirectiveNames(doc) {\n    var names = [];\n    (0,graphql_language_visitor__WEBPACK_IMPORTED_MODULE_4__.visit)(doc, {\n        Directive: function (node) {\n            names.push(node.name.value);\n        },\n    });\n    return names;\n}\nfunction hasDirectives(names, doc) {\n    return getDirectiveNames(doc).some(function (name) { return names.indexOf(name) > -1; });\n}\nfunction hasClientExports(document) {\n    return (document &&\n        hasDirectives(['client'], document) &&\n        hasDirectives(['export'], document));\n}\nfunction isInclusionDirective(_a) {\n    var value = _a.name.value;\n    return value === 'skip' || value === 'include';\n}\nfunction getInclusionDirectives(directives) {\n    return directives ? directives.filter(isInclusionDirective).map(function (directive) {\n        var directiveArguments = directive.arguments;\n        var directiveName = directive.name.value;\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(directiveArguments && directiveArguments.length === 1, \"Incorrect number of arguments for the @\" + directiveName + \" directive.\");\n        var ifArgument = directiveArguments[0];\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(ifArgument.name && ifArgument.name.value === 'if', \"Invalid argument for the @\" + directiveName + \" directive.\");\n        var ifValue = ifArgument.value;\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(ifValue &&\n            (ifValue.kind === 'Variable' || ifValue.kind === 'BooleanValue'), \"Argument for the @\" + directiveName + \" directive must be a variable or a boolean value.\");\n        return { directive: directive, ifArgument: ifArgument };\n    }) : [];\n}\n\nfunction getFragmentQueryDocument(document, fragmentName) {\n    var actualFragmentName = fragmentName;\n    var fragments = [];\n    document.definitions.forEach(function (definition) {\n        if (definition.kind === 'OperationDefinition') {\n            throw  false ? 0 : new ts_invariant__WEBPACK_IMPORTED_MODULE_0__.InvariantError(\"Found a \" + definition.operation + \" operation\" + (definition.name ? \" named '\" + definition.name.value + \"'\" : '') + \". \" +\n                'No operations are allowed when using a fragment as a query. Only fragments are allowed.');\n        }\n        if (definition.kind === 'FragmentDefinition') {\n            fragments.push(definition);\n        }\n    });\n    if (typeof actualFragmentName === 'undefined') {\n         false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(fragments.length === 1, \"Found \" + fragments.length + \" fragments. `fragmentName` must be provided when there is not exactly 1 fragment.\");\n        actualFragmentName = fragments[0].name.value;\n    }\n    var query = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, document), { definitions: (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__spreadArrays)([\n            {\n                kind: 'OperationDefinition',\n                operation: 'query',\n                selectionSet: {\n                    kind: 'SelectionSet',\n                    selections: [\n                        {\n                            kind: 'FragmentSpread',\n                            name: {\n                                kind: 'Name',\n                                value: actualFragmentName,\n                            },\n                        },\n                    ],\n                },\n            }\n        ], document.definitions) });\n    return query;\n}\n\nfunction assign(target) {\n    var sources = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        sources[_i - 1] = arguments[_i];\n    }\n    sources.forEach(function (source) {\n        if (typeof source === 'undefined' || source === null) {\n            return;\n        }\n        Object.keys(source).forEach(function (key) {\n            target[key] = source[key];\n        });\n    });\n    return target;\n}\n\nfunction getMutationDefinition(doc) {\n    checkDocument(doc);\n    var mutationDef = doc.definitions.filter(function (definition) {\n        return definition.kind === 'OperationDefinition' &&\n            definition.operation === 'mutation';\n    })[0];\n     false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(mutationDef, 'Must contain a mutation definition.');\n    return mutationDef;\n}\nfunction checkDocument(doc) {\n     false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(doc && doc.kind === 'Document', \"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\");\n    var operations = doc.definitions\n        .filter(function (d) { return d.kind !== 'FragmentDefinition'; })\n        .map(function (definition) {\n        if (definition.kind !== 'OperationDefinition') {\n            throw  false ? 0 : new ts_invariant__WEBPACK_IMPORTED_MODULE_0__.InvariantError(\"Schema type definitions not allowed in queries. Found: \\\"\" + definition.kind + \"\\\"\");\n        }\n        return definition;\n    });\n     false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(operations.length <= 1, \"Ambiguous GraphQL document: contains \" + operations.length + \" operations\");\n    return doc;\n}\nfunction getOperationDefinition(doc) {\n    checkDocument(doc);\n    return doc.definitions.filter(function (definition) { return definition.kind === 'OperationDefinition'; })[0];\n}\nfunction getOperationDefinitionOrDie(document) {\n    var def = getOperationDefinition(document);\n     false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(def, \"GraphQL document is missing an operation\");\n    return def;\n}\nfunction getOperationName(doc) {\n    return (doc.definitions\n        .filter(function (definition) {\n        return definition.kind === 'OperationDefinition' && definition.name;\n    })\n        .map(function (x) { return x.name.value; })[0] || null);\n}\nfunction getFragmentDefinitions(doc) {\n    return doc.definitions.filter(function (definition) { return definition.kind === 'FragmentDefinition'; });\n}\nfunction getQueryDefinition(doc) {\n    var queryDef = getOperationDefinition(doc);\n     false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(queryDef && queryDef.operation === 'query', 'Must contain a query definition.');\n    return queryDef;\n}\nfunction getFragmentDefinition(doc) {\n     false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(doc.kind === 'Document', \"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\");\n     false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(doc.definitions.length <= 1, 'Fragment must have exactly one definition.');\n    var fragmentDef = doc.definitions[0];\n     false ? 0 : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(fragmentDef.kind === 'FragmentDefinition', 'Must be a fragment definition.');\n    return fragmentDef;\n}\nfunction getMainDefinition(queryDoc) {\n    checkDocument(queryDoc);\n    var fragmentDefinition;\n    for (var _i = 0, _a = queryDoc.definitions; _i < _a.length; _i++) {\n        var definition = _a[_i];\n        if (definition.kind === 'OperationDefinition') {\n            var operation = definition.operation;\n            if (operation === 'query' ||\n                operation === 'mutation' ||\n                operation === 'subscription') {\n                return definition;\n            }\n        }\n        if (definition.kind === 'FragmentDefinition' && !fragmentDefinition) {\n            fragmentDefinition = definition;\n        }\n    }\n    if (fragmentDefinition) {\n        return fragmentDefinition;\n    }\n    throw  false ? 0 : new ts_invariant__WEBPACK_IMPORTED_MODULE_0__.InvariantError('Expected a parsed GraphQL query with a query, mutation, subscription, or a fragment.');\n}\nfunction createFragmentMap(fragments) {\n    if (fragments === void 0) { fragments = []; }\n    var symTable = {};\n    fragments.forEach(function (fragment) {\n        symTable[fragment.name.value] = fragment;\n    });\n    return symTable;\n}\nfunction getDefaultValues(definition) {\n    if (definition &&\n        definition.variableDefinitions &&\n        definition.variableDefinitions.length) {\n        var defaultValues = definition.variableDefinitions\n            .filter(function (_a) {\n            var defaultValue = _a.defaultValue;\n            return defaultValue;\n        })\n            .map(function (_a) {\n            var variable = _a.variable, defaultValue = _a.defaultValue;\n            var defaultValueObj = {};\n            valueToObjectRepresentation(defaultValueObj, variable.name, defaultValue);\n            return defaultValueObj;\n        });\n        return assign.apply(void 0, (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__spreadArrays)([{}], defaultValues));\n    }\n    return {};\n}\nfunction variablesInOperation(operation) {\n    var names = new Set();\n    if (operation.variableDefinitions) {\n        for (var _i = 0, _a = operation.variableDefinitions; _i < _a.length; _i++) {\n            var definition = _a[_i];\n            names.add(definition.variable.name.value);\n        }\n    }\n    return names;\n}\n\nfunction filterInPlace(array, test, context) {\n    var target = 0;\n    array.forEach(function (elem, i) {\n        if (test.call(this, elem, i, array)) {\n            array[target++] = elem;\n        }\n    }, context);\n    array.length = target;\n    return array;\n}\n\nvar TYPENAME_FIELD = {\n    kind: 'Field',\n    name: {\n        kind: 'Name',\n        value: '__typename',\n    },\n};\nfunction isEmpty(op, fragments) {\n    return op.selectionSet.selections.every(function (selection) {\n        return selection.kind === 'FragmentSpread' &&\n            isEmpty(fragments[selection.name.value], fragments);\n    });\n}\nfunction nullIfDocIsEmpty(doc) {\n    return isEmpty(getOperationDefinition(doc) || getFragmentDefinition(doc), createFragmentMap(getFragmentDefinitions(doc)))\n        ? null\n        : doc;\n}\nfunction getDirectiveMatcher(directives) {\n    return function directiveMatcher(directive) {\n        return directives.some(function (dir) {\n            return (dir.name && dir.name === directive.name.value) ||\n                (dir.test && dir.test(directive));\n        });\n    };\n}\nfunction removeDirectivesFromDocument(directives, doc) {\n    var variablesInUse = Object.create(null);\n    var variablesToRemove = [];\n    var fragmentSpreadsInUse = Object.create(null);\n    var fragmentSpreadsToRemove = [];\n    var modifiedDoc = nullIfDocIsEmpty((0,graphql_language_visitor__WEBPACK_IMPORTED_MODULE_4__.visit)(doc, {\n        Variable: {\n            enter: function (node, _key, parent) {\n                if (parent.kind !== 'VariableDefinition') {\n                    variablesInUse[node.name.value] = true;\n                }\n            },\n        },\n        Field: {\n            enter: function (node) {\n                if (directives && node.directives) {\n                    var shouldRemoveField = directives.some(function (directive) { return directive.remove; });\n                    if (shouldRemoveField &&\n                        node.directives &&\n                        node.directives.some(getDirectiveMatcher(directives))) {\n                        if (node.arguments) {\n                            node.arguments.forEach(function (arg) {\n                                if (arg.value.kind === 'Variable') {\n                                    variablesToRemove.push({\n                                        name: arg.value.name.value,\n                                    });\n                                }\n                            });\n                        }\n                        if (node.selectionSet) {\n                            getAllFragmentSpreadsFromSelectionSet(node.selectionSet).forEach(function (frag) {\n                                fragmentSpreadsToRemove.push({\n                                    name: frag.name.value,\n                                });\n                            });\n                        }\n                        return null;\n                    }\n                }\n            },\n        },\n        FragmentSpread: {\n            enter: function (node) {\n                fragmentSpreadsInUse[node.name.value] = true;\n            },\n        },\n        Directive: {\n            enter: function (node) {\n                if (getDirectiveMatcher(directives)(node)) {\n                    return null;\n                }\n            },\n        },\n    }));\n    if (modifiedDoc &&\n        filterInPlace(variablesToRemove, function (v) { return !variablesInUse[v.name]; }).length) {\n        modifiedDoc = removeArgumentsFromDocument(variablesToRemove, modifiedDoc);\n    }\n    if (modifiedDoc &&\n        filterInPlace(fragmentSpreadsToRemove, function (fs) { return !fragmentSpreadsInUse[fs.name]; })\n            .length) {\n        modifiedDoc = removeFragmentSpreadFromDocument(fragmentSpreadsToRemove, modifiedDoc);\n    }\n    return modifiedDoc;\n}\nfunction addTypenameToDocument(doc) {\n    return (0,graphql_language_visitor__WEBPACK_IMPORTED_MODULE_4__.visit)(checkDocument(doc), {\n        SelectionSet: {\n            enter: function (node, _key, parent) {\n                if (parent &&\n                    parent.kind === 'OperationDefinition') {\n                    return;\n                }\n                var selections = node.selections;\n                if (!selections) {\n                    return;\n                }\n                var skip = selections.some(function (selection) {\n                    return (isField(selection) &&\n                        (selection.name.value === '__typename' ||\n                            selection.name.value.lastIndexOf('__', 0) === 0));\n                });\n                if (skip) {\n                    return;\n                }\n                var field = parent;\n                if (isField(field) &&\n                    field.directives &&\n                    field.directives.some(function (d) { return d.name.value === 'export'; })) {\n                    return;\n                }\n                return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, node), { selections: (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__spreadArrays)(selections, [TYPENAME_FIELD]) });\n            },\n        },\n    });\n}\nvar connectionRemoveConfig = {\n    test: function (directive) {\n        var willRemove = directive.name.value === 'connection';\n        if (willRemove) {\n            if (!directive.arguments ||\n                !directive.arguments.some(function (arg) { return arg.name.value === 'key'; })) {\n                 false || ts_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant.warn('Removing an @connection directive even though it does not have a key. ' +\n                    'You may want to use the key parameter to specify a store key.');\n            }\n        }\n        return willRemove;\n    },\n};\nfunction removeConnectionDirectiveFromDocument(doc) {\n    return removeDirectivesFromDocument([connectionRemoveConfig], checkDocument(doc));\n}\nfunction hasDirectivesInSelectionSet(directives, selectionSet, nestedCheck) {\n    if (nestedCheck === void 0) { nestedCheck = true; }\n    return (selectionSet &&\n        selectionSet.selections &&\n        selectionSet.selections.some(function (selection) {\n            return hasDirectivesInSelection(directives, selection, nestedCheck);\n        }));\n}\nfunction hasDirectivesInSelection(directives, selection, nestedCheck) {\n    if (nestedCheck === void 0) { nestedCheck = true; }\n    if (!isField(selection)) {\n        return true;\n    }\n    if (!selection.directives) {\n        return false;\n    }\n    return (selection.directives.some(getDirectiveMatcher(directives)) ||\n        (nestedCheck &&\n            hasDirectivesInSelectionSet(directives, selection.selectionSet, nestedCheck)));\n}\nfunction getDirectivesFromDocument(directives, doc) {\n    checkDocument(doc);\n    var parentPath;\n    return nullIfDocIsEmpty((0,graphql_language_visitor__WEBPACK_IMPORTED_MODULE_4__.visit)(doc, {\n        SelectionSet: {\n            enter: function (node, _key, _parent, path) {\n                var currentPath = path.join('-');\n                if (!parentPath ||\n                    currentPath === parentPath ||\n                    !currentPath.startsWith(parentPath)) {\n                    if (node.selections) {\n                        var selectionsWithDirectives = node.selections.filter(function (selection) { return hasDirectivesInSelection(directives, selection); });\n                        if (hasDirectivesInSelectionSet(directives, node, false)) {\n                            parentPath = currentPath;\n                        }\n                        return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, node), { selections: selectionsWithDirectives });\n                    }\n                    else {\n                        return null;\n                    }\n                }\n            },\n        },\n    }));\n}\nfunction getArgumentMatcher(config) {\n    return function argumentMatcher(argument) {\n        return config.some(function (aConfig) {\n            return argument.value &&\n                argument.value.kind === 'Variable' &&\n                argument.value.name &&\n                (aConfig.name === argument.value.name.value ||\n                    (aConfig.test && aConfig.test(argument)));\n        });\n    };\n}\nfunction removeArgumentsFromDocument(config, doc) {\n    var argMatcher = getArgumentMatcher(config);\n    return nullIfDocIsEmpty((0,graphql_language_visitor__WEBPACK_IMPORTED_MODULE_4__.visit)(doc, {\n        OperationDefinition: {\n            enter: function (node) {\n                return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, node), { variableDefinitions: node.variableDefinitions.filter(function (varDef) {\n                        return !config.some(function (arg) { return arg.name === varDef.variable.name.value; });\n                    }) });\n            },\n        },\n        Field: {\n            enter: function (node) {\n                var shouldRemoveField = config.some(function (argConfig) { return argConfig.remove; });\n                if (shouldRemoveField) {\n                    var argMatchCount_1 = 0;\n                    node.arguments.forEach(function (arg) {\n                        if (argMatcher(arg)) {\n                            argMatchCount_1 += 1;\n                        }\n                    });\n                    if (argMatchCount_1 === 1) {\n                        return null;\n                    }\n                }\n            },\n        },\n        Argument: {\n            enter: function (node) {\n                if (argMatcher(node)) {\n                    return null;\n                }\n            },\n        },\n    }));\n}\nfunction removeFragmentSpreadFromDocument(config, doc) {\n    function enter(node) {\n        if (config.some(function (def) { return def.name === node.name.value; })) {\n            return null;\n        }\n    }\n    return nullIfDocIsEmpty((0,graphql_language_visitor__WEBPACK_IMPORTED_MODULE_4__.visit)(doc, {\n        FragmentSpread: { enter: enter },\n        FragmentDefinition: { enter: enter },\n    }));\n}\nfunction getAllFragmentSpreadsFromSelectionSet(selectionSet) {\n    var allFragments = [];\n    selectionSet.selections.forEach(function (selection) {\n        if ((isField(selection) || isInlineFragment(selection)) &&\n            selection.selectionSet) {\n            getAllFragmentSpreadsFromSelectionSet(selection.selectionSet).forEach(function (frag) { return allFragments.push(frag); });\n        }\n        else if (selection.kind === 'FragmentSpread') {\n            allFragments.push(selection);\n        }\n    });\n    return allFragments;\n}\nfunction buildQueryFromSelectionSet(document) {\n    var definition = getMainDefinition(document);\n    var definitionOperation = definition.operation;\n    if (definitionOperation === 'query') {\n        return document;\n    }\n    var modifiedDoc = (0,graphql_language_visitor__WEBPACK_IMPORTED_MODULE_4__.visit)(document, {\n        OperationDefinition: {\n            enter: function (node) {\n                return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, node), { operation: 'query' });\n            },\n        },\n    });\n    return modifiedDoc;\n}\nfunction removeClientSetsFromDocument(document) {\n    checkDocument(document);\n    var modifiedDoc = removeDirectivesFromDocument([\n        {\n            test: function (directive) { return directive.name.value === 'client'; },\n            remove: true,\n        },\n    ], document);\n    if (modifiedDoc) {\n        modifiedDoc = (0,graphql_language_visitor__WEBPACK_IMPORTED_MODULE_4__.visit)(modifiedDoc, {\n            FragmentDefinition: {\n                enter: function (node) {\n                    if (node.selectionSet) {\n                        var isTypenameOnly = node.selectionSet.selections.every(function (selection) {\n                            return isField(selection) && selection.name.value === '__typename';\n                        });\n                        if (isTypenameOnly) {\n                            return null;\n                        }\n                    }\n                },\n            },\n        });\n    }\n    return modifiedDoc;\n}\n\nvar canUseWeakMap = typeof WeakMap === 'function' && !(typeof navigator === 'object' &&\n    navigator.product === 'ReactNative');\n\nvar toString = Object.prototype.toString;\nfunction cloneDeep(value) {\n    return cloneDeepHelper(value, new Map());\n}\nfunction cloneDeepHelper(val, seen) {\n    switch (toString.call(val)) {\n        case \"[object Array]\": {\n            if (seen.has(val))\n                return seen.get(val);\n            var copy_1 = val.slice(0);\n            seen.set(val, copy_1);\n            copy_1.forEach(function (child, i) {\n                copy_1[i] = cloneDeepHelper(child, seen);\n            });\n            return copy_1;\n        }\n        case \"[object Object]\": {\n            if (seen.has(val))\n                return seen.get(val);\n            var copy_2 = Object.create(Object.getPrototypeOf(val));\n            seen.set(val, copy_2);\n            Object.keys(val).forEach(function (key) {\n                copy_2[key] = cloneDeepHelper(val[key], seen);\n            });\n            return copy_2;\n        }\n        default:\n            return val;\n    }\n}\n\nfunction getEnv() {\n    if (typeof process !== 'undefined' && \"development\") {\n        return \"development\";\n    }\n    return 'development';\n}\nfunction isEnv(env) {\n    return getEnv() === env;\n}\nfunction isProduction() {\n    return isEnv('production') === true;\n}\nfunction isDevelopment() {\n    return isEnv('development') === true;\n}\nfunction isTest() {\n    return isEnv('test') === true;\n}\n\nfunction tryFunctionOrLogError(f) {\n    try {\n        return f();\n    }\n    catch (e) {\n        if (console.error) {\n            console.error(e);\n        }\n    }\n}\nfunction graphQLResultHasError(result) {\n    return result.errors && result.errors.length;\n}\n\nfunction deepFreeze(o) {\n    Object.freeze(o);\n    Object.getOwnPropertyNames(o).forEach(function (prop) {\n        if (o[prop] !== null &&\n            (typeof o[prop] === 'object' || typeof o[prop] === 'function') &&\n            !Object.isFrozen(o[prop])) {\n            deepFreeze(o[prop]);\n        }\n    });\n    return o;\n}\nfunction maybeDeepFreeze(obj) {\n    if (isDevelopment() || isTest()) {\n        var symbolIsPolyfilled = typeof Symbol === 'function' && typeof Symbol('') === 'string';\n        if (!symbolIsPolyfilled) {\n            return deepFreeze(obj);\n        }\n    }\n    return obj;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction mergeDeep() {\n    var sources = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        sources[_i] = arguments[_i];\n    }\n    return mergeDeepArray(sources);\n}\nfunction mergeDeepArray(sources) {\n    var target = sources[0] || {};\n    var count = sources.length;\n    if (count > 1) {\n        var pastCopies = [];\n        target = shallowCopyForMerge(target, pastCopies);\n        for (var i = 1; i < count; ++i) {\n            target = mergeHelper(target, sources[i], pastCopies);\n        }\n    }\n    return target;\n}\nfunction isObject(obj) {\n    return obj !== null && typeof obj === 'object';\n}\nfunction mergeHelper(target, source, pastCopies) {\n    if (isObject(source) && isObject(target)) {\n        if (Object.isExtensible && !Object.isExtensible(target)) {\n            target = shallowCopyForMerge(target, pastCopies);\n        }\n        Object.keys(source).forEach(function (sourceKey) {\n            var sourceValue = source[sourceKey];\n            if (hasOwnProperty.call(target, sourceKey)) {\n                var targetValue = target[sourceKey];\n                if (sourceValue !== targetValue) {\n                    target[sourceKey] = mergeHelper(shallowCopyForMerge(targetValue, pastCopies), sourceValue, pastCopies);\n                }\n            }\n            else {\n                target[sourceKey] = sourceValue;\n            }\n        });\n        return target;\n    }\n    return source;\n}\nfunction shallowCopyForMerge(value, pastCopies) {\n    if (value !== null &&\n        typeof value === 'object' &&\n        pastCopies.indexOf(value) < 0) {\n        if (Array.isArray(value)) {\n            value = value.slice(0);\n        }\n        else {\n            value = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({ __proto__: Object.getPrototypeOf(value) }, value);\n        }\n        pastCopies.push(value);\n    }\n    return value;\n}\n\nvar haveWarned = Object.create({});\nfunction warnOnceInDevelopment(msg, type) {\n    if (type === void 0) { type = 'warn'; }\n    if (!isProduction() && !haveWarned[msg]) {\n        if (!isTest()) {\n            haveWarned[msg] = true;\n        }\n        if (type === 'error') {\n            console.error(msg);\n        }\n        else {\n            console.warn(msg);\n        }\n    }\n}\n\nfunction stripSymbols(data) {\n    return JSON.parse(JSON.stringify(data));\n}\n\n\n//# sourceMappingURL=bundle.esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYXBvbGxvLXV0aWxpdGllcy9saWIvYnVuZGxlLmVzbS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBaUQ7QUFDUTtBQUNSO0FBQ0U7QUFDRjs7QUFFakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsTUFBcUMsR0FBRyxDQUFzQixPQUFPLHdEQUFjO0FBQ2pHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixpRUFBUztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDLFdBQVcsK0NBQVEsR0FBRyxrQ0FBa0M7QUFDeEQsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLE1BQXFDLEdBQUcsQ0FBc0IsT0FBTyx3REFBYztBQUM3RjtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELHNDQUFzQztBQUN4RjtBQUNBO0FBQ0EsK0NBQStDLGdCQUFnQjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLE1BQXFDLEdBQUcsQ0FBcUMsR0FBRyx1REFBUztBQUNyRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLElBQUksK0RBQUs7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSx5REFBeUQsa0NBQWtDO0FBQzNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLE1BQXFDLEdBQUcsQ0FBb0UsR0FBRyx1REFBUztBQUNoSTtBQUNBLFFBQVEsTUFBcUMsR0FBRyxDQUFnRSxHQUFHLHVEQUFTO0FBQzVIO0FBQ0EsUUFBUSxNQUFxQyxHQUFHLENBQ2lDLEdBQUcsdURBQVM7QUFDN0Y7QUFDQSxpQkFBaUI7QUFDakIsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsTUFBcUMsR0FBRyxDQUFzQixPQUFPLHdEQUFjO0FBQ3JHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxRQUFRLE1BQXFDLEdBQUcsQ0FBcUMsR0FBRyx1REFBUztBQUNqRztBQUNBO0FBQ0EsZ0JBQWdCLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxlQUFlLGFBQWEscURBQWM7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3Qix5QkFBeUI7QUFDekI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLHVCQUF1QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSSxNQUFxQyxHQUFHLENBQXlCLEdBQUcsdURBQVM7QUFDakY7QUFDQTtBQUNBO0FBQ0EsSUFBSSxNQUFxQyxHQUFHLENBQTRDLEdBQUcsdURBQVM7QUFDcEc7QUFDQSwrQkFBK0IseUNBQXlDO0FBQ3hFO0FBQ0E7QUFDQSxrQkFBa0IsTUFBcUMsR0FBRyxDQUFxQixPQUFPLHdEQUFjO0FBQ3BHO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSSxNQUFxQyxHQUFHLENBQW9DLEdBQUcsdURBQVM7QUFDNUY7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsbURBQW1EO0FBQzdHO0FBQ0E7QUFDQTtBQUNBLElBQUksTUFBcUMsR0FBRyxDQUFpQixHQUFHLHVEQUFTO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCw0QkFBNEIsc0JBQXNCO0FBQ2xEO0FBQ0E7QUFDQSwwREFBMEQsa0RBQWtEO0FBQzVHO0FBQ0E7QUFDQTtBQUNBLElBQUksTUFBcUMsR0FBRyxDQUF3RCxHQUFHLHVEQUFTO0FBQ2hIO0FBQ0E7QUFDQTtBQUNBLElBQUksTUFBcUMsR0FBRyxDQUFxQyxHQUFHLHVEQUFTO0FBQzdGLElBQUksTUFBcUMsR0FBRyxDQUF5QyxHQUFHLHVEQUFTO0FBQ2pHO0FBQ0EsSUFBSSxNQUFxQyxHQUFHLENBQXVELEdBQUcsdURBQVM7QUFDL0c7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxnQkFBZ0I7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLE1BQXFDLEdBQUcsQ0FBc0IsT0FBTyx3REFBYztBQUM3RjtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULG9DQUFvQyxxREFBYyxJQUFJO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQUE2RCxnQkFBZ0I7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsK0RBQUs7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsbUZBQW1GLDBCQUEwQjtBQUM3RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakMsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBLHdEQUF3RCxpQ0FBaUM7QUFDekY7QUFDQTtBQUNBO0FBQ0EsK0RBQStELHdDQUF3QztBQUN2RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLCtEQUFLO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlELG1DQUFtQztBQUM1RjtBQUNBO0FBQ0EsdUJBQXVCLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxXQUFXLFlBQVkscURBQWMsZ0NBQWdDO0FBQ2hILGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJEQUEyRCxrQ0FBa0M7QUFDN0YsZ0JBQWdCLE1BQXFDLElBQUksd0RBQWM7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLCtEQUFLO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUdBQXFHLHlEQUF5RDtBQUM5SjtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLFdBQVcsc0NBQXNDO0FBQ3BHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsK0RBQUs7QUFDakM7QUFDQTtBQUNBLHVCQUF1QiwrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsV0FBVztBQUN0RCw2REFBNkQsaURBQWlEO0FBQzlHLHFCQUFxQixHQUFHO0FBQ3hCLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBLDJFQUEyRSwwQkFBMEI7QUFDckc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLHNDQUFzQztBQUMvRTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsK0RBQUs7QUFDakMsMEJBQTBCLGNBQWM7QUFDeEMsOEJBQThCLGNBQWM7QUFDNUMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9HQUFvRyxpQ0FBaUM7QUFDckk7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwrREFBSztBQUMzQjtBQUNBO0FBQ0EsdUJBQXVCLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxXQUFXLG9CQUFvQjtBQUMxRSxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsMkNBQTJDO0FBQ3BGO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxzQkFBc0IsK0RBQUs7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxlQUFlLE9BQU8sb0JBQW9CLGFBQW9CO0FBQzlELGVBQWUsYUFBb0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsdUJBQXVCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLFdBQVc7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwrQ0FBUSxHQUFHLHlDQUF5QztBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlDQUFpQztBQUNqQztBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUUrakM7QUFDL2pDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9hcG9sbG8tdXRpbGl0aWVzL2xpYi9idW5kbGUuZXNtLmpzPzhiNzMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmlzaXQgfSBmcm9tICdncmFwaHFsL2xhbmd1YWdlL3Zpc2l0b3InO1xuaW1wb3J0IHsgSW52YXJpYW50RXJyb3IsIGludmFyaWFudCB9IGZyb20gJ3RzLWludmFyaWFudCc7XG5pbXBvcnQgeyBfX2Fzc2lnbiwgX19zcHJlYWRBcnJheXMgfSBmcm9tICd0c2xpYic7XG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gJ2Zhc3QtanNvbi1zdGFibGUtc3RyaW5naWZ5JztcbmV4cG9ydCB7IGVxdWFsIGFzIGlzRXF1YWwgfSBmcm9tICdAd3J5L2VxdWFsaXR5JztcblxuZnVuY3Rpb24gaXNTY2FsYXJWYWx1ZSh2YWx1ZSkge1xuICAgIHJldHVybiBbJ1N0cmluZ1ZhbHVlJywgJ0Jvb2xlYW5WYWx1ZScsICdFbnVtVmFsdWUnXS5pbmRleE9mKHZhbHVlLmtpbmQpID4gLTE7XG59XG5mdW5jdGlvbiBpc051bWJlclZhbHVlKHZhbHVlKSB7XG4gICAgcmV0dXJuIFsnSW50VmFsdWUnLCAnRmxvYXRWYWx1ZSddLmluZGV4T2YodmFsdWUua2luZCkgPiAtMTtcbn1cbmZ1bmN0aW9uIGlzU3RyaW5nVmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUua2luZCA9PT0gJ1N0cmluZ1ZhbHVlJztcbn1cbmZ1bmN0aW9uIGlzQm9vbGVhblZhbHVlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmtpbmQgPT09ICdCb29sZWFuVmFsdWUnO1xufVxuZnVuY3Rpb24gaXNJbnRWYWx1ZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5raW5kID09PSAnSW50VmFsdWUnO1xufVxuZnVuY3Rpb24gaXNGbG9hdFZhbHVlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmtpbmQgPT09ICdGbG9hdFZhbHVlJztcbn1cbmZ1bmN0aW9uIGlzVmFyaWFibGUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUua2luZCA9PT0gJ1ZhcmlhYmxlJztcbn1cbmZ1bmN0aW9uIGlzT2JqZWN0VmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUua2luZCA9PT0gJ09iamVjdFZhbHVlJztcbn1cbmZ1bmN0aW9uIGlzTGlzdFZhbHVlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmtpbmQgPT09ICdMaXN0VmFsdWUnO1xufVxuZnVuY3Rpb24gaXNFbnVtVmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUua2luZCA9PT0gJ0VudW1WYWx1ZSc7XG59XG5mdW5jdGlvbiBpc051bGxWYWx1ZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5raW5kID09PSAnTnVsbFZhbHVlJztcbn1cbmZ1bmN0aW9uIHZhbHVlVG9PYmplY3RSZXByZXNlbnRhdGlvbihhcmdPYmosIG5hbWUsIHZhbHVlLCB2YXJpYWJsZXMpIHtcbiAgICBpZiAoaXNJbnRWYWx1ZSh2YWx1ZSkgfHwgaXNGbG9hdFZhbHVlKHZhbHVlKSkge1xuICAgICAgICBhcmdPYmpbbmFtZS52YWx1ZV0gPSBOdW1iZXIodmFsdWUudmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0Jvb2xlYW5WYWx1ZSh2YWx1ZSkgfHwgaXNTdHJpbmdWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgYXJnT2JqW25hbWUudmFsdWVdID0gdmFsdWUudmFsdWU7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzT2JqZWN0VmFsdWUodmFsdWUpKSB7XG4gICAgICAgIHZhciBuZXN0ZWRBcmdPYmpfMSA9IHt9O1xuICAgICAgICB2YWx1ZS5maWVsZHMubWFwKGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZVRvT2JqZWN0UmVwcmVzZW50YXRpb24obmVzdGVkQXJnT2JqXzEsIG9iai5uYW1lLCBvYmoudmFsdWUsIHZhcmlhYmxlcyk7XG4gICAgICAgIH0pO1xuICAgICAgICBhcmdPYmpbbmFtZS52YWx1ZV0gPSBuZXN0ZWRBcmdPYmpfMTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNWYXJpYWJsZSh2YWx1ZSkpIHtcbiAgICAgICAgdmFyIHZhcmlhYmxlVmFsdWUgPSAodmFyaWFibGVzIHx8IHt9KVt2YWx1ZS5uYW1lLnZhbHVlXTtcbiAgICAgICAgYXJnT2JqW25hbWUudmFsdWVdID0gdmFyaWFibGVWYWx1ZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNMaXN0VmFsdWUodmFsdWUpKSB7XG4gICAgICAgIGFyZ09ialtuYW1lLnZhbHVlXSA9IHZhbHVlLnZhbHVlcy5tYXAoZnVuY3Rpb24gKGxpc3RWYWx1ZSkge1xuICAgICAgICAgICAgdmFyIG5lc3RlZEFyZ0FycmF5T2JqID0ge307XG4gICAgICAgICAgICB2YWx1ZVRvT2JqZWN0UmVwcmVzZW50YXRpb24obmVzdGVkQXJnQXJyYXlPYmosIG5hbWUsIGxpc3RWYWx1ZSwgdmFyaWFibGVzKTtcbiAgICAgICAgICAgIHJldHVybiBuZXN0ZWRBcmdBcnJheU9ialtuYW1lLnZhbHVlXTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzRW51bVZhbHVlKHZhbHVlKSkge1xuICAgICAgICBhcmdPYmpbbmFtZS52YWx1ZV0gPSB2YWx1ZS52YWx1ZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNOdWxsVmFsdWUodmFsdWUpKSB7XG4gICAgICAgIGFyZ09ialtuYW1lLnZhbHVlXSA9IG51bGw7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0aHJvdyBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBuZXcgSW52YXJpYW50RXJyb3IoMTcpIDogbmV3IEludmFyaWFudEVycm9yKFwiVGhlIGlubGluZSBhcmd1bWVudCBcXFwiXCIgKyBuYW1lLnZhbHVlICsgXCJcXFwiIG9mIGtpbmQgXFxcIlwiICsgdmFsdWUua2luZCArIFwiXFxcIlwiICtcbiAgICAgICAgICAgICdpcyBub3Qgc3VwcG9ydGVkLiBVc2UgdmFyaWFibGVzIGluc3RlYWQgb2YgaW5saW5lIGFyZ3VtZW50cyB0byAnICtcbiAgICAgICAgICAgICdvdmVyY29tZSB0aGlzIGxpbWl0YXRpb24uJyk7XG4gICAgfVxufVxuZnVuY3Rpb24gc3RvcmVLZXlOYW1lRnJvbUZpZWxkKGZpZWxkLCB2YXJpYWJsZXMpIHtcbiAgICB2YXIgZGlyZWN0aXZlc09iaiA9IG51bGw7XG4gICAgaWYgKGZpZWxkLmRpcmVjdGl2ZXMpIHtcbiAgICAgICAgZGlyZWN0aXZlc09iaiA9IHt9O1xuICAgICAgICBmaWVsZC5kaXJlY3RpdmVzLmZvckVhY2goZnVuY3Rpb24gKGRpcmVjdGl2ZSkge1xuICAgICAgICAgICAgZGlyZWN0aXZlc09ialtkaXJlY3RpdmUubmFtZS52YWx1ZV0gPSB7fTtcbiAgICAgICAgICAgIGlmIChkaXJlY3RpdmUuYXJndW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlLmFyZ3VtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IF9hLm5hbWUsIHZhbHVlID0gX2EudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVRvT2JqZWN0UmVwcmVzZW50YXRpb24oZGlyZWN0aXZlc09ialtkaXJlY3RpdmUubmFtZS52YWx1ZV0sIG5hbWUsIHZhbHVlLCB2YXJpYWJsZXMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgdmFyIGFyZ09iaiA9IG51bGw7XG4gICAgaWYgKGZpZWxkLmFyZ3VtZW50cyAmJiBmaWVsZC5hcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgIGFyZ09iaiA9IHt9O1xuICAgICAgICBmaWVsZC5hcmd1bWVudHMuZm9yRWFjaChmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciBuYW1lID0gX2EubmFtZSwgdmFsdWUgPSBfYS52YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZVRvT2JqZWN0UmVwcmVzZW50YXRpb24oYXJnT2JqLCBuYW1lLCB2YWx1ZSwgdmFyaWFibGVzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBnZXRTdG9yZUtleU5hbWUoZmllbGQubmFtZS52YWx1ZSwgYXJnT2JqLCBkaXJlY3RpdmVzT2JqKTtcbn1cbnZhciBLTk9XTl9ESVJFQ1RJVkVTID0gW1xuICAgICdjb25uZWN0aW9uJyxcbiAgICAnaW5jbHVkZScsXG4gICAgJ3NraXAnLFxuICAgICdjbGllbnQnLFxuICAgICdyZXN0JyxcbiAgICAnZXhwb3J0Jyxcbl07XG5mdW5jdGlvbiBnZXRTdG9yZUtleU5hbWUoZmllbGROYW1lLCBhcmdzLCBkaXJlY3RpdmVzKSB7XG4gICAgaWYgKGRpcmVjdGl2ZXMgJiZcbiAgICAgICAgZGlyZWN0aXZlc1snY29ubmVjdGlvbiddICYmXG4gICAgICAgIGRpcmVjdGl2ZXNbJ2Nvbm5lY3Rpb24nXVsna2V5J10pIHtcbiAgICAgICAgaWYgKGRpcmVjdGl2ZXNbJ2Nvbm5lY3Rpb24nXVsnZmlsdGVyJ10gJiZcbiAgICAgICAgICAgIGRpcmVjdGl2ZXNbJ2Nvbm5lY3Rpb24nXVsnZmlsdGVyJ10ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFyIGZpbHRlcktleXMgPSBkaXJlY3RpdmVzWydjb25uZWN0aW9uJ11bJ2ZpbHRlciddXG4gICAgICAgICAgICAgICAgPyBkaXJlY3RpdmVzWydjb25uZWN0aW9uJ11bJ2ZpbHRlciddXG4gICAgICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICAgIGZpbHRlcktleXMuc29ydCgpO1xuICAgICAgICAgICAgdmFyIHF1ZXJ5QXJnc18xID0gYXJncztcbiAgICAgICAgICAgIHZhciBmaWx0ZXJlZEFyZ3NfMSA9IHt9O1xuICAgICAgICAgICAgZmlsdGVyS2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZEFyZ3NfMVtrZXldID0gcXVlcnlBcmdzXzFba2V5XTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGRpcmVjdGl2ZXNbJ2Nvbm5lY3Rpb24nXVsna2V5J10gKyBcIihcIiArIEpTT04uc3RyaW5naWZ5KGZpbHRlcmVkQXJnc18xKSArIFwiKVwiO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGRpcmVjdGl2ZXNbJ2Nvbm5lY3Rpb24nXVsna2V5J107XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGNvbXBsZXRlRmllbGROYW1lID0gZmllbGROYW1lO1xuICAgIGlmIChhcmdzKSB7XG4gICAgICAgIHZhciBzdHJpbmdpZmllZEFyZ3MgPSBzdHJpbmdpZnkoYXJncyk7XG4gICAgICAgIGNvbXBsZXRlRmllbGROYW1lICs9IFwiKFwiICsgc3RyaW5naWZpZWRBcmdzICsgXCIpXCI7XG4gICAgfVxuICAgIGlmIChkaXJlY3RpdmVzKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGRpcmVjdGl2ZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKEtOT1dOX0RJUkVDVElWRVMuaW5kZXhPZihrZXkpICE9PSAtMSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBpZiAoZGlyZWN0aXZlc1trZXldICYmIE9iamVjdC5rZXlzKGRpcmVjdGl2ZXNba2V5XSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29tcGxldGVGaWVsZE5hbWUgKz0gXCJAXCIgKyBrZXkgKyBcIihcIiArIEpTT04uc3RyaW5naWZ5KGRpcmVjdGl2ZXNba2V5XSkgKyBcIilcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbXBsZXRlRmllbGROYW1lICs9IFwiQFwiICsga2V5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBsZXRlRmllbGROYW1lO1xufVxuZnVuY3Rpb24gYXJndW1lbnRzT2JqZWN0RnJvbUZpZWxkKGZpZWxkLCB2YXJpYWJsZXMpIHtcbiAgICBpZiAoZmllbGQuYXJndW1lbnRzICYmIGZpZWxkLmFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGFyZ09ial8xID0ge307XG4gICAgICAgIGZpZWxkLmFyZ3VtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgdmFyIG5hbWUgPSBfYS5uYW1lLCB2YWx1ZSA9IF9hLnZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlVG9PYmplY3RSZXByZXNlbnRhdGlvbihhcmdPYmpfMSwgbmFtZSwgdmFsdWUsIHZhcmlhYmxlcyk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYXJnT2JqXzE7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gcmVzdWx0S2V5TmFtZUZyb21GaWVsZChmaWVsZCkge1xuICAgIHJldHVybiBmaWVsZC5hbGlhcyA/IGZpZWxkLmFsaWFzLnZhbHVlIDogZmllbGQubmFtZS52YWx1ZTtcbn1cbmZ1bmN0aW9uIGlzRmllbGQoc2VsZWN0aW9uKSB7XG4gICAgcmV0dXJuIHNlbGVjdGlvbi5raW5kID09PSAnRmllbGQnO1xufVxuZnVuY3Rpb24gaXNJbmxpbmVGcmFnbWVudChzZWxlY3Rpb24pIHtcbiAgICByZXR1cm4gc2VsZWN0aW9uLmtpbmQgPT09ICdJbmxpbmVGcmFnbWVudCc7XG59XG5mdW5jdGlvbiBpc0lkVmFsdWUoaWRPYmplY3QpIHtcbiAgICByZXR1cm4gaWRPYmplY3QgJiZcbiAgICAgICAgaWRPYmplY3QudHlwZSA9PT0gJ2lkJyAmJlxuICAgICAgICB0eXBlb2YgaWRPYmplY3QuZ2VuZXJhdGVkID09PSAnYm9vbGVhbic7XG59XG5mdW5jdGlvbiB0b0lkVmFsdWUoaWRDb25maWcsIGdlbmVyYXRlZCkge1xuICAgIGlmIChnZW5lcmF0ZWQgPT09IHZvaWQgMCkgeyBnZW5lcmF0ZWQgPSBmYWxzZTsgfVxuICAgIHJldHVybiBfX2Fzc2lnbih7IHR5cGU6ICdpZCcsIGdlbmVyYXRlZDogZ2VuZXJhdGVkIH0sICh0eXBlb2YgaWRDb25maWcgPT09ICdzdHJpbmcnXG4gICAgICAgID8geyBpZDogaWRDb25maWcsIHR5cGVuYW1lOiB1bmRlZmluZWQgfVxuICAgICAgICA6IGlkQ29uZmlnKSk7XG59XG5mdW5jdGlvbiBpc0pzb25WYWx1ZShqc29uT2JqZWN0KSB7XG4gICAgcmV0dXJuIChqc29uT2JqZWN0ICE9IG51bGwgJiZcbiAgICAgICAgdHlwZW9mIGpzb25PYmplY3QgPT09ICdvYmplY3QnICYmXG4gICAgICAgIGpzb25PYmplY3QudHlwZSA9PT0gJ2pzb24nKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRWYWx1ZUZyb21WYXJpYWJsZShub2RlKSB7XG4gICAgdGhyb3cgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gbmV3IEludmFyaWFudEVycm9yKDE4KSA6IG5ldyBJbnZhcmlhbnRFcnJvcihcIlZhcmlhYmxlIG5vZGVzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHZhbHVlRnJvbU5vZGVcIik7XG59XG5mdW5jdGlvbiB2YWx1ZUZyb21Ob2RlKG5vZGUsIG9uVmFyaWFibGUpIHtcbiAgICBpZiAob25WYXJpYWJsZSA9PT0gdm9pZCAwKSB7IG9uVmFyaWFibGUgPSBkZWZhdWx0VmFsdWVGcm9tVmFyaWFibGU7IH1cbiAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgICBjYXNlICdWYXJpYWJsZSc6XG4gICAgICAgICAgICByZXR1cm4gb25WYXJpYWJsZShub2RlKTtcbiAgICAgICAgY2FzZSAnTnVsbFZhbHVlJzpcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBjYXNlICdJbnRWYWx1ZSc6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQobm9kZS52YWx1ZSwgMTApO1xuICAgICAgICBjYXNlICdGbG9hdFZhbHVlJzpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG5vZGUudmFsdWUpO1xuICAgICAgICBjYXNlICdMaXN0VmFsdWUnOlxuICAgICAgICAgICAgcmV0dXJuIG5vZGUudmFsdWVzLm1hcChmdW5jdGlvbiAodikgeyByZXR1cm4gdmFsdWVGcm9tTm9kZSh2LCBvblZhcmlhYmxlKTsgfSk7XG4gICAgICAgIGNhc2UgJ09iamVjdFZhbHVlJzoge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0ge307XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIF9hID0gbm9kZS5maWVsZHM7IF9pIDwgX2EubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZpZWxkID0gX2FbX2ldO1xuICAgICAgICAgICAgICAgIHZhbHVlW2ZpZWxkLm5hbWUudmFsdWVdID0gdmFsdWVGcm9tTm9kZShmaWVsZC52YWx1ZSwgb25WYXJpYWJsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGlyZWN0aXZlSW5mb0Zyb21GaWVsZChmaWVsZCwgdmFyaWFibGVzKSB7XG4gICAgaWYgKGZpZWxkLmRpcmVjdGl2ZXMgJiYgZmllbGQuZGlyZWN0aXZlcy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGRpcmVjdGl2ZU9ial8xID0ge307XG4gICAgICAgIGZpZWxkLmRpcmVjdGl2ZXMuZm9yRWFjaChmdW5jdGlvbiAoZGlyZWN0aXZlKSB7XG4gICAgICAgICAgICBkaXJlY3RpdmVPYmpfMVtkaXJlY3RpdmUubmFtZS52YWx1ZV0gPSBhcmd1bWVudHNPYmplY3RGcm9tRmllbGQoZGlyZWN0aXZlLCB2YXJpYWJsZXMpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGRpcmVjdGl2ZU9ial8xO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIHNob3VsZEluY2x1ZGUoc2VsZWN0aW9uLCB2YXJpYWJsZXMpIHtcbiAgICBpZiAodmFyaWFibGVzID09PSB2b2lkIDApIHsgdmFyaWFibGVzID0ge307IH1cbiAgICByZXR1cm4gZ2V0SW5jbHVzaW9uRGlyZWN0aXZlcyhzZWxlY3Rpb24uZGlyZWN0aXZlcykuZXZlcnkoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciBkaXJlY3RpdmUgPSBfYS5kaXJlY3RpdmUsIGlmQXJndW1lbnQgPSBfYS5pZkFyZ3VtZW50O1xuICAgICAgICB2YXIgZXZhbGVkVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgaWYgKGlmQXJndW1lbnQudmFsdWUua2luZCA9PT0gJ1ZhcmlhYmxlJykge1xuICAgICAgICAgICAgZXZhbGVkVmFsdWUgPSB2YXJpYWJsZXNbaWZBcmd1bWVudC52YWx1ZS5uYW1lLnZhbHVlXTtcbiAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChldmFsZWRWYWx1ZSAhPT0gdm9pZCAwLCAxMykgOiBpbnZhcmlhbnQoZXZhbGVkVmFsdWUgIT09IHZvaWQgMCwgXCJJbnZhbGlkIHZhcmlhYmxlIHJlZmVyZW5jZWQgaW4gQFwiICsgZGlyZWN0aXZlLm5hbWUudmFsdWUgKyBcIiBkaXJlY3RpdmUuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZXZhbGVkVmFsdWUgPSBpZkFyZ3VtZW50LnZhbHVlLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaXJlY3RpdmUubmFtZS52YWx1ZSA9PT0gJ3NraXAnID8gIWV2YWxlZFZhbHVlIDogZXZhbGVkVmFsdWU7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBnZXREaXJlY3RpdmVOYW1lcyhkb2MpIHtcbiAgICB2YXIgbmFtZXMgPSBbXTtcbiAgICB2aXNpdChkb2MsIHtcbiAgICAgICAgRGlyZWN0aXZlOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgbmFtZXMucHVzaChub2RlLm5hbWUudmFsdWUpO1xuICAgICAgICB9LFxuICAgIH0pO1xuICAgIHJldHVybiBuYW1lcztcbn1cbmZ1bmN0aW9uIGhhc0RpcmVjdGl2ZXMobmFtZXMsIGRvYykge1xuICAgIHJldHVybiBnZXREaXJlY3RpdmVOYW1lcyhkb2MpLnNvbWUoZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIG5hbWVzLmluZGV4T2YobmFtZSkgPiAtMTsgfSk7XG59XG5mdW5jdGlvbiBoYXNDbGllbnRFeHBvcnRzKGRvY3VtZW50KSB7XG4gICAgcmV0dXJuIChkb2N1bWVudCAmJlxuICAgICAgICBoYXNEaXJlY3RpdmVzKFsnY2xpZW50J10sIGRvY3VtZW50KSAmJlxuICAgICAgICBoYXNEaXJlY3RpdmVzKFsnZXhwb3J0J10sIGRvY3VtZW50KSk7XG59XG5mdW5jdGlvbiBpc0luY2x1c2lvbkRpcmVjdGl2ZShfYSkge1xuICAgIHZhciB2YWx1ZSA9IF9hLm5hbWUudmFsdWU7XG4gICAgcmV0dXJuIHZhbHVlID09PSAnc2tpcCcgfHwgdmFsdWUgPT09ICdpbmNsdWRlJztcbn1cbmZ1bmN0aW9uIGdldEluY2x1c2lvbkRpcmVjdGl2ZXMoZGlyZWN0aXZlcykge1xuICAgIHJldHVybiBkaXJlY3RpdmVzID8gZGlyZWN0aXZlcy5maWx0ZXIoaXNJbmNsdXNpb25EaXJlY3RpdmUpLm1hcChmdW5jdGlvbiAoZGlyZWN0aXZlKSB7XG4gICAgICAgIHZhciBkaXJlY3RpdmVBcmd1bWVudHMgPSBkaXJlY3RpdmUuYXJndW1lbnRzO1xuICAgICAgICB2YXIgZGlyZWN0aXZlTmFtZSA9IGRpcmVjdGl2ZS5uYW1lLnZhbHVlO1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZGlyZWN0aXZlQXJndW1lbnRzICYmIGRpcmVjdGl2ZUFyZ3VtZW50cy5sZW5ndGggPT09IDEsIDE0KSA6IGludmFyaWFudChkaXJlY3RpdmVBcmd1bWVudHMgJiYgZGlyZWN0aXZlQXJndW1lbnRzLmxlbmd0aCA9PT0gMSwgXCJJbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgdGhlIEBcIiArIGRpcmVjdGl2ZU5hbWUgKyBcIiBkaXJlY3RpdmUuXCIpO1xuICAgICAgICB2YXIgaWZBcmd1bWVudCA9IGRpcmVjdGl2ZUFyZ3VtZW50c1swXTtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGlmQXJndW1lbnQubmFtZSAmJiBpZkFyZ3VtZW50Lm5hbWUudmFsdWUgPT09ICdpZicsIDE1KSA6IGludmFyaWFudChpZkFyZ3VtZW50Lm5hbWUgJiYgaWZBcmd1bWVudC5uYW1lLnZhbHVlID09PSAnaWYnLCBcIkludmFsaWQgYXJndW1lbnQgZm9yIHRoZSBAXCIgKyBkaXJlY3RpdmVOYW1lICsgXCIgZGlyZWN0aXZlLlwiKTtcbiAgICAgICAgdmFyIGlmVmFsdWUgPSBpZkFyZ3VtZW50LnZhbHVlO1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoaWZWYWx1ZSAmJlxuICAgICAgICAgICAgKGlmVmFsdWUua2luZCA9PT0gJ1ZhcmlhYmxlJyB8fCBpZlZhbHVlLmtpbmQgPT09ICdCb29sZWFuVmFsdWUnKSwgMTYpIDogaW52YXJpYW50KGlmVmFsdWUgJiZcbiAgICAgICAgICAgIChpZlZhbHVlLmtpbmQgPT09ICdWYXJpYWJsZScgfHwgaWZWYWx1ZS5raW5kID09PSAnQm9vbGVhblZhbHVlJyksIFwiQXJndW1lbnQgZm9yIHRoZSBAXCIgKyBkaXJlY3RpdmVOYW1lICsgXCIgZGlyZWN0aXZlIG11c3QgYmUgYSB2YXJpYWJsZSBvciBhIGJvb2xlYW4gdmFsdWUuXCIpO1xuICAgICAgICByZXR1cm4geyBkaXJlY3RpdmU6IGRpcmVjdGl2ZSwgaWZBcmd1bWVudDogaWZBcmd1bWVudCB9O1xuICAgIH0pIDogW107XG59XG5cbmZ1bmN0aW9uIGdldEZyYWdtZW50UXVlcnlEb2N1bWVudChkb2N1bWVudCwgZnJhZ21lbnROYW1lKSB7XG4gICAgdmFyIGFjdHVhbEZyYWdtZW50TmFtZSA9IGZyYWdtZW50TmFtZTtcbiAgICB2YXIgZnJhZ21lbnRzID0gW107XG4gICAgZG9jdW1lbnQuZGVmaW5pdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAoZGVmaW5pdGlvbikge1xuICAgICAgICBpZiAoZGVmaW5pdGlvbi5raW5kID09PSAnT3BlcmF0aW9uRGVmaW5pdGlvbicpIHtcbiAgICAgICAgICAgIHRocm93IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IG5ldyBJbnZhcmlhbnRFcnJvcigxMSkgOiBuZXcgSW52YXJpYW50RXJyb3IoXCJGb3VuZCBhIFwiICsgZGVmaW5pdGlvbi5vcGVyYXRpb24gKyBcIiBvcGVyYXRpb25cIiArIChkZWZpbml0aW9uLm5hbWUgPyBcIiBuYW1lZCAnXCIgKyBkZWZpbml0aW9uLm5hbWUudmFsdWUgKyBcIidcIiA6ICcnKSArIFwiLiBcIiArXG4gICAgICAgICAgICAgICAgJ05vIG9wZXJhdGlvbnMgYXJlIGFsbG93ZWQgd2hlbiB1c2luZyBhIGZyYWdtZW50IGFzIGEgcXVlcnkuIE9ubHkgZnJhZ21lbnRzIGFyZSBhbGxvd2VkLicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWZpbml0aW9uLmtpbmQgPT09ICdGcmFnbWVudERlZmluaXRpb24nKSB7XG4gICAgICAgICAgICBmcmFnbWVudHMucHVzaChkZWZpbml0aW9uKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGlmICh0eXBlb2YgYWN0dWFsRnJhZ21lbnROYW1lID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZnJhZ21lbnRzLmxlbmd0aCA9PT0gMSwgMTIpIDogaW52YXJpYW50KGZyYWdtZW50cy5sZW5ndGggPT09IDEsIFwiRm91bmQgXCIgKyBmcmFnbWVudHMubGVuZ3RoICsgXCIgZnJhZ21lbnRzLiBgZnJhZ21lbnROYW1lYCBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gdGhlcmUgaXMgbm90IGV4YWN0bHkgMSBmcmFnbWVudC5cIik7XG4gICAgICAgIGFjdHVhbEZyYWdtZW50TmFtZSA9IGZyYWdtZW50c1swXS5uYW1lLnZhbHVlO1xuICAgIH1cbiAgICB2YXIgcXVlcnkgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZG9jdW1lbnQpLCB7IGRlZmluaXRpb25zOiBfX3NwcmVhZEFycmF5cyhbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2luZDogJ09wZXJhdGlvbkRlZmluaXRpb24nLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogJ3F1ZXJ5JyxcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25TZXQ6IHtcbiAgICAgICAgICAgICAgICAgICAga2luZDogJ1NlbGVjdGlvblNldCcsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kOiAnRnJhZ21lbnRTcHJlYWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogJ05hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYWN0dWFsRnJhZ21lbnROYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgIF0sIGRvY3VtZW50LmRlZmluaXRpb25zKSB9KTtcbiAgICByZXR1cm4gcXVlcnk7XG59XG5cbmZ1bmN0aW9uIGFzc2lnbih0YXJnZXQpIHtcbiAgICB2YXIgc291cmNlcyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHNvdXJjZXNbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIHNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc291cmNlID09PSAndW5kZWZpbmVkJyB8fCBzb3VyY2UgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gZ2V0TXV0YXRpb25EZWZpbml0aW9uKGRvYykge1xuICAgIGNoZWNrRG9jdW1lbnQoZG9jKTtcbiAgICB2YXIgbXV0YXRpb25EZWYgPSBkb2MuZGVmaW5pdGlvbnMuZmlsdGVyKGZ1bmN0aW9uIChkZWZpbml0aW9uKSB7XG4gICAgICAgIHJldHVybiBkZWZpbml0aW9uLmtpbmQgPT09ICdPcGVyYXRpb25EZWZpbml0aW9uJyAmJlxuICAgICAgICAgICAgZGVmaW5pdGlvbi5vcGVyYXRpb24gPT09ICdtdXRhdGlvbic7XG4gICAgfSlbMF07XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KG11dGF0aW9uRGVmLCAxKSA6IGludmFyaWFudChtdXRhdGlvbkRlZiwgJ011c3QgY29udGFpbiBhIG11dGF0aW9uIGRlZmluaXRpb24uJyk7XG4gICAgcmV0dXJuIG11dGF0aW9uRGVmO1xufVxuZnVuY3Rpb24gY2hlY2tEb2N1bWVudChkb2MpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZG9jICYmIGRvYy5raW5kID09PSAnRG9jdW1lbnQnLCAyKSA6IGludmFyaWFudChkb2MgJiYgZG9jLmtpbmQgPT09ICdEb2N1bWVudCcsIFwiRXhwZWN0aW5nIGEgcGFyc2VkIEdyYXBoUUwgZG9jdW1lbnQuIFBlcmhhcHMgeW91IG5lZWQgdG8gd3JhcCB0aGUgcXVlcnkgc3RyaW5nIGluIGEgXFxcImdxbFxcXCIgdGFnPyBodHRwOi8vZG9jcy5hcG9sbG9zdGFjay5jb20vYXBvbGxvLWNsaWVudC9jb3JlLmh0bWwjZ3FsXCIpO1xuICAgIHZhciBvcGVyYXRpb25zID0gZG9jLmRlZmluaXRpb25zXG4gICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGQua2luZCAhPT0gJ0ZyYWdtZW50RGVmaW5pdGlvbic7IH0pXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKGRlZmluaXRpb24pIHtcbiAgICAgICAgaWYgKGRlZmluaXRpb24ua2luZCAhPT0gJ09wZXJhdGlvbkRlZmluaXRpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBuZXcgSW52YXJpYW50RXJyb3IoMykgOiBuZXcgSW52YXJpYW50RXJyb3IoXCJTY2hlbWEgdHlwZSBkZWZpbml0aW9ucyBub3QgYWxsb3dlZCBpbiBxdWVyaWVzLiBGb3VuZDogXFxcIlwiICsgZGVmaW5pdGlvbi5raW5kICsgXCJcXFwiXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWZpbml0aW9uO1xuICAgIH0pO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChvcGVyYXRpb25zLmxlbmd0aCA8PSAxLCA0KSA6IGludmFyaWFudChvcGVyYXRpb25zLmxlbmd0aCA8PSAxLCBcIkFtYmlndW91cyBHcmFwaFFMIGRvY3VtZW50OiBjb250YWlucyBcIiArIG9wZXJhdGlvbnMubGVuZ3RoICsgXCIgb3BlcmF0aW9uc1wiKTtcbiAgICByZXR1cm4gZG9jO1xufVxuZnVuY3Rpb24gZ2V0T3BlcmF0aW9uRGVmaW5pdGlvbihkb2MpIHtcbiAgICBjaGVja0RvY3VtZW50KGRvYyk7XG4gICAgcmV0dXJuIGRvYy5kZWZpbml0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKGRlZmluaXRpb24pIHsgcmV0dXJuIGRlZmluaXRpb24ua2luZCA9PT0gJ09wZXJhdGlvbkRlZmluaXRpb24nOyB9KVswXTtcbn1cbmZ1bmN0aW9uIGdldE9wZXJhdGlvbkRlZmluaXRpb25PckRpZShkb2N1bWVudCkge1xuICAgIHZhciBkZWYgPSBnZXRPcGVyYXRpb25EZWZpbml0aW9uKGRvY3VtZW50KTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZGVmLCA1KSA6IGludmFyaWFudChkZWYsIFwiR3JhcGhRTCBkb2N1bWVudCBpcyBtaXNzaW5nIGFuIG9wZXJhdGlvblwiKTtcbiAgICByZXR1cm4gZGVmO1xufVxuZnVuY3Rpb24gZ2V0T3BlcmF0aW9uTmFtZShkb2MpIHtcbiAgICByZXR1cm4gKGRvYy5kZWZpbml0aW9uc1xuICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChkZWZpbml0aW9uKSB7XG4gICAgICAgIHJldHVybiBkZWZpbml0aW9uLmtpbmQgPT09ICdPcGVyYXRpb25EZWZpbml0aW9uJyAmJiBkZWZpbml0aW9uLm5hbWU7XG4gICAgfSlcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4geC5uYW1lLnZhbHVlOyB9KVswXSB8fCBudWxsKTtcbn1cbmZ1bmN0aW9uIGdldEZyYWdtZW50RGVmaW5pdGlvbnMoZG9jKSB7XG4gICAgcmV0dXJuIGRvYy5kZWZpbml0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKGRlZmluaXRpb24pIHsgcmV0dXJuIGRlZmluaXRpb24ua2luZCA9PT0gJ0ZyYWdtZW50RGVmaW5pdGlvbic7IH0pO1xufVxuZnVuY3Rpb24gZ2V0UXVlcnlEZWZpbml0aW9uKGRvYykge1xuICAgIHZhciBxdWVyeURlZiA9IGdldE9wZXJhdGlvbkRlZmluaXRpb24oZG9jKTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQocXVlcnlEZWYgJiYgcXVlcnlEZWYub3BlcmF0aW9uID09PSAncXVlcnknLCA2KSA6IGludmFyaWFudChxdWVyeURlZiAmJiBxdWVyeURlZi5vcGVyYXRpb24gPT09ICdxdWVyeScsICdNdXN0IGNvbnRhaW4gYSBxdWVyeSBkZWZpbml0aW9uLicpO1xuICAgIHJldHVybiBxdWVyeURlZjtcbn1cbmZ1bmN0aW9uIGdldEZyYWdtZW50RGVmaW5pdGlvbihkb2MpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZG9jLmtpbmQgPT09ICdEb2N1bWVudCcsIDcpIDogaW52YXJpYW50KGRvYy5raW5kID09PSAnRG9jdW1lbnQnLCBcIkV4cGVjdGluZyBhIHBhcnNlZCBHcmFwaFFMIGRvY3VtZW50LiBQZXJoYXBzIHlvdSBuZWVkIHRvIHdyYXAgdGhlIHF1ZXJ5IHN0cmluZyBpbiBhIFxcXCJncWxcXFwiIHRhZz8gaHR0cDovL2RvY3MuYXBvbGxvc3RhY2suY29tL2Fwb2xsby1jbGllbnQvY29yZS5odG1sI2dxbFwiKTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZG9jLmRlZmluaXRpb25zLmxlbmd0aCA8PSAxLCA4KSA6IGludmFyaWFudChkb2MuZGVmaW5pdGlvbnMubGVuZ3RoIDw9IDEsICdGcmFnbWVudCBtdXN0IGhhdmUgZXhhY3RseSBvbmUgZGVmaW5pdGlvbi4nKTtcbiAgICB2YXIgZnJhZ21lbnREZWYgPSBkb2MuZGVmaW5pdGlvbnNbMF07XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZyYWdtZW50RGVmLmtpbmQgPT09ICdGcmFnbWVudERlZmluaXRpb24nLCA5KSA6IGludmFyaWFudChmcmFnbWVudERlZi5raW5kID09PSAnRnJhZ21lbnREZWZpbml0aW9uJywgJ011c3QgYmUgYSBmcmFnbWVudCBkZWZpbml0aW9uLicpO1xuICAgIHJldHVybiBmcmFnbWVudERlZjtcbn1cbmZ1bmN0aW9uIGdldE1haW5EZWZpbml0aW9uKHF1ZXJ5RG9jKSB7XG4gICAgY2hlY2tEb2N1bWVudChxdWVyeURvYyk7XG4gICAgdmFyIGZyYWdtZW50RGVmaW5pdGlvbjtcbiAgICBmb3IgKHZhciBfaSA9IDAsIF9hID0gcXVlcnlEb2MuZGVmaW5pdGlvbnM7IF9pIDwgX2EubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBkZWZpbml0aW9uID0gX2FbX2ldO1xuICAgICAgICBpZiAoZGVmaW5pdGlvbi5raW5kID09PSAnT3BlcmF0aW9uRGVmaW5pdGlvbicpIHtcbiAgICAgICAgICAgIHZhciBvcGVyYXRpb24gPSBkZWZpbml0aW9uLm9wZXJhdGlvbjtcbiAgICAgICAgICAgIGlmIChvcGVyYXRpb24gPT09ICdxdWVyeScgfHxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24gPT09ICdtdXRhdGlvbicgfHxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24gPT09ICdzdWJzY3JpcHRpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmluaXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZmluaXRpb24ua2luZCA9PT0gJ0ZyYWdtZW50RGVmaW5pdGlvbicgJiYgIWZyYWdtZW50RGVmaW5pdGlvbikge1xuICAgICAgICAgICAgZnJhZ21lbnREZWZpbml0aW9uID0gZGVmaW5pdGlvbjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZnJhZ21lbnREZWZpbml0aW9uKSB7XG4gICAgICAgIHJldHVybiBmcmFnbWVudERlZmluaXRpb247XG4gICAgfVxuICAgIHRocm93IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IG5ldyBJbnZhcmlhbnRFcnJvcigxMCkgOiBuZXcgSW52YXJpYW50RXJyb3IoJ0V4cGVjdGVkIGEgcGFyc2VkIEdyYXBoUUwgcXVlcnkgd2l0aCBhIHF1ZXJ5LCBtdXRhdGlvbiwgc3Vic2NyaXB0aW9uLCBvciBhIGZyYWdtZW50LicpO1xufVxuZnVuY3Rpb24gY3JlYXRlRnJhZ21lbnRNYXAoZnJhZ21lbnRzKSB7XG4gICAgaWYgKGZyYWdtZW50cyA9PT0gdm9pZCAwKSB7IGZyYWdtZW50cyA9IFtdOyB9XG4gICAgdmFyIHN5bVRhYmxlID0ge307XG4gICAgZnJhZ21lbnRzLmZvckVhY2goZnVuY3Rpb24gKGZyYWdtZW50KSB7XG4gICAgICAgIHN5bVRhYmxlW2ZyYWdtZW50Lm5hbWUudmFsdWVdID0gZnJhZ21lbnQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN5bVRhYmxlO1xufVxuZnVuY3Rpb24gZ2V0RGVmYXVsdFZhbHVlcyhkZWZpbml0aW9uKSB7XG4gICAgaWYgKGRlZmluaXRpb24gJiZcbiAgICAgICAgZGVmaW5pdGlvbi52YXJpYWJsZURlZmluaXRpb25zICYmXG4gICAgICAgIGRlZmluaXRpb24udmFyaWFibGVEZWZpbml0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGRlZmF1bHRWYWx1ZXMgPSBkZWZpbml0aW9uLnZhcmlhYmxlRGVmaW5pdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICB2YXIgZGVmYXVsdFZhbHVlID0gX2EuZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICB2YXIgdmFyaWFibGUgPSBfYS52YXJpYWJsZSwgZGVmYXVsdFZhbHVlID0gX2EuZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgdmFyIGRlZmF1bHRWYWx1ZU9iaiA9IHt9O1xuICAgICAgICAgICAgdmFsdWVUb09iamVjdFJlcHJlc2VudGF0aW9uKGRlZmF1bHRWYWx1ZU9iaiwgdmFyaWFibGUubmFtZSwgZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWVPYmo7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYXNzaWduLmFwcGx5KHZvaWQgMCwgX19zcHJlYWRBcnJheXMoW3t9XSwgZGVmYXVsdFZhbHVlcykpO1xuICAgIH1cbiAgICByZXR1cm4ge307XG59XG5mdW5jdGlvbiB2YXJpYWJsZXNJbk9wZXJhdGlvbihvcGVyYXRpb24pIHtcbiAgICB2YXIgbmFtZXMgPSBuZXcgU2V0KCk7XG4gICAgaWYgKG9wZXJhdGlvbi52YXJpYWJsZURlZmluaXRpb25zKSB7XG4gICAgICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSBvcGVyYXRpb24udmFyaWFibGVEZWZpbml0aW9uczsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHZhciBkZWZpbml0aW9uID0gX2FbX2ldO1xuICAgICAgICAgICAgbmFtZXMuYWRkKGRlZmluaXRpb24udmFyaWFibGUubmFtZS52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5hbWVzO1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJJblBsYWNlKGFycmF5LCB0ZXN0LCBjb250ZXh0KSB7XG4gICAgdmFyIHRhcmdldCA9IDA7XG4gICAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoZWxlbSwgaSkge1xuICAgICAgICBpZiAodGVzdC5jYWxsKHRoaXMsIGVsZW0sIGksIGFycmF5KSkge1xuICAgICAgICAgICAgYXJyYXlbdGFyZ2V0KytdID0gZWxlbTtcbiAgICAgICAgfVxuICAgIH0sIGNvbnRleHQpO1xuICAgIGFycmF5Lmxlbmd0aCA9IHRhcmdldDtcbiAgICByZXR1cm4gYXJyYXk7XG59XG5cbnZhciBUWVBFTkFNRV9GSUVMRCA9IHtcbiAgICBraW5kOiAnRmllbGQnLFxuICAgIG5hbWU6IHtcbiAgICAgICAga2luZDogJ05hbWUnLFxuICAgICAgICB2YWx1ZTogJ19fdHlwZW5hbWUnLFxuICAgIH0sXG59O1xuZnVuY3Rpb24gaXNFbXB0eShvcCwgZnJhZ21lbnRzKSB7XG4gICAgcmV0dXJuIG9wLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zLmV2ZXJ5KGZ1bmN0aW9uIChzZWxlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbi5raW5kID09PSAnRnJhZ21lbnRTcHJlYWQnICYmXG4gICAgICAgICAgICBpc0VtcHR5KGZyYWdtZW50c1tzZWxlY3Rpb24ubmFtZS52YWx1ZV0sIGZyYWdtZW50cyk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBudWxsSWZEb2NJc0VtcHR5KGRvYykge1xuICAgIHJldHVybiBpc0VtcHR5KGdldE9wZXJhdGlvbkRlZmluaXRpb24oZG9jKSB8fCBnZXRGcmFnbWVudERlZmluaXRpb24oZG9jKSwgY3JlYXRlRnJhZ21lbnRNYXAoZ2V0RnJhZ21lbnREZWZpbml0aW9ucyhkb2MpKSlcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogZG9jO1xufVxuZnVuY3Rpb24gZ2V0RGlyZWN0aXZlTWF0Y2hlcihkaXJlY3RpdmVzKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGRpcmVjdGl2ZU1hdGNoZXIoZGlyZWN0aXZlKSB7XG4gICAgICAgIHJldHVybiBkaXJlY3RpdmVzLnNvbWUoZnVuY3Rpb24gKGRpcikge1xuICAgICAgICAgICAgcmV0dXJuIChkaXIubmFtZSAmJiBkaXIubmFtZSA9PT0gZGlyZWN0aXZlLm5hbWUudmFsdWUpIHx8XG4gICAgICAgICAgICAgICAgKGRpci50ZXN0ICYmIGRpci50ZXN0KGRpcmVjdGl2ZSkpO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuZnVuY3Rpb24gcmVtb3ZlRGlyZWN0aXZlc0Zyb21Eb2N1bWVudChkaXJlY3RpdmVzLCBkb2MpIHtcbiAgICB2YXIgdmFyaWFibGVzSW5Vc2UgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHZhciB2YXJpYWJsZXNUb1JlbW92ZSA9IFtdO1xuICAgIHZhciBmcmFnbWVudFNwcmVhZHNJblVzZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdmFyIGZyYWdtZW50U3ByZWFkc1RvUmVtb3ZlID0gW107XG4gICAgdmFyIG1vZGlmaWVkRG9jID0gbnVsbElmRG9jSXNFbXB0eSh2aXNpdChkb2MsIHtcbiAgICAgICAgVmFyaWFibGU6IHtcbiAgICAgICAgICAgIGVudGVyOiBmdW5jdGlvbiAobm9kZSwgX2tleSwgcGFyZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudC5raW5kICE9PSAnVmFyaWFibGVEZWZpbml0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXNJblVzZVtub2RlLm5hbWUudmFsdWVdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBGaWVsZDoge1xuICAgICAgICAgICAgZW50ZXI6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZXMgJiYgbm9kZS5kaXJlY3RpdmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzaG91bGRSZW1vdmVGaWVsZCA9IGRpcmVjdGl2ZXMuc29tZShmdW5jdGlvbiAoZGlyZWN0aXZlKSB7IHJldHVybiBkaXJlY3RpdmUucmVtb3ZlOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFJlbW92ZUZpZWxkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmRpcmVjdGl2ZXMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuZGlyZWN0aXZlcy5zb21lKGdldERpcmVjdGl2ZU1hdGNoZXIoZGlyZWN0aXZlcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5hcmd1bWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLmFyZ3VtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZy52YWx1ZS5raW5kID09PSAnVmFyaWFibGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXNUb1JlbW92ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhcmcudmFsdWUubmFtZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5zZWxlY3Rpb25TZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRBbGxGcmFnbWVudFNwcmVhZHNGcm9tU2VsZWN0aW9uU2V0KG5vZGUuc2VsZWN0aW9uU2V0KS5mb3JFYWNoKGZ1bmN0aW9uIChmcmFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50U3ByZWFkc1RvUmVtb3ZlLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZnJhZy5uYW1lLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgRnJhZ21lbnRTcHJlYWQ6IHtcbiAgICAgICAgICAgIGVudGVyOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50U3ByZWFkc0luVXNlW25vZGUubmFtZS52YWx1ZV0gPSB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgRGlyZWN0aXZlOiB7XG4gICAgICAgICAgICBlbnRlcjogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZ2V0RGlyZWN0aXZlTWF0Y2hlcihkaXJlY3RpdmVzKShub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH0pKTtcbiAgICBpZiAobW9kaWZpZWREb2MgJiZcbiAgICAgICAgZmlsdGVySW5QbGFjZSh2YXJpYWJsZXNUb1JlbW92ZSwgZnVuY3Rpb24gKHYpIHsgcmV0dXJuICF2YXJpYWJsZXNJblVzZVt2Lm5hbWVdOyB9KS5sZW5ndGgpIHtcbiAgICAgICAgbW9kaWZpZWREb2MgPSByZW1vdmVBcmd1bWVudHNGcm9tRG9jdW1lbnQodmFyaWFibGVzVG9SZW1vdmUsIG1vZGlmaWVkRG9jKTtcbiAgICB9XG4gICAgaWYgKG1vZGlmaWVkRG9jICYmXG4gICAgICAgIGZpbHRlckluUGxhY2UoZnJhZ21lbnRTcHJlYWRzVG9SZW1vdmUsIGZ1bmN0aW9uIChmcykgeyByZXR1cm4gIWZyYWdtZW50U3ByZWFkc0luVXNlW2ZzLm5hbWVdOyB9KVxuICAgICAgICAgICAgLmxlbmd0aCkge1xuICAgICAgICBtb2RpZmllZERvYyA9IHJlbW92ZUZyYWdtZW50U3ByZWFkRnJvbURvY3VtZW50KGZyYWdtZW50U3ByZWFkc1RvUmVtb3ZlLCBtb2RpZmllZERvYyk7XG4gICAgfVxuICAgIHJldHVybiBtb2RpZmllZERvYztcbn1cbmZ1bmN0aW9uIGFkZFR5cGVuYW1lVG9Eb2N1bWVudChkb2MpIHtcbiAgICByZXR1cm4gdmlzaXQoY2hlY2tEb2N1bWVudChkb2MpLCB7XG4gICAgICAgIFNlbGVjdGlvblNldDoge1xuICAgICAgICAgICAgZW50ZXI6IGZ1bmN0aW9uIChub2RlLCBfa2V5LCBwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50ICYmXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudC5raW5kID09PSAnT3BlcmF0aW9uRGVmaW5pdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0aW9ucyA9IG5vZGUuc2VsZWN0aW9ucztcbiAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgc2tpcCA9IHNlbGVjdGlvbnMuc29tZShmdW5jdGlvbiAoc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoaXNGaWVsZChzZWxlY3Rpb24pICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uLm5hbWUudmFsdWUgPT09ICdfX3R5cGVuYW1lJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5uYW1lLnZhbHVlLmxhc3RJbmRleE9mKCdfXycsIDApID09PSAwKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHNraXApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgZmllbGQgPSBwYXJlbnQ7XG4gICAgICAgICAgICAgICAgaWYgKGlzRmllbGQoZmllbGQpICYmXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLmRpcmVjdGl2ZXMgJiZcbiAgICAgICAgICAgICAgICAgICAgZmllbGQuZGlyZWN0aXZlcy5zb21lKGZ1bmN0aW9uIChkKSB7IHJldHVybiBkLm5hbWUudmFsdWUgPT09ICdleHBvcnQnOyB9KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbm9kZSksIHsgc2VsZWN0aW9uczogX19zcHJlYWRBcnJheXMoc2VsZWN0aW9ucywgW1RZUEVOQU1FX0ZJRUxEXSkgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH0pO1xufVxudmFyIGNvbm5lY3Rpb25SZW1vdmVDb25maWcgPSB7XG4gICAgdGVzdDogZnVuY3Rpb24gKGRpcmVjdGl2ZSkge1xuICAgICAgICB2YXIgd2lsbFJlbW92ZSA9IGRpcmVjdGl2ZS5uYW1lLnZhbHVlID09PSAnY29ubmVjdGlvbic7XG4gICAgICAgIGlmICh3aWxsUmVtb3ZlKSB7XG4gICAgICAgICAgICBpZiAoIWRpcmVjdGl2ZS5hcmd1bWVudHMgfHxcbiAgICAgICAgICAgICAgICAhZGlyZWN0aXZlLmFyZ3VtZW50cy5zb21lKGZ1bmN0aW9uIChhcmcpIHsgcmV0dXJuIGFyZy5uYW1lLnZhbHVlID09PSAna2V5JzsgfSkpIHtcbiAgICAgICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgfHwgaW52YXJpYW50Lndhcm4oJ1JlbW92aW5nIGFuIEBjb25uZWN0aW9uIGRpcmVjdGl2ZSBldmVuIHRob3VnaCBpdCBkb2VzIG5vdCBoYXZlIGEga2V5LiAnICtcbiAgICAgICAgICAgICAgICAgICAgJ1lvdSBtYXkgd2FudCB0byB1c2UgdGhlIGtleSBwYXJhbWV0ZXIgdG8gc3BlY2lmeSBhIHN0b3JlIGtleS4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gd2lsbFJlbW92ZTtcbiAgICB9LFxufTtcbmZ1bmN0aW9uIHJlbW92ZUNvbm5lY3Rpb25EaXJlY3RpdmVGcm9tRG9jdW1lbnQoZG9jKSB7XG4gICAgcmV0dXJuIHJlbW92ZURpcmVjdGl2ZXNGcm9tRG9jdW1lbnQoW2Nvbm5lY3Rpb25SZW1vdmVDb25maWddLCBjaGVja0RvY3VtZW50KGRvYykpO1xufVxuZnVuY3Rpb24gaGFzRGlyZWN0aXZlc0luU2VsZWN0aW9uU2V0KGRpcmVjdGl2ZXMsIHNlbGVjdGlvblNldCwgbmVzdGVkQ2hlY2spIHtcbiAgICBpZiAobmVzdGVkQ2hlY2sgPT09IHZvaWQgMCkgeyBuZXN0ZWRDaGVjayA9IHRydWU7IH1cbiAgICByZXR1cm4gKHNlbGVjdGlvblNldCAmJlxuICAgICAgICBzZWxlY3Rpb25TZXQuc2VsZWN0aW9ucyAmJlxuICAgICAgICBzZWxlY3Rpb25TZXQuc2VsZWN0aW9ucy5zb21lKGZ1bmN0aW9uIChzZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBoYXNEaXJlY3RpdmVzSW5TZWxlY3Rpb24oZGlyZWN0aXZlcywgc2VsZWN0aW9uLCBuZXN0ZWRDaGVjayk7XG4gICAgICAgIH0pKTtcbn1cbmZ1bmN0aW9uIGhhc0RpcmVjdGl2ZXNJblNlbGVjdGlvbihkaXJlY3RpdmVzLCBzZWxlY3Rpb24sIG5lc3RlZENoZWNrKSB7XG4gICAgaWYgKG5lc3RlZENoZWNrID09PSB2b2lkIDApIHsgbmVzdGVkQ2hlY2sgPSB0cnVlOyB9XG4gICAgaWYgKCFpc0ZpZWxkKHNlbGVjdGlvbikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICghc2VsZWN0aW9uLmRpcmVjdGl2ZXMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gKHNlbGVjdGlvbi5kaXJlY3RpdmVzLnNvbWUoZ2V0RGlyZWN0aXZlTWF0Y2hlcihkaXJlY3RpdmVzKSkgfHxcbiAgICAgICAgKG5lc3RlZENoZWNrICYmXG4gICAgICAgICAgICBoYXNEaXJlY3RpdmVzSW5TZWxlY3Rpb25TZXQoZGlyZWN0aXZlcywgc2VsZWN0aW9uLnNlbGVjdGlvblNldCwgbmVzdGVkQ2hlY2spKSk7XG59XG5mdW5jdGlvbiBnZXREaXJlY3RpdmVzRnJvbURvY3VtZW50KGRpcmVjdGl2ZXMsIGRvYykge1xuICAgIGNoZWNrRG9jdW1lbnQoZG9jKTtcbiAgICB2YXIgcGFyZW50UGF0aDtcbiAgICByZXR1cm4gbnVsbElmRG9jSXNFbXB0eSh2aXNpdChkb2MsIHtcbiAgICAgICAgU2VsZWN0aW9uU2V0OiB7XG4gICAgICAgICAgICBlbnRlcjogZnVuY3Rpb24gKG5vZGUsIF9rZXksIF9wYXJlbnQsIHBhdGgpIHtcbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudFBhdGggPSBwYXRoLmpvaW4oJy0nKTtcbiAgICAgICAgICAgICAgICBpZiAoIXBhcmVudFBhdGggfHxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhdGggPT09IHBhcmVudFBhdGggfHxcbiAgICAgICAgICAgICAgICAgICAgIWN1cnJlbnRQYXRoLnN0YXJ0c1dpdGgocGFyZW50UGF0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuc2VsZWN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGlvbnNXaXRoRGlyZWN0aXZlcyA9IG5vZGUuc2VsZWN0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKHNlbGVjdGlvbikgeyByZXR1cm4gaGFzRGlyZWN0aXZlc0luU2VsZWN0aW9uKGRpcmVjdGl2ZXMsIHNlbGVjdGlvbik7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0RpcmVjdGl2ZXNJblNlbGVjdGlvblNldChkaXJlY3RpdmVzLCBub2RlLCBmYWxzZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRQYXRoID0gY3VycmVudFBhdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIG5vZGUpLCB7IHNlbGVjdGlvbnM6IHNlbGVjdGlvbnNXaXRoRGlyZWN0aXZlcyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9KSk7XG59XG5mdW5jdGlvbiBnZXRBcmd1bWVudE1hdGNoZXIoY29uZmlnKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGFyZ3VtZW50TWF0Y2hlcihhcmd1bWVudCkge1xuICAgICAgICByZXR1cm4gY29uZmlnLnNvbWUoZnVuY3Rpb24gKGFDb25maWcpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudC52YWx1ZSAmJlxuICAgICAgICAgICAgICAgIGFyZ3VtZW50LnZhbHVlLmtpbmQgPT09ICdWYXJpYWJsZScgJiZcbiAgICAgICAgICAgICAgICBhcmd1bWVudC52YWx1ZS5uYW1lICYmXG4gICAgICAgICAgICAgICAgKGFDb25maWcubmFtZSA9PT0gYXJndW1lbnQudmFsdWUubmFtZS52YWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAoYUNvbmZpZy50ZXN0ICYmIGFDb25maWcudGVzdChhcmd1bWVudCkpKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHJlbW92ZUFyZ3VtZW50c0Zyb21Eb2N1bWVudChjb25maWcsIGRvYykge1xuICAgIHZhciBhcmdNYXRjaGVyID0gZ2V0QXJndW1lbnRNYXRjaGVyKGNvbmZpZyk7XG4gICAgcmV0dXJuIG51bGxJZkRvY0lzRW1wdHkodmlzaXQoZG9jLCB7XG4gICAgICAgIE9wZXJhdGlvbkRlZmluaXRpb246IHtcbiAgICAgICAgICAgIGVudGVyOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbm9kZSksIHsgdmFyaWFibGVEZWZpbml0aW9uczogbm9kZS52YXJpYWJsZURlZmluaXRpb25zLmZpbHRlcihmdW5jdGlvbiAodmFyRGVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWNvbmZpZy5zb21lKGZ1bmN0aW9uIChhcmcpIHsgcmV0dXJuIGFyZy5uYW1lID09PSB2YXJEZWYudmFyaWFibGUubmFtZS52YWx1ZTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgRmllbGQ6IHtcbiAgICAgICAgICAgIGVudGVyOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgICAgIHZhciBzaG91bGRSZW1vdmVGaWVsZCA9IGNvbmZpZy5zb21lKGZ1bmN0aW9uIChhcmdDb25maWcpIHsgcmV0dXJuIGFyZ0NvbmZpZy5yZW1vdmU7IH0pO1xuICAgICAgICAgICAgICAgIGlmIChzaG91bGRSZW1vdmVGaWVsZCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYXJnTWF0Y2hDb3VudF8xID0gMDtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5hcmd1bWVudHMuZm9yRWFjaChmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnTWF0Y2hlcihhcmcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnTWF0Y2hDb3VudF8xICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXJnTWF0Y2hDb3VudF8xID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIEFyZ3VtZW50OiB7XG4gICAgICAgICAgICBlbnRlcjogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoYXJnTWF0Y2hlcihub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH0pKTtcbn1cbmZ1bmN0aW9uIHJlbW92ZUZyYWdtZW50U3ByZWFkRnJvbURvY3VtZW50KGNvbmZpZywgZG9jKSB7XG4gICAgZnVuY3Rpb24gZW50ZXIobm9kZSkge1xuICAgICAgICBpZiAoY29uZmlnLnNvbWUoZnVuY3Rpb24gKGRlZikgeyByZXR1cm4gZGVmLm5hbWUgPT09IG5vZGUubmFtZS52YWx1ZTsgfSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsSWZEb2NJc0VtcHR5KHZpc2l0KGRvYywge1xuICAgICAgICBGcmFnbWVudFNwcmVhZDogeyBlbnRlcjogZW50ZXIgfSxcbiAgICAgICAgRnJhZ21lbnREZWZpbml0aW9uOiB7IGVudGVyOiBlbnRlciB9LFxuICAgIH0pKTtcbn1cbmZ1bmN0aW9uIGdldEFsbEZyYWdtZW50U3ByZWFkc0Zyb21TZWxlY3Rpb25TZXQoc2VsZWN0aW9uU2V0KSB7XG4gICAgdmFyIGFsbEZyYWdtZW50cyA9IFtdO1xuICAgIHNlbGVjdGlvblNldC5zZWxlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24gKHNlbGVjdGlvbikge1xuICAgICAgICBpZiAoKGlzRmllbGQoc2VsZWN0aW9uKSB8fCBpc0lubGluZUZyYWdtZW50KHNlbGVjdGlvbikpICYmXG4gICAgICAgICAgICBzZWxlY3Rpb24uc2VsZWN0aW9uU2V0KSB7XG4gICAgICAgICAgICBnZXRBbGxGcmFnbWVudFNwcmVhZHNGcm9tU2VsZWN0aW9uU2V0KHNlbGVjdGlvbi5zZWxlY3Rpb25TZXQpLmZvckVhY2goZnVuY3Rpb24gKGZyYWcpIHsgcmV0dXJuIGFsbEZyYWdtZW50cy5wdXNoKGZyYWcpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzZWxlY3Rpb24ua2luZCA9PT0gJ0ZyYWdtZW50U3ByZWFkJykge1xuICAgICAgICAgICAgYWxsRnJhZ21lbnRzLnB1c2goc2VsZWN0aW9uKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhbGxGcmFnbWVudHM7XG59XG5mdW5jdGlvbiBidWlsZFF1ZXJ5RnJvbVNlbGVjdGlvblNldChkb2N1bWVudCkge1xuICAgIHZhciBkZWZpbml0aW9uID0gZ2V0TWFpbkRlZmluaXRpb24oZG9jdW1lbnQpO1xuICAgIHZhciBkZWZpbml0aW9uT3BlcmF0aW9uID0gZGVmaW5pdGlvbi5vcGVyYXRpb247XG4gICAgaWYgKGRlZmluaXRpb25PcGVyYXRpb24gPT09ICdxdWVyeScpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIH1cbiAgICB2YXIgbW9kaWZpZWREb2MgPSB2aXNpdChkb2N1bWVudCwge1xuICAgICAgICBPcGVyYXRpb25EZWZpbml0aW9uOiB7XG4gICAgICAgICAgICBlbnRlcjogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIG5vZGUpLCB7IG9wZXJhdGlvbjogJ3F1ZXJ5JyB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIG1vZGlmaWVkRG9jO1xufVxuZnVuY3Rpb24gcmVtb3ZlQ2xpZW50U2V0c0Zyb21Eb2N1bWVudChkb2N1bWVudCkge1xuICAgIGNoZWNrRG9jdW1lbnQoZG9jdW1lbnQpO1xuICAgIHZhciBtb2RpZmllZERvYyA9IHJlbW92ZURpcmVjdGl2ZXNGcm9tRG9jdW1lbnQoW1xuICAgICAgICB7XG4gICAgICAgICAgICB0ZXN0OiBmdW5jdGlvbiAoZGlyZWN0aXZlKSB7IHJldHVybiBkaXJlY3RpdmUubmFtZS52YWx1ZSA9PT0gJ2NsaWVudCc7IH0sXG4gICAgICAgICAgICByZW1vdmU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSwgZG9jdW1lbnQpO1xuICAgIGlmIChtb2RpZmllZERvYykge1xuICAgICAgICBtb2RpZmllZERvYyA9IHZpc2l0KG1vZGlmaWVkRG9jLCB7XG4gICAgICAgICAgICBGcmFnbWVudERlZmluaXRpb246IHtcbiAgICAgICAgICAgICAgICBlbnRlcjogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuc2VsZWN0aW9uU2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNUeXBlbmFtZU9ubHkgPSBub2RlLnNlbGVjdGlvblNldC5zZWxlY3Rpb25zLmV2ZXJ5KGZ1bmN0aW9uIChzZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNGaWVsZChzZWxlY3Rpb24pICYmIHNlbGVjdGlvbi5uYW1lLnZhbHVlID09PSAnX190eXBlbmFtZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1R5cGVuYW1lT25seSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbW9kaWZpZWREb2M7XG59XG5cbnZhciBjYW5Vc2VXZWFrTWFwID0gdHlwZW9mIFdlYWtNYXAgPT09ICdmdW5jdGlvbicgJiYgISh0eXBlb2YgbmF2aWdhdG9yID09PSAnb2JqZWN0JyAmJlxuICAgIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnUmVhY3ROYXRpdmUnKTtcblxudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbmZ1bmN0aW9uIGNsb25lRGVlcCh2YWx1ZSkge1xuICAgIHJldHVybiBjbG9uZURlZXBIZWxwZXIodmFsdWUsIG5ldyBNYXAoKSk7XG59XG5mdW5jdGlvbiBjbG9uZURlZXBIZWxwZXIodmFsLCBzZWVuKSB7XG4gICAgc3dpdGNoICh0b1N0cmluZy5jYWxsKHZhbCkpIHtcbiAgICAgICAgY2FzZSBcIltvYmplY3QgQXJyYXldXCI6IHtcbiAgICAgICAgICAgIGlmIChzZWVuLmhhcyh2YWwpKVxuICAgICAgICAgICAgICAgIHJldHVybiBzZWVuLmdldCh2YWwpO1xuICAgICAgICAgICAgdmFyIGNvcHlfMSA9IHZhbC5zbGljZSgwKTtcbiAgICAgICAgICAgIHNlZW4uc2V0KHZhbCwgY29weV8xKTtcbiAgICAgICAgICAgIGNvcHlfMS5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCwgaSkge1xuICAgICAgICAgICAgICAgIGNvcHlfMVtpXSA9IGNsb25lRGVlcEhlbHBlcihjaGlsZCwgc2Vlbik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBjb3B5XzE7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIltvYmplY3QgT2JqZWN0XVwiOiB7XG4gICAgICAgICAgICBpZiAoc2Vlbi5oYXModmFsKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gc2Vlbi5nZXQodmFsKTtcbiAgICAgICAgICAgIHZhciBjb3B5XzIgPSBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWwpKTtcbiAgICAgICAgICAgIHNlZW4uc2V0KHZhbCwgY29weV8yKTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHZhbCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgY29weV8yW2tleV0gPSBjbG9uZURlZXBIZWxwZXIodmFsW2tleV0sIHNlZW4pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gY29weV8yO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gdmFsO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0RW52KCkge1xuICAgIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3MuZW52Lk5PREVfRU5WO1xuICAgIH1cbiAgICByZXR1cm4gJ2RldmVsb3BtZW50Jztcbn1cbmZ1bmN0aW9uIGlzRW52KGVudikge1xuICAgIHJldHVybiBnZXRFbnYoKSA9PT0gZW52O1xufVxuZnVuY3Rpb24gaXNQcm9kdWN0aW9uKCkge1xuICAgIHJldHVybiBpc0VudigncHJvZHVjdGlvbicpID09PSB0cnVlO1xufVxuZnVuY3Rpb24gaXNEZXZlbG9wbWVudCgpIHtcbiAgICByZXR1cm4gaXNFbnYoJ2RldmVsb3BtZW50JykgPT09IHRydWU7XG59XG5mdW5jdGlvbiBpc1Rlc3QoKSB7XG4gICAgcmV0dXJuIGlzRW52KCd0ZXN0JykgPT09IHRydWU7XG59XG5cbmZ1bmN0aW9uIHRyeUZ1bmN0aW9uT3JMb2dFcnJvcihmKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGYoKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGNvbnNvbGUuZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBncmFwaFFMUmVzdWx0SGFzRXJyb3IocmVzdWx0KSB7XG4gICAgcmV0dXJuIHJlc3VsdC5lcnJvcnMgJiYgcmVzdWx0LmVycm9ycy5sZW5ndGg7XG59XG5cbmZ1bmN0aW9uIGRlZXBGcmVlemUobykge1xuICAgIE9iamVjdC5mcmVlemUobyk7XG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobykuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgICBpZiAob1twcm9wXSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgKHR5cGVvZiBvW3Byb3BdID09PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb1twcm9wXSA9PT0gJ2Z1bmN0aW9uJykgJiZcbiAgICAgICAgICAgICFPYmplY3QuaXNGcm96ZW4ob1twcm9wXSkpIHtcbiAgICAgICAgICAgIGRlZXBGcmVlemUob1twcm9wXSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbztcbn1cbmZ1bmN0aW9uIG1heWJlRGVlcEZyZWV6ZShvYmopIHtcbiAgICBpZiAoaXNEZXZlbG9wbWVudCgpIHx8IGlzVGVzdCgpKSB7XG4gICAgICAgIHZhciBzeW1ib2xJc1BvbHlmaWxsZWQgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBTeW1ib2woJycpID09PSAnc3RyaW5nJztcbiAgICAgICAgaWYgKCFzeW1ib2xJc1BvbHlmaWxsZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWVwRnJlZXplKG9iaik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbn1cblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbmZ1bmN0aW9uIG1lcmdlRGVlcCgpIHtcbiAgICB2YXIgc291cmNlcyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHNvdXJjZXNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgcmV0dXJuIG1lcmdlRGVlcEFycmF5KHNvdXJjZXMpO1xufVxuZnVuY3Rpb24gbWVyZ2VEZWVwQXJyYXkoc291cmNlcykge1xuICAgIHZhciB0YXJnZXQgPSBzb3VyY2VzWzBdIHx8IHt9O1xuICAgIHZhciBjb3VudCA9IHNvdXJjZXMubGVuZ3RoO1xuICAgIGlmIChjb3VudCA+IDEpIHtcbiAgICAgICAgdmFyIHBhc3RDb3BpZXMgPSBbXTtcbiAgICAgICAgdGFyZ2V0ID0gc2hhbGxvd0NvcHlGb3JNZXJnZSh0YXJnZXQsIHBhc3RDb3BpZXMpO1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGNvdW50OyArK2kpIHtcbiAgICAgICAgICAgIHRhcmdldCA9IG1lcmdlSGVscGVyKHRhcmdldCwgc291cmNlc1tpXSwgcGFzdENvcGllcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cbmZ1bmN0aW9uIGlzT2JqZWN0KG9iaikge1xuICAgIHJldHVybiBvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCc7XG59XG5mdW5jdGlvbiBtZXJnZUhlbHBlcih0YXJnZXQsIHNvdXJjZSwgcGFzdENvcGllcykge1xuICAgIGlmIChpc09iamVjdChzb3VyY2UpICYmIGlzT2JqZWN0KHRhcmdldCkpIHtcbiAgICAgICAgaWYgKE9iamVjdC5pc0V4dGVuc2libGUgJiYgIU9iamVjdC5pc0V4dGVuc2libGUodGFyZ2V0KSkge1xuICAgICAgICAgICAgdGFyZ2V0ID0gc2hhbGxvd0NvcHlGb3JNZXJnZSh0YXJnZXQsIHBhc3RDb3BpZXMpO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5rZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlS2V5KSB7XG4gICAgICAgICAgICB2YXIgc291cmNlVmFsdWUgPSBzb3VyY2Vbc291cmNlS2V5XTtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHRhcmdldCwgc291cmNlS2V5KSkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXRWYWx1ZSA9IHRhcmdldFtzb3VyY2VLZXldO1xuICAgICAgICAgICAgICAgIGlmIChzb3VyY2VWYWx1ZSAhPT0gdGFyZ2V0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W3NvdXJjZUtleV0gPSBtZXJnZUhlbHBlcihzaGFsbG93Q29weUZvck1lcmdlKHRhcmdldFZhbHVlLCBwYXN0Q29waWVzKSwgc291cmNlVmFsdWUsIHBhc3RDb3BpZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRhcmdldFtzb3VyY2VLZXldID0gc291cmNlVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cbiAgICByZXR1cm4gc291cmNlO1xufVxuZnVuY3Rpb24gc2hhbGxvd0NvcHlGb3JNZXJnZSh2YWx1ZSwgcGFzdENvcGllcykge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAgIHBhc3RDb3BpZXMuaW5kZXhPZih2YWx1ZSkgPCAwKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlID0gX19hc3NpZ24oeyBfX3Byb3RvX186IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkgfSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHBhc3RDb3BpZXMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbn1cblxudmFyIGhhdmVXYXJuZWQgPSBPYmplY3QuY3JlYXRlKHt9KTtcbmZ1bmN0aW9uIHdhcm5PbmNlSW5EZXZlbG9wbWVudChtc2csIHR5cGUpIHtcbiAgICBpZiAodHlwZSA9PT0gdm9pZCAwKSB7IHR5cGUgPSAnd2Fybic7IH1cbiAgICBpZiAoIWlzUHJvZHVjdGlvbigpICYmICFoYXZlV2FybmVkW21zZ10pIHtcbiAgICAgICAgaWYgKCFpc1Rlc3QoKSkge1xuICAgICAgICAgICAgaGF2ZVdhcm5lZFttc2ddID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihtc2cpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKG1zZyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHN0cmlwU3ltYm9scyhkYXRhKSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xufVxuXG5leHBvcnQgeyBhZGRUeXBlbmFtZVRvRG9jdW1lbnQsIGFyZ3VtZW50c09iamVjdEZyb21GaWVsZCwgYXNzaWduLCBidWlsZFF1ZXJ5RnJvbVNlbGVjdGlvblNldCwgY2FuVXNlV2Vha01hcCwgY2hlY2tEb2N1bWVudCwgY2xvbmVEZWVwLCBjcmVhdGVGcmFnbWVudE1hcCwgZ2V0RGVmYXVsdFZhbHVlcywgZ2V0RGlyZWN0aXZlSW5mb0Zyb21GaWVsZCwgZ2V0RGlyZWN0aXZlTmFtZXMsIGdldERpcmVjdGl2ZXNGcm9tRG9jdW1lbnQsIGdldEVudiwgZ2V0RnJhZ21lbnREZWZpbml0aW9uLCBnZXRGcmFnbWVudERlZmluaXRpb25zLCBnZXRGcmFnbWVudFF1ZXJ5RG9jdW1lbnQsIGdldEluY2x1c2lvbkRpcmVjdGl2ZXMsIGdldE1haW5EZWZpbml0aW9uLCBnZXRNdXRhdGlvbkRlZmluaXRpb24sIGdldE9wZXJhdGlvbkRlZmluaXRpb24sIGdldE9wZXJhdGlvbkRlZmluaXRpb25PckRpZSwgZ2V0T3BlcmF0aW9uTmFtZSwgZ2V0UXVlcnlEZWZpbml0aW9uLCBnZXRTdG9yZUtleU5hbWUsIGdyYXBoUUxSZXN1bHRIYXNFcnJvciwgaGFzQ2xpZW50RXhwb3J0cywgaGFzRGlyZWN0aXZlcywgaXNEZXZlbG9wbWVudCwgaXNFbnYsIGlzRmllbGQsIGlzSWRWYWx1ZSwgaXNJbmxpbmVGcmFnbWVudCwgaXNKc29uVmFsdWUsIGlzTnVtYmVyVmFsdWUsIGlzUHJvZHVjdGlvbiwgaXNTY2FsYXJWYWx1ZSwgaXNUZXN0LCBtYXliZURlZXBGcmVlemUsIG1lcmdlRGVlcCwgbWVyZ2VEZWVwQXJyYXksIHJlbW92ZUFyZ3VtZW50c0Zyb21Eb2N1bWVudCwgcmVtb3ZlQ2xpZW50U2V0c0Zyb21Eb2N1bWVudCwgcmVtb3ZlQ29ubmVjdGlvbkRpcmVjdGl2ZUZyb21Eb2N1bWVudCwgcmVtb3ZlRGlyZWN0aXZlc0Zyb21Eb2N1bWVudCwgcmVtb3ZlRnJhZ21lbnRTcHJlYWRGcm9tRG9jdW1lbnQsIHJlc3VsdEtleU5hbWVGcm9tRmllbGQsIHNob3VsZEluY2x1ZGUsIHN0b3JlS2V5TmFtZUZyb21GaWVsZCwgc3RyaXBTeW1ib2xzLCB0b0lkVmFsdWUsIHRyeUZ1bmN0aW9uT3JMb2dFcnJvciwgdmFsdWVGcm9tTm9kZSwgdmFsdWVUb09iamVjdFJlcHJlc2VudGF0aW9uLCB2YXJpYWJsZXNJbk9wZXJhdGlvbiwgd2Fybk9uY2VJbkRldmVsb3BtZW50IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1idW5kbGUuZXNtLmpzLm1hcFxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/apollo-utilities/lib/bundle.esm.js\n");
 
/***/ }),
 
/***/ "./node_modules/fast-json-stable-stringify/index.js":
/*!**********************************************************!*\
  !*** ./node_modules/fast-json-stable-stringify/index.js ***!
  \**********************************************************/
/***/ (function(module) {
 
"use strict";
eval("\n\nmodule.exports = function (data, opts) {\n    if (!opts) opts = {};\n    if (typeof opts === 'function') opts = { cmp: opts };\n    var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n    var cmp = opts.cmp && (function (f) {\n        return function (node) {\n            return function (a, b) {\n                var aobj = { key: a, value: node[a] };\n                var bobj = { key: b, value: node[b] };\n                return f(aobj, bobj);\n            };\n        };\n    })(opts.cmp);\n\n    var seen = [];\n    return (function stringify (node) {\n        if (node && node.toJSON && typeof node.toJSON === 'function') {\n            node = node.toJSON();\n        }\n\n        if (node === undefined) return;\n        if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n        if (typeof node !== 'object') return JSON.stringify(node);\n\n        var i, out;\n        if (Array.isArray(node)) {\n            out = '[';\n            for (i = 0; i < node.length; i++) {\n                if (i) out += ',';\n                out += stringify(node[i]) || 'null';\n            }\n            return out + ']';\n        }\n\n        if (node === null) return 'null';\n\n        if (seen.indexOf(node) !== -1) {\n            if (cycles) return JSON.stringify('__cycle__');\n            throw new TypeError('Converting circular structure to JSON');\n        }\n\n        var seenIndex = seen.push(node) - 1;\n        var keys = Object.keys(node).sort(cmp && cmp(node));\n        out = '';\n        for (i = 0; i < keys.length; i++) {\n            var key = keys[i];\n            var value = stringify(node[key]);\n\n            if (!value) continue;\n            if (out) out += ',';\n            out += JSON.stringify(key) + ':' + value;\n        }\n        seen.splice(seenIndex, 1);\n        return '{' + out + '}';\n    })(data);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnkvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWI7QUFDQTtBQUNBLDZDQUE2QztBQUM3Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0IsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGlCQUFpQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixpQkFBaUI7QUFDckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFlBQVk7QUFDN0IsS0FBSztBQUNMIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9mYXN0LWpzb24tc3RhYmxlLXN0cmluZ2lmeS9pbmRleC5qcz9mMzI0Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZGF0YSwgb3B0cykge1xuICAgIGlmICghb3B0cykgb3B0cyA9IHt9O1xuICAgIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykgb3B0cyA9IHsgY21wOiBvcHRzIH07XG4gICAgdmFyIGN5Y2xlcyA9ICh0eXBlb2Ygb3B0cy5jeWNsZXMgPT09ICdib29sZWFuJykgPyBvcHRzLmN5Y2xlcyA6IGZhbHNlO1xuXG4gICAgdmFyIGNtcCA9IG9wdHMuY21wICYmIChmdW5jdGlvbiAoZikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIHZhciBhb2JqID0geyBrZXk6IGEsIHZhbHVlOiBub2RlW2FdIH07XG4gICAgICAgICAgICAgICAgdmFyIGJvYmogPSB7IGtleTogYiwgdmFsdWU6IG5vZGVbYl0gfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZihhb2JqLCBib2JqKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgfSkob3B0cy5jbXApO1xuXG4gICAgdmFyIHNlZW4gPSBbXTtcbiAgICByZXR1cm4gKGZ1bmN0aW9uIHN0cmluZ2lmeSAobm9kZSkge1xuICAgICAgICBpZiAobm9kZSAmJiBub2RlLnRvSlNPTiAmJiB0eXBlb2Ygbm9kZS50b0pTT04gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG5vZGUgPSBub2RlLnRvSlNPTigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIG5vZGUgPT0gJ251bWJlcicpIHJldHVybiBpc0Zpbml0ZShub2RlKSA/ICcnICsgbm9kZSA6ICdudWxsJztcbiAgICAgICAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0JykgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG5vZGUpO1xuXG4gICAgICAgIHZhciBpLCBvdXQ7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgICAgICAgICBvdXQgPSAnWyc7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpKSBvdXQgKz0gJywnO1xuICAgICAgICAgICAgICAgIG91dCArPSBzdHJpbmdpZnkobm9kZVtpXSkgfHwgJ251bGwnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG91dCArICddJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlID09PSBudWxsKSByZXR1cm4gJ251bGwnO1xuXG4gICAgICAgIGlmIChzZWVuLmluZGV4T2Yobm9kZSkgIT09IC0xKSB7XG4gICAgICAgICAgICBpZiAoY3ljbGVzKSByZXR1cm4gSlNPTi5zdHJpbmdpZnkoJ19fY3ljbGVfXycpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ29udmVydGluZyBjaXJjdWxhciBzdHJ1Y3R1cmUgdG8gSlNPTicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNlZW5JbmRleCA9IHNlZW4ucHVzaChub2RlKSAtIDE7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMobm9kZSkuc29ydChjbXAgJiYgY21wKG5vZGUpKTtcbiAgICAgICAgb3V0ID0gJyc7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0cmluZ2lmeShub2RlW2tleV0pO1xuXG4gICAgICAgICAgICBpZiAoIXZhbHVlKSBjb250aW51ZTtcbiAgICAgICAgICAgIGlmIChvdXQpIG91dCArPSAnLCc7XG4gICAgICAgICAgICBvdXQgKz0gSlNPTi5zdHJpbmdpZnkoa2V5KSArICc6JyArIHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHNlZW4uc3BsaWNlKHNlZW5JbmRleCwgMSk7XG4gICAgICAgIHJldHVybiAneycgKyBvdXQgKyAnfSc7XG4gICAgfSkoZGF0YSk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/fast-json-stable-stringify/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/graphql-tag/lib/index.js":
/*!***********************************************!*\
  !*** ./node_modules/graphql-tag/lib/index.js ***!
  \***********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"disableExperimentalFragmentVariables\": function() { return /* binding */ disableExperimentalFragmentVariables; },\n/* harmony export */   \"disableFragmentWarnings\": function() { return /* binding */ disableFragmentWarnings; },\n/* harmony export */   \"enableExperimentalFragmentVariables\": function() { return /* binding */ enableExperimentalFragmentVariables; },\n/* harmony export */   \"gql\": function() { return /* binding */ gql; },\n/* harmony export */   \"resetCaches\": function() { return /* binding */ resetCaches; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/graphql-tag/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var graphql__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! graphql */ \"./node_modules/graphql/index.mjs\");\n\n\nvar docCache = new Map();\nvar fragmentSourceMap = new Map();\nvar printFragmentWarnings = true;\nvar experimentalFragmentVariables = false;\nfunction normalize(string) {\n    return string.replace(/[\\s,]+/g, ' ').trim();\n}\nfunction cacheKeyFromLoc(loc) {\n    return normalize(loc.source.body.substring(loc.start, loc.end));\n}\nfunction processFragments(ast) {\n    var seenKeys = new Set();\n    var definitions = [];\n    ast.definitions.forEach(function (fragmentDefinition) {\n        if (fragmentDefinition.kind === 'FragmentDefinition') {\n            var fragmentName = fragmentDefinition.name.value;\n            var sourceKey = cacheKeyFromLoc(fragmentDefinition.loc);\n            var sourceKeySet = fragmentSourceMap.get(fragmentName);\n            if (sourceKeySet && !sourceKeySet.has(sourceKey)) {\n                if (printFragmentWarnings) {\n                    console.warn(\"Warning: fragment with name \" + fragmentName + \" already exists.\\n\"\n                        + \"graphql-tag enforces all fragment names across your application to be unique; read more about\\n\"\n                        + \"this in the docs: http://dev.apollodata.com/core/fragments.html#unique-names\");\n                }\n            }\n            else if (!sourceKeySet) {\n                fragmentSourceMap.set(fragmentName, sourceKeySet = new Set);\n            }\n            sourceKeySet.add(sourceKey);\n            if (!seenKeys.has(sourceKey)) {\n                seenKeys.add(sourceKey);\n                definitions.push(fragmentDefinition);\n            }\n        }\n        else {\n            definitions.push(fragmentDefinition);\n        }\n    });\n    return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)({}, ast), { definitions: definitions });\n}\nfunction stripLoc(doc) {\n    var workSet = new Set(doc.definitions);\n    workSet.forEach(function (node) {\n        if (node.loc)\n            delete node.loc;\n        Object.keys(node).forEach(function (key) {\n            var value = node[key];\n            if (value && typeof value === 'object') {\n                workSet.add(value);\n            }\n        });\n    });\n    var loc = doc.loc;\n    if (loc) {\n        delete loc.startToken;\n        delete loc.endToken;\n    }\n    return doc;\n}\nfunction parseDocument(source) {\n    var cacheKey = normalize(source);\n    if (!docCache.has(cacheKey)) {\n        var parsed = (0,graphql__WEBPACK_IMPORTED_MODULE_1__.parse)(source, {\n            experimentalFragmentVariables: experimentalFragmentVariables,\n            allowLegacyFragmentVariables: experimentalFragmentVariables\n        });\n        if (!parsed || parsed.kind !== 'Document') {\n            throw new Error('Not a valid GraphQL document.');\n        }\n        docCache.set(cacheKey, stripLoc(processFragments(parsed)));\n    }\n    return docCache.get(cacheKey);\n}\nfunction gql(literals) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    if (typeof literals === 'string') {\n        literals = [literals];\n    }\n    var result = literals[0];\n    args.forEach(function (arg, i) {\n        if (arg && arg.kind === 'Document') {\n            result += arg.loc.source.body;\n        }\n        else {\n            result += arg;\n        }\n        result += literals[i + 1];\n    });\n    return parseDocument(result);\n}\nfunction resetCaches() {\n    docCache.clear();\n    fragmentSourceMap.clear();\n}\nfunction disableFragmentWarnings() {\n    printFragmentWarnings = false;\n}\nfunction enableExperimentalFragmentVariables() {\n    experimentalFragmentVariables = true;\n}\nfunction disableExperimentalFragmentVariables() {\n    experimentalFragmentVariables = false;\n}\nvar extras = {\n    gql: gql,\n    resetCaches: resetCaches,\n    disableFragmentWarnings: disableFragmentWarnings,\n    enableExperimentalFragmentVariables: enableExperimentalFragmentVariables,\n    disableExperimentalFragmentVariables: disableExperimentalFragmentVariables\n};\n(function (gql_1) {\n    gql_1.gql = extras.gql, gql_1.resetCaches = extras.resetCaches, gql_1.disableFragmentWarnings = extras.disableFragmentWarnings, gql_1.enableExperimentalFragmentVariables = extras.enableExperimentalFragmentVariables, gql_1.disableExperimentalFragmentVariables = extras.disableExperimentalFragmentVariables;\n})(gql || (gql = {}));\ngql[\"default\"] = gql;\n/* harmony default export */ __webpack_exports__[\"default\"] = (gql);\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC10YWcvbGliL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBaUM7QUFDRDtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5R0FBeUc7QUFDekc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLFdBQVcsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLFVBQVUsMEJBQTBCO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDhDQUFLO0FBQzFCO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EscUJBQXFCLHVCQUF1QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsa0JBQWtCO0FBQ25CO0FBQ0EsK0RBQWUsR0FBRyxFQUFDO0FBQ25CIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsLXRhZy9saWIvaW5kZXguanM/OTVjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICdncmFwaHFsJztcbnZhciBkb2NDYWNoZSA9IG5ldyBNYXAoKTtcbnZhciBmcmFnbWVudFNvdXJjZU1hcCA9IG5ldyBNYXAoKTtcbnZhciBwcmludEZyYWdtZW50V2FybmluZ3MgPSB0cnVlO1xudmFyIGV4cGVyaW1lbnRhbEZyYWdtZW50VmFyaWFibGVzID0gZmFsc2U7XG5mdW5jdGlvbiBub3JtYWxpemUoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9bXFxzLF0rL2csICcgJykudHJpbSgpO1xufVxuZnVuY3Rpb24gY2FjaGVLZXlGcm9tTG9jKGxvYykge1xuICAgIHJldHVybiBub3JtYWxpemUobG9jLnNvdXJjZS5ib2R5LnN1YnN0cmluZyhsb2Muc3RhcnQsIGxvYy5lbmQpKTtcbn1cbmZ1bmN0aW9uIHByb2Nlc3NGcmFnbWVudHMoYXN0KSB7XG4gICAgdmFyIHNlZW5LZXlzID0gbmV3IFNldCgpO1xuICAgIHZhciBkZWZpbml0aW9ucyA9IFtdO1xuICAgIGFzdC5kZWZpbml0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChmcmFnbWVudERlZmluaXRpb24pIHtcbiAgICAgICAgaWYgKGZyYWdtZW50RGVmaW5pdGlvbi5raW5kID09PSAnRnJhZ21lbnREZWZpbml0aW9uJykge1xuICAgICAgICAgICAgdmFyIGZyYWdtZW50TmFtZSA9IGZyYWdtZW50RGVmaW5pdGlvbi5uYW1lLnZhbHVlO1xuICAgICAgICAgICAgdmFyIHNvdXJjZUtleSA9IGNhY2hlS2V5RnJvbUxvYyhmcmFnbWVudERlZmluaXRpb24ubG9jKTtcbiAgICAgICAgICAgIHZhciBzb3VyY2VLZXlTZXQgPSBmcmFnbWVudFNvdXJjZU1hcC5nZXQoZnJhZ21lbnROYW1lKTtcbiAgICAgICAgICAgIGlmIChzb3VyY2VLZXlTZXQgJiYgIXNvdXJjZUtleVNldC5oYXMoc291cmNlS2V5KSkge1xuICAgICAgICAgICAgICAgIGlmIChwcmludEZyYWdtZW50V2FybmluZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiV2FybmluZzogZnJhZ21lbnQgd2l0aCBuYW1lIFwiICsgZnJhZ21lbnROYW1lICsgXCIgYWxyZWFkeSBleGlzdHMuXFxuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICsgXCJncmFwaHFsLXRhZyBlbmZvcmNlcyBhbGwgZnJhZ21lbnQgbmFtZXMgYWNyb3NzIHlvdXIgYXBwbGljYXRpb24gdG8gYmUgdW5pcXVlOyByZWFkIG1vcmUgYWJvdXRcXG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKyBcInRoaXMgaW4gdGhlIGRvY3M6IGh0dHA6Ly9kZXYuYXBvbGxvZGF0YS5jb20vY29yZS9mcmFnbWVudHMuaHRtbCN1bmlxdWUtbmFtZXNcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXNvdXJjZUtleVNldCkge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50U291cmNlTWFwLnNldChmcmFnbWVudE5hbWUsIHNvdXJjZUtleVNldCA9IG5ldyBTZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc291cmNlS2V5U2V0LmFkZChzb3VyY2VLZXkpO1xuICAgICAgICAgICAgaWYgKCFzZWVuS2V5cy5oYXMoc291cmNlS2V5KSkge1xuICAgICAgICAgICAgICAgIHNlZW5LZXlzLmFkZChzb3VyY2VLZXkpO1xuICAgICAgICAgICAgICAgIGRlZmluaXRpb25zLnB1c2goZnJhZ21lbnREZWZpbml0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlZmluaXRpb25zLnB1c2goZnJhZ21lbnREZWZpbml0aW9uKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYXN0KSwgeyBkZWZpbml0aW9uczogZGVmaW5pdGlvbnMgfSk7XG59XG5mdW5jdGlvbiBzdHJpcExvYyhkb2MpIHtcbiAgICB2YXIgd29ya1NldCA9IG5ldyBTZXQoZG9jLmRlZmluaXRpb25zKTtcbiAgICB3b3JrU2V0LmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubG9jKVxuICAgICAgICAgICAgZGVsZXRlIG5vZGUubG9jO1xuICAgICAgICBPYmplY3Qua2V5cyhub2RlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IG5vZGVba2V5XTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgd29ya1NldC5hZGQodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICB2YXIgbG9jID0gZG9jLmxvYztcbiAgICBpZiAobG9jKSB7XG4gICAgICAgIGRlbGV0ZSBsb2Muc3RhcnRUb2tlbjtcbiAgICAgICAgZGVsZXRlIGxvYy5lbmRUb2tlbjtcbiAgICB9XG4gICAgcmV0dXJuIGRvYztcbn1cbmZ1bmN0aW9uIHBhcnNlRG9jdW1lbnQoc291cmNlKSB7XG4gICAgdmFyIGNhY2hlS2V5ID0gbm9ybWFsaXplKHNvdXJjZSk7XG4gICAgaWYgKCFkb2NDYWNoZS5oYXMoY2FjaGVLZXkpKSB7XG4gICAgICAgIHZhciBwYXJzZWQgPSBwYXJzZShzb3VyY2UsIHtcbiAgICAgICAgICAgIGV4cGVyaW1lbnRhbEZyYWdtZW50VmFyaWFibGVzOiBleHBlcmltZW50YWxGcmFnbWVudFZhcmlhYmxlcyxcbiAgICAgICAgICAgIGFsbG93TGVnYWN5RnJhZ21lbnRWYXJpYWJsZXM6IGV4cGVyaW1lbnRhbEZyYWdtZW50VmFyaWFibGVzXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIXBhcnNlZCB8fCBwYXJzZWQua2luZCAhPT0gJ0RvY3VtZW50Jykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgYSB2YWxpZCBHcmFwaFFMIGRvY3VtZW50LicpO1xuICAgICAgICB9XG4gICAgICAgIGRvY0NhY2hlLnNldChjYWNoZUtleSwgc3RyaXBMb2MocHJvY2Vzc0ZyYWdtZW50cyhwYXJzZWQpKSk7XG4gICAgfVxuICAgIHJldHVybiBkb2NDYWNoZS5nZXQoY2FjaGVLZXkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdxbChsaXRlcmFscykge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgYXJnc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBsaXRlcmFscyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgbGl0ZXJhbHMgPSBbbGl0ZXJhbHNdO1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0gbGl0ZXJhbHNbMF07XG4gICAgYXJncy5mb3JFYWNoKGZ1bmN0aW9uIChhcmcsIGkpIHtcbiAgICAgICAgaWYgKGFyZyAmJiBhcmcua2luZCA9PT0gJ0RvY3VtZW50Jykge1xuICAgICAgICAgICAgcmVzdWx0ICs9IGFyZy5sb2Muc291cmNlLmJvZHk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gYXJnO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCArPSBsaXRlcmFsc1tpICsgMV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHBhcnNlRG9jdW1lbnQocmVzdWx0KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZXNldENhY2hlcygpIHtcbiAgICBkb2NDYWNoZS5jbGVhcigpO1xuICAgIGZyYWdtZW50U291cmNlTWFwLmNsZWFyKCk7XG59XG5leHBvcnQgZnVuY3Rpb24gZGlzYWJsZUZyYWdtZW50V2FybmluZ3MoKSB7XG4gICAgcHJpbnRGcmFnbWVudFdhcm5pbmdzID0gZmFsc2U7XG59XG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlRXhwZXJpbWVudGFsRnJhZ21lbnRWYXJpYWJsZXMoKSB7XG4gICAgZXhwZXJpbWVudGFsRnJhZ21lbnRWYXJpYWJsZXMgPSB0cnVlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRpc2FibGVFeHBlcmltZW50YWxGcmFnbWVudFZhcmlhYmxlcygpIHtcbiAgICBleHBlcmltZW50YWxGcmFnbWVudFZhcmlhYmxlcyA9IGZhbHNlO1xufVxudmFyIGV4dHJhcyA9IHtcbiAgICBncWw6IGdxbCxcbiAgICByZXNldENhY2hlczogcmVzZXRDYWNoZXMsXG4gICAgZGlzYWJsZUZyYWdtZW50V2FybmluZ3M6IGRpc2FibGVGcmFnbWVudFdhcm5pbmdzLFxuICAgIGVuYWJsZUV4cGVyaW1lbnRhbEZyYWdtZW50VmFyaWFibGVzOiBlbmFibGVFeHBlcmltZW50YWxGcmFnbWVudFZhcmlhYmxlcyxcbiAgICBkaXNhYmxlRXhwZXJpbWVudGFsRnJhZ21lbnRWYXJpYWJsZXM6IGRpc2FibGVFeHBlcmltZW50YWxGcmFnbWVudFZhcmlhYmxlc1xufTtcbihmdW5jdGlvbiAoZ3FsXzEpIHtcbiAgICBncWxfMS5ncWwgPSBleHRyYXMuZ3FsLCBncWxfMS5yZXNldENhY2hlcyA9IGV4dHJhcy5yZXNldENhY2hlcywgZ3FsXzEuZGlzYWJsZUZyYWdtZW50V2FybmluZ3MgPSBleHRyYXMuZGlzYWJsZUZyYWdtZW50V2FybmluZ3MsIGdxbF8xLmVuYWJsZUV4cGVyaW1lbnRhbEZyYWdtZW50VmFyaWFibGVzID0gZXh0cmFzLmVuYWJsZUV4cGVyaW1lbnRhbEZyYWdtZW50VmFyaWFibGVzLCBncWxfMS5kaXNhYmxlRXhwZXJpbWVudGFsRnJhZ21lbnRWYXJpYWJsZXMgPSBleHRyYXMuZGlzYWJsZUV4cGVyaW1lbnRhbEZyYWdtZW50VmFyaWFibGVzO1xufSkoZ3FsIHx8IChncWwgPSB7fSkpO1xuZ3FsW1wiZGVmYXVsdFwiXSA9IGdxbDtcbmV4cG9ydCBkZWZhdWx0IGdxbDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql-tag/lib/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/graphql-tag/node_modules/tslib/tslib.es6.js":
/*!******************************************************************!*\
  !*** ./node_modules/graphql-tag/node_modules/tslib/tslib.es6.js ***!
  \******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"__assign\": function() { return /* binding */ __assign; },\n/* harmony export */   \"__asyncDelegator\": function() { return /* binding */ __asyncDelegator; },\n/* harmony export */   \"__asyncGenerator\": function() { return /* binding */ __asyncGenerator; },\n/* harmony export */   \"__asyncValues\": function() { return /* binding */ __asyncValues; },\n/* harmony export */   \"__await\": function() { return /* binding */ __await; },\n/* harmony export */   \"__awaiter\": function() { return /* binding */ __awaiter; },\n/* harmony export */   \"__classPrivateFieldGet\": function() { return /* binding */ __classPrivateFieldGet; },\n/* harmony export */   \"__classPrivateFieldSet\": function() { return /* binding */ __classPrivateFieldSet; },\n/* harmony export */   \"__createBinding\": function() { return /* binding */ __createBinding; },\n/* harmony export */   \"__decorate\": function() { return /* binding */ __decorate; },\n/* harmony export */   \"__exportStar\": function() { return /* binding */ __exportStar; },\n/* harmony export */   \"__extends\": function() { return /* binding */ __extends; },\n/* harmony export */   \"__generator\": function() { return /* binding */ __generator; },\n/* harmony export */   \"__importDefault\": function() { return /* binding */ __importDefault; },\n/* harmony export */   \"__importStar\": function() { return /* binding */ __importStar; },\n/* harmony export */   \"__makeTemplateObject\": function() { return /* binding */ __makeTemplateObject; },\n/* harmony export */   \"__metadata\": function() { return /* binding */ __metadata; },\n/* harmony export */   \"__param\": function() { return /* binding */ __param; },\n/* harmony export */   \"__read\": function() { return /* binding */ __read; },\n/* harmony export */   \"__rest\": function() { return /* binding */ __rest; },\n/* harmony export */   \"__spread\": function() { return /* binding */ __spread; },\n/* harmony export */   \"__spreadArray\": function() { return /* binding */ __spreadArray; },\n/* harmony export */   \"__spreadArrays\": function() { return /* binding */ __spreadArrays; },\n/* harmony export */   \"__values\": function() { return /* binding */ __values; }\n/* harmony export */ });\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nfunction __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nvar __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nfunction __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nfunction __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nfunction __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nfunction __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nfunction __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nfunction __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nfunction __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nfunction __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nfunction __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nfunction __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC10YWcvbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGdCQUFnQixzQ0FBc0Msa0JBQWtCO0FBQ25GLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsaURBQWlELE9BQU87QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsY0FBYztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSw2Q0FBNkMsUUFBUTtBQUNyRDtBQUNBO0FBQ0E7QUFDTztBQUNQLG9DQUFvQztBQUNwQztBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDTztBQUNQLDRCQUE0QiwrREFBK0QsaUJBQWlCO0FBQzVHO0FBQ0Esb0NBQW9DLE1BQU0sK0JBQStCLFlBQVk7QUFDckYsbUNBQW1DLE1BQU0sbUNBQW1DLFlBQVk7QUFDeEYsZ0NBQWdDO0FBQ2hDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQLGNBQWMsNkJBQTZCLDBCQUEwQixjQUFjLHFCQUFxQjtBQUN4RyxpQkFBaUIsb0RBQW9ELHFFQUFxRSxjQUFjO0FBQ3hKLHVCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDO0FBQ3hDLG1DQUFtQyxTQUFTO0FBQzVDLG1DQUFtQyxXQUFXLFVBQVU7QUFDeEQsMENBQTBDLGNBQWM7QUFDeEQ7QUFDQSw4R0FBOEcsT0FBTztBQUNySCxpRkFBaUYsaUJBQWlCO0FBQ2xHLHlEQUF5RCxnQkFBZ0IsUUFBUTtBQUNqRiwrQ0FBK0MsZ0JBQWdCLGdCQUFnQjtBQUMvRTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0EsVUFBVSxZQUFZLGFBQWEsU0FBUyxVQUFVO0FBQ3RELG9DQUFvQyxTQUFTO0FBQzdDO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxtQ0FBbUMsb0NBQW9DLGdCQUFnQjtBQUN2RixDQUFDO0FBQ0Q7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixNQUFNO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLDZCQUE2QixzQkFBc0I7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1Asa0RBQWtELFFBQVE7QUFDMUQseUNBQXlDLFFBQVE7QUFDakQseURBQXlELFFBQVE7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLDZFQUE2RSxPQUFPO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLGlCQUFpQix1RkFBdUYsY0FBYztBQUN0SCx1QkFBdUIsZ0NBQWdDLHFDQUFxQywyQ0FBMkM7QUFDdkksNEJBQTRCLE1BQU0saUJBQWlCLFlBQVk7QUFDL0QsdUJBQXVCO0FBQ3ZCLDhCQUE4QjtBQUM5Qiw2QkFBNkI7QUFDN0IsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDTztBQUNQO0FBQ0EsaUJBQWlCLDZDQUE2QyxVQUFVLHNEQUFzRCxjQUFjO0FBQzVJLDBCQUEwQiw2QkFBNkIsb0JBQW9CLGdEQUFnRCxrQkFBa0I7QUFDN0k7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLDJHQUEyRyx1RkFBdUYsY0FBYztBQUNoTix1QkFBdUIsOEJBQThCLGdEQUFnRCx3REFBd0Q7QUFDN0osNkNBQTZDLHNDQUFzQyxVQUFVLG1CQUFtQixJQUFJO0FBQ3BIO0FBQ0E7QUFDTztBQUNQLGlDQUFpQyx1Q0FBdUMsWUFBWSxLQUFLLE9BQU87QUFDaEc7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsNEJBQTRCO0FBQ3RFLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC10YWcvbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcz9kMDkzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlICovXHJcblxyXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfSk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG52YXIgX19zZXRNb2R1bGVEZWZhdWx0ID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XHJcbn0pIDogZnVuY3Rpb24obywgdikge1xyXG4gICAgb1tcImRlZmF1bHRcIl0gPSB2O1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcclxuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XHJcbiAgICB2YXIgcmVzdWx0ID0ge307XHJcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwgayk7XHJcbiAgICBfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LCBtb2QpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcclxuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBzdGF0ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICByZXR1cm4ga2luZCA9PT0gXCJtXCIgPyBmIDoga2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIpIDogZiA/IGYudmFsdWUgOiBzdGF0ZS5nZXQocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgc3RhdGUsIHZhbHVlLCBraW5kLCBmKSB7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJtXCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIG1ldGhvZCBpcyBub3Qgd3JpdGFibGVcIik7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBzZXR0ZXJcIik7XHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB3cml0ZSBwcml2YXRlIG1lbWJlciB0byBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIChraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlciwgdmFsdWUpIDogZiA/IGYudmFsdWUgPSB2YWx1ZSA6IHN0YXRlLnNldChyZWNlaXZlciwgdmFsdWUpKSwgdmFsdWU7XHJcbn1cclxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql-tag/node_modules/tslib/tslib.es6.js\n");
 
/***/ }),
 
/***/ "./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js ***!
  \**********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
 
"use strict";
eval("\n\nvar reactIs = __webpack_require__(/*! react-is */ \"./node_modules/react-is/index.js\");\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MvZGlzdC9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy5janMuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsY0FBYyxtQkFBTyxDQUFDLGtEQUFVOztBQUVoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG9CQUFvQixpQkFBaUI7QUFDckM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL2Rpc3QvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MuY2pzLmpzPzkxZGIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUsIFlhaG9vISBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbnZhciBSRUFDVF9TVEFUSUNTID0ge1xuICBjaGlsZENvbnRleHRUeXBlczogdHJ1ZSxcbiAgY29udGV4dFR5cGU6IHRydWUsXG4gIGNvbnRleHRUeXBlczogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgZ2V0RGVmYXVsdFByb3BzOiB0cnVlLFxuICBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I6IHRydWUsXG4gIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczogdHJ1ZSxcbiAgbWl4aW5zOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWUsXG4gIHR5cGU6IHRydWVcbn07XG52YXIgS05PV05fU1RBVElDUyA9IHtcbiAgbmFtZTogdHJ1ZSxcbiAgbGVuZ3RoOiB0cnVlLFxuICBwcm90b3R5cGU6IHRydWUsXG4gIGNhbGxlcjogdHJ1ZSxcbiAgY2FsbGVlOiB0cnVlLFxuICBhcmd1bWVudHM6IHRydWUsXG4gIGFyaXR5OiB0cnVlXG59O1xudmFyIEZPUldBUkRfUkVGX1NUQVRJQ1MgPSB7XG4gICckJHR5cGVvZic6IHRydWUsXG4gIHJlbmRlcjogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlXG59O1xudmFyIE1FTU9fU1RBVElDUyA9IHtcbiAgJyQkdHlwZW9mJzogdHJ1ZSxcbiAgY29tcGFyZTogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlLFxuICB0eXBlOiB0cnVlXG59O1xudmFyIFRZUEVfU1RBVElDUyA9IHt9O1xuVFlQRV9TVEFUSUNTW3JlYWN0SXMuRm9yd2FyZFJlZl0gPSBGT1JXQVJEX1JFRl9TVEFUSUNTO1xuVFlQRV9TVEFUSUNTW3JlYWN0SXMuTWVtb10gPSBNRU1PX1NUQVRJQ1M7XG5cbmZ1bmN0aW9uIGdldFN0YXRpY3MoY29tcG9uZW50KSB7XG4gIC8vIFJlYWN0IHYxNi4xMSBhbmQgYmVsb3dcbiAgaWYgKHJlYWN0SXMuaXNNZW1vKGNvbXBvbmVudCkpIHtcbiAgICByZXR1cm4gTUVNT19TVEFUSUNTO1xuICB9IC8vIFJlYWN0IHYxNi4xMiBhbmQgYWJvdmVcblxuXG4gIHJldHVybiBUWVBFX1NUQVRJQ1NbY29tcG9uZW50WyckJHR5cGVvZiddXSB8fCBSRUFDVF9TVEFUSUNTO1xufVxuXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBnZXRQcm90b3R5cGVPZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbnZhciBvYmplY3RQcm90b3R5cGUgPSBPYmplY3QucHJvdG90eXBlO1xuZnVuY3Rpb24gaG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBzb3VyY2VDb21wb25lbnQsIGJsYWNrbGlzdCkge1xuICBpZiAodHlwZW9mIHNvdXJjZUNvbXBvbmVudCAhPT0gJ3N0cmluZycpIHtcbiAgICAvLyBkb24ndCBob2lzdCBvdmVyIHN0cmluZyAoaHRtbCkgY29tcG9uZW50c1xuICAgIGlmIChvYmplY3RQcm90b3R5cGUpIHtcbiAgICAgIHZhciBpbmhlcml0ZWRDb21wb25lbnQgPSBnZXRQcm90b3R5cGVPZihzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgICBpZiAoaW5oZXJpdGVkQ29tcG9uZW50ICYmIGluaGVyaXRlZENvbXBvbmVudCAhPT0gb2JqZWN0UHJvdG90eXBlKSB7XG4gICAgICAgIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgaW5oZXJpdGVkQ29tcG9uZW50LCBibGFja2xpc3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgaWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgICAga2V5cyA9IGtleXMuY29uY2F0KGdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2VDb21wb25lbnQpKTtcbiAgICB9XG5cbiAgICB2YXIgdGFyZ2V0U3RhdGljcyA9IGdldFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50KTtcbiAgICB2YXIgc291cmNlU3RhdGljcyA9IGdldFN0YXRpY3Moc291cmNlQ29tcG9uZW50KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgIGlmICghS05PV05fU1RBVElDU1trZXldICYmICEoYmxhY2tsaXN0ICYmIGJsYWNrbGlzdFtrZXldKSAmJiAhKHNvdXJjZVN0YXRpY3MgJiYgc291cmNlU3RhdGljc1trZXldKSAmJiAhKHRhcmdldFN0YXRpY3MgJiYgdGFyZ2V0U3RhdGljc1trZXldKSkge1xuICAgICAgICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2VDb21wb25lbnQsIGtleSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBBdm9pZCBmYWlsdXJlcyBmcm9tIHJlYWQtb25seSBwcm9wZXJ0aWVzXG4gICAgICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0Q29tcG9uZW50LCBrZXksIGRlc2NyaXB0b3IpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXRDb21wb25lbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaG9pc3ROb25SZWFjdFN0YXRpY3M7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\n");
 
/***/ }),
 
/***/ "./node_modules/next-apollo/dist/index.es.js":
/*!***************************************************!*\
  !*** ./node_modules/next-apollo/dist/index.es.js ***!
  \***************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"withApollo\": function() { return /* binding */ c; }\n/* harmony export */ });\n/* harmony import */ var _apollo_client__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @apollo/client */ \"./node_modules/@apollo/client/index.js\");\n/* harmony import */ var next_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/app */ \"./node_modules/next/app.js\");\n/* harmony import */ var next_app__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_app__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */var r=function(){return(r=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var o in e=arguments[n])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)};function o(t,e,n,r){return new(n||(n=Promise))((function(o,a){function i(t){try{c(r.next(t))}catch(t){a(t)}}function l(t){try{c(r.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,l)}c((r=r.apply(t,e||[])).next())}))}function a(t,e){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},\"function\"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(a){return function(l){return function(a){if(n)throw new TypeError(\"Generator is already executing.\");for(;i;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=e.call(t,i)}catch(t){a=[6,t],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,l])}}}var i=null,l=function(t,e,n){var r=\"function\"==typeof t?t(n):t;return\"undefined\"==typeof window?u(r,e,n):(i||(i=u(r,e,n)),i)};function c(i){var c=this;return function(u){var p=(void 0===u?{}:u).ssr,s=void 0!==p&&p;return function(u){var p=function(e){var o;return o=e.apolloClient?e.apolloClient:l(i,e.apolloState,void 0),react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_apollo_client__WEBPACK_IMPORTED_MODULE_2__.ApolloProvider,{client:o},react__WEBPACK_IMPORTED_MODULE_1___default().createElement(u,r({},e)))};if(true){var f=u.displayName||u.name||\"Component\";p.displayName=\"withApollo(\"+f+\")\"}return(s||u.getInitialProps)&&(p.getInitialProps=function(t){return o(c,void 0,void 0,(function(){var o,c,p,f,v,h,d;return a(this,(function(a){switch(a.label){case 0:return o=Boolean(t.ctx),c=function(t,e){var n=\"function\"==typeof t?t(e):t,r=Boolean(e.ctx); true&&r&&console.warn(\"Warning: You have opted-out of Automatic Static Optimization due to `withApollo` in `pages/_app`.\\nRead more: https://err.sh/next.js/opt-out-auto-static-optimization\\n\");var o=e.apolloClient||l(n,e.apolloState||{},r?e.ctx:e);return o.toJSON=function(){return null},e.apolloClient=o,r&&(e.ctx.apolloClient=o),e}(i,t).apolloClient,p={},u.getInitialProps?[4,u.getInitialProps(t)]:[3,2];case 1:return p=a.sent(),[3,4];case 2:return o?[4,next_app__WEBPACK_IMPORTED_MODULE_0___default().getInitialProps(t)]:[3,4];case 3:p=a.sent(),a.label=4;case 4:if(\"undefined\"!=typeof window)return[3,9];if(f=t.AppTree,t.res&&t.res.writableEnded)return[2,p];if(!s||!f)return[3,9];a.label=5;case 5:return a.trys.push([5,8,,9]),[4,__webpack_require__.e(/*! import() */ \"node_modules_apollo_client_react_ssr_index_js\").then(__webpack_require__.bind(__webpack_require__, /*! @apollo/client/react/ssr */ \"./node_modules/@apollo/client/react/ssr/index.js\"))];case 6:return v=a.sent().getDataFromTree,h=void 0,h=o?r(r({},p),{apolloClient:c}):{pageProps:r(r({},p),{apolloClient:c})},[4,v(react__WEBPACK_IMPORTED_MODULE_1___default().createElement(f,r({},h)))];case 7:return a.sent(),[3,9];case 8:return d=a.sent(),console.error(\"Error while running `getDataFromTree`\",d),[3,9];case 9:return[2,r(r({},p),{apolloState:c.cache.extract(),apolloClient:t.apolloClient})]}}))}))}),p}}}var u=function(t,e,n){var r=\"function\"==typeof t?t(n):t;return r.ssrMode=Boolean(n),r.cache.restore(e),r};\n//# sourceMappingURL=index.es.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC1hcG9sbG8vZGlzdC9pbmRleC5lcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBNkY7QUFDN0Y7QUFDQTtBQUNBLGdFQUFnRTtBQUNoRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpR0FBaUcsb0NBQW9DLGlDQUFpQyxJQUFJLHVGQUF1RixTQUFTLHlCQUF5QixvQkFBb0IsMENBQTBDLGNBQWMsSUFBSSxhQUFhLFNBQVMsTUFBTSxjQUFjLElBQUksY0FBYyxTQUFTLE1BQU0sY0FBYyxNQUFNLGlFQUFpRSxLQUFLLGNBQWMsK0JBQStCLEdBQUcsZ0JBQWdCLGVBQWUsd0JBQXdCLHFCQUFxQixZQUFZLGlCQUFpQixVQUFVLGlDQUFpQywyREFBMkQsWUFBWSxJQUFJLGNBQWMsbUJBQW1CLG1CQUFtQiw0REFBNEQsS0FBSyxFQUFFLEtBQUssa0hBQWtILHlDQUF5QyxrQkFBa0IsTUFBTSx5QkFBeUIsb0JBQW9CLDhCQUE4QixTQUFTLGtDQUFrQyxTQUFTLDBFQUEwRSxJQUFJLFNBQVMseUNBQXlDLGFBQWEsTUFBTSwyQkFBMkIsaUJBQWlCLE1BQU0sb0JBQW9CLDJCQUEyQixNQUFNLCtCQUErQixTQUFTLGNBQWMsU0FBUyxZQUFZLFFBQVEsTUFBTSxxQkFBcUIsT0FBTyxnQ0FBZ0MsVUFBVSw2QkFBNkIsa0NBQWtDLCtEQUErRCxjQUFjLFdBQVcsbUJBQW1CLG9CQUFvQix3QkFBd0IsbUJBQW1CLGtCQUFrQixNQUFNLGlFQUFpRSwwREFBZSxDQUFDLDBEQUFDLEVBQUUsU0FBUyxDQUFDLDBEQUFlLE9BQU8sT0FBTyxHQUFHLElBQW1DLEVBQUUseUNBQXlDLGtDQUFrQyw2REFBNkQscUNBQXFDLGtCQUFrQiwyQkFBMkIsZ0JBQWdCLCtDQUErQyxtREFBbUQsS0FBb0MsNkxBQTZMLDJDQUEyQyxZQUFZLDJCQUEyQixZQUFZLDhDQUE4Qyx1QkFBdUIsa0RBQWtELCtCQUErQixtQkFBbUIsK0RBQWlCLFdBQVcsNEJBQTRCLGlEQUFpRCxzREFBc0Qsc0JBQXNCLFVBQVUsdUNBQXVDLDhOQUFrQyxFQUFFLDREQUE0RCxLQUFLLGVBQWUsR0FBRyxnQkFBZ0IsS0FBSyxlQUFlLEVBQUUsTUFBTSwwREFBZSxPQUFPLE9BQU8sNkJBQTZCLHdGQUF3RixzQkFBc0IsS0FBSywwREFBMEQsSUFBSSxHQUFHLEdBQUcsTUFBTSxzQkFBc0Isa0NBQWtDLGtEQUEwRTtBQUN4a0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQtYXBvbGxvL2Rpc3QvaW5kZXguZXMuanM/NTU0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnR7QXBvbGxvUHJvdmlkZXIgYXMgdH1mcm9tXCJAYXBvbGxvL2NsaWVudFwiO2ltcG9ydCBlIGZyb21cIm5leHQvYXBwXCI7aW1wb3J0IG4gZnJvbVwicmVhY3RcIjtcbi8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2VcbnRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlXG5MaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5USElTIENPREUgSVMgUFJPVklERUQgT04gQU4gKkFTIElTKiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG5LSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXG5XQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLFxuTUVSQ0hBTlRBQkxJVFkgT1IgTk9OLUlORlJJTkdFTUVOVC5cblxuU2VlIHRoZSBBcGFjaGUgVmVyc2lvbiAyLjAgTGljZW5zZSBmb3Igc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG5hbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL3ZhciByPWZ1bmN0aW9uKCl7cmV0dXJuKHI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49MSxyPWFyZ3VtZW50cy5sZW5ndGg7bjxyO24rKylmb3IodmFyIG8gaW4gZT1hcmd1bWVudHNbbl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbykmJih0W29dPWVbb10pO3JldHVybiB0fSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtmdW5jdGlvbiBvKHQsZSxuLHIpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihvLGEpe2Z1bmN0aW9uIGkodCl7dHJ5e2Moci5uZXh0KHQpKX1jYXRjaCh0KXthKHQpfX1mdW5jdGlvbiBsKHQpe3RyeXtjKHIudGhyb3codCkpfWNhdGNoKHQpe2EodCl9fWZ1bmN0aW9uIGModCl7dmFyIGU7dC5kb25lP28odC52YWx1ZSk6KGU9dC52YWx1ZSxlIGluc3RhbmNlb2Ygbj9lOm5ldyBuKChmdW5jdGlvbih0KXt0KGUpfSkpKS50aGVuKGksbCl9Yygocj1yLmFwcGx5KHQsZXx8W10pKS5uZXh0KCkpfSkpfWZ1bmN0aW9uIGEodCxlKXt2YXIgbixyLG8sYSxpPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJm9bMF0pdGhyb3cgb1sxXTtyZXR1cm4gb1sxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBhPXtuZXh0OmwoMCksdGhyb3c6bCgxKSxyZXR1cm46bCgyKX0sXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiYoYVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxhO2Z1bmN0aW9uIGwoYSl7cmV0dXJuIGZ1bmN0aW9uKGwpe3JldHVybiBmdW5jdGlvbihhKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO2Zvcig7aTspdHJ5e2lmKG49MSxyJiYobz0yJmFbMF0/ci5yZXR1cm46YVswXT9yLnRocm93fHwoKG89ci5yZXR1cm4pJiZvLmNhbGwociksMCk6ci5uZXh0KSYmIShvPW8uY2FsbChyLGFbMV0pKS5kb25lKXJldHVybiBvO3N3aXRjaChyPTAsbyYmKGE9WzImYVswXSxvLnZhbHVlXSksYVswXSl7Y2FzZSAwOmNhc2UgMTpvPWE7YnJlYWs7Y2FzZSA0OnJldHVybiBpLmxhYmVsKysse3ZhbHVlOmFbMV0sZG9uZTohMX07Y2FzZSA1OmkubGFiZWwrKyxyPWFbMV0sYT1bMF07Y29udGludWU7Y2FzZSA3OmE9aS5vcHMucG9wKCksaS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShvPWkudHJ5cywobz1vLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdKXx8NiE9PWFbMF0mJjIhPT1hWzBdKSl7aT0wO2NvbnRpbnVlfWlmKDM9PT1hWzBdJiYoIW98fGFbMV0+b1swXSYmYVsxXTxvWzNdKSl7aS5sYWJlbD1hWzFdO2JyZWFrfWlmKDY9PT1hWzBdJiZpLmxhYmVsPG9bMV0pe2kubGFiZWw9b1sxXSxvPWE7YnJlYWt9aWYobyYmaS5sYWJlbDxvWzJdKXtpLmxhYmVsPW9bMl0saS5vcHMucHVzaChhKTticmVha31vWzJdJiZpLm9wcy5wb3AoKSxpLnRyeXMucG9wKCk7Y29udGludWV9YT1lLmNhbGwodCxpKX1jYXRjaCh0KXthPVs2LHRdLHI9MH1maW5hbGx5e249bz0wfWlmKDUmYVswXSl0aHJvdyBhWzFdO3JldHVybnt2YWx1ZTphWzBdP2FbMV06dm9pZCAwLGRvbmU6ITB9fShbYSxsXSl9fX12YXIgaT1udWxsLGw9ZnVuY3Rpb24odCxlLG4pe3ZhciByPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dChuKTp0O3JldHVyblwidW5kZWZpbmVkXCI9PXR5cGVvZiB3aW5kb3c/dShyLGUsbik6KGl8fChpPXUocixlLG4pKSxpKX07ZnVuY3Rpb24gYyhpKXt2YXIgYz10aGlzO3JldHVybiBmdW5jdGlvbih1KXt2YXIgcD0odm9pZCAwPT09dT97fTp1KS5zc3Iscz12b2lkIDAhPT1wJiZwO3JldHVybiBmdW5jdGlvbih1KXt2YXIgcD1mdW5jdGlvbihlKXt2YXIgbztyZXR1cm4gbz1lLmFwb2xsb0NsaWVudD9lLmFwb2xsb0NsaWVudDpsKGksZS5hcG9sbG9TdGF0ZSx2b2lkIDApLG4uY3JlYXRlRWxlbWVudCh0LHtjbGllbnQ6b30sbi5jcmVhdGVFbGVtZW50KHUscih7fSxlKSkpfTtpZihcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WKXt2YXIgZj11LmRpc3BsYXlOYW1lfHx1Lm5hbWV8fFwiQ29tcG9uZW50XCI7cC5kaXNwbGF5TmFtZT1cIndpdGhBcG9sbG8oXCIrZitcIilcIn1yZXR1cm4oc3x8dS5nZXRJbml0aWFsUHJvcHMpJiYocC5nZXRJbml0aWFsUHJvcHM9ZnVuY3Rpb24odCl7cmV0dXJuIG8oYyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBvLGMscCxmLHYsaCxkO3JldHVybiBhKHRoaXMsKGZ1bmN0aW9uKGEpe3N3aXRjaChhLmxhYmVsKXtjYXNlIDA6cmV0dXJuIG89Qm9vbGVhbih0LmN0eCksYz1mdW5jdGlvbih0LGUpe3ZhciBuPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dChlKTp0LHI9Qm9vbGVhbihlLmN0eCk7XCJkZXZlbG9wbWVudFwiPT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJnImJmNvbnNvbGUud2FybihcIldhcm5pbmc6IFlvdSBoYXZlIG9wdGVkLW91dCBvZiBBdXRvbWF0aWMgU3RhdGljIE9wdGltaXphdGlvbiBkdWUgdG8gYHdpdGhBcG9sbG9gIGluIGBwYWdlcy9fYXBwYC5cXG5SZWFkIG1vcmU6IGh0dHBzOi8vZXJyLnNoL25leHQuanMvb3B0LW91dC1hdXRvLXN0YXRpYy1vcHRpbWl6YXRpb25cXG5cIik7dmFyIG89ZS5hcG9sbG9DbGllbnR8fGwobixlLmFwb2xsb1N0YXRlfHx7fSxyP2UuY3R4OmUpO3JldHVybiBvLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiBudWxsfSxlLmFwb2xsb0NsaWVudD1vLHImJihlLmN0eC5hcG9sbG9DbGllbnQ9byksZX0oaSx0KS5hcG9sbG9DbGllbnQscD17fSx1LmdldEluaXRpYWxQcm9wcz9bNCx1LmdldEluaXRpYWxQcm9wcyh0KV06WzMsMl07Y2FzZSAxOnJldHVybiBwPWEuc2VudCgpLFszLDRdO2Nhc2UgMjpyZXR1cm4gbz9bNCxlLmdldEluaXRpYWxQcm9wcyh0KV06WzMsNF07Y2FzZSAzOnA9YS5zZW50KCksYS5sYWJlbD00O2Nhc2UgNDppZihcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93KXJldHVyblszLDldO2lmKGY9dC5BcHBUcmVlLHQucmVzJiZ0LnJlcy53cml0YWJsZUVuZGVkKXJldHVyblsyLHBdO2lmKCFzfHwhZilyZXR1cm5bMyw5XTthLmxhYmVsPTU7Y2FzZSA1OnJldHVybiBhLnRyeXMucHVzaChbNSw4LCw5XSksWzQsaW1wb3J0KFwiQGFwb2xsby9jbGllbnQvcmVhY3Qvc3NyXCIpXTtjYXNlIDY6cmV0dXJuIHY9YS5zZW50KCkuZ2V0RGF0YUZyb21UcmVlLGg9dm9pZCAwLGg9bz9yKHIoe30scCkse2Fwb2xsb0NsaWVudDpjfSk6e3BhZ2VQcm9wczpyKHIoe30scCkse2Fwb2xsb0NsaWVudDpjfSl9LFs0LHYobi5jcmVhdGVFbGVtZW50KGYscih7fSxoKSkpXTtjYXNlIDc6cmV0dXJuIGEuc2VudCgpLFszLDldO2Nhc2UgODpyZXR1cm4gZD1hLnNlbnQoKSxjb25zb2xlLmVycm9yKFwiRXJyb3Igd2hpbGUgcnVubmluZyBgZ2V0RGF0YUZyb21UcmVlYFwiLGQpLFszLDldO2Nhc2UgOTpyZXR1cm5bMixyKHIoe30scCkse2Fwb2xsb1N0YXRlOmMuY2FjaGUuZXh0cmFjdCgpLGFwb2xsb0NsaWVudDp0LmFwb2xsb0NsaWVudH0pXX19KSl9KSl9KSxwfX19dmFyIHU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dChuKTp0O3JldHVybiByLnNzck1vZGU9Qm9vbGVhbihuKSxyLmNhY2hlLnJlc3RvcmUoZSkscn07ZXhwb3J0e2MgYXMgd2l0aEFwb2xsb307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5lcy5qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next-apollo/dist/index.es.js\n");
 
/***/ }),
 
/***/ "./node_modules/next/app.js":
/*!**********************************!*\
  !*** ./node_modules/next/app.js ***!
  \**********************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
 
eval("module.exports = __webpack_require__(/*! ./dist/pages/_app */ \"./node_modules/next/dist/pages/_app.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9hcHAuanMuanMiLCJtYXBwaW5ncyI6IkFBQUEsdUdBQTZDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2FwcC5qcz82NmVjIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kaXN0L3BhZ2VzL19hcHAnKVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/app.js\n");
 
/***/ }),
 
/***/ "./node_modules/next/dist/build/polyfills/object-assign.js":
/*!*****************************************************************!*\
  !*** ./node_modules/next/dist/build/polyfills/object-assign.js ***!
  \*****************************************************************/
/***/ (function(module) {
 
"use strict";
eval("\nvar assign = Object.assign.bind(Object);\nmodule.exports = assign;\nmodule.exports[\"default\"] = module.exports;\n\n//# sourceMappingURL=object-assign.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3BvbHlmaWxscy9vYmplY3QtYXNzaWduLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2I7QUFDQTtBQUNBLHlCQUFzQjs7QUFFdEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC9wb2x5ZmlsbHMvb2JqZWN0LWFzc2lnbi5qcz9lN2QxIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGFzc2lnbiA9IE9iamVjdC5hc3NpZ24uYmluZChPYmplY3QpO1xubW9kdWxlLmV4cG9ydHMgPSBhc3NpZ247XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gbW9kdWxlLmV4cG9ydHM7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9iamVjdC1hc3NpZ24uanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/build/polyfills/object-assign.js\n");
 
/***/ }),
 
/***/ "./node_modules/next/dist/build/polyfills/process.js":
/*!***********************************************************!*\
  !*** ./node_modules/next/dist/build/polyfills/process.js ***!
  \***********************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
 
"use strict";
eval("\nvar ref, ref1;\nmodule.exports = ((ref = __webpack_require__.g.process) === null || ref === void 0 ? void 0 : ref.env) && typeof ((ref1 = __webpack_require__.g.process) === null || ref1 === void 0 ? void 0 : ref1.env) === 'object' ? __webpack_require__.g.process : __webpack_require__(/*! ../../compiled/process */ \"./node_modules/next/dist/compiled/process/browser.js\");\n\n//# sourceMappingURL=process.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3BvbHlmaWxscy9wcm9jZXNzLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2I7QUFDQSx5QkFBeUIscUJBQU0sNEVBQTRFLHFCQUFNLDBFQUEwRSxxQkFBTSxXQUFXLG1CQUFPLENBQUMsb0ZBQXdCOztBQUU1TyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3BvbHlmaWxscy9wcm9jZXNzLmpzP2NhNjUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgcmVmLCByZWYxO1xubW9kdWxlLmV4cG9ydHMgPSAoKHJlZiA9IGdsb2JhbC5wcm9jZXNzKSA9PT0gbnVsbCB8fCByZWYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHJlZi5lbnYpICYmIHR5cGVvZiAoKHJlZjEgPSBnbG9iYWwucHJvY2VzcykgPT09IG51bGwgfHwgcmVmMSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVmMS5lbnYpID09PSAnb2JqZWN0JyA/IGdsb2JhbC5wcm9jZXNzIDogcmVxdWlyZSgnLi4vLi4vY29tcGlsZWQvcHJvY2VzcycpO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wcm9jZXNzLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/build/polyfills/process.js\n");
 
/***/ }),
 
/***/ "./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?page=%2Fusers&absolutePagePath=%2FUsers%2Fshiprajoshi%2Ftest%2Fnext-apollo-demo%2Fclient%2Fpages%2Fusers.js!":
/*!***********************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?page=%2Fusers&absolutePagePath=%2FUsers%2Fshiprajoshi%2Ftest%2Fnext-apollo-demo%2Fclient%2Fpages%2Fusers.js! ***!
  \***********************************************************************************************************************************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
 
eval("\n    (window.__NEXT_P = window.__NEXT_P || []).push([\n      \"/users\",\n      function () {\n        return __webpack_require__(/*! ./pages/users.js */ \"./pages/users.js\");\n      }\n    ]);\n    if(true) {\n      module.hot.dispose(function () {\n        window.__NEXT_P.push([\"/users\"])\n      });\n    }\n  //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWNsaWVudC1wYWdlcy1sb2FkZXIuanM/cGFnZT0lMkZ1c2VycyZhYnNvbHV0ZVBhZ2VQYXRoPSUyRlVzZXJzJTJGc2hpcHJham9zaGklMkZ0ZXN0JTJGbmV4dC1hcG9sbG8tZGVtbyUyRmNsaWVudCUyRnBhZ2VzJTJGdXNlcnMuanMhLmpzIiwibWFwcGluZ3MiOiI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1CQUFPLENBQUMsMENBQWtCO0FBQ3pDO0FBQ0E7QUFDQSxPQUFPLElBQVU7QUFDakIsTUFBTSxVQUFVO0FBQ2hCO0FBQ0EsT0FBTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLz85ZWFhIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICh3aW5kb3cuX19ORVhUX1AgPSB3aW5kb3cuX19ORVhUX1AgfHwgW10pLnB1c2goW1xuICAgICAgXCIvdXNlcnNcIixcbiAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUoXCIuL3BhZ2VzL3VzZXJzLmpzXCIpO1xuICAgICAgfVxuICAgIF0pO1xuICAgIGlmKG1vZHVsZS5ob3QpIHtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHdpbmRvdy5fX05FWFRfUC5wdXNoKFtcIi91c2Vyc1wiXSlcbiAgICAgIH0pO1xuICAgIH1cbiAgIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?page=%2Fusers&absolutePagePath=%2FUsers%2Fshiprajoshi%2Ftest%2Fnext-apollo-demo%2Fclient%2Fpages%2Fusers.js!\n");
 
/***/ }),
 
/***/ "./lib/with-apollo.js":
/*!****************************!*\
  !*** ./lib/with-apollo.js ***!
  \****************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"apolloClient\": function() { return /* binding */ apolloClient; }\n/* harmony export */ });\n/* harmony import */ var next_apollo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next-apollo */ \"./node_modules/next-apollo/dist/index.es.js\");\n/* harmony import */ var _apollo_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @apollo/client */ \"./node_modules/@apollo/client/index.js\");\n\n\n // const apolloConfig = {\n//   link: new HttpLink({\n//     // uri: 'https://faker-graphql.vercel.app/api/graphql'\n//     uri: 'http://localhost:5001/graphql'\n//   })\n// }\n\nvar apolloClient = new _apollo_client__WEBPACK_IMPORTED_MODULE_1__.ApolloClient({\n  uri: 'http://localhost:5001/graphql',\n  cache: new _apollo_client__WEBPACK_IMPORTED_MODULE_1__.InMemoryCache()\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,next_apollo__WEBPACK_IMPORTED_MODULE_0__.withApollo)(apolloClient));\n\n;\n    // Wrapped in an IIFE to avoid polluting the global scope\n    ;\n    (function () {\n        var _a, _b;\n        // Legacy CSS implementations will `eval` browser code in a Node.js context\n        // to extract CSS. For backwards compatibility, we need to check we're in a\n        // browser context before continuing.\n        if (typeof self !== 'undefined' &&\n            // AMP / No-JS mode does not inject these helpers:\n            '$RefreshHelpers$' in self) {\n            // @ts-ignore __webpack_module__ is global\n            var currentExports = module.exports;\n            // @ts-ignore __webpack_module__ is global\n            var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n            // This cannot happen in MainTemplate because the exports mismatch between\n            // templating and execution.\n            self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n            // A module can be accepted automatically based on its exports, e.g. when\n            // it is a Refresh Boundary.\n            if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n                // Save the previous exports on update so we can compare the boundary\n                // signatures.\n                module.hot.dispose(function (data) {\n                    data.prevExports = currentExports;\n                });\n                // Unconditionally accept an update to this module, we'll check if it's\n                // still a Refresh Boundary later.\n                // @ts-ignore importMeta is replaced in the loader\n                module.hot.accept();\n                // This field is set when the previous version of this module was a\n                // Refresh Boundary, letting us know we need to check for invalidation or\n                // enqueue an update.\n                if (prevExports !== null) {\n                    // A boundary can become ineligible if its exports are incompatible\n                    // with the previous exports.\n                    //\n                    // For example, if you add/remove/change exports, we'll want to\n                    // re-execute the importing modules, and force those components to\n                    // re-render. Similarly, if you convert a class component to a\n                    // function, we want to invalidate the boundary.\n                    if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n                        module.hot.invalidate();\n                    }\n                    else {\n                        self.$RefreshHelpers$.scheduleUpdate();\n                    }\n                }\n            }\n            else {\n                // Since we just executed the code for the module, it's possible that the\n                // new exports made it ineligible for being a boundary.\n                // We only care about the case when we were _previously_ a boundary,\n                // because we already accepted this update (accidental side effect).\n                var isNoLongerABoundary = prevExports !== null;\n                if (isNoLongerABoundary) {\n                    module.hot.invalidate();\n                }\n            }\n        }\n    })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvd2l0aC1hcG9sbG8uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtDQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHTyxJQUFNSSxZQUFZLEdBQUcsSUFBSUgsd0RBQUosQ0FBaUI7QUFDM0NJLEVBQUFBLEdBQUcsRUFBRSwrQkFEc0M7QUFFM0NDLEVBQUFBLEtBQUssRUFBRSxJQUFJSix5REFBSjtBQUZvQyxDQUFqQixDQUFyQjtBQU1QLCtEQUFlRix1REFBVSxDQUFDSSxZQUFELENBQXpCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2xpYi93aXRoLWFwb2xsby5qcz9iMTYzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHdpdGhBcG9sbG8gfSBmcm9tICduZXh0LWFwb2xsbydcbmltcG9ydCB7IEFwb2xsb0NsaWVudCwgSW5NZW1vcnlDYWNoZSB9IGZyb20gXCJAYXBvbGxvL2NsaWVudFwiO1xuaW1wb3J0IHsgSHR0cExpbmsgfSBmcm9tICdhcG9sbG8tbGluay1odHRwJ1xuXG4vLyBjb25zdCBhcG9sbG9Db25maWcgPSB7XG4vLyAgIGxpbms6IG5ldyBIdHRwTGluayh7XG4vLyAgICAgLy8gdXJpOiAnaHR0cHM6Ly9mYWtlci1ncmFwaHFsLnZlcmNlbC5hcHAvYXBpL2dyYXBocWwnXG4vLyAgICAgdXJpOiAnaHR0cDovL2xvY2FsaG9zdDo1MDAxL2dyYXBocWwnXG4vLyAgIH0pXG4vLyB9XG5cblxuZXhwb3J0IGNvbnN0IGFwb2xsb0NsaWVudCA9IG5ldyBBcG9sbG9DbGllbnQoe1xuICB1cmk6ICdodHRwOi8vbG9jYWxob3N0OjUwMDEvZ3JhcGhxbCcsXG4gIGNhY2hlOiBuZXcgSW5NZW1vcnlDYWNoZSgpLFxufSk7XG5cblxuZXhwb3J0IGRlZmF1bHQgd2l0aEFwb2xsbyhhcG9sbG9DbGllbnQpXG4iXSwibmFtZXMiOlsid2l0aEFwb2xsbyIsIkFwb2xsb0NsaWVudCIsIkluTWVtb3J5Q2FjaGUiLCJIdHRwTGluayIsImFwb2xsb0NsaWVudCIsInVyaSIsImNhY2hlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/with-apollo.js\n");
 
/***/ }),
 
/***/ "./node_modules/next/dist/client/link.js":
/*!***********************************************!*\
  !*** ./node_modules/next/dist/client/link.js ***!
  \***********************************************/
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nvar _slicedToArray = __webpack_require__(/*! ./node_modules/next/dist/compiled/@babel/runtime/helpers/slicedToArray */ \"./node_modules/next/dist/compiled/@babel/runtime/helpers/slicedToArray.js\");\n\nvar _s = $RefreshSig$();\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _router = __webpack_require__(/*! ../shared/lib/router/router */ \"./node_modules/next/dist/shared/lib/router/router.js\");\n\nvar _router1 = __webpack_require__(/*! ./router */ \"./node_modules/next/dist/client/router.js\");\n\nvar _useIntersection = __webpack_require__(/*! ./use-intersection */ \"./node_modules/next/dist/client/use-intersection.js\");\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nvar prefetched = {};\n\nfunction prefetch(router, href, as, options) {\n  if ( false || !router) return;\n  if (!(0, _router).isLocalURL(href)) return; // Prefetch the JSON page if asked (only in the client)\n  // We need to handle a prefetch error here since we may be\n  // loading with priority which can reject but we don't\n  // want to force navigation since this is only a prefetch\n\n  router.prefetch(href, as, options)[\"catch\"](function (err) {\n    if (true) {\n      // rethrow to show invalid URL errors\n      throw err;\n    }\n  });\n  var curLocale = options && typeof options.locale !== 'undefined' ? options.locale : router && router.locale; // Join on an invalid URI character\n\n  prefetched[href + '%' + as + (curLocale ? '%' + curLocale : '')] = true;\n}\n\nfunction isModifiedEvent(event) {\n  var target = event.currentTarget.target;\n  return target && target !== '_self' || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.nativeEvent && event.nativeEvent.which === 2;\n}\n\nfunction linkClicked(e, router, href, as, replace, shallow, scroll, locale) {\n  var nodeName = e.currentTarget.nodeName; // anchors inside an svg have a lowercase nodeName\n\n  var isAnchorNodeName = nodeName.toUpperCase() === 'A';\n\n  if (isAnchorNodeName && (isModifiedEvent(e) || !(0, _router).isLocalURL(href))) {\n    // ignore click for browser’s default behavior\n    return;\n  }\n\n  e.preventDefault(); // replace state instead of push if prop is present\n\n  router[replace ? 'replace' : 'push'](href, as, {\n    shallow: shallow,\n    locale: locale,\n    scroll: scroll\n  });\n}\n\nfunction Link(props) {\n  _s();\n\n  if (true) {\n    var createPropError = function createPropError(args) {\n      return new Error(\"Failed prop type: The prop `\".concat(args.key, \"` expects a \").concat(args.expected, \" in `<Link>`, but got `\").concat(args.actual, \"` instead.\") + ( true ? \"\\nOpen your browser's console to view the Component stack trace.\" : 0));\n    }; // TypeScript trick for type-guarding:\n\n\n    var requiredPropsGuard = {\n      href: true\n    };\n    var requiredProps = Object.keys(requiredPropsGuard);\n    requiredProps.forEach(function (key) {\n      if (key === 'href') {\n        if (props[key] == null || typeof props[key] !== 'string' && typeof props[key] !== 'object') {\n          throw createPropError({\n            key: key,\n            expected: '`string` or `object`',\n            actual: props[key] === null ? 'null' : typeof props[key]\n          });\n        }\n      } else {\n        // TypeScript trick for type-guarding:\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        var _ = key;\n      }\n    }); // TypeScript trick for type-guarding:\n\n    var optionalPropsGuard = {\n      as: true,\n      replace: true,\n      scroll: true,\n      shallow: true,\n      passHref: true,\n      prefetch: true,\n      locale: true\n    };\n    var optionalProps = Object.keys(optionalPropsGuard);\n    optionalProps.forEach(function (key) {\n      var valType = typeof props[key];\n\n      if (key === 'as') {\n        if (props[key] && valType !== 'string' && valType !== 'object') {\n          throw createPropError({\n            key: key,\n            expected: '`string` or `object`',\n            actual: valType\n          });\n        }\n      } else if (key === 'locale') {\n        if (props[key] && valType !== 'string') {\n          throw createPropError({\n            key: key,\n            expected: '`string`',\n            actual: valType\n          });\n        }\n      } else if (key === 'replace' || key === 'scroll' || key === 'shallow' || key === 'passHref' || key === 'prefetch') {\n        if (props[key] != null && valType !== 'boolean') {\n          throw createPropError({\n            key: key,\n            expected: '`boolean`',\n            actual: valType\n          });\n        }\n      } else {\n        // TypeScript trick for type-guarding:\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        var _ = key;\n      }\n    }); // This hook is in a conditional but that is ok because `process.env.NODE_ENV` never changes\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n\n    var hasWarned = _react[\"default\"].useRef(false);\n\n    if (props.prefetch && !hasWarned.current) {\n      hasWarned.current = true;\n      console.warn('Next.js auto-prefetches automatically based on viewport. The prefetch attribute is no longer needed. More: https://nextjs.org/docs/messages/prefetch-true-deprecated');\n    }\n  }\n\n  var p = props.prefetch !== false;\n  var router = (0, _router1).useRouter();\n\n  var _react$default$useMem = _react[\"default\"].useMemo(function () {\n    var _resolveHref = (0, _router).resolveHref(router, props.href, true),\n        _resolveHref2 = _slicedToArray(_resolveHref, 2),\n        resolvedHref = _resolveHref2[0],\n        resolvedAs = _resolveHref2[1];\n\n    return {\n      href: resolvedHref,\n      as: props.as ? (0, _router).resolveHref(router, props.as) : resolvedAs || resolvedHref\n    };\n  }, [router, props.href, props.as]),\n      href = _react$default$useMem.href,\n      as = _react$default$useMem.as;\n\n  var previousHref = _react[\"default\"].useRef(href);\n\n  var previousAs = _react[\"default\"].useRef(as);\n\n  var children = props.children,\n      replace = props.replace,\n      shallow = props.shallow,\n      scroll = props.scroll,\n      locale = props.locale;\n\n  if (typeof children === 'string') {\n    children = /*#__PURE__*/_react[\"default\"].createElement(\"a\", null, children);\n  } // This will return the first child, if multiple are provided it will throw an error\n\n\n  var child;\n\n  if (true) {\n    try {\n      child = _react[\"default\"].Children.only(children);\n    } catch (err) {\n      if (!children) {\n        throw new Error(\"No children were passed to <Link> with `href` of `\".concat(props.href, \"` but one child is required https://nextjs.org/docs/messages/link-no-children\"));\n      }\n\n      throw new Error(\"Multiple children were passed to <Link> with `href` of `\".concat(props.href, \"` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children\") + ( true ? \" \\nOpen your browser's console to view the Component stack trace.\" : 0));\n    }\n  } else {}\n\n  var childRef = child && typeof child === 'object' && child.ref;\n\n  var _useIntersection2 = (0, _useIntersection).useIntersection({\n    rootMargin: '200px'\n  }),\n      _useIntersection3 = _slicedToArray(_useIntersection2, 3),\n      setIntersectionRef = _useIntersection3[0],\n      isVisible = _useIntersection3[1],\n      resetVisible = _useIntersection3[2];\n\n  var setRef = _react[\"default\"].useCallback(function (el) {\n    // Before the link getting observed, check if visible state need to be reset\n    if (previousAs.current !== as || previousHref.current !== href) {\n      resetVisible();\n      previousAs.current = as;\n      previousHref.current = href;\n    }\n\n    setIntersectionRef(el);\n\n    if (childRef) {\n      if (typeof childRef === 'function') childRef(el);else if (typeof childRef === 'object') {\n        childRef.current = el;\n      }\n    }\n  }, [as, childRef, href, resetVisible, setIntersectionRef]);\n\n  _react[\"default\"].useEffect(function () {\n    var shouldPrefetch = isVisible && p && (0, _router).isLocalURL(href);\n    var curLocale = typeof locale !== 'undefined' ? locale : router && router.locale;\n    var isPrefetched = prefetched[href + '%' + as + (curLocale ? '%' + curLocale : '')];\n\n    if (shouldPrefetch && !isPrefetched) {\n      prefetch(router, href, as, {\n        locale: curLocale\n      });\n    }\n  }, [as, href, isVisible, locale, p, router]);\n\n  var childProps = {\n    ref: setRef,\n    onClick: function onClick(e) {\n      if (true) {\n        if (!e) {\n          throw new Error(\"Component rendered inside next/link has to pass click event to \\\"onClick\\\" prop.\");\n        }\n      }\n\n      if (child.props && typeof child.props.onClick === 'function') {\n        child.props.onClick(e);\n      }\n\n      if (!e.defaultPrevented) {\n        linkClicked(e, router, href, as, replace, shallow, scroll, locale);\n      }\n    }\n  };\n\n  childProps.onMouseEnter = function (e) {\n    if (child.props && typeof child.props.onMouseEnter === 'function') {\n      child.props.onMouseEnter(e);\n    }\n\n    if ((0, _router).isLocalURL(href)) {\n      prefetch(router, href, as, {\n        priority: true\n      });\n    }\n  }; // If child is an <a> tag and doesn't have a href attribute, or if the 'passHref' property is\n  // defined, we specify the current 'href', so that repetition is not needed by the user\n\n\n  if (props.passHref || child.type === 'a' && !('href' in child.props)) {\n    var curLocale = typeof locale !== 'undefined' ? locale : router && router.locale; // we only render domain locales if we are currently on a domain locale\n    // so that locale links are still visitable in development/preview envs\n\n    var localeDomain = router && router.isLocaleDomain && (0, _router).getDomainLocale(as, curLocale, router && router.locales, router && router.domainLocales);\n    childProps.href = localeDomain || (0, _router).addBasePath((0, _router).addLocale(as, curLocale, router && router.defaultLocale));\n  }\n\n  return /*#__PURE__*/_react[\"default\"].cloneElement(child, childProps);\n}\n\n_s(Link, \"YC9zoc0Fi+p7jEQ6MKzjNmb9f7w=\", true);\n\n_c = Link;\nvar _default = Link;\nexports[\"default\"] = _default;\n\nif (typeof exports[\"default\"] === 'function' || typeof exports[\"default\"] === 'object' && exports[\"default\"] !== null) {\n  Object.assign(exports[\"default\"], exports);\n  module.exports = exports[\"default\"];\n}\n\nvar _c;\n\n$RefreshReg$(_c, \"Link\");\n\n;\n    // Wrapped in an IIFE to avoid polluting the global scope\n    ;\n    (function () {\n        var _a, _b;\n        // Legacy CSS implementations will `eval` browser code in a Node.js context\n        // to extract CSS. For backwards compatibility, we need to check we're in a\n        // browser context before continuing.\n        if (typeof self !== 'undefined' &&\n            // AMP / No-JS mode does not inject these helpers:\n            '$RefreshHelpers$' in self) {\n            // @ts-ignore __webpack_module__ is global\n            var currentExports = module.exports;\n            // @ts-ignore __webpack_module__ is global\n            var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n            // This cannot happen in MainTemplate because the exports mismatch between\n            // templating and execution.\n            self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n            // A module can be accepted automatically based on its exports, e.g. when\n            // it is a Refresh Boundary.\n            if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n                // Save the previous exports on update so we can compare the boundary\n                // signatures.\n                module.hot.dispose(function (data) {\n                    data.prevExports = currentExports;\n                });\n                // Unconditionally accept an update to this module, we'll check if it's\n                // still a Refresh Boundary later.\n                // @ts-ignore importMeta is replaced in the loader\n                module.hot.accept();\n                // This field is set when the previous version of this module was a\n                // Refresh Boundary, letting us know we need to check for invalidation or\n                // enqueue an update.\n                if (prevExports !== null) {\n                    // A boundary can become ineligible if its exports are incompatible\n                    // with the previous exports.\n                    //\n                    // For example, if you add/remove/change exports, we'll want to\n                    // re-execute the importing modules, and force those components to\n                    // re-render. Similarly, if you convert a class component to a\n                    // function, we want to invalidate the boundary.\n                    if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n                        module.hot.invalidate();\n                    }\n                    else {\n                        self.$RefreshHelpers$.scheduleUpdate();\n                    }\n                }\n            }\n            else {\n                // Since we just executed the code for the module, it's possible that the\n                // new exports made it ineligible for being a boundary.\n                // We only care about the case when we were _previously_ a boundary,\n                // because we already accepted this update (accidental side effect).\n                var isNoLongerABoundary = prevExports !== null;\n                if (isNoLongerABoundary) {\n                    module.hot.invalidate();\n                }\n            }\n        }\n    })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9saW5rLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOzs7Ozs7QUFDYkEsOENBQTZDO0FBQ3pDRyxFQUFBQSxLQUFLLEVBQUU7QUFEa0MsQ0FBN0M7QUFHQUQsa0JBQUEsR0FBa0IsS0FBSyxDQUF2Qjs7QUFDQSxJQUFJRSxNQUFNLEdBQUdDLHNCQUFzQixDQUFDQyxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBbkM7O0FBQ0EsSUFBSUMsT0FBTyxHQUFHRCxtQkFBTyxDQUFDLHlGQUFELENBQXJCOztBQUNBLElBQUlFLFFBQVEsR0FBR0YsbUJBQU8sQ0FBQywyREFBRCxDQUF0Qjs7QUFDQSxJQUFJRyxnQkFBZ0IsR0FBR0gsbUJBQU8sQ0FBQywrRUFBRCxDQUE5Qjs7QUFDQSxTQUFTRCxzQkFBVCxDQUFnQ0ssR0FBaEMsRUFBcUM7QUFDakMsU0FBT0EsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVgsR0FBd0JELEdBQXhCLEdBQThCO0FBQ2pDLGVBQVNBO0FBRHdCLEdBQXJDO0FBR0g7O0FBQ0QsSUFBTUUsVUFBVSxHQUFHLEVBQW5COztBQUNBLFNBQVNDLFFBQVQsQ0FBa0JDLE1BQWxCLEVBQTBCQyxJQUExQixFQUFnQ0MsRUFBaEMsRUFBb0NDLE9BQXBDLEVBQTZDO0FBQ3pDLE1BQUksVUFBaUMsQ0FBQ0gsTUFBdEMsRUFBOEM7QUFDOUMsTUFBSSxDQUFDLENBQUMsR0FBR1AsT0FBSixFQUFhVyxVQUFiLENBQXdCSCxJQUF4QixDQUFMLEVBQW9DLE9BRkssQ0FHekM7QUFDQTtBQUNBO0FBQ0E7O0FBQ0FELEVBQUFBLE1BQU0sQ0FBQ0QsUUFBUCxDQUFnQkUsSUFBaEIsRUFBc0JDLEVBQXRCLEVBQTBCQyxPQUExQixXQUF5QyxVQUFDRSxHQUFELEVBQU87QUFDNUMsY0FBMkM7QUFDdkM7QUFDQSxZQUFNQSxHQUFOO0FBQ0g7QUFDSixHQUxEO0FBTUEsTUFBTUMsU0FBUyxHQUFHSCxPQUFPLElBQUksT0FBT0EsT0FBTyxDQUFDSSxNQUFmLEtBQTBCLFdBQXJDLEdBQW1ESixPQUFPLENBQUNJLE1BQTNELEdBQW9FUCxNQUFNLElBQUlBLE1BQU0sQ0FBQ08sTUFBdkcsQ0FieUMsQ0FjekM7O0FBQ0FULEVBQUFBLFVBQVUsQ0FBQ0csSUFBSSxHQUFHLEdBQVAsR0FBYUMsRUFBYixJQUFtQkksU0FBUyxHQUFHLE1BQU1BLFNBQVQsR0FBcUIsRUFBakQsQ0FBRCxDQUFWLEdBQW1FLElBQW5FO0FBQ0g7O0FBQ0QsU0FBU0UsZUFBVCxDQUF5QkMsS0FBekIsRUFBZ0M7QUFDNUIsTUFBUUMsTUFBUixHQUFvQkQsS0FBSyxDQUFDRSxhQUExQixDQUFRRCxNQUFSO0FBQ0EsU0FBT0EsTUFBTSxJQUFJQSxNQUFNLEtBQUssT0FBckIsSUFBZ0NELEtBQUssQ0FBQ0csT0FBdEMsSUFBaURILEtBQUssQ0FBQ0ksT0FBdkQsSUFBa0VKLEtBQUssQ0FBQ0ssUUFBeEUsSUFBb0ZMLEtBQUssQ0FBQ00sTUFBMUYsSUFBb0dOLEtBQUssQ0FBQ08sV0FBTixJQUFxQlAsS0FBSyxDQUFDTyxXQUFOLENBQWtCQyxLQUFsQixLQUE0QixDQUE1SjtBQUNIOztBQUNELFNBQVNDLFdBQVQsQ0FBcUJDLENBQXJCLEVBQXdCbkIsTUFBeEIsRUFBZ0NDLElBQWhDLEVBQXNDQyxFQUF0QyxFQUEwQ2tCLE9BQTFDLEVBQW1EQyxPQUFuRCxFQUE0REMsTUFBNUQsRUFBb0VmLE1BQXBFLEVBQTRFO0FBQ3hFLE1BQVFnQixRQUFSLEdBQXNCSixDQUFDLENBQUNSLGFBQXhCLENBQVFZLFFBQVIsQ0FEd0UsQ0FFeEU7O0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUdELFFBQVEsQ0FBQ0UsV0FBVCxPQUEyQixHQUFwRDs7QUFDQSxNQUFJRCxnQkFBZ0IsS0FBS2hCLGVBQWUsQ0FBQ1csQ0FBRCxDQUFmLElBQXNCLENBQUMsQ0FBQyxHQUFHMUIsT0FBSixFQUFhVyxVQUFiLENBQXdCSCxJQUF4QixDQUE1QixDQUFwQixFQUFnRjtBQUM1RTtBQUNBO0FBQ0g7O0FBQ0RrQixFQUFBQSxDQUFDLENBQUNPLGNBQUYsR0FSd0UsQ0FTeEU7O0FBQ0ExQixFQUFBQSxNQUFNLENBQUNvQixPQUFPLEdBQUcsU0FBSCxHQUFlLE1BQXZCLENBQU4sQ0FBcUNuQixJQUFyQyxFQUEyQ0MsRUFBM0MsRUFBK0M7QUFDM0NtQixJQUFBQSxPQUFPLEVBQVBBLE9BRDJDO0FBRTNDZCxJQUFBQSxNQUFNLEVBQU5BLE1BRjJDO0FBRzNDZSxJQUFBQSxNQUFNLEVBQU5BO0FBSDJDLEdBQS9DO0FBS0g7O0FBQ0QsU0FBU0ssSUFBVCxDQUFjQyxLQUFkLEVBQXFCO0FBQUE7O0FBQ2pCLFlBQTJDO0FBQUEsUUFDOUJDLGVBRDhCLEdBQ3ZDLFNBQVNBLGVBQVQsQ0FBeUJDLElBQXpCLEVBQStCO0FBQzNCLGFBQU8sSUFBSUMsS0FBSixDQUFVLHNDQUFnQ0QsSUFBSSxDQUFDRSxHQUFyQyx5QkFBd0RGLElBQUksQ0FBQ0csUUFBN0Qsb0NBQWtHSCxJQUFJLENBQUNJLE1BQXZHLG1CQUE4SCxRQUFnQyxrRUFBaEMsR0FBcUcsQ0FBbk8sQ0FBVixDQUFQO0FBQ0gsS0FIc0MsRUFJdkM7OztBQUNBLFFBQU1DLGtCQUFrQixHQUFHO0FBQ3ZCbEMsTUFBQUEsSUFBSSxFQUFFO0FBRGlCLEtBQTNCO0FBR0EsUUFBTW1DLGFBQWEsR0FBR2xELE1BQU0sQ0FBQ21ELElBQVAsQ0FBWUYsa0JBQVosQ0FBdEI7QUFDQUMsSUFBQUEsYUFBYSxDQUFDRSxPQUFkLENBQXNCLFVBQUNOLEdBQUQsRUFBTztBQUN6QixVQUFJQSxHQUFHLEtBQUssTUFBWixFQUFvQjtBQUNoQixZQUFJSixLQUFLLENBQUNJLEdBQUQsQ0FBTCxJQUFjLElBQWQsSUFBc0IsT0FBT0osS0FBSyxDQUFDSSxHQUFELENBQVosS0FBc0IsUUFBdEIsSUFBa0MsT0FBT0osS0FBSyxDQUFDSSxHQUFELENBQVosS0FBc0IsUUFBbEYsRUFBNEY7QUFDeEYsZ0JBQU1ILGVBQWUsQ0FBQztBQUNsQkcsWUFBQUEsR0FBRyxFQUFIQSxHQURrQjtBQUVsQkMsWUFBQUEsUUFBUSxFQUFFLHNCQUZRO0FBR2xCQyxZQUFBQSxNQUFNLEVBQUVOLEtBQUssQ0FBQ0ksR0FBRCxDQUFMLEtBQWUsSUFBZixHQUFzQixNQUF0QixHQUErQixPQUFPSixLQUFLLENBQUNJLEdBQUQ7QUFIakMsV0FBRCxDQUFyQjtBQUtIO0FBQ0osT0FSRCxNQVFPO0FBQ0g7QUFDQTtBQUNBLFlBQU1PLENBQUMsR0FBR1AsR0FBVjtBQUNIO0FBQ0osS0FkRCxFQVR1QyxDQXdCdkM7O0FBQ0EsUUFBTVEsa0JBQWtCLEdBQUc7QUFDdkJ0QyxNQUFBQSxFQUFFLEVBQUUsSUFEbUI7QUFFdkJrQixNQUFBQSxPQUFPLEVBQUUsSUFGYztBQUd2QkUsTUFBQUEsTUFBTSxFQUFFLElBSGU7QUFJdkJELE1BQUFBLE9BQU8sRUFBRSxJQUpjO0FBS3ZCb0IsTUFBQUEsUUFBUSxFQUFFLElBTGE7QUFNdkIxQyxNQUFBQSxRQUFRLEVBQUUsSUFOYTtBQU92QlEsTUFBQUEsTUFBTSxFQUFFO0FBUGUsS0FBM0I7QUFTQSxRQUFNbUMsYUFBYSxHQUFHeEQsTUFBTSxDQUFDbUQsSUFBUCxDQUFZRyxrQkFBWixDQUF0QjtBQUNBRSxJQUFBQSxhQUFhLENBQUNKLE9BQWQsQ0FBc0IsVUFBQ04sR0FBRCxFQUFPO0FBQ3pCLFVBQU1XLE9BQU8sR0FBRyxPQUFPZixLQUFLLENBQUNJLEdBQUQsQ0FBNUI7O0FBQ0EsVUFBSUEsR0FBRyxLQUFLLElBQVosRUFBa0I7QUFDZCxZQUFJSixLQUFLLENBQUNJLEdBQUQsQ0FBTCxJQUFjVyxPQUFPLEtBQUssUUFBMUIsSUFBc0NBLE9BQU8sS0FBSyxRQUF0RCxFQUFnRTtBQUM1RCxnQkFBTWQsZUFBZSxDQUFDO0FBQ2xCRyxZQUFBQSxHQUFHLEVBQUhBLEdBRGtCO0FBRWxCQyxZQUFBQSxRQUFRLEVBQUUsc0JBRlE7QUFHbEJDLFlBQUFBLE1BQU0sRUFBRVM7QUFIVSxXQUFELENBQXJCO0FBS0g7QUFDSixPQVJELE1BUU8sSUFBSVgsR0FBRyxLQUFLLFFBQVosRUFBc0I7QUFDekIsWUFBSUosS0FBSyxDQUFDSSxHQUFELENBQUwsSUFBY1csT0FBTyxLQUFLLFFBQTlCLEVBQXdDO0FBQ3BDLGdCQUFNZCxlQUFlLENBQUM7QUFDbEJHLFlBQUFBLEdBQUcsRUFBSEEsR0FEa0I7QUFFbEJDLFlBQUFBLFFBQVEsRUFBRSxVQUZRO0FBR2xCQyxZQUFBQSxNQUFNLEVBQUVTO0FBSFUsV0FBRCxDQUFyQjtBQUtIO0FBQ0osT0FSTSxNQVFBLElBQUlYLEdBQUcsS0FBSyxTQUFSLElBQXFCQSxHQUFHLEtBQUssUUFBN0IsSUFBeUNBLEdBQUcsS0FBSyxTQUFqRCxJQUE4REEsR0FBRyxLQUFLLFVBQXRFLElBQW9GQSxHQUFHLEtBQUssVUFBaEcsRUFBNEc7QUFDL0csWUFBSUosS0FBSyxDQUFDSSxHQUFELENBQUwsSUFBYyxJQUFkLElBQXNCVyxPQUFPLEtBQUssU0FBdEMsRUFBaUQ7QUFDN0MsZ0JBQU1kLGVBQWUsQ0FBQztBQUNsQkcsWUFBQUEsR0FBRyxFQUFIQSxHQURrQjtBQUVsQkMsWUFBQUEsUUFBUSxFQUFFLFdBRlE7QUFHbEJDLFlBQUFBLE1BQU0sRUFBRVM7QUFIVSxXQUFELENBQXJCO0FBS0g7QUFDSixPQVJNLE1BUUE7QUFDSDtBQUNBO0FBQ0EsWUFBTUosQ0FBQyxHQUFHUCxHQUFWO0FBQ0g7QUFDSixLQS9CRCxFQW5DdUMsQ0FtRXZDO0FBQ0E7O0FBQ0EsUUFBTVksU0FBUyxHQUFHdEQsTUFBTSxXQUFOLENBQWV1RCxNQUFmLENBQXNCLEtBQXRCLENBQWxCOztBQUNBLFFBQUlqQixLQUFLLENBQUM3QixRQUFOLElBQWtCLENBQUM2QyxTQUFTLENBQUNFLE9BQWpDLEVBQTBDO0FBQ3RDRixNQUFBQSxTQUFTLENBQUNFLE9BQVYsR0FBb0IsSUFBcEI7QUFDQUMsTUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWEsc0tBQWI7QUFDSDtBQUNKOztBQUNELE1BQU1DLENBQUMsR0FBR3JCLEtBQUssQ0FBQzdCLFFBQU4sS0FBbUIsS0FBN0I7QUFDQSxNQUFNQyxNQUFNLEdBQUcsQ0FBQyxHQUFHTixRQUFKLEVBQWN3RCxTQUFkLEVBQWY7O0FBQ0EsOEJBQXVCNUQsTUFBTSxXQUFOLENBQWU2RCxPQUFmLENBQXVCLFlBQUk7QUFDOUMsdUJBQW1DLENBQUMsR0FBRzFELE9BQUosRUFBYTJELFdBQWIsQ0FBeUJwRCxNQUF6QixFQUFpQzRCLEtBQUssQ0FBQzNCLElBQXZDLEVBQTZDLElBQTdDLENBQW5DO0FBQUE7QUFBQSxRQUFPb0QsWUFBUDtBQUFBLFFBQXFCQyxVQUFyQjs7QUFDQSxXQUFPO0FBQ0hyRCxNQUFBQSxJQUFJLEVBQUVvRCxZQURIO0FBRUhuRCxNQUFBQSxFQUFFLEVBQUUwQixLQUFLLENBQUMxQixFQUFOLEdBQVcsQ0FBQyxHQUFHVCxPQUFKLEVBQWEyRCxXQUFiLENBQXlCcEQsTUFBekIsRUFBaUM0QixLQUFLLENBQUMxQixFQUF2QyxDQUFYLEdBQXdEb0QsVUFBVSxJQUFJRDtBQUZ2RSxLQUFQO0FBSUgsR0FOc0IsRUFNcEIsQ0FDQ3JELE1BREQsRUFFQzRCLEtBQUssQ0FBQzNCLElBRlAsRUFHQzJCLEtBQUssQ0FBQzFCLEVBSFAsQ0FOb0IsQ0FBdkI7QUFBQSxNQUFRRCxJQUFSLHlCQUFRQSxJQUFSO0FBQUEsTUFBZUMsRUFBZix5QkFBZUEsRUFBZjs7QUFXQSxNQUFNcUQsWUFBWSxHQUFHakUsTUFBTSxXQUFOLENBQWV1RCxNQUFmLENBQXNCNUMsSUFBdEIsQ0FBckI7O0FBQ0EsTUFBTXVELFVBQVUsR0FBR2xFLE1BQU0sV0FBTixDQUFldUQsTUFBZixDQUFzQjNDLEVBQXRCLENBQW5COztBQUNBLE1BQU11RCxRQUFOLEdBQTBEN0IsS0FBMUQsQ0FBTTZCLFFBQU47QUFBQSxNQUFpQnJDLE9BQWpCLEdBQTBEUSxLQUExRCxDQUFpQlIsT0FBakI7QUFBQSxNQUEyQkMsT0FBM0IsR0FBMERPLEtBQTFELENBQTJCUCxPQUEzQjtBQUFBLE1BQXFDQyxNQUFyQyxHQUEwRE0sS0FBMUQsQ0FBcUNOLE1BQXJDO0FBQUEsTUFBOENmLE1BQTlDLEdBQTBEcUIsS0FBMUQsQ0FBOENyQixNQUE5Qzs7QUFDQSxNQUFJLE9BQU9rRCxRQUFQLEtBQW9CLFFBQXhCLEVBQWtDO0FBQzlCQSxJQUFBQSxRQUFRLEdBQUcsYUFBY25FLE1BQU0sV0FBTixDQUFlb0UsYUFBZixDQUE2QixHQUE3QixFQUFrQyxJQUFsQyxFQUF3Q0QsUUFBeEMsQ0FBekI7QUFDSCxHQTlGZ0IsQ0ErRmpCOzs7QUFDQSxNQUFJRSxLQUFKOztBQUNBLFlBQTRDO0FBQ3hDLFFBQUk7QUFDQUEsTUFBQUEsS0FBSyxHQUFHckUsTUFBTSxXQUFOLENBQWVzRSxRQUFmLENBQXdCQyxJQUF4QixDQUE2QkosUUFBN0IsQ0FBUjtBQUNILEtBRkQsQ0FFRSxPQUFPcEQsR0FBUCxFQUFZO0FBQ1YsVUFBSSxDQUFDb0QsUUFBTCxFQUFlO0FBQ1gsY0FBTSxJQUFJMUIsS0FBSiw2REFBa0VILEtBQUssQ0FBQzNCLElBQXhFLG1GQUFOO0FBQ0g7O0FBQ0QsWUFBTSxJQUFJOEIsS0FBSixDQUFVLGtFQUE4REgsS0FBSyxDQUFDM0IsSUFBcEUsa0dBQXdLLFFBQWdDLG1FQUFoQyxHQUFzRyxDQUE5USxDQUFWLENBQU47QUFDSDtBQUNKLEdBVEQsTUFTTyxFQUVOOztBQUNELE1BQU02RCxRQUFRLEdBQUdILEtBQUssSUFBSSxPQUFPQSxLQUFQLEtBQWlCLFFBQTFCLElBQXNDQSxLQUFLLENBQUNJLEdBQTdEOztBQUNBLDBCQUFzRCxDQUFDLEdBQUdwRSxnQkFBSixFQUFzQnFFLGVBQXRCLENBQXNDO0FBQ3hGQyxJQUFBQSxVQUFVLEVBQUU7QUFENEUsR0FBdEMsQ0FBdEQ7QUFBQTtBQUFBLE1BQU9DLGtCQUFQO0FBQUEsTUFBMkJDLFNBQTNCO0FBQUEsTUFBc0NDLFlBQXRDOztBQUdBLE1BQU1DLE1BQU0sR0FBRy9FLE1BQU0sV0FBTixDQUFlZ0YsV0FBZixDQUEyQixVQUFDQyxFQUFELEVBQU07QUFDNUM7QUFDQSxRQUFJZixVQUFVLENBQUNWLE9BQVgsS0FBdUI1QyxFQUF2QixJQUE2QnFELFlBQVksQ0FBQ1QsT0FBYixLQUF5QjdDLElBQTFELEVBQWdFO0FBQzVEbUUsTUFBQUEsWUFBWTtBQUNaWixNQUFBQSxVQUFVLENBQUNWLE9BQVgsR0FBcUI1QyxFQUFyQjtBQUNBcUQsTUFBQUEsWUFBWSxDQUFDVCxPQUFiLEdBQXVCN0MsSUFBdkI7QUFDSDs7QUFDRGlFLElBQUFBLGtCQUFrQixDQUFDSyxFQUFELENBQWxCOztBQUNBLFFBQUlULFFBQUosRUFBYztBQUNWLFVBQUksT0FBT0EsUUFBUCxLQUFvQixVQUF4QixFQUFvQ0EsUUFBUSxDQUFDUyxFQUFELENBQVIsQ0FBcEMsS0FDSyxJQUFJLE9BQU9ULFFBQVAsS0FBb0IsUUFBeEIsRUFBa0M7QUFDbkNBLFFBQUFBLFFBQVEsQ0FBQ2hCLE9BQVQsR0FBbUJ5QixFQUFuQjtBQUNIO0FBQ0o7QUFDSixHQWRjLEVBY1osQ0FDQ3JFLEVBREQsRUFFQzRELFFBRkQsRUFHQzdELElBSEQsRUFJQ21FLFlBSkQsRUFLQ0Ysa0JBTEQsQ0FkWSxDQUFmOztBQXFCQTVFLEVBQUFBLE1BQU0sV0FBTixDQUFla0YsU0FBZixDQUF5QixZQUFJO0FBQ3pCLFFBQU1DLGNBQWMsR0FBR04sU0FBUyxJQUFJbEIsQ0FBYixJQUFrQixDQUFDLEdBQUd4RCxPQUFKLEVBQWFXLFVBQWIsQ0FBd0JILElBQXhCLENBQXpDO0FBQ0EsUUFBTUssU0FBUyxHQUFHLE9BQU9DLE1BQVAsS0FBa0IsV0FBbEIsR0FBZ0NBLE1BQWhDLEdBQXlDUCxNQUFNLElBQUlBLE1BQU0sQ0FBQ08sTUFBNUU7QUFDQSxRQUFNbUUsWUFBWSxHQUFHNUUsVUFBVSxDQUFDRyxJQUFJLEdBQUcsR0FBUCxHQUFhQyxFQUFiLElBQW1CSSxTQUFTLEdBQUcsTUFBTUEsU0FBVCxHQUFxQixFQUFqRCxDQUFELENBQS9COztBQUNBLFFBQUltRSxjQUFjLElBQUksQ0FBQ0MsWUFBdkIsRUFBcUM7QUFDakMzRSxNQUFBQSxRQUFRLENBQUNDLE1BQUQsRUFBU0MsSUFBVCxFQUFlQyxFQUFmLEVBQW1CO0FBQ3ZCSyxRQUFBQSxNQUFNLEVBQUVEO0FBRGUsT0FBbkIsQ0FBUjtBQUdIO0FBQ0osR0FURCxFQVNHLENBQ0NKLEVBREQsRUFFQ0QsSUFGRCxFQUdDa0UsU0FIRCxFQUlDNUQsTUFKRCxFQUtDMEMsQ0FMRCxFQU1DakQsTUFORCxDQVRIOztBQWlCQSxNQUFNMkUsVUFBVSxHQUFHO0FBQ2ZaLElBQUFBLEdBQUcsRUFBRU0sTUFEVTtBQUVmTyxJQUFBQSxPQUFPLEVBQUUsaUJBQUN6RCxDQUFELEVBQUs7QUFDVixnQkFBMkM7QUFDdkMsWUFBSSxDQUFDQSxDQUFMLEVBQVE7QUFDSixnQkFBTSxJQUFJWSxLQUFKLG9GQUFOO0FBQ0g7QUFDSjs7QUFDRCxVQUFJNEIsS0FBSyxDQUFDL0IsS0FBTixJQUFlLE9BQU8rQixLQUFLLENBQUMvQixLQUFOLENBQVlnRCxPQUFuQixLQUErQixVQUFsRCxFQUE4RDtBQUMxRGpCLFFBQUFBLEtBQUssQ0FBQy9CLEtBQU4sQ0FBWWdELE9BQVosQ0FBb0J6RCxDQUFwQjtBQUNIOztBQUNELFVBQUksQ0FBQ0EsQ0FBQyxDQUFDMEQsZ0JBQVAsRUFBeUI7QUFDckIzRCxRQUFBQSxXQUFXLENBQUNDLENBQUQsRUFBSW5CLE1BQUosRUFBWUMsSUFBWixFQUFrQkMsRUFBbEIsRUFBc0JrQixPQUF0QixFQUErQkMsT0FBL0IsRUFBd0NDLE1BQXhDLEVBQWdEZixNQUFoRCxDQUFYO0FBQ0g7QUFDSjtBQWRjLEdBQW5COztBQWdCQW9FLEVBQUFBLFVBQVUsQ0FBQ0csWUFBWCxHQUEwQixVQUFDM0QsQ0FBRCxFQUFLO0FBQzNCLFFBQUl3QyxLQUFLLENBQUMvQixLQUFOLElBQWUsT0FBTytCLEtBQUssQ0FBQy9CLEtBQU4sQ0FBWWtELFlBQW5CLEtBQW9DLFVBQXZELEVBQW1FO0FBQy9EbkIsTUFBQUEsS0FBSyxDQUFDL0IsS0FBTixDQUFZa0QsWUFBWixDQUF5QjNELENBQXpCO0FBQ0g7O0FBQ0QsUUFBSSxDQUFDLEdBQUcxQixPQUFKLEVBQWFXLFVBQWIsQ0FBd0JILElBQXhCLENBQUosRUFBbUM7QUFDL0JGLE1BQUFBLFFBQVEsQ0FBQ0MsTUFBRCxFQUFTQyxJQUFULEVBQWVDLEVBQWYsRUFBbUI7QUFDdkI2RSxRQUFBQSxRQUFRLEVBQUU7QUFEYSxPQUFuQixDQUFSO0FBR0g7QUFDSixHQVRELENBdktpQixDQWlMakI7QUFDQTs7O0FBQ0EsTUFBSW5ELEtBQUssQ0FBQ2EsUUFBTixJQUFrQmtCLEtBQUssQ0FBQ3FCLElBQU4sS0FBZSxHQUFmLElBQXNCLEVBQUUsVUFBVXJCLEtBQUssQ0FBQy9CLEtBQWxCLENBQTVDLEVBQXNFO0FBQ2xFLFFBQU10QixTQUFTLEdBQUcsT0FBT0MsTUFBUCxLQUFrQixXQUFsQixHQUFnQ0EsTUFBaEMsR0FBeUNQLE1BQU0sSUFBSUEsTUFBTSxDQUFDTyxNQUE1RSxDQURrRSxDQUVsRTtBQUNBOztBQUNBLFFBQU0wRSxZQUFZLEdBQUdqRixNQUFNLElBQUlBLE1BQU0sQ0FBQ2tGLGNBQWpCLElBQW1DLENBQUMsR0FBR3pGLE9BQUosRUFBYTBGLGVBQWIsQ0FBNkJqRixFQUE3QixFQUFpQ0ksU0FBakMsRUFBNENOLE1BQU0sSUFBSUEsTUFBTSxDQUFDb0YsT0FBN0QsRUFBc0VwRixNQUFNLElBQUlBLE1BQU0sQ0FBQ3FGLGFBQXZGLENBQXhEO0FBQ0FWLElBQUFBLFVBQVUsQ0FBQzFFLElBQVgsR0FBa0JnRixZQUFZLElBQUksQ0FBQyxHQUFHeEYsT0FBSixFQUFhNkYsV0FBYixDQUF5QixDQUFDLEdBQUc3RixPQUFKLEVBQWE4RixTQUFiLENBQXVCckYsRUFBdkIsRUFBMkJJLFNBQTNCLEVBQXNDTixNQUFNLElBQUlBLE1BQU0sQ0FBQ3dGLGFBQXZELENBQXpCLENBQWxDO0FBQ0g7O0FBQ0QsU0FBTyxhQUFjbEcsTUFBTSxXQUFOLENBQWVtRyxZQUFmLENBQTRCOUIsS0FBNUIsRUFBbUNnQixVQUFuQyxDQUFyQjtBQUNIOztHQTNMUWhELEk7O0tBQUFBLEk7QUE0TFQsSUFBSStELFFBQVEsR0FBRy9ELElBQWY7QUFDQXZDLGtCQUFBLEdBQWtCc0csUUFBbEI7O0FBRUEsSUFBSSxPQUFPdEcsT0FBTyxXQUFkLEtBQTJCLFVBQTNCLElBQTBDLE9BQU9BLE9BQU8sV0FBZCxLQUEyQixRQUEzQixJQUF1Q0EsT0FBTyxXQUFQLEtBQW9CLElBQXpHLEVBQWdIO0FBQzlHRixFQUFBQSxNQUFNLENBQUN5RyxNQUFQLENBQWN2RyxPQUFPLFdBQXJCLEVBQStCQSxPQUEvQjtBQUNBd0csRUFBQUEsTUFBTSxDQUFDeEcsT0FBUCxHQUFpQkEsT0FBTyxXQUF4QjtBQUNEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2xpbmsuanM/ZTRmOSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG52YXIgX3JvdXRlciA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci9yb3V0ZXJcIik7XG52YXIgX3JvdXRlcjEgPSByZXF1aXJlKFwiLi9yb3V0ZXJcIik7XG52YXIgX3VzZUludGVyc2VjdGlvbiA9IHJlcXVpcmUoXCIuL3VzZS1pbnRlcnNlY3Rpb25cIik7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5jb25zdCBwcmVmZXRjaGVkID0ge307XG5mdW5jdGlvbiBwcmVmZXRjaChyb3V0ZXIsIGhyZWYsIGFzLCBvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICFyb3V0ZXIpIHJldHVybjtcbiAgICBpZiAoISgwLCBfcm91dGVyKS5pc0xvY2FsVVJMKGhyZWYpKSByZXR1cm47XG4gICAgLy8gUHJlZmV0Y2ggdGhlIEpTT04gcGFnZSBpZiBhc2tlZCAob25seSBpbiB0aGUgY2xpZW50KVxuICAgIC8vIFdlIG5lZWQgdG8gaGFuZGxlIGEgcHJlZmV0Y2ggZXJyb3IgaGVyZSBzaW5jZSB3ZSBtYXkgYmVcbiAgICAvLyBsb2FkaW5nIHdpdGggcHJpb3JpdHkgd2hpY2ggY2FuIHJlamVjdCBidXQgd2UgZG9uJ3RcbiAgICAvLyB3YW50IHRvIGZvcmNlIG5hdmlnYXRpb24gc2luY2UgdGhpcyBpcyBvbmx5IGEgcHJlZmV0Y2hcbiAgICByb3V0ZXIucHJlZmV0Y2goaHJlZiwgYXMsIG9wdGlvbnMpLmNhdGNoKChlcnIpPT57XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAvLyByZXRocm93IHRvIHNob3cgaW52YWxpZCBVUkwgZXJyb3JzXG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBjdXJMb2NhbGUgPSBvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLmxvY2FsZSAhPT0gJ3VuZGVmaW5lZCcgPyBvcHRpb25zLmxvY2FsZSA6IHJvdXRlciAmJiByb3V0ZXIubG9jYWxlO1xuICAgIC8vIEpvaW4gb24gYW4gaW52YWxpZCBVUkkgY2hhcmFjdGVyXG4gICAgcHJlZmV0Y2hlZFtocmVmICsgJyUnICsgYXMgKyAoY3VyTG9jYWxlID8gJyUnICsgY3VyTG9jYWxlIDogJycpXSA9IHRydWU7XG59XG5mdW5jdGlvbiBpc01vZGlmaWVkRXZlbnQoZXZlbnQpIHtcbiAgICBjb25zdCB7IHRhcmdldCAgfSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgcmV0dXJuIHRhcmdldCAmJiB0YXJnZXQgIT09ICdfc2VsZicgfHwgZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50LmFsdEtleSB8fCBldmVudC5uYXRpdmVFdmVudCAmJiBldmVudC5uYXRpdmVFdmVudC53aGljaCA9PT0gMjtcbn1cbmZ1bmN0aW9uIGxpbmtDbGlja2VkKGUsIHJvdXRlciwgaHJlZiwgYXMsIHJlcGxhY2UsIHNoYWxsb3csIHNjcm9sbCwgbG9jYWxlKSB7XG4gICAgY29uc3QgeyBub2RlTmFtZSAgfSA9IGUuY3VycmVudFRhcmdldDtcbiAgICAvLyBhbmNob3JzIGluc2lkZSBhbiBzdmcgaGF2ZSBhIGxvd2VyY2FzZSBub2RlTmFtZVxuICAgIGNvbnN0IGlzQW5jaG9yTm9kZU5hbWUgPSBub2RlTmFtZS50b1VwcGVyQ2FzZSgpID09PSAnQSc7XG4gICAgaWYgKGlzQW5jaG9yTm9kZU5hbWUgJiYgKGlzTW9kaWZpZWRFdmVudChlKSB8fCAhKDAsIF9yb3V0ZXIpLmlzTG9jYWxVUkwoaHJlZikpKSB7XG4gICAgICAgIC8vIGlnbm9yZSBjbGljayBmb3IgYnJvd3NlcuKAmXMgZGVmYXVsdCBiZWhhdmlvclxuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAvLyByZXBsYWNlIHN0YXRlIGluc3RlYWQgb2YgcHVzaCBpZiBwcm9wIGlzIHByZXNlbnRcbiAgICByb3V0ZXJbcmVwbGFjZSA/ICdyZXBsYWNlJyA6ICdwdXNoJ10oaHJlZiwgYXMsIHtcbiAgICAgICAgc2hhbGxvdyxcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICBzY3JvbGxcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIExpbmsocHJvcHMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBmdW5jdGlvbiBjcmVhdGVQcm9wRXJyb3IoYXJncykge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihgRmFpbGVkIHByb3AgdHlwZTogVGhlIHByb3AgXFxgJHthcmdzLmtleX1cXGAgZXhwZWN0cyBhICR7YXJncy5leHBlY3RlZH0gaW4gXFxgPExpbms+XFxgLCBidXQgZ290IFxcYCR7YXJncy5hY3R1YWx9XFxgIGluc3RlYWQuYCArICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IFwiXFxuT3BlbiB5b3VyIGJyb3dzZXIncyBjb25zb2xlIHRvIHZpZXcgdGhlIENvbXBvbmVudCBzdGFjayB0cmFjZS5cIiA6ICcnKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVHlwZVNjcmlwdCB0cmljayBmb3IgdHlwZS1ndWFyZGluZzpcbiAgICAgICAgY29uc3QgcmVxdWlyZWRQcm9wc0d1YXJkID0ge1xuICAgICAgICAgICAgaHJlZjogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZXF1aXJlZFByb3BzID0gT2JqZWN0LmtleXMocmVxdWlyZWRQcm9wc0d1YXJkKTtcbiAgICAgICAgcmVxdWlyZWRQcm9wcy5mb3JFYWNoKChrZXkpPT57XG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnaHJlZicpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHNba2V5XSA9PSBudWxsIHx8IHR5cGVvZiBwcm9wc1trZXldICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgcHJvcHNba2V5XSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgY3JlYXRlUHJvcEVycm9yKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAnYHN0cmluZ2Agb3IgYG9iamVjdGAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsOiBwcm9wc1trZXldID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIHByb3BzW2tleV1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBUeXBlU2NyaXB0IHRyaWNrIGZvciB0eXBlLWd1YXJkaW5nOlxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgICAgICBjb25zdCBfID0ga2V5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gVHlwZVNjcmlwdCB0cmljayBmb3IgdHlwZS1ndWFyZGluZzpcbiAgICAgICAgY29uc3Qgb3B0aW9uYWxQcm9wc0d1YXJkID0ge1xuICAgICAgICAgICAgYXM6IHRydWUsXG4gICAgICAgICAgICByZXBsYWNlOiB0cnVlLFxuICAgICAgICAgICAgc2Nyb2xsOiB0cnVlLFxuICAgICAgICAgICAgc2hhbGxvdzogdHJ1ZSxcbiAgICAgICAgICAgIHBhc3NIcmVmOiB0cnVlLFxuICAgICAgICAgICAgcHJlZmV0Y2g6IHRydWUsXG4gICAgICAgICAgICBsb2NhbGU6IHRydWVcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb3B0aW9uYWxQcm9wcyA9IE9iamVjdC5rZXlzKG9wdGlvbmFsUHJvcHNHdWFyZCk7XG4gICAgICAgIG9wdGlvbmFsUHJvcHMuZm9yRWFjaCgoa2V5KT0+e1xuICAgICAgICAgICAgY29uc3QgdmFsVHlwZSA9IHR5cGVvZiBwcm9wc1trZXldO1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2FzJykge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wc1trZXldICYmIHZhbFR5cGUgIT09ICdzdHJpbmcnICYmIHZhbFR5cGUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGNyZWF0ZVByb3BFcnJvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogJ2BzdHJpbmdgIG9yIGBvYmplY3RgJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbDogdmFsVHlwZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2xvY2FsZScpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHNba2V5XSAmJiB2YWxUeXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBjcmVhdGVQcm9wRXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICdgc3RyaW5nYCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWw6IHZhbFR5cGVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdyZXBsYWNlJyB8fCBrZXkgPT09ICdzY3JvbGwnIHx8IGtleSA9PT0gJ3NoYWxsb3cnIHx8IGtleSA9PT0gJ3Bhc3NIcmVmJyB8fCBrZXkgPT09ICdwcmVmZXRjaCcpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHNba2V5XSAhPSBudWxsICYmIHZhbFR5cGUgIT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBjcmVhdGVQcm9wRXJyb3Ioe1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICdgYm9vbGVhbmAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsOiB2YWxUeXBlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVHlwZVNjcmlwdCB0cmljayBmb3IgdHlwZS1ndWFyZGluZzpcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgICAgICAgY29uc3QgXyA9IGtleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFRoaXMgaG9vayBpcyBpbiBhIGNvbmRpdGlvbmFsIGJ1dCB0aGF0IGlzIG9rIGJlY2F1c2UgYHByb2Nlc3MuZW52Lk5PREVfRU5WYCBuZXZlciBjaGFuZ2VzXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgICAgICBjb25zdCBoYXNXYXJuZWQgPSBfcmVhY3QuZGVmYXVsdC51c2VSZWYoZmFsc2UpO1xuICAgICAgICBpZiAocHJvcHMucHJlZmV0Y2ggJiYgIWhhc1dhcm5lZC5jdXJyZW50KSB7XG4gICAgICAgICAgICBoYXNXYXJuZWQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ05leHQuanMgYXV0by1wcmVmZXRjaGVzIGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gdmlld3BvcnQuIFRoZSBwcmVmZXRjaCBhdHRyaWJ1dGUgaXMgbm8gbG9uZ2VyIG5lZWRlZC4gTW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvcHJlZmV0Y2gtdHJ1ZS1kZXByZWNhdGVkJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcCA9IHByb3BzLnByZWZldGNoICE9PSBmYWxzZTtcbiAgICBjb25zdCByb3V0ZXIgPSAoMCwgX3JvdXRlcjEpLnVzZVJvdXRlcigpO1xuICAgIGNvbnN0IHsgaHJlZiAsIGFzICB9ID0gX3JlYWN0LmRlZmF1bHQudXNlTWVtbygoKT0+e1xuICAgICAgICBjb25zdCBbcmVzb2x2ZWRIcmVmLCByZXNvbHZlZEFzXSA9ICgwLCBfcm91dGVyKS5yZXNvbHZlSHJlZihyb3V0ZXIsIHByb3BzLmhyZWYsIHRydWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaHJlZjogcmVzb2x2ZWRIcmVmLFxuICAgICAgICAgICAgYXM6IHByb3BzLmFzID8gKDAsIF9yb3V0ZXIpLnJlc29sdmVIcmVmKHJvdXRlciwgcHJvcHMuYXMpIDogcmVzb2x2ZWRBcyB8fCByZXNvbHZlZEhyZWZcbiAgICAgICAgfTtcbiAgICB9LCBbXG4gICAgICAgIHJvdXRlcixcbiAgICAgICAgcHJvcHMuaHJlZixcbiAgICAgICAgcHJvcHMuYXNcbiAgICBdKTtcbiAgICBjb25zdCBwcmV2aW91c0hyZWYgPSBfcmVhY3QuZGVmYXVsdC51c2VSZWYoaHJlZik7XG4gICAgY29uc3QgcHJldmlvdXNBcyA9IF9yZWFjdC5kZWZhdWx0LnVzZVJlZihhcyk7XG4gICAgbGV0IHsgY2hpbGRyZW4gLCByZXBsYWNlICwgc2hhbGxvdyAsIHNjcm9sbCAsIGxvY2FsZSAgfSA9IHByb3BzO1xuICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNoaWxkcmVuID0gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiYVwiLCBudWxsLCBjaGlsZHJlbik7XG4gICAgfVxuICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gdGhlIGZpcnN0IGNoaWxkLCBpZiBtdWx0aXBsZSBhcmUgcHJvdmlkZWQgaXQgd2lsbCB0aHJvdyBhbiBlcnJvclxuICAgIGxldCBjaGlsZDtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNoaWxkID0gX3JlYWN0LmRlZmF1bHQuQ2hpbGRyZW4ub25seShjaGlsZHJlbik7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gY2hpbGRyZW4gd2VyZSBwYXNzZWQgdG8gPExpbms+IHdpdGggXFxgaHJlZlxcYCBvZiBcXGAke3Byb3BzLmhyZWZ9XFxgIGJ1dCBvbmUgY2hpbGQgaXMgcmVxdWlyZWQgaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbGluay1uby1jaGlsZHJlbmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNdWx0aXBsZSBjaGlsZHJlbiB3ZXJlIHBhc3NlZCB0byA8TGluaz4gd2l0aCBcXGBocmVmXFxgIG9mIFxcYCR7cHJvcHMuaHJlZn1cXGAgYnV0IG9ubHkgb25lIGNoaWxkIGlzIHN1cHBvcnRlZCBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9saW5rLW11bHRpcGxlLWNoaWxkcmVuYCArICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IFwiIFxcbk9wZW4geW91ciBicm93c2VyJ3MgY29uc29sZSB0byB2aWV3IHRoZSBDb21wb25lbnQgc3RhY2sgdHJhY2UuXCIgOiAnJykpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY2hpbGQgPSBfcmVhY3QuZGVmYXVsdC5DaGlsZHJlbi5vbmx5KGNoaWxkcmVuKTtcbiAgICB9XG4gICAgY29uc3QgY2hpbGRSZWYgPSBjaGlsZCAmJiB0eXBlb2YgY2hpbGQgPT09ICdvYmplY3QnICYmIGNoaWxkLnJlZjtcbiAgICBjb25zdCBbc2V0SW50ZXJzZWN0aW9uUmVmLCBpc1Zpc2libGUsIHJlc2V0VmlzaWJsZV0gPSAoMCwgX3VzZUludGVyc2VjdGlvbikudXNlSW50ZXJzZWN0aW9uKHtcbiAgICAgICAgcm9vdE1hcmdpbjogJzIwMHB4J1xuICAgIH0pO1xuICAgIGNvbnN0IHNldFJlZiA9IF9yZWFjdC5kZWZhdWx0LnVzZUNhbGxiYWNrKChlbCk9PntcbiAgICAgICAgLy8gQmVmb3JlIHRoZSBsaW5rIGdldHRpbmcgb2JzZXJ2ZWQsIGNoZWNrIGlmIHZpc2libGUgc3RhdGUgbmVlZCB0byBiZSByZXNldFxuICAgICAgICBpZiAocHJldmlvdXNBcy5jdXJyZW50ICE9PSBhcyB8fCBwcmV2aW91c0hyZWYuY3VycmVudCAhPT0gaHJlZikge1xuICAgICAgICAgICAgcmVzZXRWaXNpYmxlKCk7XG4gICAgICAgICAgICBwcmV2aW91c0FzLmN1cnJlbnQgPSBhcztcbiAgICAgICAgICAgIHByZXZpb3VzSHJlZi5jdXJyZW50ID0gaHJlZjtcbiAgICAgICAgfVxuICAgICAgICBzZXRJbnRlcnNlY3Rpb25SZWYoZWwpO1xuICAgICAgICBpZiAoY2hpbGRSZWYpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRSZWYgPT09ICdmdW5jdGlvbicpIGNoaWxkUmVmKGVsKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBjaGlsZFJlZiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICBjaGlsZFJlZi5jdXJyZW50ID0gZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGFzLFxuICAgICAgICBjaGlsZFJlZixcbiAgICAgICAgaHJlZixcbiAgICAgICAgcmVzZXRWaXNpYmxlLFxuICAgICAgICBzZXRJbnRlcnNlY3Rpb25SZWZcbiAgICBdKTtcbiAgICBfcmVhY3QuZGVmYXVsdC51c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3Qgc2hvdWxkUHJlZmV0Y2ggPSBpc1Zpc2libGUgJiYgcCAmJiAoMCwgX3JvdXRlcikuaXNMb2NhbFVSTChocmVmKTtcbiAgICAgICAgY29uc3QgY3VyTG9jYWxlID0gdHlwZW9mIGxvY2FsZSAhPT0gJ3VuZGVmaW5lZCcgPyBsb2NhbGUgOiByb3V0ZXIgJiYgcm91dGVyLmxvY2FsZTtcbiAgICAgICAgY29uc3QgaXNQcmVmZXRjaGVkID0gcHJlZmV0Y2hlZFtocmVmICsgJyUnICsgYXMgKyAoY3VyTG9jYWxlID8gJyUnICsgY3VyTG9jYWxlIDogJycpXTtcbiAgICAgICAgaWYgKHNob3VsZFByZWZldGNoICYmICFpc1ByZWZldGNoZWQpIHtcbiAgICAgICAgICAgIHByZWZldGNoKHJvdXRlciwgaHJlZiwgYXMsIHtcbiAgICAgICAgICAgICAgICBsb2NhbGU6IGN1ckxvY2FsZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGFzLFxuICAgICAgICBocmVmLFxuICAgICAgICBpc1Zpc2libGUsXG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgcCxcbiAgICAgICAgcm91dGVyXG4gICAgXSk7XG4gICAgY29uc3QgY2hpbGRQcm9wcyA9IHtcbiAgICAgICAgcmVmOiBzZXRSZWYsXG4gICAgICAgIG9uQ2xpY2s6IChlKT0+e1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgcmVuZGVyZWQgaW5zaWRlIG5leHQvbGluayBoYXMgdG8gcGFzcyBjbGljayBldmVudCB0byBcIm9uQ2xpY2tcIiBwcm9wLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaGlsZC5wcm9wcyAmJiB0eXBlb2YgY2hpbGQucHJvcHMub25DbGljayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGNoaWxkLnByb3BzLm9uQ2xpY2soZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIGxpbmtDbGlja2VkKGUsIHJvdXRlciwgaHJlZiwgYXMsIHJlcGxhY2UsIHNoYWxsb3csIHNjcm9sbCwgbG9jYWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgY2hpbGRQcm9wcy5vbk1vdXNlRW50ZXIgPSAoZSk9PntcbiAgICAgICAgaWYgKGNoaWxkLnByb3BzICYmIHR5cGVvZiBjaGlsZC5wcm9wcy5vbk1vdXNlRW50ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNoaWxkLnByb3BzLm9uTW91c2VFbnRlcihlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKDAsIF9yb3V0ZXIpLmlzTG9jYWxVUkwoaHJlZikpIHtcbiAgICAgICAgICAgIHByZWZldGNoKHJvdXRlciwgaHJlZiwgYXMsIHtcbiAgICAgICAgICAgICAgICBwcmlvcml0eTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIElmIGNoaWxkIGlzIGFuIDxhPiB0YWcgYW5kIGRvZXNuJ3QgaGF2ZSBhIGhyZWYgYXR0cmlidXRlLCBvciBpZiB0aGUgJ3Bhc3NIcmVmJyBwcm9wZXJ0eSBpc1xuICAgIC8vIGRlZmluZWQsIHdlIHNwZWNpZnkgdGhlIGN1cnJlbnQgJ2hyZWYnLCBzbyB0aGF0IHJlcGV0aXRpb24gaXMgbm90IG5lZWRlZCBieSB0aGUgdXNlclxuICAgIGlmIChwcm9wcy5wYXNzSHJlZiB8fCBjaGlsZC50eXBlID09PSAnYScgJiYgISgnaHJlZicgaW4gY2hpbGQucHJvcHMpKSB7XG4gICAgICAgIGNvbnN0IGN1ckxvY2FsZSA9IHR5cGVvZiBsb2NhbGUgIT09ICd1bmRlZmluZWQnID8gbG9jYWxlIDogcm91dGVyICYmIHJvdXRlci5sb2NhbGU7XG4gICAgICAgIC8vIHdlIG9ubHkgcmVuZGVyIGRvbWFpbiBsb2NhbGVzIGlmIHdlIGFyZSBjdXJyZW50bHkgb24gYSBkb21haW4gbG9jYWxlXG4gICAgICAgIC8vIHNvIHRoYXQgbG9jYWxlIGxpbmtzIGFyZSBzdGlsbCB2aXNpdGFibGUgaW4gZGV2ZWxvcG1lbnQvcHJldmlldyBlbnZzXG4gICAgICAgIGNvbnN0IGxvY2FsZURvbWFpbiA9IHJvdXRlciAmJiByb3V0ZXIuaXNMb2NhbGVEb21haW4gJiYgKDAsIF9yb3V0ZXIpLmdldERvbWFpbkxvY2FsZShhcywgY3VyTG9jYWxlLCByb3V0ZXIgJiYgcm91dGVyLmxvY2FsZXMsIHJvdXRlciAmJiByb3V0ZXIuZG9tYWluTG9jYWxlcyk7XG4gICAgICAgIGNoaWxkUHJvcHMuaHJlZiA9IGxvY2FsZURvbWFpbiB8fCAoMCwgX3JvdXRlcikuYWRkQmFzZVBhdGgoKDAsIF9yb3V0ZXIpLmFkZExvY2FsZShhcywgY3VyTG9jYWxlLCByb3V0ZXIgJiYgcm91dGVyLmRlZmF1bHRMb2NhbGUpKTtcbiAgICB9XG4gICAgcmV0dXJuKC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY2xvbmVFbGVtZW50KGNoaWxkLCBjaGlsZFByb3BzKSk7XG59XG52YXIgX2RlZmF1bHQgPSBMaW5rO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7XG5cbmlmICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSB7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxpbmsuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcm91dGVyIiwiX3JvdXRlcjEiLCJfdXNlSW50ZXJzZWN0aW9uIiwib2JqIiwiX19lc01vZHVsZSIsInByZWZldGNoZWQiLCJwcmVmZXRjaCIsInJvdXRlciIsImhyZWYiLCJhcyIsIm9wdGlvbnMiLCJpc0xvY2FsVVJMIiwiZXJyIiwiY3VyTG9jYWxlIiwibG9jYWxlIiwiaXNNb2RpZmllZEV2ZW50IiwiZXZlbnQiLCJ0YXJnZXQiLCJjdXJyZW50VGFyZ2V0IiwibWV0YUtleSIsImN0cmxLZXkiLCJzaGlmdEtleSIsImFsdEtleSIsIm5hdGl2ZUV2ZW50Iiwid2hpY2giLCJsaW5rQ2xpY2tlZCIsImUiLCJyZXBsYWNlIiwic2hhbGxvdyIsInNjcm9sbCIsIm5vZGVOYW1lIiwiaXNBbmNob3JOb2RlTmFtZSIsInRvVXBwZXJDYXNlIiwicHJldmVudERlZmF1bHQiLCJMaW5rIiwicHJvcHMiLCJjcmVhdGVQcm9wRXJyb3IiLCJhcmdzIiwiRXJyb3IiLCJrZXkiLCJleHBlY3RlZCIsImFjdHVhbCIsInJlcXVpcmVkUHJvcHNHdWFyZCIsInJlcXVpcmVkUHJvcHMiLCJrZXlzIiwiZm9yRWFjaCIsIl8iLCJvcHRpb25hbFByb3BzR3VhcmQiLCJwYXNzSHJlZiIsIm9wdGlvbmFsUHJvcHMiLCJ2YWxUeXBlIiwiaGFzV2FybmVkIiwidXNlUmVmIiwiY3VycmVudCIsImNvbnNvbGUiLCJ3YXJuIiwicCIsInVzZVJvdXRlciIsInVzZU1lbW8iLCJyZXNvbHZlSHJlZiIsInJlc29sdmVkSHJlZiIsInJlc29sdmVkQXMiLCJwcmV2aW91c0hyZWYiLCJwcmV2aW91c0FzIiwiY2hpbGRyZW4iLCJjcmVhdGVFbGVtZW50IiwiY2hpbGQiLCJDaGlsZHJlbiIsIm9ubHkiLCJjaGlsZFJlZiIsInJlZiIsInVzZUludGVyc2VjdGlvbiIsInJvb3RNYXJnaW4iLCJzZXRJbnRlcnNlY3Rpb25SZWYiLCJpc1Zpc2libGUiLCJyZXNldFZpc2libGUiLCJzZXRSZWYiLCJ1c2VDYWxsYmFjayIsImVsIiwidXNlRWZmZWN0Iiwic2hvdWxkUHJlZmV0Y2giLCJpc1ByZWZldGNoZWQiLCJjaGlsZFByb3BzIiwib25DbGljayIsImRlZmF1bHRQcmV2ZW50ZWQiLCJvbk1vdXNlRW50ZXIiLCJwcmlvcml0eSIsInR5cGUiLCJsb2NhbGVEb21haW4iLCJpc0xvY2FsZURvbWFpbiIsImdldERvbWFpbkxvY2FsZSIsImxvY2FsZXMiLCJkb21haW5Mb2NhbGVzIiwiYWRkQmFzZVBhdGgiLCJhZGRMb2NhbGUiLCJkZWZhdWx0TG9jYWxlIiwiY2xvbmVFbGVtZW50IiwiX2RlZmF1bHQiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/link.js\n");
 
/***/ }),
 
/***/ "./node_modules/next/dist/client/use-intersection.js":
/*!***********************************************************!*\
  !*** ./node_modules/next/dist/client/use-intersection.js ***!
  \***********************************************************/
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nvar _slicedToArray = __webpack_require__(/*! ./node_modules/next/dist/compiled/@babel/runtime/helpers/slicedToArray */ \"./node_modules/next/dist/compiled/@babel/runtime/helpers/slicedToArray.js\");\n\nvar _s = $RefreshSig$();\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.useIntersection = useIntersection;\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _requestIdleCallback = __webpack_require__(/*! ./request-idle-callback */ \"./node_modules/next/dist/client/request-idle-callback.js\");\n\nvar hasIntersectionObserver = typeof IntersectionObserver !== 'undefined';\n\nfunction useIntersection(_ref) {\n  _s();\n\n  var rootRef = _ref.rootRef,\n      rootMargin = _ref.rootMargin,\n      disabled = _ref.disabled;\n  var isDisabled = disabled || !hasIntersectionObserver;\n  var unobserve = (0, _react).useRef();\n\n  var _useState = (0, _react).useState(false),\n      _useState2 = _slicedToArray(_useState, 2),\n      visible = _useState2[0],\n      setVisible = _useState2[1];\n\n  var _useState3 = (0, _react).useState(rootRef ? rootRef.current : null),\n      _useState4 = _slicedToArray(_useState3, 2),\n      root = _useState4[0],\n      setRoot = _useState4[1];\n\n  var setRef = (0, _react).useCallback(function (el) {\n    if (unobserve.current) {\n      unobserve.current();\n      unobserve.current = undefined;\n    }\n\n    if (isDisabled || visible) return;\n\n    if (el && el.tagName) {\n      unobserve.current = observe(el, function (isVisible) {\n        return isVisible && setVisible(isVisible);\n      }, {\n        root: root,\n        rootMargin: rootMargin\n      });\n    }\n  }, [isDisabled, root, rootMargin, visible]);\n  var resetVisible = (0, _react).useCallback(function () {\n    setVisible(false);\n  }, []);\n  (0, _react).useEffect(function () {\n    if (!hasIntersectionObserver) {\n      if (!visible) {\n        var idleCallback = (0, _requestIdleCallback).requestIdleCallback(function () {\n          return setVisible(true);\n        });\n        return function () {\n          return (0, _requestIdleCallback).cancelIdleCallback(idleCallback);\n        };\n      }\n    }\n  }, [visible]);\n  (0, _react).useEffect(function () {\n    if (rootRef) setRoot(rootRef.current);\n  }, [rootRef]);\n  return [setRef, visible, resetVisible];\n}\n\n_s(useIntersection, \"v899qx2Oxsy68lv6LR1+qv/1rnU=\");\n\nfunction observe(element, callback, options) {\n  var _createObserver = createObserver(options),\n      id = _createObserver.id,\n      observer = _createObserver.observer,\n      elements = _createObserver.elements;\n\n  elements.set(element, callback);\n  observer.observe(element);\n  return function unobserve() {\n    elements[\"delete\"](element);\n    observer.unobserve(element); // Destroy observer when there's nothing left to watch:\n\n    if (elements.size === 0) {\n      observer.disconnect();\n      observers[\"delete\"](id);\n      var index = idList.findIndex(function (obj) {\n        return obj.root === id.root && obj.margin === id.margin;\n      });\n\n      if (index > -1) {\n        idList.splice(index, 1);\n      }\n    }\n  };\n}\n\nvar observers = new Map();\nvar idList = [];\n\nfunction createObserver(options) {\n  var id = {\n    root: options.root || null,\n    margin: options.rootMargin || ''\n  };\n  var existing = idList.find(function (obj) {\n    return obj.root === id.root && obj.margin === id.margin;\n  });\n  var instance;\n\n  if (existing) {\n    instance = observers.get(existing);\n  } else {\n    instance = observers.get(id);\n    idList.push(id);\n  }\n\n  if (instance) {\n    return instance;\n  }\n\n  var elements = new Map();\n  var observer = new IntersectionObserver(function (entries) {\n    entries.forEach(function (entry) {\n      var callback = elements.get(entry.target);\n      var isVisible = entry.isIntersecting || entry.intersectionRatio > 0;\n\n      if (callback && isVisible) {\n        callback(isVisible);\n      }\n    });\n  }, options);\n  observers.set(id, instance = {\n    id: id,\n    observer: observer,\n    elements: elements\n  });\n  return instance;\n}\n\nif (typeof exports[\"default\"] === 'function' || typeof exports[\"default\"] === 'object' && exports[\"default\"] !== null) {\n  Object.assign(exports[\"default\"], exports);\n  module.exports = exports[\"default\"];\n}\n\n;\n    // Wrapped in an IIFE to avoid polluting the global scope\n    ;\n    (function () {\n        var _a, _b;\n        // Legacy CSS implementations will `eval` browser code in a Node.js context\n        // to extract CSS. For backwards compatibility, we need to check we're in a\n        // browser context before continuing.\n        if (typeof self !== 'undefined' &&\n            // AMP / No-JS mode does not inject these helpers:\n            '$RefreshHelpers$' in self) {\n            // @ts-ignore __webpack_module__ is global\n            var currentExports = module.exports;\n            // @ts-ignore __webpack_module__ is global\n            var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n            // This cannot happen in MainTemplate because the exports mismatch between\n            // templating and execution.\n            self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n            // A module can be accepted automatically based on its exports, e.g. when\n            // it is a Refresh Boundary.\n            if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n                // Save the previous exports on update so we can compare the boundary\n                // signatures.\n                module.hot.dispose(function (data) {\n                    data.prevExports = currentExports;\n                });\n                // Unconditionally accept an update to this module, we'll check if it's\n                // still a Refresh Boundary later.\n                // @ts-ignore importMeta is replaced in the loader\n                module.hot.accept();\n                // This field is set when the previous version of this module was a\n                // Refresh Boundary, letting us know we need to check for invalidation or\n                // enqueue an update.\n                if (prevExports !== null) {\n                    // A boundary can become ineligible if its exports are incompatible\n                    // with the previous exports.\n                    //\n                    // For example, if you add/remove/change exports, we'll want to\n                    // re-execute the importing modules, and force those components to\n                    // re-render. Similarly, if you convert a class component to a\n                    // function, we want to invalidate the boundary.\n                    if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n                        module.hot.invalidate();\n                    }\n                    else {\n                        self.$RefreshHelpers$.scheduleUpdate();\n                    }\n                }\n            }\n            else {\n                // Since we just executed the code for the module, it's possible that the\n                // new exports made it ineligible for being a boundary.\n                // We only care about the case when we were _previously_ a boundary,\n                // because we already accepted this update (accidental side effect).\n                var isNoLongerABoundary = prevExports !== null;\n                if (isNoLongerABoundary) {\n                    module.hot.invalidate();\n                }\n            }\n        }\n    })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC91c2UtaW50ZXJzZWN0aW9uLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOzs7Ozs7QUFDYkEsOENBQTZDO0FBQ3pDRyxFQUFBQSxLQUFLLEVBQUU7QUFEa0MsQ0FBN0M7QUFHQUQsdUJBQUEsR0FBMEJFLGVBQTFCOztBQUNBLElBQUlDLE1BQU0sR0FBR0MsbUJBQU8sQ0FBQyw0Q0FBRCxDQUFwQjs7QUFDQSxJQUFJQyxvQkFBb0IsR0FBR0QsbUJBQU8sQ0FBQyx5RkFBRCxDQUFsQzs7QUFDQSxJQUFNRSx1QkFBdUIsR0FBRyxPQUFPQyxvQkFBUCxLQUFnQyxXQUFoRTs7QUFDQSxTQUFTTCxlQUFULE9BQStEO0FBQUE7O0FBQUEsTUFBcENNLE9BQW9DLFFBQXBDQSxPQUFvQztBQUFBLE1BQTFCQyxVQUEwQixRQUExQkEsVUFBMEI7QUFBQSxNQUFiQyxRQUFhLFFBQWJBLFFBQWE7QUFDM0QsTUFBTUMsVUFBVSxHQUFHRCxRQUFRLElBQUksQ0FBQ0osdUJBQWhDO0FBQ0EsTUFBTU0sU0FBUyxHQUFHLENBQUMsR0FBR1QsTUFBSixFQUFZVSxNQUFaLEVBQWxCOztBQUNBLGtCQUE4QixDQUFDLEdBQUdWLE1BQUosRUFBWVcsUUFBWixDQUFxQixLQUFyQixDQUE5QjtBQUFBO0FBQUEsTUFBT0MsT0FBUDtBQUFBLE1BQWdCQyxVQUFoQjs7QUFDQSxtQkFBd0IsQ0FBQyxHQUFHYixNQUFKLEVBQVlXLFFBQVosQ0FBcUJOLE9BQU8sR0FBR0EsT0FBTyxDQUFDUyxPQUFYLEdBQXFCLElBQWpELENBQXhCO0FBQUE7QUFBQSxNQUFPQyxJQUFQO0FBQUEsTUFBYUMsT0FBYjs7QUFDQSxNQUFNQyxNQUFNLEdBQUcsQ0FBQyxHQUFHakIsTUFBSixFQUFZa0IsV0FBWixDQUF3QixVQUFDQyxFQUFELEVBQU07QUFDekMsUUFBSVYsU0FBUyxDQUFDSyxPQUFkLEVBQXVCO0FBQ25CTCxNQUFBQSxTQUFTLENBQUNLLE9BQVY7QUFDQUwsTUFBQUEsU0FBUyxDQUFDSyxPQUFWLEdBQW9CTSxTQUFwQjtBQUNIOztBQUNELFFBQUlaLFVBQVUsSUFBSUksT0FBbEIsRUFBMkI7O0FBQzNCLFFBQUlPLEVBQUUsSUFBSUEsRUFBRSxDQUFDRSxPQUFiLEVBQXNCO0FBQ2xCWixNQUFBQSxTQUFTLENBQUNLLE9BQVYsR0FBb0JRLE9BQU8sQ0FBQ0gsRUFBRCxFQUFLLFVBQUNJLFNBQUQ7QUFBQSxlQUFhQSxTQUFTLElBQUlWLFVBQVUsQ0FBQ1UsU0FBRCxDQUFwQztBQUFBLE9BQUwsRUFDekI7QUFDRVIsUUFBQUEsSUFBSSxFQUFKQSxJQURGO0FBRUVULFFBQUFBLFVBQVUsRUFBVkE7QUFGRixPQUR5QixDQUEzQjtBQUtIO0FBQ0osR0FiYyxFQWFaLENBQ0NFLFVBREQsRUFFQ08sSUFGRCxFQUdDVCxVQUhELEVBSUNNLE9BSkQsQ0FiWSxDQUFmO0FBbUJBLE1BQU1ZLFlBQVksR0FBRyxDQUFDLEdBQUd4QixNQUFKLEVBQVlrQixXQUFaLENBQXdCLFlBQUk7QUFDN0NMLElBQUFBLFVBQVUsQ0FBQyxLQUFELENBQVY7QUFDSCxHQUZvQixFQUVsQixFQUZrQixDQUFyQjtBQUdBLEdBQUMsR0FBR2IsTUFBSixFQUFZeUIsU0FBWixDQUFzQixZQUFJO0FBQ3RCLFFBQUksQ0FBQ3RCLHVCQUFMLEVBQThCO0FBQzFCLFVBQUksQ0FBQ1MsT0FBTCxFQUFjO0FBQ1YsWUFBTWMsWUFBWSxHQUFHLENBQUMsR0FBR3hCLG9CQUFKLEVBQTBCeUIsbUJBQTFCLENBQThDO0FBQUEsaUJBQUlkLFVBQVUsQ0FBQyxJQUFELENBQWQ7QUFBQSxTQUE5QyxDQUFyQjtBQUVBLGVBQU87QUFBQSxpQkFBSSxDQUFDLEdBQUdYLG9CQUFKLEVBQTBCMEIsa0JBQTFCLENBQTZDRixZQUE3QyxDQUFKO0FBQUEsU0FBUDtBQUVIO0FBQ0o7QUFDSixHQVRELEVBU0csQ0FDQ2QsT0FERCxDQVRIO0FBWUEsR0FBQyxHQUFHWixNQUFKLEVBQVl5QixTQUFaLENBQXNCLFlBQUk7QUFDdEIsUUFBSXBCLE9BQUosRUFBYVcsT0FBTyxDQUFDWCxPQUFPLENBQUNTLE9BQVQsQ0FBUDtBQUNoQixHQUZELEVBRUcsQ0FDQ1QsT0FERCxDQUZIO0FBS0EsU0FBTyxDQUNIWSxNQURHLEVBRUhMLE9BRkcsRUFHSFksWUFIRyxDQUFQO0FBS0g7O0dBakRRekIsZTs7QUFrRFQsU0FBU3VCLE9BQVQsQ0FBaUJPLE9BQWpCLEVBQTBCQyxRQUExQixFQUFvQ0MsT0FBcEMsRUFBNkM7QUFDekMsd0JBQXNDQyxjQUFjLENBQUNELE9BQUQsQ0FBcEQ7QUFBQSxNQUFRRSxFQUFSLG1CQUFRQSxFQUFSO0FBQUEsTUFBYUMsUUFBYixtQkFBYUEsUUFBYjtBQUFBLE1BQXdCQyxRQUF4QixtQkFBd0JBLFFBQXhCOztBQUNBQSxFQUFBQSxRQUFRLENBQUNDLEdBQVQsQ0FBYVAsT0FBYixFQUFzQkMsUUFBdEI7QUFDQUksRUFBQUEsUUFBUSxDQUFDWixPQUFULENBQWlCTyxPQUFqQjtBQUNBLFNBQU8sU0FBU3BCLFNBQVQsR0FBcUI7QUFDeEIwQixJQUFBQSxRQUFRLFVBQVIsQ0FBZ0JOLE9BQWhCO0FBQ0FLLElBQUFBLFFBQVEsQ0FBQ3pCLFNBQVQsQ0FBbUJvQixPQUFuQixFQUZ3QixDQUd4Qjs7QUFDQSxRQUFJTSxRQUFRLENBQUNFLElBQVQsS0FBa0IsQ0FBdEIsRUFBeUI7QUFDckJILE1BQUFBLFFBQVEsQ0FBQ0ksVUFBVDtBQUNBQyxNQUFBQSxTQUFTLFVBQVQsQ0FBaUJOLEVBQWpCO0FBQ0EsVUFBSU8sS0FBSyxHQUFHQyxNQUFNLENBQUNDLFNBQVAsQ0FBaUIsVUFBQ0MsR0FBRDtBQUFBLGVBQU9BLEdBQUcsQ0FBQzVCLElBQUosS0FBYWtCLEVBQUUsQ0FBQ2xCLElBQWhCLElBQXdCNEIsR0FBRyxDQUFDQyxNQUFKLEtBQWVYLEVBQUUsQ0FBQ1csTUFBakQ7QUFBQSxPQUFqQixDQUFaOztBQUVBLFVBQUlKLEtBQUssR0FBRyxDQUFDLENBQWIsRUFBZ0I7QUFDWkMsUUFBQUEsTUFBTSxDQUFDSSxNQUFQLENBQWNMLEtBQWQsRUFBcUIsQ0FBckI7QUFDSDtBQUNKO0FBQ0osR0FiRDtBQWNIOztBQUNELElBQU1ELFNBQVMsR0FBRyxJQUFJTyxHQUFKLEVBQWxCO0FBQ0EsSUFBTUwsTUFBTSxHQUFHLEVBQWY7O0FBQ0EsU0FBU1QsY0FBVCxDQUF3QkQsT0FBeEIsRUFBaUM7QUFDN0IsTUFBTUUsRUFBRSxHQUFHO0FBQ1BsQixJQUFBQSxJQUFJLEVBQUVnQixPQUFPLENBQUNoQixJQUFSLElBQWdCLElBRGY7QUFFUDZCLElBQUFBLE1BQU0sRUFBRWIsT0FBTyxDQUFDekIsVUFBUixJQUFzQjtBQUZ2QixHQUFYO0FBSUEsTUFBSXlDLFFBQVEsR0FBR04sTUFBTSxDQUFDTyxJQUFQLENBQVksVUFBQ0wsR0FBRDtBQUFBLFdBQU9BLEdBQUcsQ0FBQzVCLElBQUosS0FBYWtCLEVBQUUsQ0FBQ2xCLElBQWhCLElBQXdCNEIsR0FBRyxDQUFDQyxNQUFKLEtBQWVYLEVBQUUsQ0FBQ1csTUFBakQ7QUFBQSxHQUFaLENBQWY7QUFFQSxNQUFJSyxRQUFKOztBQUNBLE1BQUlGLFFBQUosRUFBYztBQUNWRSxJQUFBQSxRQUFRLEdBQUdWLFNBQVMsQ0FBQ1csR0FBVixDQUFjSCxRQUFkLENBQVg7QUFDSCxHQUZELE1BRU87QUFDSEUsSUFBQUEsUUFBUSxHQUFHVixTQUFTLENBQUNXLEdBQVYsQ0FBY2pCLEVBQWQsQ0FBWDtBQUNBUSxJQUFBQSxNQUFNLENBQUNVLElBQVAsQ0FBWWxCLEVBQVo7QUFDSDs7QUFDRCxNQUFJZ0IsUUFBSixFQUFjO0FBQ1YsV0FBT0EsUUFBUDtBQUNIOztBQUNELE1BQU1kLFFBQVEsR0FBRyxJQUFJVyxHQUFKLEVBQWpCO0FBQ0EsTUFBTVosUUFBUSxHQUFHLElBQUk5QixvQkFBSixDQUF5QixVQUFDZ0QsT0FBRCxFQUFXO0FBQ2pEQSxJQUFBQSxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IsVUFBQ0MsS0FBRCxFQUFTO0FBQ3JCLFVBQU14QixRQUFRLEdBQUdLLFFBQVEsQ0FBQ2UsR0FBVCxDQUFhSSxLQUFLLENBQUNDLE1BQW5CLENBQWpCO0FBQ0EsVUFBTWhDLFNBQVMsR0FBRytCLEtBQUssQ0FBQ0UsY0FBTixJQUF3QkYsS0FBSyxDQUFDRyxpQkFBTixHQUEwQixDQUFwRTs7QUFDQSxVQUFJM0IsUUFBUSxJQUFJUCxTQUFoQixFQUEyQjtBQUN2Qk8sUUFBQUEsUUFBUSxDQUFDUCxTQUFELENBQVI7QUFDSDtBQUNKLEtBTkQ7QUFPSCxHQVJnQixFQVFkUSxPQVJjLENBQWpCO0FBU0FRLEVBQUFBLFNBQVMsQ0FBQ0gsR0FBVixDQUFjSCxFQUFkLEVBQWtCZ0IsUUFBUSxHQUFHO0FBQ3pCaEIsSUFBQUEsRUFBRSxFQUFGQSxFQUR5QjtBQUV6QkMsSUFBQUEsUUFBUSxFQUFSQSxRQUZ5QjtBQUd6QkMsSUFBQUEsUUFBUSxFQUFSQTtBQUh5QixHQUE3QjtBQUtBLFNBQU9jLFFBQVA7QUFDSDs7QUFFRCxJQUFJLE9BQU9wRCxPQUFPLFdBQWQsS0FBMkIsVUFBM0IsSUFBMEMsT0FBT0EsT0FBTyxXQUFkLEtBQTJCLFFBQTNCLElBQXVDQSxPQUFPLFdBQVAsS0FBb0IsSUFBekcsRUFBZ0g7QUFDOUdGLEVBQUFBLE1BQU0sQ0FBQytELE1BQVAsQ0FBYzdELE9BQU8sV0FBckIsRUFBK0JBLE9BQS9CO0FBQ0E4RCxFQUFBQSxNQUFNLENBQUM5RCxPQUFQLEdBQWlCQSxPQUFPLFdBQXhCO0FBQ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvdXNlLWludGVyc2VjdGlvbi5qcz9mZDk0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy51c2VJbnRlcnNlY3Rpb24gPSB1c2VJbnRlcnNlY3Rpb247XG52YXIgX3JlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xudmFyIF9yZXF1ZXN0SWRsZUNhbGxiYWNrID0gcmVxdWlyZShcIi4vcmVxdWVzdC1pZGxlLWNhbGxiYWNrXCIpO1xuY29uc3QgaGFzSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSB0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnO1xuZnVuY3Rpb24gdXNlSW50ZXJzZWN0aW9uKHsgcm9vdFJlZiAsIHJvb3RNYXJnaW4gLCBkaXNhYmxlZCAgfSkge1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSBkaXNhYmxlZCB8fCAhaGFzSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gICAgY29uc3QgdW5vYnNlcnZlID0gKDAsIF9yZWFjdCkudXNlUmVmKCk7XG4gICAgY29uc3QgW3Zpc2libGUsIHNldFZpc2libGVdID0gKDAsIF9yZWFjdCkudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtyb290LCBzZXRSb290XSA9ICgwLCBfcmVhY3QpLnVzZVN0YXRlKHJvb3RSZWYgPyByb290UmVmLmN1cnJlbnQgOiBudWxsKTtcbiAgICBjb25zdCBzZXRSZWYgPSAoMCwgX3JlYWN0KS51c2VDYWxsYmFjaygoZWwpPT57XG4gICAgICAgIGlmICh1bm9ic2VydmUuY3VycmVudCkge1xuICAgICAgICAgICAgdW5vYnNlcnZlLmN1cnJlbnQoKTtcbiAgICAgICAgICAgIHVub2JzZXJ2ZS5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0Rpc2FibGVkIHx8IHZpc2libGUpIHJldHVybjtcbiAgICAgICAgaWYgKGVsICYmIGVsLnRhZ05hbWUpIHtcbiAgICAgICAgICAgIHVub2JzZXJ2ZS5jdXJyZW50ID0gb2JzZXJ2ZShlbCwgKGlzVmlzaWJsZSk9PmlzVmlzaWJsZSAmJiBzZXRWaXNpYmxlKGlzVmlzaWJsZSlcbiAgICAgICAgICAgICwge1xuICAgICAgICAgICAgICAgIHJvb3QsXG4gICAgICAgICAgICAgICAgcm9vdE1hcmdpblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGlzRGlzYWJsZWQsXG4gICAgICAgIHJvb3QsXG4gICAgICAgIHJvb3RNYXJnaW4sXG4gICAgICAgIHZpc2libGVcbiAgICBdKTtcbiAgICBjb25zdCByZXNldFZpc2libGUgPSAoMCwgX3JlYWN0KS51c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICBzZXRWaXNpYmxlKGZhbHNlKTtcbiAgICB9LCBbXSk7XG4gICAgKDAsIF9yZWFjdCkudXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmICghaGFzSW50ZXJzZWN0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIGlmICghdmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkbGVDYWxsYmFjayA9ICgwLCBfcmVxdWVzdElkbGVDYWxsYmFjaykucmVxdWVzdElkbGVDYWxsYmFjaygoKT0+c2V0VmlzaWJsZSh0cnVlKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgpPT4oMCwgX3JlcXVlc3RJZGxlQ2FsbGJhY2spLmNhbmNlbElkbGVDYWxsYmFjayhpZGxlQ2FsbGJhY2spXG4gICAgICAgICAgICAgICAgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICB2aXNpYmxlXG4gICAgXSk7XG4gICAgKDAsIF9yZWFjdCkudXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChyb290UmVmKSBzZXRSb290KHJvb3RSZWYuY3VycmVudCk7XG4gICAgfSwgW1xuICAgICAgICByb290UmVmXG4gICAgXSk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgc2V0UmVmLFxuICAgICAgICB2aXNpYmxlLFxuICAgICAgICByZXNldFZpc2libGVcbiAgICBdO1xufVxuZnVuY3Rpb24gb2JzZXJ2ZShlbGVtZW50LCBjYWxsYmFjaywgb3B0aW9ucykge1xuICAgIGNvbnN0IHsgaWQgLCBvYnNlcnZlciAsIGVsZW1lbnRzICB9ID0gY3JlYXRlT2JzZXJ2ZXIob3B0aW9ucyk7XG4gICAgZWxlbWVudHMuc2V0KGVsZW1lbnQsIGNhbGxiYWNrKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpO1xuICAgIHJldHVybiBmdW5jdGlvbiB1bm9ic2VydmUoKSB7XG4gICAgICAgIGVsZW1lbnRzLmRlbGV0ZShlbGVtZW50KTtcbiAgICAgICAgb2JzZXJ2ZXIudW5vYnNlcnZlKGVsZW1lbnQpO1xuICAgICAgICAvLyBEZXN0cm95IG9ic2VydmVyIHdoZW4gdGhlcmUncyBub3RoaW5nIGxlZnQgdG8gd2F0Y2g6XG4gICAgICAgIGlmIChlbGVtZW50cy5zaXplID09PSAwKSB7XG4gICAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICBvYnNlcnZlcnMuZGVsZXRlKGlkKTtcbiAgICAgICAgICAgIGxldCBpbmRleCA9IGlkTGlzdC5maW5kSW5kZXgoKG9iaik9Pm9iai5yb290ID09PSBpZC5yb290ICYmIG9iai5tYXJnaW4gPT09IGlkLm1hcmdpblxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgaWRMaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xufVxuY29uc3Qgb2JzZXJ2ZXJzID0gbmV3IE1hcCgpO1xuY29uc3QgaWRMaXN0ID0gW107XG5mdW5jdGlvbiBjcmVhdGVPYnNlcnZlcihvcHRpb25zKSB7XG4gICAgY29uc3QgaWQgPSB7XG4gICAgICAgIHJvb3Q6IG9wdGlvbnMucm9vdCB8fCBudWxsLFxuICAgICAgICBtYXJnaW46IG9wdGlvbnMucm9vdE1hcmdpbiB8fCAnJ1xuICAgIH07XG4gICAgbGV0IGV4aXN0aW5nID0gaWRMaXN0LmZpbmQoKG9iaik9Pm9iai5yb290ID09PSBpZC5yb290ICYmIG9iai5tYXJnaW4gPT09IGlkLm1hcmdpblxuICAgICk7XG4gICAgbGV0IGluc3RhbmNlO1xuICAgIGlmIChleGlzdGluZykge1xuICAgICAgICBpbnN0YW5jZSA9IG9ic2VydmVycy5nZXQoZXhpc3RpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGluc3RhbmNlID0gb2JzZXJ2ZXJzLmdldChpZCk7XG4gICAgICAgIGlkTGlzdC5wdXNoKGlkKTtcbiAgICB9XG4gICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICB9XG4gICAgY29uc3QgZWxlbWVudHMgPSBuZXcgTWFwKCk7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpPT57XG4gICAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpPT57XG4gICAgICAgICAgICBjb25zdCBjYWxsYmFjayA9IGVsZW1lbnRzLmdldChlbnRyeS50YXJnZXQpO1xuICAgICAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gZW50cnkuaXNJbnRlcnNlY3RpbmcgfHwgZW50cnkuaW50ZXJzZWN0aW9uUmF0aW8gPiAwO1xuICAgICAgICAgICAgaWYgKGNhbGxiYWNrICYmIGlzVmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGlzVmlzaWJsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0sIG9wdGlvbnMpO1xuICAgIG9ic2VydmVycy5zZXQoaWQsIGluc3RhbmNlID0ge1xuICAgICAgICBpZCxcbiAgICAgICAgb2JzZXJ2ZXIsXG4gICAgICAgIGVsZW1lbnRzXG4gICAgfSk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xufVxuXG5pZiAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkge1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD11c2UtaW50ZXJzZWN0aW9uLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsInVzZUludGVyc2VjdGlvbiIsIl9yZWFjdCIsInJlcXVpcmUiLCJfcmVxdWVzdElkbGVDYWxsYmFjayIsImhhc0ludGVyc2VjdGlvbk9ic2VydmVyIiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJyb290UmVmIiwicm9vdE1hcmdpbiIsImRpc2FibGVkIiwiaXNEaXNhYmxlZCIsInVub2JzZXJ2ZSIsInVzZVJlZiIsInVzZVN0YXRlIiwidmlzaWJsZSIsInNldFZpc2libGUiLCJjdXJyZW50Iiwicm9vdCIsInNldFJvb3QiLCJzZXRSZWYiLCJ1c2VDYWxsYmFjayIsImVsIiwidW5kZWZpbmVkIiwidGFnTmFtZSIsIm9ic2VydmUiLCJpc1Zpc2libGUiLCJyZXNldFZpc2libGUiLCJ1c2VFZmZlY3QiLCJpZGxlQ2FsbGJhY2siLCJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwiY2FuY2VsSWRsZUNhbGxiYWNrIiwiZWxlbWVudCIsImNhbGxiYWNrIiwib3B0aW9ucyIsImNyZWF0ZU9ic2VydmVyIiwiaWQiLCJvYnNlcnZlciIsImVsZW1lbnRzIiwic2V0Iiwic2l6ZSIsImRpc2Nvbm5lY3QiLCJvYnNlcnZlcnMiLCJpbmRleCIsImlkTGlzdCIsImZpbmRJbmRleCIsIm9iaiIsIm1hcmdpbiIsInNwbGljZSIsIk1hcCIsImV4aXN0aW5nIiwiZmluZCIsImluc3RhbmNlIiwiZ2V0IiwicHVzaCIsImVudHJpZXMiLCJmb3JFYWNoIiwiZW50cnkiLCJ0YXJnZXQiLCJpc0ludGVyc2VjdGluZyIsImludGVyc2VjdGlvblJhdGlvIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/use-intersection.js\n");
 
/***/ }),
 
/***/ "./node_modules/next/dist/shared/lib/dynamic.js":
/*!******************************************************!*\
  !*** ./node_modules/next/dist/shared/lib/dynamic.js ***!
  \******************************************************/
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nvar _defineProperty = __webpack_require__(/*! ./node_modules/next/dist/compiled/@babel/runtime/helpers/defineProperty */ \"./node_modules/next/dist/compiled/@babel/runtime/helpers/defineProperty.js\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = dynamic;\nexports.noSSR = noSSR;\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _loadable = _interopRequireDefault(__webpack_require__(/*! ./loadable */ \"./node_modules/next/dist/shared/lib/loadable.js\"));\n\nfunction dynamic(dynamicOptions, options) {\n  var loadableFn = _loadable[\"default\"];\n  var loadableOptions = {\n    // A loading component is not required, so we default it\n    loading: function loading(_ref) {\n      var error = _ref.error,\n          isLoading = _ref.isLoading,\n          pastDelay = _ref.pastDelay;\n      if (!pastDelay) return null;\n\n      if (true) {\n        if (isLoading) {\n          return null;\n        }\n\n        if (error) {\n          return /*#__PURE__*/_react[\"default\"].createElement(\"p\", null, error.message, /*#__PURE__*/_react[\"default\"].createElement(\"br\", null), error.stack);\n        }\n      }\n\n      return null;\n    }\n  }; // Support for direct import(), eg: dynamic(import('../hello-world'))\n  // Note that this is only kept for the edge case where someone is passing in a promise as first argument\n  // The react-loadable babel plugin will turn dynamic(import('../hello-world')) into dynamic(() => import('../hello-world'))\n  // To make sure we don't execute the import without rendering first\n\n  if (dynamicOptions instanceof Promise) {\n    loadableOptions.loader = function () {\n      return dynamicOptions;\n    }; // Support for having import as a function, eg: dynamic(() => import('../hello-world'))\n\n  } else if (typeof dynamicOptions === 'function') {\n    loadableOptions.loader = dynamicOptions; // Support for having first argument being options, eg: dynamic({loader: import('../hello-world')})\n  } else if (typeof dynamicOptions === 'object') {\n    loadableOptions = _objectSpread(_objectSpread({}, loadableOptions), dynamicOptions);\n  } // Support for passing options, eg: dynamic(import('../hello-world'), {loading: () => <p>Loading something</p>})\n\n\n  loadableOptions = _objectSpread(_objectSpread({}, loadableOptions), options);\n  var suspenseOptions = loadableOptions; // Error if Fizz rendering is not enabled and `suspense` option is set to true\n\n  if (false) {}\n\n  if (suspenseOptions.suspense) {\n    return loadableFn(suspenseOptions);\n  } // coming from build/babel/plugins/react-loadable-plugin.js\n\n\n  if (loadableOptions.loadableGenerated) {\n    loadableOptions = _objectSpread(_objectSpread({}, loadableOptions), loadableOptions.loadableGenerated);\n    delete loadableOptions.loadableGenerated;\n  } // support for disabling server side rendering, eg: dynamic(import('../hello-world'), {ssr: false})\n\n\n  if (typeof loadableOptions.ssr === 'boolean') {\n    if (!loadableOptions.ssr) {\n      delete loadableOptions.ssr;\n      return noSSR(loadableFn, loadableOptions);\n    }\n\n    delete loadableOptions.ssr;\n  }\n\n  return loadableFn(loadableOptions);\n}\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nvar isServerSide = false;\n\nfunction noSSR(LoadableInitializer, loadableOptions) {\n  // Removing webpack and modules means react-loadable won't try preloading\n  delete loadableOptions.webpack;\n  delete loadableOptions.modules; // This check is necessary to prevent react-loadable from initializing on the server\n\n  if (!isServerSide) {\n    return LoadableInitializer(loadableOptions);\n  }\n\n  var Loading = loadableOptions.loading; // This will only be rendered on the server side\n\n  return function () {\n    return /*#__PURE__*/_react[\"default\"].createElement(Loading, {\n      error: null,\n      isLoading: true,\n      pastDelay: false,\n      timedOut: false\n    });\n  };\n}\n\n;\n    // Wrapped in an IIFE to avoid polluting the global scope\n    ;\n    (function () {\n        var _a, _b;\n        // Legacy CSS implementations will `eval` browser code in a Node.js context\n        // to extract CSS. For backwards compatibility, we need to check we're in a\n        // browser context before continuing.\n        if (typeof self !== 'undefined' &&\n            // AMP / No-JS mode does not inject these helpers:\n            '$RefreshHelpers$' in self) {\n            // @ts-ignore __webpack_module__ is global\n            var currentExports = module.exports;\n            // @ts-ignore __webpack_module__ is global\n            var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n            // This cannot happen in MainTemplate because the exports mismatch between\n            // templating and execution.\n            self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n            // A module can be accepted automatically based on its exports, e.g. when\n            // it is a Refresh Boundary.\n            if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n                // Save the previous exports on update so we can compare the boundary\n                // signatures.\n                module.hot.dispose(function (data) {\n                    data.prevExports = currentExports;\n                });\n                // Unconditionally accept an update to this module, we'll check if it's\n                // still a Refresh Boundary later.\n                // @ts-ignore importMeta is replaced in the loader\n                module.hot.accept();\n                // This field is set when the previous version of this module was a\n                // Refresh Boundary, letting us know we need to check for invalidation or\n                // enqueue an update.\n                if (prevExports !== null) {\n                    // A boundary can become ineligible if its exports are incompatible\n                    // with the previous exports.\n                    //\n                    // For example, if you add/remove/change exports, we'll want to\n                    // re-execute the importing modules, and force those components to\n                    // re-render. Similarly, if you convert a class component to a\n                    // function, we want to invalidate the boundary.\n                    if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n                        module.hot.invalidate();\n                    }\n                    else {\n                        self.$RefreshHelpers$.scheduleUpdate();\n                    }\n                }\n            }\n            else {\n                // Since we just executed the code for the module, it's possible that the\n                // new exports made it ineligible for being a boundary.\n                // We only care about the case when we were _previously_ a boundary,\n                // because we already accepted this update (accidental side effect).\n                var isNoLongerABoundary = prevExports !== null;\n                if (isNoLongerABoundary) {\n                    module.hot.invalidate();\n                }\n            }\n        }\n    })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvZHluYW1pYy5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7Ozs7Ozs7QUFDYkEsOENBQTZDO0FBQ3pDRyxFQUFBQSxLQUFLLEVBQUU7QUFEa0MsQ0FBN0M7QUFHQUQsa0JBQUEsR0FBa0JFLE9BQWxCO0FBQ0FGLGFBQUEsR0FBZ0JHLEtBQWhCOztBQUNBLElBQUlDLE1BQU0sR0FBR0Msc0JBQXNCLENBQUNDLG1CQUFPLENBQUMsNENBQUQsQ0FBUixDQUFuQzs7QUFDQSxJQUFJQyxTQUFTLEdBQUdGLHNCQUFzQixDQUFDQyxtQkFBTyxDQUFDLG1FQUFELENBQVIsQ0FBdEM7O0FBQ0EsU0FBU0osT0FBVCxDQUFpQk0sY0FBakIsRUFBaUNDLE9BQWpDLEVBQTBDO0FBQ3RDLE1BQUlDLFVBQVUsR0FBR0gsU0FBUyxXQUExQjtBQUNBLE1BQUlJLGVBQWUsR0FBRztBQUNsQjtBQUNBQyxJQUFBQSxPQUFPLEVBQUUsdUJBQXNDO0FBQUEsVUFBbkNDLEtBQW1DLFFBQW5DQSxLQUFtQztBQUFBLFVBQTNCQyxTQUEyQixRQUEzQkEsU0FBMkI7QUFBQSxVQUFmQyxTQUFlLFFBQWZBLFNBQWU7QUFDM0MsVUFBSSxDQUFDQSxTQUFMLEVBQWdCLE9BQU8sSUFBUDs7QUFDaEIsZ0JBQTRDO0FBQ3hDLFlBQUlELFNBQUosRUFBZTtBQUNYLGlCQUFPLElBQVA7QUFDSDs7QUFDRCxZQUFJRCxLQUFKLEVBQVc7QUFDUCxpQkFBTyxhQUFjVCxNQUFNLFdBQU4sQ0FBZVksYUFBZixDQUE2QixHQUE3QixFQUFrQyxJQUFsQyxFQUF3Q0gsS0FBSyxDQUFDSSxPQUE5QyxFQUF1RCxhQUFjYixNQUFNLFdBQU4sQ0FBZVksYUFBZixDQUE2QixJQUE3QixFQUFtQyxJQUFuQyxDQUFyRSxFQUErR0gsS0FBSyxDQUFDSyxLQUFySCxDQUFyQjtBQUNIO0FBQ0o7O0FBQ0QsYUFBTyxJQUFQO0FBQ0g7QUFiaUIsR0FBdEIsQ0FGc0MsQ0FpQnRDO0FBQ0E7QUFDQTtBQUNBOztBQUNBLE1BQUlWLGNBQWMsWUFBWVcsT0FBOUIsRUFBdUM7QUFDbkNSLElBQUFBLGVBQWUsQ0FBQ1MsTUFBaEIsR0FBeUI7QUFBQSxhQUFJWixjQUFKO0FBQUEsS0FBekIsQ0FEbUMsQ0FHdkM7O0FBQ0MsR0FKRCxNQUlPLElBQUksT0FBT0EsY0FBUCxLQUEwQixVQUE5QixFQUEwQztBQUM3Q0csSUFBQUEsZUFBZSxDQUFDUyxNQUFoQixHQUF5QlosY0FBekIsQ0FENkMsQ0FFakQ7QUFDQyxHQUhNLE1BR0EsSUFBSSxPQUFPQSxjQUFQLEtBQTBCLFFBQTlCLEVBQXdDO0FBQzNDRyxJQUFBQSxlQUFlLG1DQUNSQSxlQURRLEdBRVJILGNBRlEsQ0FBZjtBQUlILEdBakNxQyxDQWtDdEM7OztBQUNBRyxFQUFBQSxlQUFlLG1DQUNSQSxlQURRLEdBRVJGLE9BRlEsQ0FBZjtBQUlBLE1BQU1ZLGVBQWUsR0FBR1YsZUFBeEIsQ0F2Q3NDLENBd0N0Qzs7QUFDQSxNQUFJLEtBQUosRUFBeUUsRUFFeEU7O0FBQ0QsTUFBSVUsZUFBZSxDQUFDSSxRQUFwQixFQUE4QjtBQUMxQixXQUFPZixVQUFVLENBQUNXLGVBQUQsQ0FBakI7QUFDSCxHQTlDcUMsQ0ErQ3RDOzs7QUFDQSxNQUFJVixlQUFlLENBQUNnQixpQkFBcEIsRUFBdUM7QUFDbkNoQixJQUFBQSxlQUFlLG1DQUNSQSxlQURRLEdBRVJBLGVBQWUsQ0FBQ2dCLGlCQUZSLENBQWY7QUFJQSxXQUFPaEIsZUFBZSxDQUFDZ0IsaUJBQXZCO0FBQ0gsR0F0RHFDLENBdUR0Qzs7O0FBQ0EsTUFBSSxPQUFPaEIsZUFBZSxDQUFDaUIsR0FBdkIsS0FBK0IsU0FBbkMsRUFBOEM7QUFDMUMsUUFBSSxDQUFDakIsZUFBZSxDQUFDaUIsR0FBckIsRUFBMEI7QUFDdEIsYUFBT2pCLGVBQWUsQ0FBQ2lCLEdBQXZCO0FBQ0EsYUFBT3pCLEtBQUssQ0FBQ08sVUFBRCxFQUFhQyxlQUFiLENBQVo7QUFDSDs7QUFDRCxXQUFPQSxlQUFlLENBQUNpQixHQUF2QjtBQUNIOztBQUNELFNBQU9sQixVQUFVLENBQUNDLGVBQUQsQ0FBakI7QUFDSDs7QUFDRCxTQUFTTixzQkFBVCxDQUFnQ3dCLEdBQWhDLEVBQXFDO0FBQ2pDLFNBQU9BLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFYLEdBQXdCRCxHQUF4QixHQUE4QjtBQUNqQyxlQUFTQTtBQUR3QixHQUFyQztBQUdIOztBQUNELElBQU1FLFlBQVksUUFBbEI7O0FBQ0EsU0FBUzVCLEtBQVQsQ0FBZTZCLG1CQUFmLEVBQW9DckIsZUFBcEMsRUFBcUQ7QUFDakQ7QUFDQSxTQUFPQSxlQUFlLENBQUNzQixPQUF2QjtBQUNBLFNBQU90QixlQUFlLENBQUN1QixPQUF2QixDQUhpRCxDQUlqRDs7QUFDQSxNQUFJLENBQUNILFlBQUwsRUFBbUI7QUFDZixXQUFPQyxtQkFBbUIsQ0FBQ3JCLGVBQUQsQ0FBMUI7QUFDSDs7QUFDRCxNQUFNd0IsT0FBTyxHQUFHeEIsZUFBZSxDQUFDQyxPQUFoQyxDQVJpRCxDQVNqRDs7QUFDQSxTQUFPO0FBQUEsV0FBSSxhQUFjUixNQUFNLFdBQU4sQ0FBZVksYUFBZixDQUE2Qm1CLE9BQTdCLEVBQXNDO0FBQ3ZEdEIsTUFBQUEsS0FBSyxFQUFFLElBRGdEO0FBRXZEQyxNQUFBQSxTQUFTLEVBQUUsSUFGNEM7QUFHdkRDLE1BQUFBLFNBQVMsRUFBRSxLQUg0QztBQUl2RHFCLE1BQUFBLFFBQVEsRUFBRTtBQUo2QyxLQUF0QyxDQUFsQjtBQUFBLEdBQVA7QUFPSCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvZHluYW1pYy5qcz9lMjVkIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gZHluYW1pYztcbmV4cG9ydHMubm9TU1IgPSBub1NTUjtcbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG52YXIgX2xvYWRhYmxlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9sb2FkYWJsZVwiKSk7XG5mdW5jdGlvbiBkeW5hbWljKGR5bmFtaWNPcHRpb25zLCBvcHRpb25zKSB7XG4gICAgbGV0IGxvYWRhYmxlRm4gPSBfbG9hZGFibGUuZGVmYXVsdDtcbiAgICBsZXQgbG9hZGFibGVPcHRpb25zID0ge1xuICAgICAgICAvLyBBIGxvYWRpbmcgY29tcG9uZW50IGlzIG5vdCByZXF1aXJlZCwgc28gd2UgZGVmYXVsdCBpdFxuICAgICAgICBsb2FkaW5nOiAoeyBlcnJvciAsIGlzTG9hZGluZyAsIHBhc3REZWxheSAgfSk9PntcbiAgICAgICAgICAgIGlmICghcGFzdERlbGF5KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICAgIGlmIChpc0xvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4oLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicFwiLCBudWxsLCBlcnJvci5tZXNzYWdlLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJiclwiLCBudWxsKSwgZXJyb3Iuc3RhY2spKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgLy8gU3VwcG9ydCBmb3IgZGlyZWN0IGltcG9ydCgpLCBlZzogZHluYW1pYyhpbXBvcnQoJy4uL2hlbGxvLXdvcmxkJykpXG4gICAgLy8gTm90ZSB0aGF0IHRoaXMgaXMgb25seSBrZXB0IGZvciB0aGUgZWRnZSBjYXNlIHdoZXJlIHNvbWVvbmUgaXMgcGFzc2luZyBpbiBhIHByb21pc2UgYXMgZmlyc3QgYXJndW1lbnRcbiAgICAvLyBUaGUgcmVhY3QtbG9hZGFibGUgYmFiZWwgcGx1Z2luIHdpbGwgdHVybiBkeW5hbWljKGltcG9ydCgnLi4vaGVsbG8td29ybGQnKSkgaW50byBkeW5hbWljKCgpID0+IGltcG9ydCgnLi4vaGVsbG8td29ybGQnKSlcbiAgICAvLyBUbyBtYWtlIHN1cmUgd2UgZG9uJ3QgZXhlY3V0ZSB0aGUgaW1wb3J0IHdpdGhvdXQgcmVuZGVyaW5nIGZpcnN0XG4gICAgaWYgKGR5bmFtaWNPcHRpb25zIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICBsb2FkYWJsZU9wdGlvbnMubG9hZGVyID0gKCk9PmR5bmFtaWNPcHRpb25zXG4gICAgICAgIDtcbiAgICAvLyBTdXBwb3J0IGZvciBoYXZpbmcgaW1wb3J0IGFzIGEgZnVuY3Rpb24sIGVnOiBkeW5hbWljKCgpID0+IGltcG9ydCgnLi4vaGVsbG8td29ybGQnKSlcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkeW5hbWljT3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBsb2FkYWJsZU9wdGlvbnMubG9hZGVyID0gZHluYW1pY09wdGlvbnM7XG4gICAgLy8gU3VwcG9ydCBmb3IgaGF2aW5nIGZpcnN0IGFyZ3VtZW50IGJlaW5nIG9wdGlvbnMsIGVnOiBkeW5hbWljKHtsb2FkZXI6IGltcG9ydCgnLi4vaGVsbG8td29ybGQnKX0pXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZHluYW1pY09wdGlvbnMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGxvYWRhYmxlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLmxvYWRhYmxlT3B0aW9ucyxcbiAgICAgICAgICAgIC4uLmR5bmFtaWNPcHRpb25zXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8vIFN1cHBvcnQgZm9yIHBhc3Npbmcgb3B0aW9ucywgZWc6IGR5bmFtaWMoaW1wb3J0KCcuLi9oZWxsby13b3JsZCcpLCB7bG9hZGluZzogKCkgPT4gPHA+TG9hZGluZyBzb21ldGhpbmc8L3A+fSlcbiAgICBsb2FkYWJsZU9wdGlvbnMgPSB7XG4gICAgICAgIC4uLmxvYWRhYmxlT3B0aW9ucyxcbiAgICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG4gICAgY29uc3Qgc3VzcGVuc2VPcHRpb25zID0gbG9hZGFibGVPcHRpb25zO1xuICAgIC8vIEVycm9yIGlmIEZpenogcmVuZGVyaW5nIGlzIG5vdCBlbmFibGVkIGFuZCBgc3VzcGVuc2VgIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZVxuICAgIGlmICghcHJvY2Vzcy5lbnYuX19ORVhUX0NPTkNVUlJFTlRfRkVBVFVSRVMgJiYgc3VzcGVuc2VPcHRpb25zLnN1c3BlbnNlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzdXNwZW5zZSBvcHRpb24gdXNhZ2UgaW4gbmV4dC9keW5hbWljLiBSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2ludmFsaWQtZHluYW1pYy1zdXNwZW5zZWApO1xuICAgIH1cbiAgICBpZiAoc3VzcGVuc2VPcHRpb25zLnN1c3BlbnNlKSB7XG4gICAgICAgIHJldHVybiBsb2FkYWJsZUZuKHN1c3BlbnNlT3B0aW9ucyk7XG4gICAgfVxuICAgIC8vIGNvbWluZyBmcm9tIGJ1aWxkL2JhYmVsL3BsdWdpbnMvcmVhY3QtbG9hZGFibGUtcGx1Z2luLmpzXG4gICAgaWYgKGxvYWRhYmxlT3B0aW9ucy5sb2FkYWJsZUdlbmVyYXRlZCkge1xuICAgICAgICBsb2FkYWJsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgICAuLi5sb2FkYWJsZU9wdGlvbnMsXG4gICAgICAgICAgICAuLi5sb2FkYWJsZU9wdGlvbnMubG9hZGFibGVHZW5lcmF0ZWRcbiAgICAgICAgfTtcbiAgICAgICAgZGVsZXRlIGxvYWRhYmxlT3B0aW9ucy5sb2FkYWJsZUdlbmVyYXRlZDtcbiAgICB9XG4gICAgLy8gc3VwcG9ydCBmb3IgZGlzYWJsaW5nIHNlcnZlciBzaWRlIHJlbmRlcmluZywgZWc6IGR5bmFtaWMoaW1wb3J0KCcuLi9oZWxsby13b3JsZCcpLCB7c3NyOiBmYWxzZX0pXG4gICAgaWYgKHR5cGVvZiBsb2FkYWJsZU9wdGlvbnMuc3NyID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgaWYgKCFsb2FkYWJsZU9wdGlvbnMuc3NyKSB7XG4gICAgICAgICAgICBkZWxldGUgbG9hZGFibGVPcHRpb25zLnNzcjtcbiAgICAgICAgICAgIHJldHVybiBub1NTUihsb2FkYWJsZUZuLCBsb2FkYWJsZU9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGRlbGV0ZSBsb2FkYWJsZU9wdGlvbnMuc3NyO1xuICAgIH1cbiAgICByZXR1cm4gbG9hZGFibGVGbihsb2FkYWJsZU9wdGlvbnMpO1xufVxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDoge1xuICAgICAgICBkZWZhdWx0OiBvYmpcbiAgICB9O1xufVxuY29uc3QgaXNTZXJ2ZXJTaWRlID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCc7XG5mdW5jdGlvbiBub1NTUihMb2FkYWJsZUluaXRpYWxpemVyLCBsb2FkYWJsZU9wdGlvbnMpIHtcbiAgICAvLyBSZW1vdmluZyB3ZWJwYWNrIGFuZCBtb2R1bGVzIG1lYW5zIHJlYWN0LWxvYWRhYmxlIHdvbid0IHRyeSBwcmVsb2FkaW5nXG4gICAgZGVsZXRlIGxvYWRhYmxlT3B0aW9ucy53ZWJwYWNrO1xuICAgIGRlbGV0ZSBsb2FkYWJsZU9wdGlvbnMubW9kdWxlcztcbiAgICAvLyBUaGlzIGNoZWNrIGlzIG5lY2Vzc2FyeSB0byBwcmV2ZW50IHJlYWN0LWxvYWRhYmxlIGZyb20gaW5pdGlhbGl6aW5nIG9uIHRoZSBzZXJ2ZXJcbiAgICBpZiAoIWlzU2VydmVyU2lkZSkge1xuICAgICAgICByZXR1cm4gTG9hZGFibGVJbml0aWFsaXplcihsb2FkYWJsZU9wdGlvbnMpO1xuICAgIH1cbiAgICBjb25zdCBMb2FkaW5nID0gbG9hZGFibGVPcHRpb25zLmxvYWRpbmc7XG4gICAgLy8gVGhpcyB3aWxsIG9ubHkgYmUgcmVuZGVyZWQgb24gdGhlIHNlcnZlciBzaWRlXG4gICAgcmV0dXJuICgpPT4vKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoTG9hZGluZywge1xuICAgICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgICBpc0xvYWRpbmc6IHRydWUsXG4gICAgICAgICAgICBwYXN0RGVsYXk6IGZhbHNlLFxuICAgICAgICAgICAgdGltZWRPdXQ6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1keW5hbWljLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImR5bmFtaWMiLCJub1NTUiIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2xvYWRhYmxlIiwiZHluYW1pY09wdGlvbnMiLCJvcHRpb25zIiwibG9hZGFibGVGbiIsImxvYWRhYmxlT3B0aW9ucyIsImxvYWRpbmciLCJlcnJvciIsImlzTG9hZGluZyIsInBhc3REZWxheSIsImNyZWF0ZUVsZW1lbnQiLCJtZXNzYWdlIiwic3RhY2siLCJQcm9taXNlIiwibG9hZGVyIiwic3VzcGVuc2VPcHRpb25zIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9DT05DVVJSRU5UX0ZFQVRVUkVTIiwic3VzcGVuc2UiLCJFcnJvciIsImxvYWRhYmxlR2VuZXJhdGVkIiwic3NyIiwib2JqIiwiX19lc01vZHVsZSIsImlzU2VydmVyU2lkZSIsIkxvYWRhYmxlSW5pdGlhbGl6ZXIiLCJ3ZWJwYWNrIiwibW9kdWxlcyIsIkxvYWRpbmciLCJ0aW1lZE91dCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/shared/lib/dynamic.js\n");
 
/***/ }),
 
/***/ "./node_modules/next/dist/shared/lib/loadable-context.js":
/*!***************************************************************!*\
  !*** ./node_modules/next/dist/shared/lib/loadable-context.js ***!
  \***************************************************************/
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.LoadableContext = void 0;\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nvar LoadableContext = _react[\"default\"].createContext(null);\n\nexports.LoadableContext = LoadableContext;\n\nif (true) {\n  LoadableContext.displayName = 'LoadableContext';\n}\n\n;\n    // Wrapped in an IIFE to avoid polluting the global scope\n    ;\n    (function () {\n        var _a, _b;\n        // Legacy CSS implementations will `eval` browser code in a Node.js context\n        // to extract CSS. For backwards compatibility, we need to check we're in a\n        // browser context before continuing.\n        if (typeof self !== 'undefined' &&\n            // AMP / No-JS mode does not inject these helpers:\n            '$RefreshHelpers$' in self) {\n            // @ts-ignore __webpack_module__ is global\n            var currentExports = module.exports;\n            // @ts-ignore __webpack_module__ is global\n            var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n            // This cannot happen in MainTemplate because the exports mismatch between\n            // templating and execution.\n            self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n            // A module can be accepted automatically based on its exports, e.g. when\n            // it is a Refresh Boundary.\n            if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n                // Save the previous exports on update so we can compare the boundary\n                // signatures.\n                module.hot.dispose(function (data) {\n                    data.prevExports = currentExports;\n                });\n                // Unconditionally accept an update to this module, we'll check if it's\n                // still a Refresh Boundary later.\n                // @ts-ignore importMeta is replaced in the loader\n                module.hot.accept();\n                // This field is set when the previous version of this module was a\n                // Refresh Boundary, letting us know we need to check for invalidation or\n                // enqueue an update.\n                if (prevExports !== null) {\n                    // A boundary can become ineligible if its exports are incompatible\n                    // with the previous exports.\n                    //\n                    // For example, if you add/remove/change exports, we'll want to\n                    // re-execute the importing modules, and force those components to\n                    // re-render. Similarly, if you convert a class component to a\n                    // function, we want to invalidate the boundary.\n                    if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n                        module.hot.invalidate();\n                    }\n                    else {\n                        self.$RefreshHelpers$.scheduleUpdate();\n                    }\n                }\n            }\n            else {\n                // Since we just executed the code for the module, it's possible that the\n                // new exports made it ineligible for being a boundary.\n                // We only care about the case when we were _previously_ a boundary,\n                // because we already accepted this update (accidental side effect).\n                var isNoLongerABoundary = prevExports !== null;\n                if (isNoLongerABoundary) {\n                    module.hot.invalidate();\n                }\n            }\n        }\n    })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvbG9hZGFibGUtY29udGV4dC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBYTs7QUFDYkEsOENBQTZDO0FBQ3pDRyxFQUFBQSxLQUFLLEVBQUU7QUFEa0MsQ0FBN0M7QUFHQUQsdUJBQUEsR0FBMEIsS0FBSyxDQUEvQjs7QUFDQSxJQUFJRyxNQUFNLEdBQUdDLHNCQUFzQixDQUFDQyxtQkFBTyxDQUFDLDRDQUFELENBQVIsQ0FBbkM7O0FBQ0EsU0FBU0Qsc0JBQVQsQ0FBZ0NFLEdBQWhDLEVBQXFDO0FBQ2pDLFNBQU9BLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFYLEdBQXdCRCxHQUF4QixHQUE4QjtBQUNqQyxlQUFTQTtBQUR3QixHQUFyQztBQUdIOztBQUNELElBQU1KLGVBQWUsR0FBR0MsTUFBTSxXQUFOLENBQWVLLGFBQWYsQ0FBNkIsSUFBN0IsQ0FBeEI7O0FBQ0FSLHVCQUFBLEdBQTBCRSxlQUExQjs7QUFDQSxJQUFJLE1BQXVDO0FBQ3ZDQSxFQUFBQSxlQUFlLENBQUNPLFdBQWhCLEdBQThCLGlCQUE5QjtBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3Qvc2hhcmVkL2xpYi9sb2FkYWJsZS1jb250ZXh0LmpzP2VjMjkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkxvYWRhYmxlQ29udGV4dCA9IHZvaWQgMDtcbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5jb25zdCBMb2FkYWJsZUNvbnRleHQgPSBfcmVhY3QuZGVmYXVsdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuZXhwb3J0cy5Mb2FkYWJsZUNvbnRleHQgPSBMb2FkYWJsZUNvbnRleHQ7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIExvYWRhYmxlQ29udGV4dC5kaXNwbGF5TmFtZSA9ICdMb2FkYWJsZUNvbnRleHQnO1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1sb2FkYWJsZS1jb250ZXh0LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIkxvYWRhYmxlQ29udGV4dCIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwib2JqIiwiX19lc01vZHVsZSIsImNyZWF0ZUNvbnRleHQiLCJkaXNwbGF5TmFtZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/shared/lib/loadable-context.js\n");
 
/***/ }),
 
/***/ "./node_modules/next/dist/shared/lib/loadable.js":
/*!*******************************************************!*\
  !*** ./node_modules/next/dist/shared/lib/loadable.js ***!
  \*******************************************************/
/***/ (function(module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nvar _classCallCheck = __webpack_require__(/*! ./node_modules/next/dist/compiled/@babel/runtime/helpers/classCallCheck */ \"./node_modules/next/dist/compiled/@babel/runtime/helpers/classCallCheck.js\");\n\nvar _createClass = __webpack_require__(/*! ./node_modules/next/dist/compiled/@babel/runtime/helpers/createClass */ \"./node_modules/next/dist/compiled/@babel/runtime/helpers/createClass.js\");\n\nvar _defineProperty = __webpack_require__(/*! ./node_modules/next/dist/compiled/@babel/runtime/helpers/defineProperty */ \"./node_modules/next/dist/compiled/@babel/runtime/helpers/defineProperty.js\");\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _useSubscription = __webpack_require__(/*! next/dist/compiled/use-subscription */ \"./node_modules/next/dist/compiled/use-subscription/index.js\");\n\nvar _loadableContext = __webpack_require__(/*! ./loadable-context */ \"./node_modules/next/dist/shared/lib/loadable-context.js\");\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nvar ALL_INITIALIZERS = [];\nvar READY_INITIALIZERS = [];\nvar initialized = false;\n\nfunction load(loader) {\n  var promise = loader();\n  var state = {\n    loading: true,\n    loaded: null,\n    error: null\n  };\n  state.promise = promise.then(function (loaded) {\n    state.loading = false;\n    state.loaded = loaded;\n    return loaded;\n  })[\"catch\"](function (err) {\n    state.loading = false;\n    state.error = err;\n    throw err;\n  });\n  return state;\n}\n\nfunction resolve(obj) {\n  return obj && obj.__esModule ? obj[\"default\"] : obj;\n}\n\nfunction createLoadableComponent(loadFn, options) {\n  var _s = $RefreshSig$();\n\n  var opts = Object.assign({\n    loader: null,\n    loading: null,\n    delay: 200,\n    timeout: null,\n    webpack: null,\n    modules: null,\n    suspense: false\n  }, options);\n\n  if (opts.suspense) {\n    opts.lazy = _react[\"default\"].lazy(opts.loader);\n  }\n\n  var subscription = null;\n\n  function init() {\n    if (!subscription) {\n      var sub = new LoadableSubscription(loadFn, opts);\n      subscription = {\n        getCurrentValue: sub.getCurrentValue.bind(sub),\n        subscribe: sub.subscribe.bind(sub),\n        retry: sub.retry.bind(sub),\n        promise: sub.promise.bind(sub)\n      };\n    }\n\n    return subscription.promise();\n  } // Server only\n\n\n  if (false) {} // Client only\n\n\n  if (!initialized && true && !opts.suspense) {\n    // require.resolveWeak check is needed for environments that don't have it available like Jest\n    var moduleIds = opts.webpack && \"function\" === 'function' ? opts.webpack() : opts.modules;\n\n    if (moduleIds) {\n      READY_INITIALIZERS.push(function (ids) {\n        var _iterator = _createForOfIteratorHelper(moduleIds),\n            _step;\n\n        try {\n          for (_iterator.s(); !(_step = _iterator.n()).done;) {\n            var moduleId = _step.value;\n\n            if (ids.indexOf(moduleId) !== -1) {\n              return init();\n            }\n          }\n        } catch (err) {\n          _iterator.e(err);\n        } finally {\n          _iterator.f();\n        }\n      });\n    }\n  }\n\n  function LoadableImpl(props, ref) {\n    _s();\n\n    init();\n\n    var context = _react[\"default\"].useContext(_loadableContext.LoadableContext);\n\n    var state = (0, _useSubscription).useSubscription(subscription);\n\n    _react[\"default\"].useImperativeHandle(ref, function () {\n      return {\n        retry: subscription.retry\n      };\n    }, []);\n\n    if (context && Array.isArray(opts.modules)) {\n      opts.modules.forEach(function (moduleName) {\n        context(moduleName);\n      });\n    }\n\n    return _react[\"default\"].useMemo(function () {\n      if (state.loading || state.error) {\n        return _react[\"default\"].createElement(opts.loading, {\n          isLoading: state.loading,\n          pastDelay: state.pastDelay,\n          timedOut: state.timedOut,\n          error: state.error,\n          retry: subscription.retry\n        });\n      } else if (state.loaded) {\n        return _react[\"default\"].createElement(resolve(state.loaded), props);\n      } else {\n        return null;\n      }\n    }, [props, state]);\n  }\n\n  _s(LoadableImpl, \"JtITP7ezdiMOXETwxX2mQsR5YT8=\", true);\n\n  function LazyImpl(props, ref) {\n    return _react[\"default\"].createElement(opts.lazy, _objectSpread(_objectSpread({}, props), {}, {\n      ref: ref\n    }));\n  }\n\n  var LoadableComponent = opts.suspense ? LazyImpl : LoadableImpl;\n\n  LoadableComponent.preload = function () {\n    return !opts.suspense && init();\n  };\n\n  LoadableComponent.displayName = 'LoadableComponent';\n  return _react[\"default\"].forwardRef(LoadableComponent);\n}\n\nvar LoadableSubscription = /*#__PURE__*/function () {\n  function LoadableSubscription(loadFn, opts) {\n    _classCallCheck(this, LoadableSubscription);\n\n    this._loadFn = loadFn;\n    this._opts = opts;\n    this._callbacks = new Set();\n    this._delay = null;\n    this._timeout = null;\n    this.retry();\n  }\n\n  _createClass(LoadableSubscription, [{\n    key: \"promise\",\n    value: function promise() {\n      return this._res.promise;\n    }\n  }, {\n    key: \"retry\",\n    value: function retry() {\n      var _this = this;\n\n      this._clearTimeouts();\n\n      this._res = this._loadFn(this._opts.loader);\n      this._state = {\n        pastDelay: false,\n        timedOut: false\n      };\n      var res = this._res,\n          opts = this._opts;\n\n      if (res.loading) {\n        if (typeof opts.delay === 'number') {\n          if (opts.delay === 0) {\n            this._state.pastDelay = true;\n          } else {\n            this._delay = setTimeout(function () {\n              _this._update({\n                pastDelay: true\n              });\n            }, opts.delay);\n          }\n        }\n\n        if (typeof opts.timeout === 'number') {\n          this._timeout = setTimeout(function () {\n            _this._update({\n              timedOut: true\n            });\n          }, opts.timeout);\n        }\n      }\n\n      this._res.promise.then(function () {\n        _this._update({});\n\n        _this._clearTimeouts();\n      })[\"catch\"](function (_err) {\n        _this._update({});\n\n        _this._clearTimeouts();\n      });\n\n      this._update({});\n    }\n  }, {\n    key: \"_update\",\n    value: function _update(partial) {\n      this._state = _objectSpread(_objectSpread({}, this._state), {}, {\n        error: this._res.error,\n        loaded: this._res.loaded,\n        loading: this._res.loading\n      }, partial);\n\n      this._callbacks.forEach(function (callback) {\n        return callback();\n      });\n    }\n  }, {\n    key: \"_clearTimeouts\",\n    value: function _clearTimeouts() {\n      clearTimeout(this._delay);\n      clearTimeout(this._timeout);\n    }\n  }, {\n    key: \"getCurrentValue\",\n    value: function getCurrentValue() {\n      return this._state;\n    }\n  }, {\n    key: \"subscribe\",\n    value: function subscribe(callback) {\n      var _this2 = this;\n\n      this._callbacks.add(callback);\n\n      return function () {\n        _this2._callbacks[\"delete\"](callback);\n      };\n    }\n  }]);\n\n  return LoadableSubscription;\n}();\n\nfunction Loadable(opts) {\n  return createLoadableComponent(load, opts);\n}\n\n_c = Loadable;\n\nfunction flushInitializers(initializers, ids) {\n  var promises = [];\n\n  while (initializers.length) {\n    var init = initializers.pop();\n    promises.push(init(ids));\n  }\n\n  return Promise.all(promises).then(function () {\n    if (initializers.length) {\n      return flushInitializers(initializers, ids);\n    }\n  });\n}\n\nLoadable.preloadAll = function () {\n  return new Promise(function (resolveInitializers, reject) {\n    flushInitializers(ALL_INITIALIZERS).then(resolveInitializers, reject);\n  });\n};\n\nLoadable.preloadReady = function () {\n  var ids = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  return new Promise(function (resolvePreload) {\n    var res = function res() {\n      initialized = true;\n      return resolvePreload();\n    }; // We always will resolve, errors should be handled within loading UIs.\n\n\n    flushInitializers(READY_INITIALIZERS, ids).then(res, res);\n  });\n};\n\nif (true) {\n  window.__NEXT_PRELOADREADY = Loadable.preloadReady;\n}\n\nvar _default = Loadable;\nexports[\"default\"] = _default;\n\nvar _c;\n\n$RefreshReg$(_c, \"Loadable\");\n\n;\n    // Wrapped in an IIFE to avoid polluting the global scope\n    ;\n    (function () {\n        var _a, _b;\n        // Legacy CSS implementations will `eval` browser code in a Node.js context\n        // to extract CSS. For backwards compatibility, we need to check we're in a\n        // browser context before continuing.\n        if (typeof self !== 'undefined' &&\n            // AMP / No-JS mode does not inject these helpers:\n            '$RefreshHelpers$' in self) {\n            // @ts-ignore __webpack_module__ is global\n            var currentExports = module.exports;\n            // @ts-ignore __webpack_module__ is global\n            var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n            // This cannot happen in MainTemplate because the exports mismatch between\n            // templating and execution.\n            self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n            // A module can be accepted automatically based on its exports, e.g. when\n            // it is a Refresh Boundary.\n            if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n                // Save the previous exports on update so we can compare the boundary\n                // signatures.\n                module.hot.dispose(function (data) {\n                    data.prevExports = currentExports;\n                });\n                // Unconditionally accept an update to this module, we'll check if it's\n                // still a Refresh Boundary later.\n                // @ts-ignore importMeta is replaced in the loader\n                module.hot.accept();\n                // This field is set when the previous version of this module was a\n                // Refresh Boundary, letting us know we need to check for invalidation or\n                // enqueue an update.\n                if (prevExports !== null) {\n                    // A boundary can become ineligible if its exports are incompatible\n                    // with the previous exports.\n                    //\n                    // For example, if you add/remove/change exports, we'll want to\n                    // re-execute the importing modules, and force those components to\n                    // re-render. Similarly, if you convert a class component to a\n                    // function, we want to invalidate the boundary.\n                    if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n                        module.hot.invalidate();\n                    }\n                    else {\n                        self.$RefreshHelpers$.scheduleUpdate();\n                    }\n                }\n            }\n            else {\n                // Since we just executed the code for the module, it's possible that the\n                // new exports made it ineligible for being a boundary.\n                // We only care about the case when we were _previously_ a boundary,\n                // because we already accepted this update (accidental side effect).\n                var isNoLongerABoundary = prevExports !== null;\n                if (isNoLongerABoundary) {\n                    module.hot.invalidate();\n                }\n            }\n        }\n    })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L3NoYXJlZC9saWIvbG9hZGFibGUuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNiQSw4Q0FBNkM7QUFDekNHLEVBQUFBLEtBQUssRUFBRTtBQURrQyxDQUE3QztBQUdBRCxrQkFBQSxHQUFrQixLQUFLLENBQXZCOztBQUNBLElBQUlFLE1BQU0sR0FBR0Msc0JBQXNCLENBQUNDLG1CQUFPLENBQUMsNENBQUQsQ0FBUixDQUFuQzs7QUFDQSxJQUFJQyxnQkFBZ0IsR0FBR0QsbUJBQU8sQ0FBQyx3R0FBRCxDQUE5Qjs7QUFDQSxJQUFJRSxnQkFBZ0IsR0FBR0YsbUJBQU8sQ0FBQyxtRkFBRCxDQUE5Qjs7QUFDQSxTQUFTRCxzQkFBVCxDQUFnQ0ksR0FBaEMsRUFBcUM7QUFDakMsU0FBT0EsR0FBRyxJQUFJQSxHQUFHLENBQUNDLFVBQVgsR0FBd0JELEdBQXhCLEdBQThCO0FBQ2pDLGVBQVNBO0FBRHdCLEdBQXJDO0FBR0g7O0FBQ0QsSUFBTUUsZ0JBQWdCLEdBQUcsRUFBekI7QUFDQSxJQUFNQyxrQkFBa0IsR0FBRyxFQUEzQjtBQUNBLElBQUlDLFdBQVcsR0FBRyxLQUFsQjs7QUFDQSxTQUFTQyxJQUFULENBQWNDLE1BQWQsRUFBc0I7QUFDbEIsTUFBSUMsT0FBTyxHQUFHRCxNQUFNLEVBQXBCO0FBQ0EsTUFBSUUsS0FBSyxHQUFHO0FBQ1JDLElBQUFBLE9BQU8sRUFBRSxJQUREO0FBRVJDLElBQUFBLE1BQU0sRUFBRSxJQUZBO0FBR1JDLElBQUFBLEtBQUssRUFBRTtBQUhDLEdBQVo7QUFLQUgsRUFBQUEsS0FBSyxDQUFDRCxPQUFOLEdBQWdCQSxPQUFPLENBQUNLLElBQVIsQ0FBYSxVQUFDRixNQUFELEVBQVU7QUFDbkNGLElBQUFBLEtBQUssQ0FBQ0MsT0FBTixHQUFnQixLQUFoQjtBQUNBRCxJQUFBQSxLQUFLLENBQUNFLE1BQU4sR0FBZUEsTUFBZjtBQUNBLFdBQU9BLE1BQVA7QUFDSCxHQUplLFdBSVAsVUFBQ0csR0FBRCxFQUFPO0FBQ1pMLElBQUFBLEtBQUssQ0FBQ0MsT0FBTixHQUFnQixLQUFoQjtBQUNBRCxJQUFBQSxLQUFLLENBQUNHLEtBQU4sR0FBY0UsR0FBZDtBQUNBLFVBQU1BLEdBQU47QUFDSCxHQVJlLENBQWhCO0FBU0EsU0FBT0wsS0FBUDtBQUNIOztBQUNELFNBQVNNLE9BQVQsQ0FBaUJkLEdBQWpCLEVBQXNCO0FBQ2xCLFNBQU9BLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxVQUFYLEdBQXdCRCxHQUFHLFdBQTNCLEdBQXNDQSxHQUE3QztBQUNIOztBQUNELFNBQVNlLHVCQUFULENBQWlDQyxNQUFqQyxFQUF5Q0MsT0FBekMsRUFBa0Q7QUFBQTs7QUFDOUMsTUFBSUMsSUFBSSxHQUFHM0IsTUFBTSxDQUFDNEIsTUFBUCxDQUFjO0FBQ3JCYixJQUFBQSxNQUFNLEVBQUUsSUFEYTtBQUVyQkcsSUFBQUEsT0FBTyxFQUFFLElBRlk7QUFHckJXLElBQUFBLEtBQUssRUFBRSxHQUhjO0FBSXJCQyxJQUFBQSxPQUFPLEVBQUUsSUFKWTtBQUtyQkMsSUFBQUEsT0FBTyxFQUFFLElBTFk7QUFNckJDLElBQUFBLE9BQU8sRUFBRSxJQU5ZO0FBT3JCQyxJQUFBQSxRQUFRLEVBQUU7QUFQVyxHQUFkLEVBUVJQLE9BUlEsQ0FBWDs7QUFTQSxNQUFJQyxJQUFJLENBQUNNLFFBQVQsRUFBbUI7QUFDZk4sSUFBQUEsSUFBSSxDQUFDTyxJQUFMLEdBQVk5QixNQUFNLFdBQU4sQ0FBZThCLElBQWYsQ0FBb0JQLElBQUksQ0FBQ1osTUFBekIsQ0FBWjtBQUNIOztBQUNELE1BQUlvQixZQUFZLEdBQUcsSUFBbkI7O0FBQ0EsV0FBU0MsSUFBVCxHQUFnQjtBQUNaLFFBQUksQ0FBQ0QsWUFBTCxFQUFtQjtBQUNmLFVBQU1FLEdBQUcsR0FBRyxJQUFJQyxvQkFBSixDQUF5QmIsTUFBekIsRUFBaUNFLElBQWpDLENBQVo7QUFDQVEsTUFBQUEsWUFBWSxHQUFHO0FBQ1hJLFFBQUFBLGVBQWUsRUFBRUYsR0FBRyxDQUFDRSxlQUFKLENBQW9CQyxJQUFwQixDQUF5QkgsR0FBekIsQ0FETjtBQUVYSSxRQUFBQSxTQUFTLEVBQUVKLEdBQUcsQ0FBQ0ksU0FBSixDQUFjRCxJQUFkLENBQW1CSCxHQUFuQixDQUZBO0FBR1hLLFFBQUFBLEtBQUssRUFBRUwsR0FBRyxDQUFDSyxLQUFKLENBQVVGLElBQVYsQ0FBZUgsR0FBZixDQUhJO0FBSVhyQixRQUFBQSxPQUFPLEVBQUVxQixHQUFHLENBQUNyQixPQUFKLENBQVl3QixJQUFaLENBQWlCSCxHQUFqQjtBQUpFLE9BQWY7QUFNSDs7QUFDRCxXQUFPRixZQUFZLENBQUNuQixPQUFiLEVBQVA7QUFDSCxHQXpCNkMsQ0EwQjlDOzs7QUFDQSxNQUFJLEtBQUosRUFBcUQsRUEzQlAsQ0E4QjlDOzs7QUFDQSxNQUFJLENBQUNILFdBQUQsWUFBaUQsQ0FBQ2MsSUFBSSxDQUFDTSxRQUEzRCxFQUFxRTtBQUNqRTtBQUNBLFFBQU1XLFNBQVMsR0FBR2pCLElBQUksQ0FBQ0ksT0FBTCxJQUFnQixlQUErQixVQUEvQyxHQUE0REosSUFBSSxDQUFDSSxPQUFMLEVBQTVELEdBQTZFSixJQUFJLENBQUNLLE9BQXBHOztBQUNBLFFBQUlZLFNBQUosRUFBZTtBQUNYaEMsTUFBQUEsa0JBQWtCLENBQUMrQixJQUFuQixDQUF3QixVQUFDRyxHQUFELEVBQU87QUFBQSxtREFDSkYsU0FESTtBQUFBOztBQUFBO0FBQzNCLDhEQUFpQztBQUFBLGdCQUF0QkcsUUFBc0I7O0FBQzdCLGdCQUFJRCxHQUFHLENBQUNFLE9BQUosQ0FBWUQsUUFBWixNQUEwQixDQUFDLENBQS9CLEVBQWtDO0FBQzlCLHFCQUFPWCxJQUFJLEVBQVg7QUFDSDtBQUNKO0FBTDBCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNOUIsT0FORDtBQU9IO0FBQ0o7O0FBQ0QsV0FBU2EsWUFBVCxDQUFzQkMsS0FBdEIsRUFBNkJDLEdBQTdCLEVBQWtDO0FBQUE7O0FBQzlCZixJQUFBQSxJQUFJOztBQUNKLFFBQU1nQixPQUFPLEdBQUdoRCxNQUFNLFdBQU4sQ0FBZWlELFVBQWYsQ0FBMEI3QyxnQkFBZ0IsQ0FBQzhDLGVBQTNDLENBQWhCOztBQUNBLFFBQU1yQyxLQUFLLEdBQUcsQ0FBQyxHQUFHVixnQkFBSixFQUFzQmdELGVBQXRCLENBQXNDcEIsWUFBdEMsQ0FBZDs7QUFDQS9CLElBQUFBLE1BQU0sV0FBTixDQUFlb0QsbUJBQWYsQ0FBbUNMLEdBQW5DLEVBQXdDO0FBQUEsYUFBSztBQUNyQ1QsUUFBQUEsS0FBSyxFQUFFUCxZQUFZLENBQUNPO0FBRGlCLE9BQUw7QUFBQSxLQUF4QyxFQUdFLEVBSEY7O0FBSUEsUUFBSVUsT0FBTyxJQUFJSyxLQUFLLENBQUNDLE9BQU4sQ0FBYy9CLElBQUksQ0FBQ0ssT0FBbkIsQ0FBZixFQUE0QztBQUN4Q0wsTUFBQUEsSUFBSSxDQUFDSyxPQUFMLENBQWEyQixPQUFiLENBQXFCLFVBQUNDLFVBQUQsRUFBYztBQUMvQlIsUUFBQUEsT0FBTyxDQUFDUSxVQUFELENBQVA7QUFDSCxPQUZEO0FBR0g7O0FBQ0QsV0FBT3hELE1BQU0sV0FBTixDQUFleUQsT0FBZixDQUF1QixZQUFJO0FBQzlCLFVBQUk1QyxLQUFLLENBQUNDLE9BQU4sSUFBaUJELEtBQUssQ0FBQ0csS0FBM0IsRUFBa0M7QUFDOUIsZUFBT2hCLE1BQU0sV0FBTixDQUFlMEQsYUFBZixDQUE2Qm5DLElBQUksQ0FBQ1QsT0FBbEMsRUFBMkM7QUFDOUM2QyxVQUFBQSxTQUFTLEVBQUU5QyxLQUFLLENBQUNDLE9BRDZCO0FBRTlDOEMsVUFBQUEsU0FBUyxFQUFFL0MsS0FBSyxDQUFDK0MsU0FGNkI7QUFHOUNDLFVBQUFBLFFBQVEsRUFBRWhELEtBQUssQ0FBQ2dELFFBSDhCO0FBSTlDN0MsVUFBQUEsS0FBSyxFQUFFSCxLQUFLLENBQUNHLEtBSmlDO0FBSzlDc0IsVUFBQUEsS0FBSyxFQUFFUCxZQUFZLENBQUNPO0FBTDBCLFNBQTNDLENBQVA7QUFPSCxPQVJELE1BUU8sSUFBSXpCLEtBQUssQ0FBQ0UsTUFBVixFQUFrQjtBQUNyQixlQUFPZixNQUFNLFdBQU4sQ0FBZTBELGFBQWYsQ0FBNkJ2QyxPQUFPLENBQUNOLEtBQUssQ0FBQ0UsTUFBUCxDQUFwQyxFQUFvRCtCLEtBQXBELENBQVA7QUFDSCxPQUZNLE1BRUE7QUFDSCxlQUFPLElBQVA7QUFDSDtBQUNKLEtBZE0sRUFjSixDQUNDQSxLQURELEVBRUNqQyxLQUZELENBZEksQ0FBUDtBQWtCSDs7QUEzRTZDLEtBNENyQ2dDLFlBNUNxQzs7QUE0RTlDLFdBQVNpQixRQUFULENBQWtCaEIsS0FBbEIsRUFBeUJDLEdBQXpCLEVBQThCO0FBQzFCLFdBQU8vQyxNQUFNLFdBQU4sQ0FBZTBELGFBQWYsQ0FBNkJuQyxJQUFJLENBQUNPLElBQWxDLGtDQUNBZ0IsS0FEQTtBQUVIQyxNQUFBQSxHQUFHLEVBQUhBO0FBRkcsT0FBUDtBQUlIOztBQUNELE1BQU1nQixpQkFBaUIsR0FBR3hDLElBQUksQ0FBQ00sUUFBTCxHQUFnQmlDLFFBQWhCLEdBQTJCakIsWUFBckQ7O0FBQ0FrQixFQUFBQSxpQkFBaUIsQ0FBQ0MsT0FBbEIsR0FBNEI7QUFBQSxXQUFJLENBQUN6QyxJQUFJLENBQUNNLFFBQU4sSUFBa0JHLElBQUksRUFBMUI7QUFBQSxHQUE1Qjs7QUFFQStCLEVBQUFBLGlCQUFpQixDQUFDRSxXQUFsQixHQUFnQyxtQkFBaEM7QUFDQSxTQUFPakUsTUFBTSxXQUFOLENBQWVrRSxVQUFmLENBQTBCSCxpQkFBMUIsQ0FBUDtBQUNIOztJQUNLN0Isb0I7QUFDRixnQ0FBWWIsTUFBWixFQUFvQkUsSUFBcEIsRUFBeUI7QUFBQTs7QUFDckIsU0FBSzRDLE9BQUwsR0FBZTlDLE1BQWY7QUFDQSxTQUFLK0MsS0FBTCxHQUFhN0MsSUFBYjtBQUNBLFNBQUs4QyxVQUFMLEdBQWtCLElBQUlDLEdBQUosRUFBbEI7QUFDQSxTQUFLQyxNQUFMLEdBQWMsSUFBZDtBQUNBLFNBQUtDLFFBQUwsR0FBZ0IsSUFBaEI7QUFDQSxTQUFLbEMsS0FBTDtBQUNIOzs7O1dBQ0QsbUJBQVU7QUFDTixhQUFPLEtBQUttQyxJQUFMLENBQVU3RCxPQUFqQjtBQUNIOzs7V0FDRCxpQkFBUTtBQUFBOztBQUNKLFdBQUs4RCxjQUFMOztBQUNBLFdBQUtELElBQUwsR0FBWSxLQUFLTixPQUFMLENBQWEsS0FBS0MsS0FBTCxDQUFXekQsTUFBeEIsQ0FBWjtBQUNBLFdBQUtnRSxNQUFMLEdBQWM7QUFDVmYsUUFBQUEsU0FBUyxFQUFFLEtBREQ7QUFFVkMsUUFBQUEsUUFBUSxFQUFFO0FBRkEsT0FBZDtBQUlBLFVBQWNlLEdBQWQsR0FBcUMsSUFBckMsQ0FBUUgsSUFBUjtBQUFBLFVBQTJCbEQsSUFBM0IsR0FBcUMsSUFBckMsQ0FBb0I2QyxLQUFwQjs7QUFDQSxVQUFJUSxHQUFHLENBQUM5RCxPQUFSLEVBQWlCO0FBQ2IsWUFBSSxPQUFPUyxJQUFJLENBQUNFLEtBQVosS0FBc0IsUUFBMUIsRUFBb0M7QUFDaEMsY0FBSUYsSUFBSSxDQUFDRSxLQUFMLEtBQWUsQ0FBbkIsRUFBc0I7QUFDbEIsaUJBQUtrRCxNQUFMLENBQVlmLFNBQVosR0FBd0IsSUFBeEI7QUFDSCxXQUZELE1BRU87QUFDSCxpQkFBS1csTUFBTCxHQUFjTSxVQUFVLENBQUMsWUFBSTtBQUN6QixtQkFBSSxDQUFDQyxPQUFMLENBQWE7QUFDVGxCLGdCQUFBQSxTQUFTLEVBQUU7QUFERixlQUFiO0FBR0gsYUFKdUIsRUFJckJyQyxJQUFJLENBQUNFLEtBSmdCLENBQXhCO0FBS0g7QUFDSjs7QUFDRCxZQUFJLE9BQU9GLElBQUksQ0FBQ0csT0FBWixLQUF3QixRQUE1QixFQUFzQztBQUNsQyxlQUFLOEMsUUFBTCxHQUFnQkssVUFBVSxDQUFDLFlBQUk7QUFDM0IsaUJBQUksQ0FBQ0MsT0FBTCxDQUFhO0FBQ1RqQixjQUFBQSxRQUFRLEVBQUU7QUFERCxhQUFiO0FBR0gsV0FKeUIsRUFJdkJ0QyxJQUFJLENBQUNHLE9BSmtCLENBQTFCO0FBS0g7QUFDSjs7QUFDRCxXQUFLK0MsSUFBTCxDQUFVN0QsT0FBVixDQUFrQkssSUFBbEIsQ0FBdUIsWUFBSTtBQUN2QixhQUFJLENBQUM2RCxPQUFMLENBQWEsRUFBYjs7QUFDQSxhQUFJLENBQUNKLGNBQUw7QUFDSCxPQUhELFdBR1MsVUFBQ0ssSUFBRCxFQUFRO0FBQ2IsYUFBSSxDQUFDRCxPQUFMLENBQWEsRUFBYjs7QUFDQSxhQUFJLENBQUNKLGNBQUw7QUFDSCxPQU5EOztBQU9BLFdBQUtJLE9BQUwsQ0FBYSxFQUFiO0FBQ0g7OztXQUNELGlCQUFRRSxPQUFSLEVBQWlCO0FBQ2IsV0FBS0wsTUFBTCxtQ0FDTyxLQUFLQSxNQURaO0FBRUkzRCxRQUFBQSxLQUFLLEVBQUUsS0FBS3lELElBQUwsQ0FBVXpELEtBRnJCO0FBR0lELFFBQUFBLE1BQU0sRUFBRSxLQUFLMEQsSUFBTCxDQUFVMUQsTUFIdEI7QUFJSUQsUUFBQUEsT0FBTyxFQUFFLEtBQUsyRCxJQUFMLENBQVUzRDtBQUp2QixTQUtPa0UsT0FMUDs7QUFPQSxXQUFLWCxVQUFMLENBQWdCZCxPQUFoQixDQUF3QixVQUFDMEIsUUFBRDtBQUFBLGVBQVlBLFFBQVEsRUFBcEI7QUFBQSxPQUF4QjtBQUVIOzs7V0FDRCwwQkFBaUI7QUFDYkMsTUFBQUEsWUFBWSxDQUFDLEtBQUtYLE1BQU4sQ0FBWjtBQUNBVyxNQUFBQSxZQUFZLENBQUMsS0FBS1YsUUFBTixDQUFaO0FBQ0g7OztXQUNELDJCQUFrQjtBQUNkLGFBQU8sS0FBS0csTUFBWjtBQUNIOzs7V0FDRCxtQkFBVU0sUUFBVixFQUFvQjtBQUFBOztBQUNoQixXQUFLWixVQUFMLENBQWdCYyxHQUFoQixDQUFvQkYsUUFBcEI7O0FBQ0EsYUFBTyxZQUFJO0FBQ1AsY0FBSSxDQUFDWixVQUFMLFdBQXVCWSxRQUF2QjtBQUNILE9BRkQ7QUFHSDs7Ozs7O0FBRUwsU0FBU0csUUFBVCxDQUFrQjdELElBQWxCLEVBQXdCO0FBQ3BCLFNBQU9ILHVCQUF1QixDQUFDVixJQUFELEVBQU9hLElBQVAsQ0FBOUI7QUFDSDs7S0FGUTZELFE7O0FBR1QsU0FBU0MsaUJBQVQsQ0FBMkJDLFlBQTNCLEVBQXlDNUMsR0FBekMsRUFBOEM7QUFDMUMsTUFBSTZDLFFBQVEsR0FBRyxFQUFmOztBQUNBLFNBQU1ELFlBQVksQ0FBQ0UsTUFBbkIsRUFBMEI7QUFDdEIsUUFBSXhELElBQUksR0FBR3NELFlBQVksQ0FBQ0csR0FBYixFQUFYO0FBQ0FGLElBQUFBLFFBQVEsQ0FBQ2hELElBQVQsQ0FBY1AsSUFBSSxDQUFDVSxHQUFELENBQWxCO0FBQ0g7O0FBQ0QsU0FBT2dELE9BQU8sQ0FBQ0MsR0FBUixDQUFZSixRQUFaLEVBQXNCdEUsSUFBdEIsQ0FBMkIsWUFBSTtBQUNsQyxRQUFJcUUsWUFBWSxDQUFDRSxNQUFqQixFQUF5QjtBQUNyQixhQUFPSCxpQkFBaUIsQ0FBQ0MsWUFBRCxFQUFlNUMsR0FBZixDQUF4QjtBQUNIO0FBQ0osR0FKTSxDQUFQO0FBS0g7O0FBQ0QwQyxRQUFRLENBQUNRLFVBQVQsR0FBc0IsWUFBSTtBQUN0QixTQUFPLElBQUlGLE9BQUosQ0FBWSxVQUFDRyxtQkFBRCxFQUFzQkMsTUFBdEIsRUFBK0I7QUFDOUNULElBQUFBLGlCQUFpQixDQUFDOUUsZ0JBQUQsQ0FBakIsQ0FBb0NVLElBQXBDLENBQXlDNEUsbUJBQXpDLEVBQThEQyxNQUE5RDtBQUNILEdBRk0sQ0FBUDtBQUdILENBSkQ7O0FBS0FWLFFBQVEsQ0FBQ1csWUFBVCxHQUF3QixZQUFZO0FBQUEsTUFBWHJELEdBQVcsdUVBQUwsRUFBSztBQUNoQyxTQUFPLElBQUlnRCxPQUFKLENBQVksVUFBQ00sY0FBRCxFQUFrQjtBQUNqQyxRQUFNcEIsR0FBRyxHQUFHLFNBQU5BLEdBQU0sR0FBSTtBQUNabkUsTUFBQUEsV0FBVyxHQUFHLElBQWQ7QUFDQSxhQUFPdUYsY0FBYyxFQUFyQjtBQUNILEtBSEQsQ0FEaUMsQ0FLakM7OztBQUNBWCxJQUFBQSxpQkFBaUIsQ0FBQzdFLGtCQUFELEVBQXFCa0MsR0FBckIsQ0FBakIsQ0FBMkN6QixJQUEzQyxDQUFnRDJELEdBQWhELEVBQXFEQSxHQUFyRDtBQUNILEdBUE0sQ0FBUDtBQVFILENBVEQ7O0FBVUEsSUFBSSxNQUErQjtBQUMvQnFCLEVBQUFBLE1BQU0sQ0FBQ0MsbUJBQVAsR0FBNkJkLFFBQVEsQ0FBQ1csWUFBdEM7QUFDSDs7QUFDRCxJQUFJSSxRQUFRLEdBQUdmLFFBQWY7QUFDQXRGLGtCQUFBLEdBQWtCcUcsUUFBbEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9zaGFyZWQvbGliL2xvYWRhYmxlLmpzPzUxMDciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwicmVhY3RcIikpO1xudmFyIF91c2VTdWJzY3JpcHRpb24gPSByZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3VzZS1zdWJzY3JpcHRpb25cIik7XG52YXIgX2xvYWRhYmxlQ29udGV4dCA9IHJlcXVpcmUoXCIuL2xvYWRhYmxlLWNvbnRleHRcIik7XG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICAgIHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7XG4gICAgICAgIGRlZmF1bHQ6IG9ialxuICAgIH07XG59XG5jb25zdCBBTExfSU5JVElBTElaRVJTID0gW107XG5jb25zdCBSRUFEWV9JTklUSUFMSVpFUlMgPSBbXTtcbmxldCBpbml0aWFsaXplZCA9IGZhbHNlO1xuZnVuY3Rpb24gbG9hZChsb2FkZXIpIHtcbiAgICBsZXQgcHJvbWlzZSA9IGxvYWRlcigpO1xuICAgIGxldCBzdGF0ZSA9IHtcbiAgICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICAgICAgbG9hZGVkOiBudWxsLFxuICAgICAgICBlcnJvcjogbnVsbFxuICAgIH07XG4gICAgc3RhdGUucHJvbWlzZSA9IHByb21pc2UudGhlbigobG9hZGVkKT0+e1xuICAgICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLmxvYWRlZCA9IGxvYWRlZDtcbiAgICAgICAgcmV0dXJuIGxvYWRlZDtcbiAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICBzdGF0ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLmVycm9yID0gZXJyO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN0YXRlO1xufVxuZnVuY3Rpb24gcmVzb2x2ZShvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqLmRlZmF1bHQgOiBvYmo7XG59XG5mdW5jdGlvbiBjcmVhdGVMb2FkYWJsZUNvbXBvbmVudChsb2FkRm4sIG9wdGlvbnMpIHtcbiAgICBsZXQgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBsb2FkZXI6IG51bGwsXG4gICAgICAgIGxvYWRpbmc6IG51bGwsXG4gICAgICAgIGRlbGF5OiAyMDAsXG4gICAgICAgIHRpbWVvdXQ6IG51bGwsXG4gICAgICAgIHdlYnBhY2s6IG51bGwsXG4gICAgICAgIG1vZHVsZXM6IG51bGwsXG4gICAgICAgIHN1c3BlbnNlOiBmYWxzZVxuICAgIH0sIG9wdGlvbnMpO1xuICAgIGlmIChvcHRzLnN1c3BlbnNlKSB7XG4gICAgICAgIG9wdHMubGF6eSA9IF9yZWFjdC5kZWZhdWx0Lmxhenkob3B0cy5sb2FkZXIpO1xuICAgIH1cbiAgICBsZXQgc3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICBmdW5jdGlvbiBpbml0KCkge1xuICAgICAgICBpZiAoIXN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgY29uc3Qgc3ViID0gbmV3IExvYWRhYmxlU3Vic2NyaXB0aW9uKGxvYWRGbiwgb3B0cyk7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb24gPSB7XG4gICAgICAgICAgICAgICAgZ2V0Q3VycmVudFZhbHVlOiBzdWIuZ2V0Q3VycmVudFZhbHVlLmJpbmQoc3ViKSxcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmU6IHN1Yi5zdWJzY3JpYmUuYmluZChzdWIpLFxuICAgICAgICAgICAgICAgIHJldHJ5OiBzdWIucmV0cnkuYmluZChzdWIpLFxuICAgICAgICAgICAgICAgIHByb21pc2U6IHN1Yi5wcm9taXNlLmJpbmQoc3ViKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3Vic2NyaXB0aW9uLnByb21pc2UoKTtcbiAgICB9XG4gICAgLy8gU2VydmVyIG9ubHlcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgJiYgIW9wdHMuc3VzcGVuc2UpIHtcbiAgICAgICAgQUxMX0lOSVRJQUxJWkVSUy5wdXNoKGluaXQpO1xuICAgIH1cbiAgICAvLyBDbGllbnQgb25seVxuICAgIGlmICghaW5pdGlhbGl6ZWQgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgIW9wdHMuc3VzcGVuc2UpIHtcbiAgICAgICAgLy8gcmVxdWlyZS5yZXNvbHZlV2VhayBjaGVjayBpcyBuZWVkZWQgZm9yIGVudmlyb25tZW50cyB0aGF0IGRvbid0IGhhdmUgaXQgYXZhaWxhYmxlIGxpa2UgSmVzdFxuICAgICAgICBjb25zdCBtb2R1bGVJZHMgPSBvcHRzLndlYnBhY2sgJiYgdHlwZW9mIHJlcXVpcmUucmVzb2x2ZVdlYWsgPT09ICdmdW5jdGlvbicgPyBvcHRzLndlYnBhY2soKSA6IG9wdHMubW9kdWxlcztcbiAgICAgICAgaWYgKG1vZHVsZUlkcykge1xuICAgICAgICAgICAgUkVBRFlfSU5JVElBTElaRVJTLnB1c2goKGlkcyk9PntcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG1vZHVsZUlkIG9mIG1vZHVsZUlkcyl7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZHMuaW5kZXhPZihtb2R1bGVJZCkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5pdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gTG9hZGFibGVJbXBsKHByb3BzLCByZWYpIHtcbiAgICAgICAgaW5pdCgpO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gX3JlYWN0LmRlZmF1bHQudXNlQ29udGV4dChfbG9hZGFibGVDb250ZXh0LkxvYWRhYmxlQ29udGV4dCk7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gKDAsIF91c2VTdWJzY3JpcHRpb24pLnVzZVN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pO1xuICAgICAgICBfcmVhY3QuZGVmYXVsdC51c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCk9Pih7XG4gICAgICAgICAgICAgICAgcmV0cnk6IHN1YnNjcmlwdGlvbi5yZXRyeVxuICAgICAgICAgICAgfSlcbiAgICAgICAgLCBbXSk7XG4gICAgICAgIGlmIChjb250ZXh0ICYmIEFycmF5LmlzQXJyYXkob3B0cy5tb2R1bGVzKSkge1xuICAgICAgICAgICAgb3B0cy5tb2R1bGVzLmZvckVhY2goKG1vZHVsZU5hbWUpPT57XG4gICAgICAgICAgICAgICAgY29udGV4dChtb2R1bGVOYW1lKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfcmVhY3QuZGVmYXVsdC51c2VNZW1vKCgpPT57XG4gICAgICAgICAgICBpZiAoc3RhdGUubG9hZGluZyB8fCBzdGF0ZS5lcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KG9wdHMubG9hZGluZywge1xuICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc6IHN0YXRlLmxvYWRpbmcsXG4gICAgICAgICAgICAgICAgICAgIHBhc3REZWxheTogc3RhdGUucGFzdERlbGF5LFxuICAgICAgICAgICAgICAgICAgICB0aW1lZE91dDogc3RhdGUudGltZWRPdXQsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBzdGF0ZS5lcnJvcixcbiAgICAgICAgICAgICAgICAgICAgcmV0cnk6IHN1YnNjcmlwdGlvbi5yZXRyeVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS5sb2FkZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChyZXNvbHZlKHN0YXRlLmxvYWRlZCksIHByb3BzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIFtcbiAgICAgICAgICAgIHByb3BzLFxuICAgICAgICAgICAgc3RhdGVcbiAgICAgICAgXSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIExhenlJbXBsKHByb3BzLCByZWYpIHtcbiAgICAgICAgcmV0dXJuIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQob3B0cy5sYXp5LCB7XG4gICAgICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgICAgIHJlZlxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgTG9hZGFibGVDb21wb25lbnQgPSBvcHRzLnN1c3BlbnNlID8gTGF6eUltcGwgOiBMb2FkYWJsZUltcGw7XG4gICAgTG9hZGFibGVDb21wb25lbnQucHJlbG9hZCA9ICgpPT4hb3B0cy5zdXNwZW5zZSAmJiBpbml0KClcbiAgICA7XG4gICAgTG9hZGFibGVDb21wb25lbnQuZGlzcGxheU5hbWUgPSAnTG9hZGFibGVDb21wb25lbnQnO1xuICAgIHJldHVybiBfcmVhY3QuZGVmYXVsdC5mb3J3YXJkUmVmKExvYWRhYmxlQ29tcG9uZW50KTtcbn1cbmNsYXNzIExvYWRhYmxlU3Vic2NyaXB0aW9uIHtcbiAgICBjb25zdHJ1Y3Rvcihsb2FkRm4sIG9wdHMpe1xuICAgICAgICB0aGlzLl9sb2FkRm4gPSBsb2FkRm47XG4gICAgICAgIHRoaXMuX29wdHMgPSBvcHRzO1xuICAgICAgICB0aGlzLl9jYWxsYmFja3MgPSBuZXcgU2V0KCk7XG4gICAgICAgIHRoaXMuX2RlbGF5ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fdGltZW91dCA9IG51bGw7XG4gICAgICAgIHRoaXMucmV0cnkoKTtcbiAgICB9XG4gICAgcHJvbWlzZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlcy5wcm9taXNlO1xuICAgIH1cbiAgICByZXRyeSgpIHtcbiAgICAgICAgdGhpcy5fY2xlYXJUaW1lb3V0cygpO1xuICAgICAgICB0aGlzLl9yZXMgPSB0aGlzLl9sb2FkRm4odGhpcy5fb3B0cy5sb2FkZXIpO1xuICAgICAgICB0aGlzLl9zdGF0ZSA9IHtcbiAgICAgICAgICAgIHBhc3REZWxheTogZmFsc2UsXG4gICAgICAgICAgICB0aW1lZE91dDogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgeyBfcmVzOiByZXMgLCBfb3B0czogb3B0cyAgfSA9IHRoaXM7XG4gICAgICAgIGlmIChyZXMubG9hZGluZykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRzLmRlbGF5ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIGlmIChvcHRzLmRlbGF5ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlLnBhc3REZWxheSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGVsYXkgPSBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3REZWxheTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0sIG9wdHMuZGVsYXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0cy50aW1lb3V0ID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lZE91dDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCBvcHRzLnRpbWVvdXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Jlcy5wcm9taXNlLnRoZW4oKCk9PntcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZSh7fSk7XG4gICAgICAgICAgICB0aGlzLl9jbGVhclRpbWVvdXRzKCk7XG4gICAgICAgIH0pLmNhdGNoKChfZXJyKT0+e1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlKHt9KTtcbiAgICAgICAgICAgIHRoaXMuX2NsZWFyVGltZW91dHMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZSh7fSk7XG4gICAgfVxuICAgIF91cGRhdGUocGFydGlhbCkge1xuICAgICAgICB0aGlzLl9zdGF0ZSA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuX3N0YXRlLFxuICAgICAgICAgICAgZXJyb3I6IHRoaXMuX3Jlcy5lcnJvcixcbiAgICAgICAgICAgIGxvYWRlZDogdGhpcy5fcmVzLmxvYWRlZCxcbiAgICAgICAgICAgIGxvYWRpbmc6IHRoaXMuX3Jlcy5sb2FkaW5nLFxuICAgICAgICAgICAgLi4ucGFydGlhbFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9jYWxsYmFja3MuZm9yRWFjaCgoY2FsbGJhY2spPT5jYWxsYmFjaygpXG4gICAgICAgICk7XG4gICAgfVxuICAgIF9jbGVhclRpbWVvdXRzKCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fZGVsYXkpO1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCk7XG4gICAgfVxuICAgIGdldEN1cnJlbnRWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlO1xuICAgIH1cbiAgICBzdWJzY3JpYmUoY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5fY2FsbGJhY2tzLmFkZChjYWxsYmFjayk7XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgdGhpcy5fY2FsbGJhY2tzLmRlbGV0ZShjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgfVxufVxuZnVuY3Rpb24gTG9hZGFibGUob3B0cykge1xuICAgIHJldHVybiBjcmVhdGVMb2FkYWJsZUNvbXBvbmVudChsb2FkLCBvcHRzKTtcbn1cbmZ1bmN0aW9uIGZsdXNoSW5pdGlhbGl6ZXJzKGluaXRpYWxpemVycywgaWRzKSB7XG4gICAgbGV0IHByb21pc2VzID0gW107XG4gICAgd2hpbGUoaW5pdGlhbGl6ZXJzLmxlbmd0aCl7XG4gICAgICAgIGxldCBpbml0ID0gaW5pdGlhbGl6ZXJzLnBvcCgpO1xuICAgICAgICBwcm9taXNlcy5wdXNoKGluaXQoaWRzKSk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcykudGhlbigoKT0+e1xuICAgICAgICBpZiAoaW5pdGlhbGl6ZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZsdXNoSW5pdGlhbGl6ZXJzKGluaXRpYWxpemVycywgaWRzKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuTG9hZGFibGUucHJlbG9hZEFsbCA9ICgpPT57XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlSW5pdGlhbGl6ZXJzLCByZWplY3QpPT57XG4gICAgICAgIGZsdXNoSW5pdGlhbGl6ZXJzKEFMTF9JTklUSUFMSVpFUlMpLnRoZW4ocmVzb2x2ZUluaXRpYWxpemVycywgcmVqZWN0KTtcbiAgICB9KTtcbn07XG5Mb2FkYWJsZS5wcmVsb2FkUmVhZHkgPSAoaWRzID0gW10pPT57XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlUHJlbG9hZCk9PntcbiAgICAgICAgY29uc3QgcmVzID0gKCk9PntcbiAgICAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlUHJlbG9hZCgpO1xuICAgICAgICB9O1xuICAgICAgICAvLyBXZSBhbHdheXMgd2lsbCByZXNvbHZlLCBlcnJvcnMgc2hvdWxkIGJlIGhhbmRsZWQgd2l0aGluIGxvYWRpbmcgVUlzLlxuICAgICAgICBmbHVzaEluaXRpYWxpemVycyhSRUFEWV9JTklUSUFMSVpFUlMsIGlkcykudGhlbihyZXMsIHJlcyk7XG4gICAgfSk7XG59O1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgd2luZG93Ll9fTkVYVF9QUkVMT0FEUkVBRFkgPSBMb2FkYWJsZS5wcmVsb2FkUmVhZHk7XG59XG52YXIgX2RlZmF1bHQgPSBMb2FkYWJsZTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1sb2FkYWJsZS5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl91c2VTdWJzY3JpcHRpb24iLCJfbG9hZGFibGVDb250ZXh0Iiwib2JqIiwiX19lc01vZHVsZSIsIkFMTF9JTklUSUFMSVpFUlMiLCJSRUFEWV9JTklUSUFMSVpFUlMiLCJpbml0aWFsaXplZCIsImxvYWQiLCJsb2FkZXIiLCJwcm9taXNlIiwic3RhdGUiLCJsb2FkaW5nIiwibG9hZGVkIiwiZXJyb3IiLCJ0aGVuIiwiZXJyIiwicmVzb2x2ZSIsImNyZWF0ZUxvYWRhYmxlQ29tcG9uZW50IiwibG9hZEZuIiwib3B0aW9ucyIsIm9wdHMiLCJhc3NpZ24iLCJkZWxheSIsInRpbWVvdXQiLCJ3ZWJwYWNrIiwibW9kdWxlcyIsInN1c3BlbnNlIiwibGF6eSIsInN1YnNjcmlwdGlvbiIsImluaXQiLCJzdWIiLCJMb2FkYWJsZVN1YnNjcmlwdGlvbiIsImdldEN1cnJlbnRWYWx1ZSIsImJpbmQiLCJzdWJzY3JpYmUiLCJyZXRyeSIsInB1c2giLCJtb2R1bGVJZHMiLCJyZXNvbHZlV2VhayIsImlkcyIsIm1vZHVsZUlkIiwiaW5kZXhPZiIsIkxvYWRhYmxlSW1wbCIsInByb3BzIiwicmVmIiwiY29udGV4dCIsInVzZUNvbnRleHQiLCJMb2FkYWJsZUNvbnRleHQiLCJ1c2VTdWJzY3JpcHRpb24iLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9yRWFjaCIsIm1vZHVsZU5hbWUiLCJ1c2VNZW1vIiwiY3JlYXRlRWxlbWVudCIsImlzTG9hZGluZyIsInBhc3REZWxheSIsInRpbWVkT3V0IiwiTGF6eUltcGwiLCJMb2FkYWJsZUNvbXBvbmVudCIsInByZWxvYWQiLCJkaXNwbGF5TmFtZSIsImZvcndhcmRSZWYiLCJfbG9hZEZuIiwiX29wdHMiLCJfY2FsbGJhY2tzIiwiU2V0IiwiX2RlbGF5IiwiX3RpbWVvdXQiLCJfcmVzIiwiX2NsZWFyVGltZW91dHMiLCJfc3RhdGUiLCJyZXMiLCJzZXRUaW1lb3V0IiwiX3VwZGF0ZSIsIl9lcnIiLCJwYXJ0aWFsIiwiY2FsbGJhY2siLCJjbGVhclRpbWVvdXQiLCJhZGQiLCJMb2FkYWJsZSIsImZsdXNoSW5pdGlhbGl6ZXJzIiwiaW5pdGlhbGl6ZXJzIiwicHJvbWlzZXMiLCJsZW5ndGgiLCJwb3AiLCJQcm9taXNlIiwiYWxsIiwicHJlbG9hZEFsbCIsInJlc29sdmVJbml0aWFsaXplcnMiLCJyZWplY3QiLCJwcmVsb2FkUmVhZHkiLCJyZXNvbHZlUHJlbG9hZCIsIndpbmRvdyIsIl9fTkVYVF9QUkVMT0FEUkVBRFkiLCJfZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/shared/lib/loadable.js\n");
 
/***/ }),
 
/***/ "./pages/users.js":
/*!************************!*\
  !*** ./pages/users.js ***!
  \************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/link */ \"./node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_apollo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-apollo */ \"./node_modules/react-apollo/lib/react-apollo.esm.js\");\n/* harmony import */ var _lib_with_apollo__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lib/with-apollo */ \"./lib/with-apollo.js\");\n/* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dynamic */ \"./node_modules/next/dynamic.js\");\n/* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dynamic__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"./node_modules/react/jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__);\nvar _jsxFileName = \"/Users/shiprajoshi/test/next-apollo-demo/client/pages/users.js\",\n    _this = undefined;\n\n\n\n\n\n\n\nvar UsersComponent = next_dynamic__WEBPACK_IMPORTED_MODULE_3___default()(_c = function _c() {\n  return __webpack_require__.e(/*! import() */ \"components_User_js\").then(__webpack_require__.bind(__webpack_require__, /*! ../components/User */ \"./components/User.js\"));\n}, {\n  loading: function loading() {\n    return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(\"p\", {\n      children: \"Loading...\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 8,\n      columnNumber: 19\n    }, _this);\n  },\n  loadableGenerated: {\n    modules: [\"users.js -> \" + '../components/User']\n  }\n});\n_c2 = UsersComponent;\n\nvar User = function User() {\n  return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(react_apollo__WEBPACK_IMPORTED_MODULE_5__.ApolloProvider, {\n    client: _lib_with_apollo__WEBPACK_IMPORTED_MODULE_2__.apolloClient,\n    children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(\"div\", {\n      children: [\"User Page\", /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(\"br\", {}, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 15,\n        columnNumber: 9\n      }, _this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(\"br\", {}, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 15,\n        columnNumber: 14\n      }, _this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(UsersComponent, {}, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 16,\n        columnNumber: 9\n      }, _this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(\"br\", {}, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 17,\n        columnNumber: 9\n      }, _this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_0___default()), {\n        href: \"/\",\n        children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(\"a\", {\n          children: \"Go Back\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 18,\n          columnNumber: 24\n        }, _this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 18,\n        columnNumber: 9\n      }, _this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 13,\n      columnNumber: 6\n    }, _this)\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 12,\n    columnNumber: 1\n  }, _this);\n};\n\n_c3 = User;\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_lib_with_apollo__WEBPACK_IMPORTED_MODULE_2__[\"default\"])()(User));\n\nvar _c, _c2, _c3;\n\n$RefreshReg$(_c, \"UsersComponent$dynamic\");\n$RefreshReg$(_c2, \"UsersComponent\");\n$RefreshReg$(_c3, \"User\");\n\n;\n    // Wrapped in an IIFE to avoid polluting the global scope\n    ;\n    (function () {\n        var _a, _b;\n        // Legacy CSS implementations will `eval` browser code in a Node.js context\n        // to extract CSS. For backwards compatibility, we need to check we're in a\n        // browser context before continuing.\n        if (typeof self !== 'undefined' &&\n            // AMP / No-JS mode does not inject these helpers:\n            '$RefreshHelpers$' in self) {\n            // @ts-ignore __webpack_module__ is global\n            var currentExports = module.exports;\n            // @ts-ignore __webpack_module__ is global\n            var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\n            // This cannot happen in MainTemplate because the exports mismatch between\n            // templating and execution.\n            self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n            // A module can be accepted automatically based on its exports, e.g. when\n            // it is a Refresh Boundary.\n            if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n                // Save the previous exports on update so we can compare the boundary\n                // signatures.\n                module.hot.dispose(function (data) {\n                    data.prevExports = currentExports;\n                });\n                // Unconditionally accept an update to this module, we'll check if it's\n                // still a Refresh Boundary later.\n                // @ts-ignore importMeta is replaced in the loader\n                module.hot.accept();\n                // This field is set when the previous version of this module was a\n                // Refresh Boundary, letting us know we need to check for invalidation or\n                // enqueue an update.\n                if (prevExports !== null) {\n                    // A boundary can become ineligible if its exports are incompatible\n                    // with the previous exports.\n                    //\n                    // For example, if you add/remove/change exports, we'll want to\n                    // re-execute the importing modules, and force those components to\n                    // re-render. Similarly, if you convert a class component to a\n                    // function, we want to invalidate the boundary.\n                    if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\n                        module.hot.invalidate();\n                    }\n                    else {\n                        self.$RefreshHelpers$.scheduleUpdate();\n                    }\n                }\n            }\n            else {\n                // Since we just executed the code for the module, it's possible that the\n                // new exports made it ineligible for being a boundary.\n                // We only care about the case when we were _previously_ a boundary,\n                // because we already accepted this update (accidental side effect).\n                var isNoLongerABoundary = prevExports !== null;\n                if (isNoLongerABoundary) {\n                    module.hot.invalidate();\n                }\n            }\n        }\n    })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWdlcy91c2Vycy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBTU0sY0FBYyxHQUFHRCxtREFBTyxNQUFDO0FBQUEsU0FBSSxpS0FBSjtBQUFBLENBQUQsRUFBa0M7QUFDN0RFLEVBQUFBLE9BQU8sRUFBRTtBQUFBLHdCQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBQU47QUFBQSxHQURvRDtBQUFBO0FBQUEsK0JBQXRCLG9CQUFzQjtBQUFBO0FBQUEsQ0FBbEMsQ0FBOUI7TUFBTUQ7O0FBSU4sSUFBTUUsSUFBSSxHQUFDLFNBQUxBLElBQUs7QUFBQSxzQkFDWCw4REFBQyx3REFBRDtBQUFnQixVQUFNLEVBQUVKLDBEQUF4QjtBQUFBLDJCQUNLO0FBQUEsMkNBRUc7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUZILGVBRVE7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUZSLGVBR0csOERBQUMsY0FBRDtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBSEgsZUFJRztBQUFBO0FBQUE7QUFBQTtBQUFBLGVBSkgsZUFLRyw4REFBQyxrREFBRDtBQUFNLFlBQUksRUFBQyxHQUFYO0FBQUEsK0JBQWU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBZjtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBTEg7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBREw7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQURXO0FBQUEsQ0FBWDs7TUFBTUk7QUFXTiwrREFBZUwsNERBQVUsR0FBR0ssSUFBSCxDQUF6QiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9wYWdlcy91c2Vycy5qcz8wMDYwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMaW5rIGZyb20gJ25leHQvbGluaydcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IEFwb2xsb1Byb3ZpZGVyIH0gZnJvbSAncmVhY3QtYXBvbGxvJ1xuaW1wb3J0IHdpdGhBcG9sbG8sIHsgYXBvbGxvQ2xpZW50IH0gZnJvbSAnLi4vbGliL3dpdGgtYXBvbGxvJ1xuaW1wb3J0IGR5bmFtaWMgZnJvbSBcIm5leHQvZHluYW1pY1wiO1xuXG5jb25zdCBVc2Vyc0NvbXBvbmVudCA9IGR5bmFtaWMoKCk9PmltcG9ydCgnLi4vY29tcG9uZW50cy9Vc2VyJykse1xuICAgbG9hZGluZzogKCkgPT4gPHA+TG9hZGluZy4uLjwvcD5cbn0pXG5cbmNvbnN0IFVzZXI9KCkgPT4gKFxuPEFwb2xsb1Byb3ZpZGVyIGNsaWVudD17YXBvbGxvQ2xpZW50fT5cbiAgICAgPGRpdj5cbiAgICAgICAgVXNlciBQYWdlXG4gICAgICAgIDxici8+PGJyLz5cbiAgICAgICAgPFVzZXJzQ29tcG9uZW50Lz5cbiAgICAgICAgPGJyPjwvYnI+XG4gICAgICAgIDxMaW5rIGhyZWY9XCIvXCI+PGE+R28gQmFjazwvYT48L0xpbms+XG4gICAgIDwvZGl2PlxuPC9BcG9sbG9Qcm92aWRlcj5cbilcbmV4cG9ydCBkZWZhdWx0IHdpdGhBcG9sbG8oKShVc2VyKVxuIl0sIm5hbWVzIjpbIkxpbmsiLCJSZWFjdCIsIkFwb2xsb1Byb3ZpZGVyIiwid2l0aEFwb2xsbyIsImFwb2xsb0NsaWVudCIsImR5bmFtaWMiLCJVc2Vyc0NvbXBvbmVudCIsImxvYWRpbmciLCJVc2VyIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./pages/users.js\n");
 
/***/ }),
 
/***/ "./node_modules/next/dist/compiled/process/browser.js":
/*!************************************************************!*\
  !*** ./node_modules/next/dist/compiled/process/browser.js ***!
  \************************************************************/
/***/ (function(module) {
 
eval("var __dirname = \"/\";\n(function(){var e={162:function(e){var t=e.exports={};var r;var n;function defaultSetTimout(){throw new Error(\"setTimeout has not been defined\")}function defaultClearTimeout(){throw new Error(\"clearTimeout has not been defined\")}(function(){try{if(typeof setTimeout===\"function\"){r=setTimeout}else{r=defaultSetTimout}}catch(e){r=defaultSetTimout}try{if(typeof clearTimeout===\"function\"){n=clearTimeout}else{n=defaultClearTimeout}}catch(e){n=defaultClearTimeout}})();function runTimeout(e){if(r===setTimeout){return setTimeout(e,0)}if((r===defaultSetTimout||!r)&&setTimeout){r=setTimeout;return setTimeout(e,0)}try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}function runClearTimeout(e){if(n===clearTimeout){return clearTimeout(e)}if((n===defaultClearTimeout||!n)&&clearTimeout){n=clearTimeout;return clearTimeout(e)}try{return n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}var i=[];var o=false;var u;var a=-1;function cleanUpNextTick(){if(!o||!u){return}o=false;if(u.length){i=u.concat(i)}else{a=-1}if(i.length){drainQueue()}}function drainQueue(){if(o){return}var e=runTimeout(cleanUpNextTick);o=true;var t=i.length;while(t){u=i;i=[];while(++a<t){if(u){u[a].run()}}a=-1;t=i.length}u=null;o=false;runClearTimeout(e)}t.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1){for(var r=1;r<arguments.length;r++){t[r-1]=arguments[r]}}i.push(new Item(e,t));if(i.length===1&&!o){runTimeout(drainQueue)}};function Item(e,t){this.fun=e;this.array=t}Item.prototype.run=function(){this.fun.apply(null,this.array)};t.title=\"browser\";t.browser=true;t.env={};t.argv=[];t.version=\"\";t.versions={};function noop(){}t.on=noop;t.addListener=noop;t.once=noop;t.off=noop;t.removeListener=noop;t.removeAllListeners=noop;t.emit=noop;t.prependListener=noop;t.prependOnceListener=noop;t.listeners=function(e){return[]};t.binding=function(e){throw new Error(\"process.binding is not supported\")};t.cwd=function(){return\"/\"};t.chdir=function(e){throw new Error(\"process.chdir is not supported\")};t.umask=function(){return 0}}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var i=t[r]={exports:{}};var o=true;try{e[r](i,i.exports,__nccwpck_require__);o=false}finally{if(o)delete t[r]}return i.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var r=__nccwpck_require__(162);module.exports=r})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3Byb2Nlc3MvYnJvd3Nlci5qcy5qcyIsIm1hcHBpbmdzIjoiO0FBQUEsWUFBWSxPQUFPLGdCQUFnQixtQkFBbUIsTUFBTSxNQUFNLDRCQUE0QixtREFBbUQsK0JBQStCLHFEQUFxRCxZQUFZLElBQUksbUNBQW1DLGFBQWEsS0FBSyxvQkFBb0IsU0FBUyxtQkFBbUIsSUFBSSxxQ0FBcUMsZUFBZSxLQUFLLHVCQUF1QixTQUFTLHVCQUF1QixJQUFJLHVCQUF1QixtQkFBbUIsdUJBQXVCLDJDQUEyQyxhQUFhLHVCQUF1QixJQUFJLGNBQWMsU0FBUyxJQUFJLHdCQUF3QixTQUFTLDBCQUEwQiw0QkFBNEIscUJBQXFCLHVCQUF1QixnREFBZ0QsZUFBZSx1QkFBdUIsSUFBSSxZQUFZLFNBQVMsSUFBSSxzQkFBc0IsU0FBUyx3QkFBd0IsU0FBUyxZQUFZLE1BQU0sU0FBUywyQkFBMkIsV0FBVyxPQUFPLFFBQVEsYUFBYSxjQUFjLEtBQUssS0FBSyxhQUFhLGNBQWMsc0JBQXNCLE1BQU0sT0FBTyxrQ0FBa0MsT0FBTyxlQUFlLFNBQVMsSUFBSSxLQUFLLGFBQWEsTUFBTSxZQUFZLEtBQUssV0FBVyxPQUFPLFFBQVEsbUJBQW1CLHVCQUF1QixvQ0FBb0MsdUJBQXVCLFlBQVksbUJBQW1CLEtBQUsscUJBQXFCLHNCQUFzQixxQkFBcUIseUJBQXlCLG1CQUFtQixXQUFXLGFBQWEsOEJBQThCLGlDQUFpQyxrQkFBa0IsZUFBZSxTQUFTLFVBQVUsYUFBYSxjQUFjLGlCQUFpQixVQUFVLG1CQUFtQixZQUFZLFdBQVcsc0JBQXNCLDBCQUEwQixZQUFZLHVCQUF1QiwyQkFBMkIsd0JBQXdCLFVBQVUsc0JBQXNCLHFEQUFxRCxpQkFBaUIsV0FBVyxvQkFBb0IsbURBQW1ELG1CQUFtQixZQUFZLFNBQVMsZ0NBQWdDLFdBQVcsa0JBQWtCLGlCQUFpQixZQUFZLFlBQVksV0FBVyxJQUFJLHNDQUFzQyxRQUFRLFFBQVEsaUJBQWlCLGlCQUFpQixtRUFBbUUsU0FBUyxLQUFLLCtCQUErQixpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9wcm9jZXNzL2Jyb3dzZXIuanM/MWIxZCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKXt2YXIgZT17MTYyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZXhwb3J0cz17fTt2YXIgcjt2YXIgbjtmdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCl7dGhyb3cgbmV3IEVycm9yKFwic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZFwiKX1mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0KCl7dGhyb3cgbmV3IEVycm9yKFwiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkXCIpfShmdW5jdGlvbigpe3RyeXtpZih0eXBlb2Ygc2V0VGltZW91dD09PVwiZnVuY3Rpb25cIil7cj1zZXRUaW1lb3V0fWVsc2V7cj1kZWZhdWx0U2V0VGltb3V0fX1jYXRjaChlKXtyPWRlZmF1bHRTZXRUaW1vdXR9dHJ5e2lmKHR5cGVvZiBjbGVhclRpbWVvdXQ9PT1cImZ1bmN0aW9uXCIpe249Y2xlYXJUaW1lb3V0fWVsc2V7bj1kZWZhdWx0Q2xlYXJUaW1lb3V0fX1jYXRjaChlKXtuPWRlZmF1bHRDbGVhclRpbWVvdXR9fSkoKTtmdW5jdGlvbiBydW5UaW1lb3V0KGUpe2lmKHI9PT1zZXRUaW1lb3V0KXtyZXR1cm4gc2V0VGltZW91dChlLDApfWlmKChyPT09ZGVmYXVsdFNldFRpbW91dHx8IXIpJiZzZXRUaW1lb3V0KXtyPXNldFRpbWVvdXQ7cmV0dXJuIHNldFRpbWVvdXQoZSwwKX10cnl7cmV0dXJuIHIoZSwwKX1jYXRjaCh0KXt0cnl7cmV0dXJuIHIuY2FsbChudWxsLGUsMCl9Y2F0Y2godCl7cmV0dXJuIHIuY2FsbCh0aGlzLGUsMCl9fX1mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQoZSl7aWYobj09PWNsZWFyVGltZW91dCl7cmV0dXJuIGNsZWFyVGltZW91dChlKX1pZigobj09PWRlZmF1bHRDbGVhclRpbWVvdXR8fCFuKSYmY2xlYXJUaW1lb3V0KXtuPWNsZWFyVGltZW91dDtyZXR1cm4gY2xlYXJUaW1lb3V0KGUpfXRyeXtyZXR1cm4gbihlKX1jYXRjaCh0KXt0cnl7cmV0dXJuIG4uY2FsbChudWxsLGUpfWNhdGNoKHQpe3JldHVybiBuLmNhbGwodGhpcyxlKX19fXZhciBpPVtdO3ZhciBvPWZhbHNlO3ZhciB1O3ZhciBhPS0xO2Z1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpe2lmKCFvfHwhdSl7cmV0dXJufW89ZmFsc2U7aWYodS5sZW5ndGgpe2k9dS5jb25jYXQoaSl9ZWxzZXthPS0xfWlmKGkubGVuZ3RoKXtkcmFpblF1ZXVlKCl9fWZ1bmN0aW9uIGRyYWluUXVldWUoKXtpZihvKXtyZXR1cm59dmFyIGU9cnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO289dHJ1ZTt2YXIgdD1pLmxlbmd0aDt3aGlsZSh0KXt1PWk7aT1bXTt3aGlsZSgrK2E8dCl7aWYodSl7dVthXS5ydW4oKX19YT0tMTt0PWkubGVuZ3RofXU9bnVsbDtvPWZhbHNlO3J1bkNsZWFyVGltZW91dChlKX10Lm5leHRUaWNrPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSl7Zm9yKHZhciByPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl7dFtyLTFdPWFyZ3VtZW50c1tyXX19aS5wdXNoKG5ldyBJdGVtKGUsdCkpO2lmKGkubGVuZ3RoPT09MSYmIW8pe3J1blRpbWVvdXQoZHJhaW5RdWV1ZSl9fTtmdW5jdGlvbiBJdGVtKGUsdCl7dGhpcy5mdW49ZTt0aGlzLmFycmF5PXR9SXRlbS5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX07dC50aXRsZT1cImJyb3dzZXJcIjt0LmJyb3dzZXI9dHJ1ZTt0LmVudj17fTt0LmFyZ3Y9W107dC52ZXJzaW9uPVwiXCI7dC52ZXJzaW9ucz17fTtmdW5jdGlvbiBub29wKCl7fXQub249bm9vcDt0LmFkZExpc3RlbmVyPW5vb3A7dC5vbmNlPW5vb3A7dC5vZmY9bm9vcDt0LnJlbW92ZUxpc3RlbmVyPW5vb3A7dC5yZW1vdmVBbGxMaXN0ZW5lcnM9bm9vcDt0LmVtaXQ9bm9vcDt0LnByZXBlbmRMaXN0ZW5lcj1ub29wO3QucHJlcGVuZE9uY2VMaXN0ZW5lcj1ub29wO3QubGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybltdfTt0LmJpbmRpbmc9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKFwicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWRcIil9O3QuY3dkPWZ1bmN0aW9uKCl7cmV0dXJuXCIvXCJ9O3QuY2hkaXI9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKFwicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkXCIpfTt0LnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fX07dmFyIHQ9e307ZnVuY3Rpb24gX19uY2N3cGNrX3JlcXVpcmVfXyhyKXt2YXIgbj10W3JdO2lmKG4hPT11bmRlZmluZWQpe3JldHVybiBuLmV4cG9ydHN9dmFyIGk9dFtyXT17ZXhwb3J0czp7fX07dmFyIG89dHJ1ZTt0cnl7ZVtyXShpLGkuZXhwb3J0cyxfX25jY3dwY2tfcmVxdWlyZV9fKTtvPWZhbHNlfWZpbmFsbHl7aWYobylkZWxldGUgdFtyXX1yZXR1cm4gaS5leHBvcnRzfWlmKHR5cGVvZiBfX25jY3dwY2tfcmVxdWlyZV9fIT09XCJ1bmRlZmluZWRcIilfX25jY3dwY2tfcmVxdWlyZV9fLmFiPV9fZGlybmFtZStcIi9cIjt2YXIgcj1fX25jY3dwY2tfcmVxdWlyZV9fKDE2Mik7bW9kdWxlLmV4cG9ydHM9cn0pKCk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/compiled/process/browser.js\n");
 
/***/ }),
 
/***/ "./node_modules/next/dist/compiled/use-subscription/index.js":
/*!*******************************************************************!*\
  !*** ./node_modules/next/dist/compiled/use-subscription/index.js ***!
  \*******************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
 
eval("var __dirname = \"/\";\n(()=>{\"use strict\";var e={800:e=>{\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\nvar r=Object.getOwnPropertySymbols;var t=Object.prototype.hasOwnProperty;var u=Object.prototype.propertyIsEnumerable;function toObject(e){if(e===null||e===undefined){throw new TypeError(\"Object.assign cannot be called with null or undefined\")}return Object(e)}function shouldUseNative(){try{if(!Object.assign){return false}var e=new String(\"abc\");e[5]=\"de\";if(Object.getOwnPropertyNames(e)[0]===\"5\"){return false}var r={};for(var t=0;t<10;t++){r[\"_\"+String.fromCharCode(t)]=t}var u=Object.getOwnPropertyNames(r).map((function(e){return r[e]}));if(u.join(\"\")!==\"0123456789\"){return false}var n={};\"abcdefghijklmnopqrst\".split(\"\").forEach((function(e){n[e]=e}));if(Object.keys(Object.assign({},n)).join(\"\")!==\"abcdefghijklmnopqrst\"){return false}return true}catch(e){return false}}e.exports=shouldUseNative()?Object.assign:function(e,n){var a;var i=toObject(e);var s;for(var c=1;c<arguments.length;c++){a=Object(arguments[c]);for(var o in a){if(t.call(a,o)){i[o]=a[o]}}if(r){s=r(a);for(var f=0;f<s.length;f++){if(u.call(a,s[f])){i[s[f]]=a[s[f]]}}}}return i}},569:(e,r,t)=>{\n/** @license React vundefined\n * use-subscription.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nif(true){(function(){\"use strict\";var e=t(800);var u=t(522);function useSubscription(r){var t=r.getCurrentValue,n=r.subscribe;var a=u.useState((function(){return{getCurrentValue:t,subscribe:n,value:t()}})),i=a[0],s=a[1];var c=i.value;if(i.getCurrentValue!==t||i.subscribe!==n){c=t();s({getCurrentValue:t,subscribe:n,value:c})}u.useDebugValue(c);u.useEffect((function(){var r=false;var checkForUpdates=function(){if(r){return}var u=t();s((function(r){if(r.getCurrentValue!==t||r.subscribe!==n){return r}if(r.value===u){return r}return e({},r,{value:u})}))};var u=n(checkForUpdates);checkForUpdates();return function(){r=true;u()}}),[t,n]);return c}r.useSubscription=useSubscription})()}},403:(e,r,t)=>{\n/** @license React vundefined\n * use-subscription.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar u=t(800),n=t(522);r.useSubscription=function(e){var r=e.getCurrentValue,t=e.subscribe,a=n.useState((function(){return{getCurrentValue:r,subscribe:t,value:r()}}));e=a[0];var i=a[1];a=e.value;if(e.getCurrentValue!==r||e.subscribe!==t)a=r(),i({getCurrentValue:r,subscribe:t,value:a});n.useDebugValue(a);n.useEffect((function(){function b(){if(!e){var n=r();i((function(e){return e.getCurrentValue!==r||e.subscribe!==t||e.value===n?e:u({},e,{value:n})}))}}var e=!1,n=t(b);b();return function(){e=!0;n()}}),[r,t]);return a}},138:(e,r,t)=>{if(false){}else{e.exports=t(569)}},522:e=>{e.exports=__webpack_require__(/*! react */ \"./node_modules/react/index.js\")}};var r={};function __nccwpck_require__(t){var u=r[t];if(u!==undefined){return u.exports}var n=r[t]={exports:{}};var a=true;try{e[t](n,n.exports,__nccwpck_require__);a=false}finally{if(a)delete r[t]}return n.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var t=__nccwpck_require__(138);module.exports=t})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3VzZS1zdWJzY3JpcHRpb24vaW5kZXguanMuanMiLCJtYXBwaW5ncyI6IjtBQUFBLE1BQU0sYUFBYSxPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsc0NBQXNDLDRDQUE0QyxxQkFBcUIsNEJBQTRCLDZFQUE2RSxpQkFBaUIsMkJBQTJCLElBQUksbUJBQW1CLGFBQWEsd0JBQXdCLFVBQVUsMkNBQTJDLGFBQWEsU0FBUyxZQUFZLEtBQUssS0FBSyxnQ0FBZ0MscURBQXFELFlBQVksR0FBRyw4QkFBOEIsYUFBYSxTQUFTLHNEQUFzRCxPQUFPLEdBQUcsK0JBQStCLHdDQUF3QyxhQUFhLFlBQVksU0FBUyxjQUFjLHdEQUF3RCxNQUFNLGtCQUFrQixNQUFNLFlBQVksbUJBQW1CLEtBQUssdUJBQXVCLGdCQUFnQixnQkFBZ0IsV0FBVyxNQUFNLE9BQU8sWUFBWSxXQUFXLEtBQUssbUJBQW1CLG1CQUFtQixVQUFVO0FBQ2hpQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyxJQUFtQyxFQUFFLFlBQVksYUFBYSxhQUFhLGFBQWEsNEJBQTRCLHNDQUFzQyw2QkFBNkIsT0FBTyx5Q0FBeUMsaUJBQWlCLGNBQWMsMkNBQTJDLE1BQU0sR0FBRyxzQ0FBc0MsRUFBRSxtQkFBbUIsd0JBQXdCLFlBQVksK0JBQStCLE1BQU0sT0FBTyxVQUFVLGVBQWUsMkNBQTJDLFNBQVMsZ0JBQWdCLFNBQVMsV0FBVyxJQUFJLFFBQVEsRUFBRSxJQUFJLHlCQUF5QixrQkFBa0Isa0JBQWtCLE9BQU8sS0FBSyxTQUFTLFNBQVMsa0NBQWtDLEtBQUs7QUFDN3NCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsOEJBQThCLCtEQUErRCxPQUFPLHlDQUF5QyxHQUFHLE9BQU8sV0FBVyxVQUFVLG1EQUFtRCxzQ0FBc0MsRUFBRSxtQkFBbUIsd0JBQXdCLGFBQWEsT0FBTyxVQUFVLGVBQWUsaUVBQWlFLElBQUksUUFBUSxFQUFFLElBQUksZ0JBQWdCLElBQUksa0JBQWtCLEtBQUssS0FBSyxTQUFTLFVBQVUsZUFBZSxHQUFHLEtBQW1DLENBQUMsRUFBa0IsS0FBSyxrQkFBa0IsU0FBUyxVQUFVLG1CQUFPLENBQUMsNENBQU8sSUFBSSxTQUFTLGdDQUFnQyxXQUFXLGtCQUFrQixpQkFBaUIsWUFBWSxZQUFZLFdBQVcsSUFBSSxzQ0FBc0MsUUFBUSxRQUFRLGlCQUFpQixpQkFBaUIsbUVBQW1FLFNBQVMsS0FBSywrQkFBK0IsaUJBQWlCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvdXNlLXN1YnNjcmlwdGlvbi9pbmRleC5qcz8wOGFjIl0sInNvdXJjZXNDb250ZW50IjpbIigoKT0+e1widXNlIHN0cmljdFwiO3ZhciBlPXs4MDA6ZT0+e1xuLypcbm9iamVjdC1hc3NpZ25cbihjKSBTaW5kcmUgU29yaHVzXG5AbGljZW5zZSBNSVRcbiovXG52YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO3ZhciB0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIHU9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtmdW5jdGlvbiB0b09iamVjdChlKXtpZihlPT09bnVsbHx8ZT09PXVuZGVmaW5lZCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkXCIpfXJldHVybiBPYmplY3QoZSl9ZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWduKXtyZXR1cm4gZmFsc2V9dmFyIGU9bmV3IFN0cmluZyhcImFiY1wiKTtlWzVdPVwiZGVcIjtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKVswXT09PVwiNVwiKXtyZXR1cm4gZmFsc2V9dmFyIHI9e307Zm9yKHZhciB0PTA7dDwxMDt0Kyspe3JbXCJfXCIrU3RyaW5nLmZyb21DaGFyQ29kZSh0KV09dH12YXIgdT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhyKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiByW2VdfSkpO2lmKHUuam9pbihcIlwiKSE9PVwiMDEyMzQ1Njc4OVwiKXtyZXR1cm4gZmFsc2V9dmFyIG49e307XCJhYmNkZWZnaGlqa2xtbm9wcXJzdFwiLnNwbGl0KFwiXCIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe25bZV09ZX0pKTtpZihPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LG4pKS5qb2luKFwiXCIpIT09XCJhYmNkZWZnaGlqa2xtbm9wcXJzdFwiKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9Y2F0Y2goZSl7cmV0dXJuIGZhbHNlfX1lLmV4cG9ydHM9c2hvdWxkVXNlTmF0aXZlKCk/T2JqZWN0LmFzc2lnbjpmdW5jdGlvbihlLG4pe3ZhciBhO3ZhciBpPXRvT2JqZWN0KGUpO3ZhciBzO2Zvcih2YXIgYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe2E9T2JqZWN0KGFyZ3VtZW50c1tjXSk7Zm9yKHZhciBvIGluIGEpe2lmKHQuY2FsbChhLG8pKXtpW29dPWFbb119fWlmKHIpe3M9cihhKTtmb3IodmFyIGY9MDtmPHMubGVuZ3RoO2YrKyl7aWYodS5jYWxsKGEsc1tmXSkpe2lbc1tmXV09YVtzW2ZdXX19fX1yZXR1cm4gaX19LDU2OTooZSxyLHQpPT57XG4vKiogQGxpY2Vuc2UgUmVhY3QgdnVuZGVmaW5lZFxuICogdXNlLXN1YnNjcmlwdGlvbi5kZXZlbG9wbWVudC5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5pZihwcm9jZXNzLmVudi5OT0RFX0VOViE9PVwicHJvZHVjdGlvblwiKXsoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjt2YXIgZT10KDgwMCk7dmFyIHU9dCg1MjIpO2Z1bmN0aW9uIHVzZVN1YnNjcmlwdGlvbihyKXt2YXIgdD1yLmdldEN1cnJlbnRWYWx1ZSxuPXIuc3Vic2NyaWJlO3ZhciBhPXUudXNlU3RhdGUoKGZ1bmN0aW9uKCl7cmV0dXJue2dldEN1cnJlbnRWYWx1ZTp0LHN1YnNjcmliZTpuLHZhbHVlOnQoKX19KSksaT1hWzBdLHM9YVsxXTt2YXIgYz1pLnZhbHVlO2lmKGkuZ2V0Q3VycmVudFZhbHVlIT09dHx8aS5zdWJzY3JpYmUhPT1uKXtjPXQoKTtzKHtnZXRDdXJyZW50VmFsdWU6dCxzdWJzY3JpYmU6bix2YWx1ZTpjfSl9dS51c2VEZWJ1Z1ZhbHVlKGMpO3UudXNlRWZmZWN0KChmdW5jdGlvbigpe3ZhciByPWZhbHNlO3ZhciBjaGVja0ZvclVwZGF0ZXM9ZnVuY3Rpb24oKXtpZihyKXtyZXR1cm59dmFyIHU9dCgpO3MoKGZ1bmN0aW9uKHIpe2lmKHIuZ2V0Q3VycmVudFZhbHVlIT09dHx8ci5zdWJzY3JpYmUhPT1uKXtyZXR1cm4gcn1pZihyLnZhbHVlPT09dSl7cmV0dXJuIHJ9cmV0dXJuIGUoe30scix7dmFsdWU6dX0pfSkpfTt2YXIgdT1uKGNoZWNrRm9yVXBkYXRlcyk7Y2hlY2tGb3JVcGRhdGVzKCk7cmV0dXJuIGZ1bmN0aW9uKCl7cj10cnVlO3UoKX19KSxbdCxuXSk7cmV0dXJuIGN9ci51c2VTdWJzY3JpcHRpb249dXNlU3Vic2NyaXB0aW9ufSkoKX19LDQwMzooZSxyLHQpPT57XG4vKiogQGxpY2Vuc2UgUmVhY3QgdnVuZGVmaW5lZFxuICogdXNlLXN1YnNjcmlwdGlvbi5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG52YXIgdT10KDgwMCksbj10KDUyMik7ci51c2VTdWJzY3JpcHRpb249ZnVuY3Rpb24oZSl7dmFyIHI9ZS5nZXRDdXJyZW50VmFsdWUsdD1lLnN1YnNjcmliZSxhPW4udXNlU3RhdGUoKGZ1bmN0aW9uKCl7cmV0dXJue2dldEN1cnJlbnRWYWx1ZTpyLHN1YnNjcmliZTp0LHZhbHVlOnIoKX19KSk7ZT1hWzBdO3ZhciBpPWFbMV07YT1lLnZhbHVlO2lmKGUuZ2V0Q3VycmVudFZhbHVlIT09cnx8ZS5zdWJzY3JpYmUhPT10KWE9cigpLGkoe2dldEN1cnJlbnRWYWx1ZTpyLHN1YnNjcmliZTp0LHZhbHVlOmF9KTtuLnVzZURlYnVnVmFsdWUoYSk7bi51c2VFZmZlY3QoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYigpe2lmKCFlKXt2YXIgbj1yKCk7aSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0Q3VycmVudFZhbHVlIT09cnx8ZS5zdWJzY3JpYmUhPT10fHxlLnZhbHVlPT09bj9lOnUoe30sZSx7dmFsdWU6bn0pfSkpfX12YXIgZT0hMSxuPXQoYik7YigpO3JldHVybiBmdW5jdGlvbigpe2U9ITA7bigpfX0pLFtyLHRdKTtyZXR1cm4gYX19LDEzODooZSxyLHQpPT57aWYocHJvY2Vzcy5lbnYuTk9ERV9FTlY9PT1cInByb2R1Y3Rpb25cIil7ZS5leHBvcnRzPXQoNDAzKX1lbHNle2UuZXhwb3J0cz10KDU2OSl9fSw1MjI6ZT0+e2UuZXhwb3J0cz1yZXF1aXJlKFwicmVhY3RcIil9fTt2YXIgcj17fTtmdW5jdGlvbiBfX25jY3dwY2tfcmVxdWlyZV9fKHQpe3ZhciB1PXJbdF07aWYodSE9PXVuZGVmaW5lZCl7cmV0dXJuIHUuZXhwb3J0c312YXIgbj1yW3RdPXtleHBvcnRzOnt9fTt2YXIgYT10cnVlO3RyeXtlW3RdKG4sbi5leHBvcnRzLF9fbmNjd3Bja19yZXF1aXJlX18pO2E9ZmFsc2V9ZmluYWxseXtpZihhKWRlbGV0ZSByW3RdfXJldHVybiBuLmV4cG9ydHN9aWYodHlwZW9mIF9fbmNjd3Bja19yZXF1aXJlX18hPT1cInVuZGVmaW5lZFwiKV9fbmNjd3Bja19yZXF1aXJlX18uYWI9X19kaXJuYW1lK1wiL1wiO3ZhciB0PV9fbmNjd3Bja19yZXF1aXJlX18oMTM4KTttb2R1bGUuZXhwb3J0cz10fSkoKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/compiled/use-subscription/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/next/dynamic.js":
/*!**************************************!*\
  !*** ./node_modules/next/dynamic.js ***!
  \**************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
 
eval("module.exports = __webpack_require__(/*! ./dist/shared/lib/dynamic */ \"./node_modules/next/dist/shared/lib/dynamic.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9keW5hbWljLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBLHVIQUFxRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9keW5hbWljLmpzPzczZDQiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Rpc3Qvc2hhcmVkL2xpYi9keW5hbWljJylcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dynamic.js\n");
 
/***/ }),
 
/***/ "./node_modules/next/link.js":
/*!***********************************!*\
  !*** ./node_modules/next/link.js ***!
  \***********************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
 
eval("module.exports = __webpack_require__(/*! ./dist/client/link */ \"./node_modules/next/dist/client/link.js\")\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9saW5rLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBLHlHQUE4QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9saW5rLmpzPzc1YjMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Rpc3QvY2xpZW50L2xpbmsnKVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/link.js\n");
 
/***/ }),
 
/***/ "./node_modules/optimism/lib/bundle.esm.js":
/*!*************************************************!*\
  !*** ./node_modules/optimism/lib/bundle.esm.js ***!
  \*************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KeyTrie\": function() { return /* reexport safe */ _wry_trie__WEBPACK_IMPORTED_MODULE_0__.Trie; },\n/* harmony export */   \"asyncFromGen\": function() { return /* reexport safe */ _wry_context__WEBPACK_IMPORTED_MODULE_1__.asyncFromGen; },\n/* harmony export */   \"bindContext\": function() { return /* reexport safe */ _wry_context__WEBPACK_IMPORTED_MODULE_1__.bind; },\n/* harmony export */   \"defaultMakeCacheKey\": function() { return /* binding */ defaultMakeCacheKey; },\n/* harmony export */   \"dep\": function() { return /* binding */ dep; },\n/* harmony export */   \"noContext\": function() { return /* reexport safe */ _wry_context__WEBPACK_IMPORTED_MODULE_1__.noContext; },\n/* harmony export */   \"setTimeout\": function() { return /* reexport safe */ _wry_context__WEBPACK_IMPORTED_MODULE_1__.setTimeout; },\n/* harmony export */   \"wrap\": function() { return /* binding */ wrap; }\n/* harmony export */ });\n/* harmony import */ var _wry_trie__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wry/trie */ \"./node_modules/@wry/trie/lib/trie.esm.js\");\n/* harmony import */ var _wry_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wry/context */ \"./node_modules/@wry/context/lib/context.esm.js\");\n\n\n\n\n\nfunction defaultDispose() { }\r\nvar Cache = /** @class */ (function () {\r\n    function Cache(max, dispose) {\r\n        if (max === void 0) { max = Infinity; }\r\n        if (dispose === void 0) { dispose = defaultDispose; }\r\n        this.max = max;\r\n        this.dispose = dispose;\r\n        this.map = new Map();\r\n        this.newest = null;\r\n        this.oldest = null;\r\n    }\r\n    Cache.prototype.has = function (key) {\r\n        return this.map.has(key);\r\n    };\r\n    Cache.prototype.get = function (key) {\r\n        var node = this.getNode(key);\r\n        return node && node.value;\r\n    };\r\n    Cache.prototype.getNode = function (key) {\r\n        var node = this.map.get(key);\r\n        if (node && node !== this.newest) {\r\n            var older = node.older, newer = node.newer;\r\n            if (newer) {\r\n                newer.older = older;\r\n            }\r\n            if (older) {\r\n                older.newer = newer;\r\n            }\r\n            node.older = this.newest;\r\n            node.older.newer = node;\r\n            node.newer = null;\r\n            this.newest = node;\r\n            if (node === this.oldest) {\r\n                this.oldest = newer;\r\n            }\r\n        }\r\n        return node;\r\n    };\r\n    Cache.prototype.set = function (key, value) {\r\n        var node = this.getNode(key);\r\n        if (node) {\r\n            return node.value = value;\r\n        }\r\n        node = {\r\n            key: key,\r\n            value: value,\r\n            newer: null,\r\n            older: this.newest\r\n        };\r\n        if (this.newest) {\r\n            this.newest.newer = node;\r\n        }\r\n        this.newest = node;\r\n        this.oldest = this.oldest || node;\r\n        this.map.set(key, node);\r\n        return node.value;\r\n    };\r\n    Cache.prototype.clean = function () {\r\n        while (this.oldest && this.map.size > this.max) {\r\n            this.delete(this.oldest.key);\r\n        }\r\n    };\r\n    Cache.prototype.delete = function (key) {\r\n        var node = this.map.get(key);\r\n        if (node) {\r\n            if (node === this.newest) {\r\n                this.newest = node.older;\r\n            }\r\n            if (node === this.oldest) {\r\n                this.oldest = node.newer;\r\n            }\r\n            if (node.newer) {\r\n                node.newer.older = node.older;\r\n            }\r\n            if (node.older) {\r\n                node.older.newer = node.newer;\r\n            }\r\n            this.map.delete(key);\r\n            this.dispose(node.value, key);\r\n            return true;\r\n        }\r\n        return false;\r\n    };\r\n    return Cache;\r\n}());\n\nvar parentEntrySlot = new _wry_context__WEBPACK_IMPORTED_MODULE_1__.Slot();\n\nvar _a;\r\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\r\nvar \r\n// This Array.from polyfill is restricted to working with Set<any> for now,\r\n// but we can improve the polyfill and add other input types, as needed. Note\r\n// that this fallback implementation will only be used if the host environment\r\n// does not support a native Array.from function. In most modern JS runtimes,\r\n// the toArray function exported here will be === Array.from.\r\ntoArray = (_a = Array.from, _a === void 0 ? function (collection) {\r\n    var array = [];\r\n    collection.forEach(function (item) { return array.push(item); });\r\n    return array;\r\n} : _a);\r\nfunction maybeUnsubscribe(entryOrDep) {\r\n    var unsubscribe = entryOrDep.unsubscribe;\r\n    if (typeof unsubscribe === \"function\") {\r\n        entryOrDep.unsubscribe = void 0;\r\n        unsubscribe();\r\n    }\r\n}\n\nvar emptySetPool = [];\r\nvar POOL_TARGET_SIZE = 100;\r\n// Since this package might be used browsers, we should avoid using the\r\n// Node built-in assert module.\r\nfunction assert(condition, optionalMessage) {\r\n    if (!condition) {\r\n        throw new Error(optionalMessage || \"assertion failure\");\r\n    }\r\n}\r\nfunction valueIs(a, b) {\r\n    var len = a.length;\r\n    return (\r\n    // Unknown values are not equal to each other.\r\n    len > 0 &&\r\n        // Both values must be ordinary (or both exceptional) to be equal.\r\n        len === b.length &&\r\n        // The underlying value or exception must be the same.\r\n        a[len - 1] === b[len - 1]);\r\n}\r\nfunction valueGet(value) {\r\n    switch (value.length) {\r\n        case 0: throw new Error(\"unknown value\");\r\n        case 1: return value[0];\r\n        case 2: throw value[1];\r\n    }\r\n}\r\nfunction valueCopy(value) {\r\n    return value.slice(0);\r\n}\r\nvar Entry = /** @class */ (function () {\r\n    function Entry(fn) {\r\n        this.fn = fn;\r\n        this.parents = new Set();\r\n        this.childValues = new Map();\r\n        // When this Entry has children that are dirty, this property becomes\r\n        // a Set containing other Entry objects, borrowed from emptySetPool.\r\n        // When the set becomes empty, it gets recycled back to emptySetPool.\r\n        this.dirtyChildren = null;\r\n        this.dirty = true;\r\n        this.recomputing = false;\r\n        this.value = [];\r\n        this.deps = null;\r\n        ++Entry.count;\r\n    }\r\n    Entry.prototype.peek = function () {\r\n        if (this.value.length === 1 && !mightBeDirty(this)) {\r\n            rememberParent(this);\r\n            return this.value[0];\r\n        }\r\n    };\r\n    // This is the most important method of the Entry API, because it\r\n    // determines whether the cached this.value can be returned immediately,\r\n    // or must be recomputed. The overall performance of the caching system\r\n    // depends on the truth of the following observations: (1) this.dirty is\r\n    // usually false, (2) this.dirtyChildren is usually null/empty, and thus\r\n    // (3) valueGet(this.value) is usually returned without recomputation.\r\n    Entry.prototype.recompute = function (args) {\r\n        assert(!this.recomputing, \"already recomputing\");\r\n        rememberParent(this);\r\n        return mightBeDirty(this)\r\n            ? reallyRecompute(this, args)\r\n            : valueGet(this.value);\r\n    };\r\n    Entry.prototype.setDirty = function () {\r\n        if (this.dirty)\r\n            return;\r\n        this.dirty = true;\r\n        this.value.length = 0;\r\n        reportDirty(this);\r\n        // We can go ahead and unsubscribe here, since any further dirty\r\n        // notifications we receive will be redundant, and unsubscribing may\r\n        // free up some resources, e.g. file watchers.\r\n        maybeUnsubscribe(this);\r\n    };\r\n    Entry.prototype.dispose = function () {\r\n        var _this = this;\r\n        this.setDirty();\r\n        // Sever any dependency relationships with our own children, so those\r\n        // children don't retain this parent Entry in their child.parents sets,\r\n        // thereby preventing it from being fully garbage collected.\r\n        forgetChildren(this);\r\n        // Because this entry has been kicked out of the cache (in index.js),\r\n        // we've lost the ability to find out if/when this entry becomes dirty,\r\n        // whether that happens through a subscription, because of a direct call\r\n        // to entry.setDirty(), or because one of its children becomes dirty.\r\n        // Because of this loss of future information, we have to assume the\r\n        // worst (that this entry might have become dirty very soon), so we must\r\n        // immediately mark this entry's parents as dirty. Normally we could\r\n        // just call entry.setDirty() rather than calling parent.setDirty() for\r\n        // each parent, but that would leave this entry in parent.childValues\r\n        // and parent.dirtyChildren, which would prevent the child from being\r\n        // truly forgotten.\r\n        eachParent(this, function (parent, child) {\r\n            parent.setDirty();\r\n            forgetChild(parent, _this);\r\n        });\r\n    };\r\n    Entry.prototype.forget = function () {\r\n        // The code that creates Entry objects in index.ts will replace this method\r\n        // with one that actually removes the Entry from the cache, which will also\r\n        // trigger the entry.dispose method.\r\n        this.dispose();\r\n    };\r\n    Entry.prototype.dependOn = function (dep) {\r\n        dep.add(this);\r\n        if (!this.deps) {\r\n            this.deps = emptySetPool.pop() || new Set();\r\n        }\r\n        this.deps.add(dep);\r\n    };\r\n    Entry.prototype.forgetDeps = function () {\r\n        var _this = this;\r\n        if (this.deps) {\r\n            toArray(this.deps).forEach(function (dep) { return dep.delete(_this); });\r\n            this.deps.clear();\r\n            emptySetPool.push(this.deps);\r\n            this.deps = null;\r\n        }\r\n    };\r\n    Entry.count = 0;\r\n    return Entry;\r\n}());\r\nfunction rememberParent(child) {\r\n    var parent = parentEntrySlot.getValue();\r\n    if (parent) {\r\n        child.parents.add(parent);\r\n        if (!parent.childValues.has(child)) {\r\n            parent.childValues.set(child, []);\r\n        }\r\n        if (mightBeDirty(child)) {\r\n            reportDirtyChild(parent, child);\r\n        }\r\n        else {\r\n            reportCleanChild(parent, child);\r\n        }\r\n        return parent;\r\n    }\r\n}\r\nfunction reallyRecompute(entry, args) {\r\n    forgetChildren(entry);\r\n    // Set entry as the parent entry while calling recomputeNewValue(entry).\r\n    parentEntrySlot.withValue(entry, recomputeNewValue, [entry, args]);\r\n    if (maybeSubscribe(entry, args)) {\r\n        // If we successfully recomputed entry.value and did not fail to\r\n        // (re)subscribe, then this Entry is no longer explicitly dirty.\r\n        setClean(entry);\r\n    }\r\n    return valueGet(entry.value);\r\n}\r\nfunction recomputeNewValue(entry, args) {\r\n    entry.recomputing = true;\r\n    // Set entry.value as unknown.\r\n    entry.value.length = 0;\r\n    try {\r\n        // If entry.fn succeeds, entry.value will become a normal Value.\r\n        entry.value[0] = entry.fn.apply(null, args);\r\n    }\r\n    catch (e) {\r\n        // If entry.fn throws, entry.value will become exceptional.\r\n        entry.value[1] = e;\r\n    }\r\n    // Either way, this line is always reached.\r\n    entry.recomputing = false;\r\n}\r\nfunction mightBeDirty(entry) {\r\n    return entry.dirty || !!(entry.dirtyChildren && entry.dirtyChildren.size);\r\n}\r\nfunction setClean(entry) {\r\n    entry.dirty = false;\r\n    if (mightBeDirty(entry)) {\r\n        // This Entry may still have dirty children, in which case we can't\r\n        // let our parents know we're clean just yet.\r\n        return;\r\n    }\r\n    reportClean(entry);\r\n}\r\nfunction reportDirty(child) {\r\n    eachParent(child, reportDirtyChild);\r\n}\r\nfunction reportClean(child) {\r\n    eachParent(child, reportCleanChild);\r\n}\r\nfunction eachParent(child, callback) {\r\n    var parentCount = child.parents.size;\r\n    if (parentCount) {\r\n        var parents = toArray(child.parents);\r\n        for (var i = 0; i < parentCount; ++i) {\r\n            callback(parents[i], child);\r\n        }\r\n    }\r\n}\r\n// Let a parent Entry know that one of its children may be dirty.\r\nfunction reportDirtyChild(parent, child) {\r\n    // Must have called rememberParent(child) before calling\r\n    // reportDirtyChild(parent, child).\r\n    assert(parent.childValues.has(child));\r\n    assert(mightBeDirty(child));\r\n    var parentWasClean = !mightBeDirty(parent);\r\n    if (!parent.dirtyChildren) {\r\n        parent.dirtyChildren = emptySetPool.pop() || new Set;\r\n    }\r\n    else if (parent.dirtyChildren.has(child)) {\r\n        // If we already know this child is dirty, then we must have already\r\n        // informed our own parents that we are dirty, so we can terminate\r\n        // the recursion early.\r\n        return;\r\n    }\r\n    parent.dirtyChildren.add(child);\r\n    // If parent was clean before, it just became (possibly) dirty (according to\r\n    // mightBeDirty), since we just added child to parent.dirtyChildren.\r\n    if (parentWasClean) {\r\n        reportDirty(parent);\r\n    }\r\n}\r\n// Let a parent Entry know that one of its children is no longer dirty.\r\nfunction reportCleanChild(parent, child) {\r\n    // Must have called rememberChild(child) before calling\r\n    // reportCleanChild(parent, child).\r\n    assert(parent.childValues.has(child));\r\n    assert(!mightBeDirty(child));\r\n    var childValue = parent.childValues.get(child);\r\n    if (childValue.length === 0) {\r\n        parent.childValues.set(child, valueCopy(child.value));\r\n    }\r\n    else if (!valueIs(childValue, child.value)) {\r\n        parent.setDirty();\r\n    }\r\n    removeDirtyChild(parent, child);\r\n    if (mightBeDirty(parent)) {\r\n        return;\r\n    }\r\n    reportClean(parent);\r\n}\r\nfunction removeDirtyChild(parent, child) {\r\n    var dc = parent.dirtyChildren;\r\n    if (dc) {\r\n        dc.delete(child);\r\n        if (dc.size === 0) {\r\n            if (emptySetPool.length < POOL_TARGET_SIZE) {\r\n                emptySetPool.push(dc);\r\n            }\r\n            parent.dirtyChildren = null;\r\n        }\r\n    }\r\n}\r\n// Removes all children from this entry and returns an array of the\r\n// removed children.\r\nfunction forgetChildren(parent) {\r\n    if (parent.childValues.size > 0) {\r\n        parent.childValues.forEach(function (_value, child) {\r\n            forgetChild(parent, child);\r\n        });\r\n    }\r\n    // Remove this parent Entry from any sets to which it was added by the\r\n    // addToSet method.\r\n    parent.forgetDeps();\r\n    // After we forget all our children, this.dirtyChildren must be empty\r\n    // and therefore must have been reset to null.\r\n    assert(parent.dirtyChildren === null);\r\n}\r\nfunction forgetChild(parent, child) {\r\n    child.parents.delete(parent);\r\n    parent.childValues.delete(child);\r\n    removeDirtyChild(parent, child);\r\n}\r\nfunction maybeSubscribe(entry, args) {\r\n    if (typeof entry.subscribe === \"function\") {\r\n        try {\r\n            maybeUnsubscribe(entry); // Prevent double subscriptions.\r\n            entry.unsubscribe = entry.subscribe.apply(null, args);\r\n        }\r\n        catch (e) {\r\n            // If this Entry has a subscribe function and it threw an exception\r\n            // (or an unsubscribe function it previously returned now throws),\r\n            // return false to indicate that we were not able to subscribe (or\r\n            // unsubscribe), and this Entry should remain dirty.\r\n            entry.setDirty();\r\n            return false;\r\n        }\r\n    }\r\n    // Returning true indicates either that there was no entry.subscribe\r\n    // function or that it succeeded.\r\n    return true;\r\n}\n\nvar EntryMethods = {\r\n    setDirty: true,\r\n    dispose: true,\r\n    forget: true,\r\n};\r\nfunction dep(options) {\r\n    var depsByKey = new Map();\r\n    var subscribe = options && options.subscribe;\r\n    function depend(key) {\r\n        var parent = parentEntrySlot.getValue();\r\n        if (parent) {\r\n            var dep_1 = depsByKey.get(key);\r\n            if (!dep_1) {\r\n                depsByKey.set(key, dep_1 = new Set);\r\n            }\r\n            parent.dependOn(dep_1);\r\n            if (typeof subscribe === \"function\") {\r\n                maybeUnsubscribe(dep_1);\r\n                dep_1.unsubscribe = subscribe(key);\r\n            }\r\n        }\r\n    }\r\n    depend.dirty = function dirty(key, entryMethodName) {\r\n        var dep = depsByKey.get(key);\r\n        if (dep) {\r\n            var m_1 = (entryMethodName &&\r\n                hasOwnProperty.call(EntryMethods, entryMethodName)) ? entryMethodName : \"setDirty\";\r\n            // We have to use toArray(dep).forEach instead of dep.forEach, because\r\n            // modifying a Set while iterating over it can cause elements in the Set\r\n            // to be removed from the Set before they've been iterated over.\r\n            toArray(dep).forEach(function (entry) { return entry[m_1](); });\r\n            depsByKey.delete(key);\r\n            maybeUnsubscribe(dep);\r\n        }\r\n    };\r\n    return depend;\r\n}\n\nfunction makeDefaultMakeCacheKeyFunction() {\r\n    var keyTrie = new _wry_trie__WEBPACK_IMPORTED_MODULE_0__.Trie(typeof WeakMap === \"function\");\r\n    return function () {\r\n        return keyTrie.lookupArray(arguments);\r\n    };\r\n}\r\n// The defaultMakeCacheKey function is remarkably powerful, because it gives\r\n// a unique object for any shallow-identical list of arguments. If you need\r\n// to implement a custom makeCacheKey function, you may find it helpful to\r\n// delegate the final work to defaultMakeCacheKey, which is why we export it\r\n// here. However, you may want to avoid defaultMakeCacheKey if your runtime\r\n// does not support WeakMap, or you have the ability to return a string key.\r\n// In those cases, just write your own custom makeCacheKey functions.\r\nvar defaultMakeCacheKey = makeDefaultMakeCacheKeyFunction();\r\nvar caches = new Set();\r\nfunction wrap(originalFunction, options) {\r\n    if (options === void 0) { options = Object.create(null); }\r\n    var cache = new Cache(options.max || Math.pow(2, 16), function (entry) { return entry.dispose(); });\r\n    var keyArgs = options.keyArgs;\r\n    var makeCacheKey = options.makeCacheKey ||\r\n        makeDefaultMakeCacheKeyFunction();\r\n    var optimistic = function () {\r\n        var key = makeCacheKey.apply(null, keyArgs ? keyArgs.apply(null, arguments) : arguments);\r\n        if (key === void 0) {\r\n            return originalFunction.apply(null, arguments);\r\n        }\r\n        var entry = cache.get(key);\r\n        if (!entry) {\r\n            cache.set(key, entry = new Entry(originalFunction));\r\n            entry.subscribe = options.subscribe;\r\n            // Give the Entry the ability to trigger cache.delete(key), even though\r\n            // the Entry itself does not know about key or cache.\r\n            entry.forget = function () { return cache.delete(key); };\r\n        }\r\n        var value = entry.recompute(Array.prototype.slice.call(arguments));\r\n        // Move this entry to the front of the least-recently used queue,\r\n        // since we just finished computing its value.\r\n        cache.set(key, entry);\r\n        caches.add(cache);\r\n        // Clean up any excess entries in the cache, but only if there is no\r\n        // active parent entry, meaning we're not in the middle of a larger\r\n        // computation that might be flummoxed by the cleaning.\r\n        if (!parentEntrySlot.hasValue()) {\r\n            caches.forEach(function (cache) { return cache.clean(); });\r\n            caches.clear();\r\n        }\r\n        return value;\r\n    };\r\n    Object.defineProperty(optimistic, \"size\", {\r\n        get: function () {\r\n            return cache[\"map\"].size;\r\n        },\r\n        configurable: false,\r\n        enumerable: false,\r\n    });\r\n    function dirtyKey(key) {\r\n        var entry = cache.get(key);\r\n        if (entry) {\r\n            entry.setDirty();\r\n        }\r\n    }\r\n    optimistic.dirtyKey = dirtyKey;\r\n    optimistic.dirty = function dirty() {\r\n        dirtyKey(makeCacheKey.apply(null, arguments));\r\n    };\r\n    function peekKey(key) {\r\n        var entry = cache.get(key);\r\n        if (entry) {\r\n            return entry.peek();\r\n        }\r\n    }\r\n    optimistic.peekKey = peekKey;\r\n    optimistic.peek = function peek() {\r\n        return peekKey(makeCacheKey.apply(null, arguments));\r\n    };\r\n    function forgetKey(key) {\r\n        return cache.delete(key);\r\n    }\r\n    optimistic.forgetKey = forgetKey;\r\n    optimistic.forget = function forget() {\r\n        return forgetKey(makeCacheKey.apply(null, arguments));\r\n    };\r\n    optimistic.makeCacheKey = makeCacheKey;\r\n    optimistic.getKey = keyArgs ? function getKey() {\r\n        return makeCacheKey.apply(null, keyArgs.apply(null, arguments));\r\n    } : makeCacheKey;\r\n    return Object.freeze(optimistic);\r\n}\n\n\n//# sourceMappingURL=bundle.esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvb3B0aW1pc20vbGliL2J1bmRsZS5lc20uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFpQztBQUNXO0FBQ1I7QUFDb0Q7O0FBRXhGO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QixrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVELDBCQUEwQiw4Q0FBSTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsMEJBQTBCO0FBQ25FO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCwyQkFBMkI7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsaUJBQWlCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0Qsc0JBQXNCO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQiwyQ0FBSTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCLDZFQUE2RSx5QkFBeUI7QUFDdEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4Qyx1QkFBdUI7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFMEM7QUFDMUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL29wdGltaXNtL2xpYi9idW5kbGUuZXNtLmpzPzAxMmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJpZSB9IGZyb20gJ0B3cnkvdHJpZSc7XG5leHBvcnQgeyBUcmllIGFzIEtleVRyaWUgfSBmcm9tICdAd3J5L3RyaWUnO1xuaW1wb3J0IHsgU2xvdCB9IGZyb20gJ0B3cnkvY29udGV4dCc7XG5leHBvcnQgeyBhc3luY0Zyb21HZW4sIGJpbmQgYXMgYmluZENvbnRleHQsIG5vQ29udGV4dCwgc2V0VGltZW91dCB9IGZyb20gJ0B3cnkvY29udGV4dCc7XG5cbmZ1bmN0aW9uIGRlZmF1bHREaXNwb3NlKCkgeyB9XHJcbnZhciBDYWNoZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIENhY2hlKG1heCwgZGlzcG9zZSkge1xyXG4gICAgICAgIGlmIChtYXggPT09IHZvaWQgMCkgeyBtYXggPSBJbmZpbml0eTsgfVxyXG4gICAgICAgIGlmIChkaXNwb3NlID09PSB2b2lkIDApIHsgZGlzcG9zZSA9IGRlZmF1bHREaXNwb3NlOyB9XHJcbiAgICAgICAgdGhpcy5tYXggPSBtYXg7XHJcbiAgICAgICAgdGhpcy5kaXNwb3NlID0gZGlzcG9zZTtcclxuICAgICAgICB0aGlzLm1hcCA9IG5ldyBNYXAoKTtcclxuICAgICAgICB0aGlzLm5ld2VzdCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5vbGRlc3QgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgQ2FjaGUucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tYXAuaGFzKGtleSk7XHJcbiAgICB9O1xyXG4gICAgQ2FjaGUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHtcclxuICAgICAgICB2YXIgbm9kZSA9IHRoaXMuZ2V0Tm9kZShrZXkpO1xyXG4gICAgICAgIHJldHVybiBub2RlICYmIG5vZGUudmFsdWU7XHJcbiAgICB9O1xyXG4gICAgQ2FjaGUucHJvdG90eXBlLmdldE5vZGUgPSBmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgdmFyIG5vZGUgPSB0aGlzLm1hcC5nZXQoa2V5KTtcclxuICAgICAgICBpZiAobm9kZSAmJiBub2RlICE9PSB0aGlzLm5ld2VzdCkge1xyXG4gICAgICAgICAgICB2YXIgb2xkZXIgPSBub2RlLm9sZGVyLCBuZXdlciA9IG5vZGUubmV3ZXI7XHJcbiAgICAgICAgICAgIGlmIChuZXdlcikge1xyXG4gICAgICAgICAgICAgICAgbmV3ZXIub2xkZXIgPSBvbGRlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAob2xkZXIpIHtcclxuICAgICAgICAgICAgICAgIG9sZGVyLm5ld2VyID0gbmV3ZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbm9kZS5vbGRlciA9IHRoaXMubmV3ZXN0O1xyXG4gICAgICAgICAgICBub2RlLm9sZGVyLm5ld2VyID0gbm9kZTtcclxuICAgICAgICAgICAgbm9kZS5uZXdlciA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMubmV3ZXN0ID0gbm9kZTtcclxuICAgICAgICAgICAgaWYgKG5vZGUgPT09IHRoaXMub2xkZXN0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9sZGVzdCA9IG5ld2VyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfTtcclxuICAgIENhY2hlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIHZhciBub2RlID0gdGhpcy5nZXROb2RlKGtleSk7XHJcbiAgICAgICAgaWYgKG5vZGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5vZGUudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbm9kZSA9IHtcclxuICAgICAgICAgICAga2V5OiBrZXksXHJcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcclxuICAgICAgICAgICAgbmV3ZXI6IG51bGwsXHJcbiAgICAgICAgICAgIG9sZGVyOiB0aGlzLm5ld2VzdFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKHRoaXMubmV3ZXN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMubmV3ZXN0Lm5ld2VyID0gbm9kZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5uZXdlc3QgPSBub2RlO1xyXG4gICAgICAgIHRoaXMub2xkZXN0ID0gdGhpcy5vbGRlc3QgfHwgbm9kZTtcclxuICAgICAgICB0aGlzLm1hcC5zZXQoa2V5LCBub2RlKTtcclxuICAgICAgICByZXR1cm4gbm9kZS52YWx1ZTtcclxuICAgIH07XHJcbiAgICBDYWNoZS5wcm90b3R5cGUuY2xlYW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMub2xkZXN0ICYmIHRoaXMubWFwLnNpemUgPiB0aGlzLm1heCkge1xyXG4gICAgICAgICAgICB0aGlzLmRlbGV0ZSh0aGlzLm9sZGVzdC5rZXkpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBDYWNoZS5wcm90b3R5cGUuZGVsZXRlID0gZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgIHZhciBub2RlID0gdGhpcy5tYXAuZ2V0KGtleSk7XHJcbiAgICAgICAgaWYgKG5vZGUpIHtcclxuICAgICAgICAgICAgaWYgKG5vZGUgPT09IHRoaXMubmV3ZXN0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5ld2VzdCA9IG5vZGUub2xkZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG5vZGUgPT09IHRoaXMub2xkZXN0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9sZGVzdCA9IG5vZGUubmV3ZXI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKG5vZGUubmV3ZXIpIHtcclxuICAgICAgICAgICAgICAgIG5vZGUubmV3ZXIub2xkZXIgPSBub2RlLm9sZGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChub2RlLm9sZGVyKSB7XHJcbiAgICAgICAgICAgICAgICBub2RlLm9sZGVyLm5ld2VyID0gbm9kZS5uZXdlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm1hcC5kZWxldGUoa2V5KTtcclxuICAgICAgICAgICAgdGhpcy5kaXNwb3NlKG5vZGUudmFsdWUsIGtleSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIENhY2hlO1xyXG59KCkpO1xuXG52YXIgcGFyZW50RW50cnlTbG90ID0gbmV3IFNsb3QoKTtcblxudmFyIF9hO1xyXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xyXG52YXIgXHJcbi8vIFRoaXMgQXJyYXkuZnJvbSBwb2x5ZmlsbCBpcyByZXN0cmljdGVkIHRvIHdvcmtpbmcgd2l0aCBTZXQ8YW55PiBmb3Igbm93LFxyXG4vLyBidXQgd2UgY2FuIGltcHJvdmUgdGhlIHBvbHlmaWxsIGFuZCBhZGQgb3RoZXIgaW5wdXQgdHlwZXMsIGFzIG5lZWRlZC4gTm90ZVxyXG4vLyB0aGF0IHRoaXMgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gd2lsbCBvbmx5IGJlIHVzZWQgaWYgdGhlIGhvc3QgZW52aXJvbm1lbnRcclxuLy8gZG9lcyBub3Qgc3VwcG9ydCBhIG5hdGl2ZSBBcnJheS5mcm9tIGZ1bmN0aW9uLiBJbiBtb3N0IG1vZGVybiBKUyBydW50aW1lcyxcclxuLy8gdGhlIHRvQXJyYXkgZnVuY3Rpb24gZXhwb3J0ZWQgaGVyZSB3aWxsIGJlID09PSBBcnJheS5mcm9tLlxyXG50b0FycmF5ID0gKF9hID0gQXJyYXkuZnJvbSwgX2EgPT09IHZvaWQgMCA/IGZ1bmN0aW9uIChjb2xsZWN0aW9uKSB7XHJcbiAgICB2YXIgYXJyYXkgPSBbXTtcclxuICAgIGNvbGxlY3Rpb24uZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gYXJyYXkucHVzaChpdGVtKTsgfSk7XHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbn0gOiBfYSk7XHJcbmZ1bmN0aW9uIG1heWJlVW5zdWJzY3JpYmUoZW50cnlPckRlcCkge1xyXG4gICAgdmFyIHVuc3Vic2NyaWJlID0gZW50cnlPckRlcC51bnN1YnNjcmliZTtcclxuICAgIGlmICh0eXBlb2YgdW5zdWJzY3JpYmUgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgIGVudHJ5T3JEZXAudW5zdWJzY3JpYmUgPSB2b2lkIDA7XHJcbiAgICAgICAgdW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxufVxuXG52YXIgZW1wdHlTZXRQb29sID0gW107XHJcbnZhciBQT09MX1RBUkdFVF9TSVpFID0gMTAwO1xyXG4vLyBTaW5jZSB0aGlzIHBhY2thZ2UgbWlnaHQgYmUgdXNlZCBicm93c2Vycywgd2Ugc2hvdWxkIGF2b2lkIHVzaW5nIHRoZVxyXG4vLyBOb2RlIGJ1aWx0LWluIGFzc2VydCBtb2R1bGUuXHJcbmZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24sIG9wdGlvbmFsTWVzc2FnZSkge1xyXG4gICAgaWYgKCFjb25kaXRpb24pIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3Iob3B0aW9uYWxNZXNzYWdlIHx8IFwiYXNzZXJ0aW9uIGZhaWx1cmVcIik7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gdmFsdWVJcyhhLCBiKSB7XHJcbiAgICB2YXIgbGVuID0gYS5sZW5ndGg7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgLy8gVW5rbm93biB2YWx1ZXMgYXJlIG5vdCBlcXVhbCB0byBlYWNoIG90aGVyLlxyXG4gICAgbGVuID4gMCAmJlxyXG4gICAgICAgIC8vIEJvdGggdmFsdWVzIG11c3QgYmUgb3JkaW5hcnkgKG9yIGJvdGggZXhjZXB0aW9uYWwpIHRvIGJlIGVxdWFsLlxyXG4gICAgICAgIGxlbiA9PT0gYi5sZW5ndGggJiZcclxuICAgICAgICAvLyBUaGUgdW5kZXJseWluZyB2YWx1ZSBvciBleGNlcHRpb24gbXVzdCBiZSB0aGUgc2FtZS5cclxuICAgICAgICBhW2xlbiAtIDFdID09PSBiW2xlbiAtIDFdKTtcclxufVxyXG5mdW5jdGlvbiB2YWx1ZUdldCh2YWx1ZSkge1xyXG4gICAgc3dpdGNoICh2YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICBjYXNlIDA6IHRocm93IG5ldyBFcnJvcihcInVua25vd24gdmFsdWVcIik7XHJcbiAgICAgICAgY2FzZSAxOiByZXR1cm4gdmFsdWVbMF07XHJcbiAgICAgICAgY2FzZSAyOiB0aHJvdyB2YWx1ZVsxXTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB2YWx1ZUNvcHkodmFsdWUpIHtcclxuICAgIHJldHVybiB2YWx1ZS5zbGljZSgwKTtcclxufVxyXG52YXIgRW50cnkgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBFbnRyeShmbikge1xyXG4gICAgICAgIHRoaXMuZm4gPSBmbjtcclxuICAgICAgICB0aGlzLnBhcmVudHMgPSBuZXcgU2V0KCk7XHJcbiAgICAgICAgdGhpcy5jaGlsZFZhbHVlcyA9IG5ldyBNYXAoKTtcclxuICAgICAgICAvLyBXaGVuIHRoaXMgRW50cnkgaGFzIGNoaWxkcmVuIHRoYXQgYXJlIGRpcnR5LCB0aGlzIHByb3BlcnR5IGJlY29tZXNcclxuICAgICAgICAvLyBhIFNldCBjb250YWluaW5nIG90aGVyIEVudHJ5IG9iamVjdHMsIGJvcnJvd2VkIGZyb20gZW1wdHlTZXRQb29sLlxyXG4gICAgICAgIC8vIFdoZW4gdGhlIHNldCBiZWNvbWVzIGVtcHR5LCBpdCBnZXRzIHJlY3ljbGVkIGJhY2sgdG8gZW1wdHlTZXRQb29sLlxyXG4gICAgICAgIHRoaXMuZGlydHlDaGlsZHJlbiA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5yZWNvbXB1dGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBbXTtcclxuICAgICAgICB0aGlzLmRlcHMgPSBudWxsO1xyXG4gICAgICAgICsrRW50cnkuY291bnQ7XHJcbiAgICB9XHJcbiAgICBFbnRyeS5wcm90b3R5cGUucGVlayA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPT09IDEgJiYgIW1pZ2h0QmVEaXJ0eSh0aGlzKSkge1xyXG4gICAgICAgICAgICByZW1lbWJlclBhcmVudCh0aGlzKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVbMF07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIC8vIFRoaXMgaXMgdGhlIG1vc3QgaW1wb3J0YW50IG1ldGhvZCBvZiB0aGUgRW50cnkgQVBJLCBiZWNhdXNlIGl0XHJcbiAgICAvLyBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGNhY2hlZCB0aGlzLnZhbHVlIGNhbiBiZSByZXR1cm5lZCBpbW1lZGlhdGVseSxcclxuICAgIC8vIG9yIG11c3QgYmUgcmVjb21wdXRlZC4gVGhlIG92ZXJhbGwgcGVyZm9ybWFuY2Ugb2YgdGhlIGNhY2hpbmcgc3lzdGVtXHJcbiAgICAvLyBkZXBlbmRzIG9uIHRoZSB0cnV0aCBvZiB0aGUgZm9sbG93aW5nIG9ic2VydmF0aW9uczogKDEpIHRoaXMuZGlydHkgaXNcclxuICAgIC8vIHVzdWFsbHkgZmFsc2UsICgyKSB0aGlzLmRpcnR5Q2hpbGRyZW4gaXMgdXN1YWxseSBudWxsL2VtcHR5LCBhbmQgdGh1c1xyXG4gICAgLy8gKDMpIHZhbHVlR2V0KHRoaXMudmFsdWUpIGlzIHVzdWFsbHkgcmV0dXJuZWQgd2l0aG91dCByZWNvbXB1dGF0aW9uLlxyXG4gICAgRW50cnkucHJvdG90eXBlLnJlY29tcHV0ZSA9IGZ1bmN0aW9uIChhcmdzKSB7XHJcbiAgICAgICAgYXNzZXJ0KCF0aGlzLnJlY29tcHV0aW5nLCBcImFscmVhZHkgcmVjb21wdXRpbmdcIik7XHJcbiAgICAgICAgcmVtZW1iZXJQYXJlbnQodGhpcyk7XHJcbiAgICAgICAgcmV0dXJuIG1pZ2h0QmVEaXJ0eSh0aGlzKVxyXG4gICAgICAgICAgICA/IHJlYWxseVJlY29tcHV0ZSh0aGlzLCBhcmdzKVxyXG4gICAgICAgICAgICA6IHZhbHVlR2V0KHRoaXMudmFsdWUpO1xyXG4gICAgfTtcclxuICAgIEVudHJ5LnByb3RvdHlwZS5zZXREaXJ0eSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodGhpcy5kaXJ0eSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudmFsdWUubGVuZ3RoID0gMDtcclxuICAgICAgICByZXBvcnREaXJ0eSh0aGlzKTtcclxuICAgICAgICAvLyBXZSBjYW4gZ28gYWhlYWQgYW5kIHVuc3Vic2NyaWJlIGhlcmUsIHNpbmNlIGFueSBmdXJ0aGVyIGRpcnR5XHJcbiAgICAgICAgLy8gbm90aWZpY2F0aW9ucyB3ZSByZWNlaXZlIHdpbGwgYmUgcmVkdW5kYW50LCBhbmQgdW5zdWJzY3JpYmluZyBtYXlcclxuICAgICAgICAvLyBmcmVlIHVwIHNvbWUgcmVzb3VyY2VzLCBlLmcuIGZpbGUgd2F0Y2hlcnMuXHJcbiAgICAgICAgbWF5YmVVbnN1YnNjcmliZSh0aGlzKTtcclxuICAgIH07XHJcbiAgICBFbnRyeS5wcm90b3R5cGUuZGlzcG9zZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMuc2V0RGlydHkoKTtcclxuICAgICAgICAvLyBTZXZlciBhbnkgZGVwZW5kZW5jeSByZWxhdGlvbnNoaXBzIHdpdGggb3VyIG93biBjaGlsZHJlbiwgc28gdGhvc2VcclxuICAgICAgICAvLyBjaGlsZHJlbiBkb24ndCByZXRhaW4gdGhpcyBwYXJlbnQgRW50cnkgaW4gdGhlaXIgY2hpbGQucGFyZW50cyBzZXRzLFxyXG4gICAgICAgIC8vIHRoZXJlYnkgcHJldmVudGluZyBpdCBmcm9tIGJlaW5nIGZ1bGx5IGdhcmJhZ2UgY29sbGVjdGVkLlxyXG4gICAgICAgIGZvcmdldENoaWxkcmVuKHRoaXMpO1xyXG4gICAgICAgIC8vIEJlY2F1c2UgdGhpcyBlbnRyeSBoYXMgYmVlbiBraWNrZWQgb3V0IG9mIHRoZSBjYWNoZSAoaW4gaW5kZXguanMpLFxyXG4gICAgICAgIC8vIHdlJ3ZlIGxvc3QgdGhlIGFiaWxpdHkgdG8gZmluZCBvdXQgaWYvd2hlbiB0aGlzIGVudHJ5IGJlY29tZXMgZGlydHksXHJcbiAgICAgICAgLy8gd2hldGhlciB0aGF0IGhhcHBlbnMgdGhyb3VnaCBhIHN1YnNjcmlwdGlvbiwgYmVjYXVzZSBvZiBhIGRpcmVjdCBjYWxsXHJcbiAgICAgICAgLy8gdG8gZW50cnkuc2V0RGlydHkoKSwgb3IgYmVjYXVzZSBvbmUgb2YgaXRzIGNoaWxkcmVuIGJlY29tZXMgZGlydHkuXHJcbiAgICAgICAgLy8gQmVjYXVzZSBvZiB0aGlzIGxvc3Mgb2YgZnV0dXJlIGluZm9ybWF0aW9uLCB3ZSBoYXZlIHRvIGFzc3VtZSB0aGVcclxuICAgICAgICAvLyB3b3JzdCAodGhhdCB0aGlzIGVudHJ5IG1pZ2h0IGhhdmUgYmVjb21lIGRpcnR5IHZlcnkgc29vbiksIHNvIHdlIG11c3RcclxuICAgICAgICAvLyBpbW1lZGlhdGVseSBtYXJrIHRoaXMgZW50cnkncyBwYXJlbnRzIGFzIGRpcnR5LiBOb3JtYWxseSB3ZSBjb3VsZFxyXG4gICAgICAgIC8vIGp1c3QgY2FsbCBlbnRyeS5zZXREaXJ0eSgpIHJhdGhlciB0aGFuIGNhbGxpbmcgcGFyZW50LnNldERpcnR5KCkgZm9yXHJcbiAgICAgICAgLy8gZWFjaCBwYXJlbnQsIGJ1dCB0aGF0IHdvdWxkIGxlYXZlIHRoaXMgZW50cnkgaW4gcGFyZW50LmNoaWxkVmFsdWVzXHJcbiAgICAgICAgLy8gYW5kIHBhcmVudC5kaXJ0eUNoaWxkcmVuLCB3aGljaCB3b3VsZCBwcmV2ZW50IHRoZSBjaGlsZCBmcm9tIGJlaW5nXHJcbiAgICAgICAgLy8gdHJ1bHkgZm9yZ290dGVuLlxyXG4gICAgICAgIGVhY2hQYXJlbnQodGhpcywgZnVuY3Rpb24gKHBhcmVudCwgY2hpbGQpIHtcclxuICAgICAgICAgICAgcGFyZW50LnNldERpcnR5KCk7XHJcbiAgICAgICAgICAgIGZvcmdldENoaWxkKHBhcmVudCwgX3RoaXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIEVudHJ5LnByb3RvdHlwZS5mb3JnZXQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgLy8gVGhlIGNvZGUgdGhhdCBjcmVhdGVzIEVudHJ5IG9iamVjdHMgaW4gaW5kZXgudHMgd2lsbCByZXBsYWNlIHRoaXMgbWV0aG9kXHJcbiAgICAgICAgLy8gd2l0aCBvbmUgdGhhdCBhY3R1YWxseSByZW1vdmVzIHRoZSBFbnRyeSBmcm9tIHRoZSBjYWNoZSwgd2hpY2ggd2lsbCBhbHNvXHJcbiAgICAgICAgLy8gdHJpZ2dlciB0aGUgZW50cnkuZGlzcG9zZSBtZXRob2QuXHJcbiAgICAgICAgdGhpcy5kaXNwb3NlKCk7XHJcbiAgICB9O1xyXG4gICAgRW50cnkucHJvdG90eXBlLmRlcGVuZE9uID0gZnVuY3Rpb24gKGRlcCkge1xyXG4gICAgICAgIGRlcC5hZGQodGhpcyk7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRlcHMpIHtcclxuICAgICAgICAgICAgdGhpcy5kZXBzID0gZW1wdHlTZXRQb29sLnBvcCgpIHx8IG5ldyBTZXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kZXBzLmFkZChkZXApO1xyXG4gICAgfTtcclxuICAgIEVudHJ5LnByb3RvdHlwZS5mb3JnZXREZXBzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgaWYgKHRoaXMuZGVwcykge1xyXG4gICAgICAgICAgICB0b0FycmF5KHRoaXMuZGVwcykuZm9yRWFjaChmdW5jdGlvbiAoZGVwKSB7IHJldHVybiBkZXAuZGVsZXRlKF90aGlzKTsgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGVwcy5jbGVhcigpO1xyXG4gICAgICAgICAgICBlbXB0eVNldFBvb2wucHVzaCh0aGlzLmRlcHMpO1xyXG4gICAgICAgICAgICB0aGlzLmRlcHMgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBFbnRyeS5jb3VudCA9IDA7XHJcbiAgICByZXR1cm4gRW50cnk7XHJcbn0oKSk7XHJcbmZ1bmN0aW9uIHJlbWVtYmVyUGFyZW50KGNoaWxkKSB7XHJcbiAgICB2YXIgcGFyZW50ID0gcGFyZW50RW50cnlTbG90LmdldFZhbHVlKCk7XHJcbiAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgY2hpbGQucGFyZW50cy5hZGQocGFyZW50KTtcclxuICAgICAgICBpZiAoIXBhcmVudC5jaGlsZFZhbHVlcy5oYXMoY2hpbGQpKSB7XHJcbiAgICAgICAgICAgIHBhcmVudC5jaGlsZFZhbHVlcy5zZXQoY2hpbGQsIFtdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1pZ2h0QmVEaXJ0eShjaGlsZCkpIHtcclxuICAgICAgICAgICAgcmVwb3J0RGlydHlDaGlsZChwYXJlbnQsIGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJlcG9ydENsZWFuQ2hpbGQocGFyZW50LCBjaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwYXJlbnQ7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gcmVhbGx5UmVjb21wdXRlKGVudHJ5LCBhcmdzKSB7XHJcbiAgICBmb3JnZXRDaGlsZHJlbihlbnRyeSk7XHJcbiAgICAvLyBTZXQgZW50cnkgYXMgdGhlIHBhcmVudCBlbnRyeSB3aGlsZSBjYWxsaW5nIHJlY29tcHV0ZU5ld1ZhbHVlKGVudHJ5KS5cclxuICAgIHBhcmVudEVudHJ5U2xvdC53aXRoVmFsdWUoZW50cnksIHJlY29tcHV0ZU5ld1ZhbHVlLCBbZW50cnksIGFyZ3NdKTtcclxuICAgIGlmIChtYXliZVN1YnNjcmliZShlbnRyeSwgYXJncykpIHtcclxuICAgICAgICAvLyBJZiB3ZSBzdWNjZXNzZnVsbHkgcmVjb21wdXRlZCBlbnRyeS52YWx1ZSBhbmQgZGlkIG5vdCBmYWlsIHRvXHJcbiAgICAgICAgLy8gKHJlKXN1YnNjcmliZSwgdGhlbiB0aGlzIEVudHJ5IGlzIG5vIGxvbmdlciBleHBsaWNpdGx5IGRpcnR5LlxyXG4gICAgICAgIHNldENsZWFuKGVudHJ5KTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZUdldChlbnRyeS52YWx1ZSk7XHJcbn1cclxuZnVuY3Rpb24gcmVjb21wdXRlTmV3VmFsdWUoZW50cnksIGFyZ3MpIHtcclxuICAgIGVudHJ5LnJlY29tcHV0aW5nID0gdHJ1ZTtcclxuICAgIC8vIFNldCBlbnRyeS52YWx1ZSBhcyB1bmtub3duLlxyXG4gICAgZW50cnkudmFsdWUubGVuZ3RoID0gMDtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgLy8gSWYgZW50cnkuZm4gc3VjY2VlZHMsIGVudHJ5LnZhbHVlIHdpbGwgYmVjb21lIGEgbm9ybWFsIFZhbHVlLlxyXG4gICAgICAgIGVudHJ5LnZhbHVlWzBdID0gZW50cnkuZm4uYXBwbHkobnVsbCwgYXJncyk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgIC8vIElmIGVudHJ5LmZuIHRocm93cywgZW50cnkudmFsdWUgd2lsbCBiZWNvbWUgZXhjZXB0aW9uYWwuXHJcbiAgICAgICAgZW50cnkudmFsdWVbMV0gPSBlO1xyXG4gICAgfVxyXG4gICAgLy8gRWl0aGVyIHdheSwgdGhpcyBsaW5lIGlzIGFsd2F5cyByZWFjaGVkLlxyXG4gICAgZW50cnkucmVjb21wdXRpbmcgPSBmYWxzZTtcclxufVxyXG5mdW5jdGlvbiBtaWdodEJlRGlydHkoZW50cnkpIHtcclxuICAgIHJldHVybiBlbnRyeS5kaXJ0eSB8fCAhIShlbnRyeS5kaXJ0eUNoaWxkcmVuICYmIGVudHJ5LmRpcnR5Q2hpbGRyZW4uc2l6ZSk7XHJcbn1cclxuZnVuY3Rpb24gc2V0Q2xlYW4oZW50cnkpIHtcclxuICAgIGVudHJ5LmRpcnR5ID0gZmFsc2U7XHJcbiAgICBpZiAobWlnaHRCZURpcnR5KGVudHJ5KSkge1xyXG4gICAgICAgIC8vIFRoaXMgRW50cnkgbWF5IHN0aWxsIGhhdmUgZGlydHkgY2hpbGRyZW4sIGluIHdoaWNoIGNhc2Ugd2UgY2FuJ3RcclxuICAgICAgICAvLyBsZXQgb3VyIHBhcmVudHMga25vdyB3ZSdyZSBjbGVhbiBqdXN0IHlldC5cclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICByZXBvcnRDbGVhbihlbnRyeSk7XHJcbn1cclxuZnVuY3Rpb24gcmVwb3J0RGlydHkoY2hpbGQpIHtcclxuICAgIGVhY2hQYXJlbnQoY2hpbGQsIHJlcG9ydERpcnR5Q2hpbGQpO1xyXG59XHJcbmZ1bmN0aW9uIHJlcG9ydENsZWFuKGNoaWxkKSB7XHJcbiAgICBlYWNoUGFyZW50KGNoaWxkLCByZXBvcnRDbGVhbkNoaWxkKTtcclxufVxyXG5mdW5jdGlvbiBlYWNoUGFyZW50KGNoaWxkLCBjYWxsYmFjaykge1xyXG4gICAgdmFyIHBhcmVudENvdW50ID0gY2hpbGQucGFyZW50cy5zaXplO1xyXG4gICAgaWYgKHBhcmVudENvdW50KSB7XHJcbiAgICAgICAgdmFyIHBhcmVudHMgPSB0b0FycmF5KGNoaWxkLnBhcmVudHMpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyZW50Q291bnQ7ICsraSkge1xyXG4gICAgICAgICAgICBjYWxsYmFjayhwYXJlbnRzW2ldLCBjaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbi8vIExldCBhIHBhcmVudCBFbnRyeSBrbm93IHRoYXQgb25lIG9mIGl0cyBjaGlsZHJlbiBtYXkgYmUgZGlydHkuXHJcbmZ1bmN0aW9uIHJlcG9ydERpcnR5Q2hpbGQocGFyZW50LCBjaGlsZCkge1xyXG4gICAgLy8gTXVzdCBoYXZlIGNhbGxlZCByZW1lbWJlclBhcmVudChjaGlsZCkgYmVmb3JlIGNhbGxpbmdcclxuICAgIC8vIHJlcG9ydERpcnR5Q2hpbGQocGFyZW50LCBjaGlsZCkuXHJcbiAgICBhc3NlcnQocGFyZW50LmNoaWxkVmFsdWVzLmhhcyhjaGlsZCkpO1xyXG4gICAgYXNzZXJ0KG1pZ2h0QmVEaXJ0eShjaGlsZCkpO1xyXG4gICAgdmFyIHBhcmVudFdhc0NsZWFuID0gIW1pZ2h0QmVEaXJ0eShwYXJlbnQpO1xyXG4gICAgaWYgKCFwYXJlbnQuZGlydHlDaGlsZHJlbikge1xyXG4gICAgICAgIHBhcmVudC5kaXJ0eUNoaWxkcmVuID0gZW1wdHlTZXRQb29sLnBvcCgpIHx8IG5ldyBTZXQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChwYXJlbnQuZGlydHlDaGlsZHJlbi5oYXMoY2hpbGQpKSB7XHJcbiAgICAgICAgLy8gSWYgd2UgYWxyZWFkeSBrbm93IHRoaXMgY2hpbGQgaXMgZGlydHksIHRoZW4gd2UgbXVzdCBoYXZlIGFscmVhZHlcclxuICAgICAgICAvLyBpbmZvcm1lZCBvdXIgb3duIHBhcmVudHMgdGhhdCB3ZSBhcmUgZGlydHksIHNvIHdlIGNhbiB0ZXJtaW5hdGVcclxuICAgICAgICAvLyB0aGUgcmVjdXJzaW9uIGVhcmx5LlxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHBhcmVudC5kaXJ0eUNoaWxkcmVuLmFkZChjaGlsZCk7XHJcbiAgICAvLyBJZiBwYXJlbnQgd2FzIGNsZWFuIGJlZm9yZSwgaXQganVzdCBiZWNhbWUgKHBvc3NpYmx5KSBkaXJ0eSAoYWNjb3JkaW5nIHRvXHJcbiAgICAvLyBtaWdodEJlRGlydHkpLCBzaW5jZSB3ZSBqdXN0IGFkZGVkIGNoaWxkIHRvIHBhcmVudC5kaXJ0eUNoaWxkcmVuLlxyXG4gICAgaWYgKHBhcmVudFdhc0NsZWFuKSB7XHJcbiAgICAgICAgcmVwb3J0RGlydHkocGFyZW50KTtcclxuICAgIH1cclxufVxyXG4vLyBMZXQgYSBwYXJlbnQgRW50cnkga25vdyB0aGF0IG9uZSBvZiBpdHMgY2hpbGRyZW4gaXMgbm8gbG9uZ2VyIGRpcnR5LlxyXG5mdW5jdGlvbiByZXBvcnRDbGVhbkNoaWxkKHBhcmVudCwgY2hpbGQpIHtcclxuICAgIC8vIE11c3QgaGF2ZSBjYWxsZWQgcmVtZW1iZXJDaGlsZChjaGlsZCkgYmVmb3JlIGNhbGxpbmdcclxuICAgIC8vIHJlcG9ydENsZWFuQ2hpbGQocGFyZW50LCBjaGlsZCkuXHJcbiAgICBhc3NlcnQocGFyZW50LmNoaWxkVmFsdWVzLmhhcyhjaGlsZCkpO1xyXG4gICAgYXNzZXJ0KCFtaWdodEJlRGlydHkoY2hpbGQpKTtcclxuICAgIHZhciBjaGlsZFZhbHVlID0gcGFyZW50LmNoaWxkVmFsdWVzLmdldChjaGlsZCk7XHJcbiAgICBpZiAoY2hpbGRWYWx1ZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICBwYXJlbnQuY2hpbGRWYWx1ZXMuc2V0KGNoaWxkLCB2YWx1ZUNvcHkoY2hpbGQudmFsdWUpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKCF2YWx1ZUlzKGNoaWxkVmFsdWUsIGNoaWxkLnZhbHVlKSkge1xyXG4gICAgICAgIHBhcmVudC5zZXREaXJ0eSgpO1xyXG4gICAgfVxyXG4gICAgcmVtb3ZlRGlydHlDaGlsZChwYXJlbnQsIGNoaWxkKTtcclxuICAgIGlmIChtaWdodEJlRGlydHkocGFyZW50KSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHJlcG9ydENsZWFuKHBhcmVudCk7XHJcbn1cclxuZnVuY3Rpb24gcmVtb3ZlRGlydHlDaGlsZChwYXJlbnQsIGNoaWxkKSB7XHJcbiAgICB2YXIgZGMgPSBwYXJlbnQuZGlydHlDaGlsZHJlbjtcclxuICAgIGlmIChkYykge1xyXG4gICAgICAgIGRjLmRlbGV0ZShjaGlsZCk7XHJcbiAgICAgICAgaWYgKGRjLnNpemUgPT09IDApIHtcclxuICAgICAgICAgICAgaWYgKGVtcHR5U2V0UG9vbC5sZW5ndGggPCBQT09MX1RBUkdFVF9TSVpFKSB7XHJcbiAgICAgICAgICAgICAgICBlbXB0eVNldFBvb2wucHVzaChkYyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcGFyZW50LmRpcnR5Q2hpbGRyZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4vLyBSZW1vdmVzIGFsbCBjaGlsZHJlbiBmcm9tIHRoaXMgZW50cnkgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlXHJcbi8vIHJlbW92ZWQgY2hpbGRyZW4uXHJcbmZ1bmN0aW9uIGZvcmdldENoaWxkcmVuKHBhcmVudCkge1xyXG4gICAgaWYgKHBhcmVudC5jaGlsZFZhbHVlcy5zaXplID4gMCkge1xyXG4gICAgICAgIHBhcmVudC5jaGlsZFZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uIChfdmFsdWUsIGNoaWxkKSB7XHJcbiAgICAgICAgICAgIGZvcmdldENoaWxkKHBhcmVudCwgY2hpbGQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLy8gUmVtb3ZlIHRoaXMgcGFyZW50IEVudHJ5IGZyb20gYW55IHNldHMgdG8gd2hpY2ggaXQgd2FzIGFkZGVkIGJ5IHRoZVxyXG4gICAgLy8gYWRkVG9TZXQgbWV0aG9kLlxyXG4gICAgcGFyZW50LmZvcmdldERlcHMoKTtcclxuICAgIC8vIEFmdGVyIHdlIGZvcmdldCBhbGwgb3VyIGNoaWxkcmVuLCB0aGlzLmRpcnR5Q2hpbGRyZW4gbXVzdCBiZSBlbXB0eVxyXG4gICAgLy8gYW5kIHRoZXJlZm9yZSBtdXN0IGhhdmUgYmVlbiByZXNldCB0byBudWxsLlxyXG4gICAgYXNzZXJ0KHBhcmVudC5kaXJ0eUNoaWxkcmVuID09PSBudWxsKTtcclxufVxyXG5mdW5jdGlvbiBmb3JnZXRDaGlsZChwYXJlbnQsIGNoaWxkKSB7XHJcbiAgICBjaGlsZC5wYXJlbnRzLmRlbGV0ZShwYXJlbnQpO1xyXG4gICAgcGFyZW50LmNoaWxkVmFsdWVzLmRlbGV0ZShjaGlsZCk7XHJcbiAgICByZW1vdmVEaXJ0eUNoaWxkKHBhcmVudCwgY2hpbGQpO1xyXG59XHJcbmZ1bmN0aW9uIG1heWJlU3Vic2NyaWJlKGVudHJ5LCBhcmdzKSB7XHJcbiAgICBpZiAodHlwZW9mIGVudHJ5LnN1YnNjcmliZSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbWF5YmVVbnN1YnNjcmliZShlbnRyeSk7IC8vIFByZXZlbnQgZG91YmxlIHN1YnNjcmlwdGlvbnMuXHJcbiAgICAgICAgICAgIGVudHJ5LnVuc3Vic2NyaWJlID0gZW50cnkuc3Vic2NyaWJlLmFwcGx5KG51bGwsIGFyZ3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAvLyBJZiB0aGlzIEVudHJ5IGhhcyBhIHN1YnNjcmliZSBmdW5jdGlvbiBhbmQgaXQgdGhyZXcgYW4gZXhjZXB0aW9uXHJcbiAgICAgICAgICAgIC8vIChvciBhbiB1bnN1YnNjcmliZSBmdW5jdGlvbiBpdCBwcmV2aW91c2x5IHJldHVybmVkIG5vdyB0aHJvd3MpLFxyXG4gICAgICAgICAgICAvLyByZXR1cm4gZmFsc2UgdG8gaW5kaWNhdGUgdGhhdCB3ZSB3ZXJlIG5vdCBhYmxlIHRvIHN1YnNjcmliZSAob3JcclxuICAgICAgICAgICAgLy8gdW5zdWJzY3JpYmUpLCBhbmQgdGhpcyBFbnRyeSBzaG91bGQgcmVtYWluIGRpcnR5LlxyXG4gICAgICAgICAgICBlbnRyeS5zZXREaXJ0eSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gUmV0dXJuaW5nIHRydWUgaW5kaWNhdGVzIGVpdGhlciB0aGF0IHRoZXJlIHdhcyBubyBlbnRyeS5zdWJzY3JpYmVcclxuICAgIC8vIGZ1bmN0aW9uIG9yIHRoYXQgaXQgc3VjY2VlZGVkLlxyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cblxudmFyIEVudHJ5TWV0aG9kcyA9IHtcclxuICAgIHNldERpcnR5OiB0cnVlLFxyXG4gICAgZGlzcG9zZTogdHJ1ZSxcclxuICAgIGZvcmdldDogdHJ1ZSxcclxufTtcclxuZnVuY3Rpb24gZGVwKG9wdGlvbnMpIHtcclxuICAgIHZhciBkZXBzQnlLZXkgPSBuZXcgTWFwKCk7XHJcbiAgICB2YXIgc3Vic2NyaWJlID0gb3B0aW9ucyAmJiBvcHRpb25zLnN1YnNjcmliZTtcclxuICAgIGZ1bmN0aW9uIGRlcGVuZChrZXkpIHtcclxuICAgICAgICB2YXIgcGFyZW50ID0gcGFyZW50RW50cnlTbG90LmdldFZhbHVlKCk7XHJcbiAgICAgICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgICAgICB2YXIgZGVwXzEgPSBkZXBzQnlLZXkuZ2V0KGtleSk7XHJcbiAgICAgICAgICAgIGlmICghZGVwXzEpIHtcclxuICAgICAgICAgICAgICAgIGRlcHNCeUtleS5zZXQoa2V5LCBkZXBfMSA9IG5ldyBTZXQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHBhcmVudC5kZXBlbmRPbihkZXBfMSk7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3Vic2NyaWJlID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgICAgIG1heWJlVW5zdWJzY3JpYmUoZGVwXzEpO1xyXG4gICAgICAgICAgICAgICAgZGVwXzEudW5zdWJzY3JpYmUgPSBzdWJzY3JpYmUoa2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGRlcGVuZC5kaXJ0eSA9IGZ1bmN0aW9uIGRpcnR5KGtleSwgZW50cnlNZXRob2ROYW1lKSB7XHJcbiAgICAgICAgdmFyIGRlcCA9IGRlcHNCeUtleS5nZXQoa2V5KTtcclxuICAgICAgICBpZiAoZGVwKSB7XHJcbiAgICAgICAgICAgIHZhciBtXzEgPSAoZW50cnlNZXRob2ROYW1lICYmXHJcbiAgICAgICAgICAgICAgICBoYXNPd25Qcm9wZXJ0eS5jYWxsKEVudHJ5TWV0aG9kcywgZW50cnlNZXRob2ROYW1lKSkgPyBlbnRyeU1ldGhvZE5hbWUgOiBcInNldERpcnR5XCI7XHJcbiAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gdXNlIHRvQXJyYXkoZGVwKS5mb3JFYWNoIGluc3RlYWQgb2YgZGVwLmZvckVhY2gsIGJlY2F1c2VcclxuICAgICAgICAgICAgLy8gbW9kaWZ5aW5nIGEgU2V0IHdoaWxlIGl0ZXJhdGluZyBvdmVyIGl0IGNhbiBjYXVzZSBlbGVtZW50cyBpbiB0aGUgU2V0XHJcbiAgICAgICAgICAgIC8vIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgU2V0IGJlZm9yZSB0aGV5J3ZlIGJlZW4gaXRlcmF0ZWQgb3Zlci5cclxuICAgICAgICAgICAgdG9BcnJheShkZXApLmZvckVhY2goZnVuY3Rpb24gKGVudHJ5KSB7IHJldHVybiBlbnRyeVttXzFdKCk7IH0pO1xyXG4gICAgICAgICAgICBkZXBzQnlLZXkuZGVsZXRlKGtleSk7XHJcbiAgICAgICAgICAgIG1heWJlVW5zdWJzY3JpYmUoZGVwKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGRlcGVuZDtcclxufVxuXG5mdW5jdGlvbiBtYWtlRGVmYXVsdE1ha2VDYWNoZUtleUZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIGtleVRyaWUgPSBuZXcgVHJpZSh0eXBlb2YgV2Vha01hcCA9PT0gXCJmdW5jdGlvblwiKTtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIGtleVRyaWUubG9va3VwQXJyYXkoYXJndW1lbnRzKTtcclxuICAgIH07XHJcbn1cclxuLy8gVGhlIGRlZmF1bHRNYWtlQ2FjaGVLZXkgZnVuY3Rpb24gaXMgcmVtYXJrYWJseSBwb3dlcmZ1bCwgYmVjYXVzZSBpdCBnaXZlc1xyXG4vLyBhIHVuaXF1ZSBvYmplY3QgZm9yIGFueSBzaGFsbG93LWlkZW50aWNhbCBsaXN0IG9mIGFyZ3VtZW50cy4gSWYgeW91IG5lZWRcclxuLy8gdG8gaW1wbGVtZW50IGEgY3VzdG9tIG1ha2VDYWNoZUtleSBmdW5jdGlvbiwgeW91IG1heSBmaW5kIGl0IGhlbHBmdWwgdG9cclxuLy8gZGVsZWdhdGUgdGhlIGZpbmFsIHdvcmsgdG8gZGVmYXVsdE1ha2VDYWNoZUtleSwgd2hpY2ggaXMgd2h5IHdlIGV4cG9ydCBpdFxyXG4vLyBoZXJlLiBIb3dldmVyLCB5b3UgbWF5IHdhbnQgdG8gYXZvaWQgZGVmYXVsdE1ha2VDYWNoZUtleSBpZiB5b3VyIHJ1bnRpbWVcclxuLy8gZG9lcyBub3Qgc3VwcG9ydCBXZWFrTWFwLCBvciB5b3UgaGF2ZSB0aGUgYWJpbGl0eSB0byByZXR1cm4gYSBzdHJpbmcga2V5LlxyXG4vLyBJbiB0aG9zZSBjYXNlcywganVzdCB3cml0ZSB5b3VyIG93biBjdXN0b20gbWFrZUNhY2hlS2V5IGZ1bmN0aW9ucy5cclxudmFyIGRlZmF1bHRNYWtlQ2FjaGVLZXkgPSBtYWtlRGVmYXVsdE1ha2VDYWNoZUtleUZ1bmN0aW9uKCk7XHJcbnZhciBjYWNoZXMgPSBuZXcgU2V0KCk7XHJcbmZ1bmN0aW9uIHdyYXAob3JpZ2luYWxGdW5jdGlvbiwgb3B0aW9ucykge1xyXG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTsgfVxyXG4gICAgdmFyIGNhY2hlID0gbmV3IENhY2hlKG9wdGlvbnMubWF4IHx8IE1hdGgucG93KDIsIDE2KSwgZnVuY3Rpb24gKGVudHJ5KSB7IHJldHVybiBlbnRyeS5kaXNwb3NlKCk7IH0pO1xyXG4gICAgdmFyIGtleUFyZ3MgPSBvcHRpb25zLmtleUFyZ3M7XHJcbiAgICB2YXIgbWFrZUNhY2hlS2V5ID0gb3B0aW9ucy5tYWtlQ2FjaGVLZXkgfHxcclxuICAgICAgICBtYWtlRGVmYXVsdE1ha2VDYWNoZUtleUZ1bmN0aW9uKCk7XHJcbiAgICB2YXIgb3B0aW1pc3RpYyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIga2V5ID0gbWFrZUNhY2hlS2V5LmFwcGx5KG51bGwsIGtleUFyZ3MgPyBrZXlBcmdzLmFwcGx5KG51bGwsIGFyZ3VtZW50cykgOiBhcmd1bWVudHMpO1xyXG4gICAgICAgIGlmIChrZXkgPT09IHZvaWQgMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxGdW5jdGlvbi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgZW50cnkgPSBjYWNoZS5nZXQoa2V5KTtcclxuICAgICAgICBpZiAoIWVudHJ5KSB7XHJcbiAgICAgICAgICAgIGNhY2hlLnNldChrZXksIGVudHJ5ID0gbmV3IEVudHJ5KG9yaWdpbmFsRnVuY3Rpb24pKTtcclxuICAgICAgICAgICAgZW50cnkuc3Vic2NyaWJlID0gb3B0aW9ucy5zdWJzY3JpYmU7XHJcbiAgICAgICAgICAgIC8vIEdpdmUgdGhlIEVudHJ5IHRoZSBhYmlsaXR5IHRvIHRyaWdnZXIgY2FjaGUuZGVsZXRlKGtleSksIGV2ZW4gdGhvdWdoXHJcbiAgICAgICAgICAgIC8vIHRoZSBFbnRyeSBpdHNlbGYgZG9lcyBub3Qga25vdyBhYm91dCBrZXkgb3IgY2FjaGUuXHJcbiAgICAgICAgICAgIGVudHJ5LmZvcmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhY2hlLmRlbGV0ZShrZXkpOyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgdmFsdWUgPSBlbnRyeS5yZWNvbXB1dGUoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7XHJcbiAgICAgICAgLy8gTW92ZSB0aGlzIGVudHJ5IHRvIHRoZSBmcm9udCBvZiB0aGUgbGVhc3QtcmVjZW50bHkgdXNlZCBxdWV1ZSxcclxuICAgICAgICAvLyBzaW5jZSB3ZSBqdXN0IGZpbmlzaGVkIGNvbXB1dGluZyBpdHMgdmFsdWUuXHJcbiAgICAgICAgY2FjaGUuc2V0KGtleSwgZW50cnkpO1xyXG4gICAgICAgIGNhY2hlcy5hZGQoY2FjaGUpO1xyXG4gICAgICAgIC8vIENsZWFuIHVwIGFueSBleGNlc3MgZW50cmllcyBpbiB0aGUgY2FjaGUsIGJ1dCBvbmx5IGlmIHRoZXJlIGlzIG5vXHJcbiAgICAgICAgLy8gYWN0aXZlIHBhcmVudCBlbnRyeSwgbWVhbmluZyB3ZSdyZSBub3QgaW4gdGhlIG1pZGRsZSBvZiBhIGxhcmdlclxyXG4gICAgICAgIC8vIGNvbXB1dGF0aW9uIHRoYXQgbWlnaHQgYmUgZmx1bW1veGVkIGJ5IHRoZSBjbGVhbmluZy5cclxuICAgICAgICBpZiAoIXBhcmVudEVudHJ5U2xvdC5oYXNWYWx1ZSgpKSB7XHJcbiAgICAgICAgICAgIGNhY2hlcy5mb3JFYWNoKGZ1bmN0aW9uIChjYWNoZSkgeyByZXR1cm4gY2FjaGUuY2xlYW4oKTsgfSk7XHJcbiAgICAgICAgICAgIGNhY2hlcy5jbGVhcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9O1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9wdGltaXN0aWMsIFwic2l6ZVwiLCB7XHJcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjYWNoZVtcIm1hcFwiXS5zaXplO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcclxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcclxuICAgIH0pO1xyXG4gICAgZnVuY3Rpb24gZGlydHlLZXkoa2V5KSB7XHJcbiAgICAgICAgdmFyIGVudHJ5ID0gY2FjaGUuZ2V0KGtleSk7XHJcbiAgICAgICAgaWYgKGVudHJ5KSB7XHJcbiAgICAgICAgICAgIGVudHJ5LnNldERpcnR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgb3B0aW1pc3RpYy5kaXJ0eUtleSA9IGRpcnR5S2V5O1xyXG4gICAgb3B0aW1pc3RpYy5kaXJ0eSA9IGZ1bmN0aW9uIGRpcnR5KCkge1xyXG4gICAgICAgIGRpcnR5S2V5KG1ha2VDYWNoZUtleS5hcHBseShudWxsLCBhcmd1bWVudHMpKTtcclxuICAgIH07XHJcbiAgICBmdW5jdGlvbiBwZWVrS2V5KGtleSkge1xyXG4gICAgICAgIHZhciBlbnRyeSA9IGNhY2hlLmdldChrZXkpO1xyXG4gICAgICAgIGlmIChlbnRyeSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZW50cnkucGVlaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG9wdGltaXN0aWMucGVla0tleSA9IHBlZWtLZXk7XHJcbiAgICBvcHRpbWlzdGljLnBlZWsgPSBmdW5jdGlvbiBwZWVrKCkge1xyXG4gICAgICAgIHJldHVybiBwZWVrS2V5KG1ha2VDYWNoZUtleS5hcHBseShudWxsLCBhcmd1bWVudHMpKTtcclxuICAgIH07XHJcbiAgICBmdW5jdGlvbiBmb3JnZXRLZXkoa2V5KSB7XHJcbiAgICAgICAgcmV0dXJuIGNhY2hlLmRlbGV0ZShrZXkpO1xyXG4gICAgfVxyXG4gICAgb3B0aW1pc3RpYy5mb3JnZXRLZXkgPSBmb3JnZXRLZXk7XHJcbiAgICBvcHRpbWlzdGljLmZvcmdldCA9IGZ1bmN0aW9uIGZvcmdldCgpIHtcclxuICAgICAgICByZXR1cm4gZm9yZ2V0S2V5KG1ha2VDYWNoZUtleS5hcHBseShudWxsLCBhcmd1bWVudHMpKTtcclxuICAgIH07XHJcbiAgICBvcHRpbWlzdGljLm1ha2VDYWNoZUtleSA9IG1ha2VDYWNoZUtleTtcclxuICAgIG9wdGltaXN0aWMuZ2V0S2V5ID0ga2V5QXJncyA/IGZ1bmN0aW9uIGdldEtleSgpIHtcclxuICAgICAgICByZXR1cm4gbWFrZUNhY2hlS2V5LmFwcGx5KG51bGwsIGtleUFyZ3MuYXBwbHkobnVsbCwgYXJndW1lbnRzKSk7XHJcbiAgICB9IDogbWFrZUNhY2hlS2V5O1xyXG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUob3B0aW1pc3RpYyk7XHJcbn1cblxuZXhwb3J0IHsgZGVmYXVsdE1ha2VDYWNoZUtleSwgZGVwLCB3cmFwIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1idW5kbGUuZXNtLmpzLm1hcFxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/optimism/lib/bundle.esm.js\n");
 
/***/ }),
 
/***/ "./node_modules/prop-types/checkPropTypes.js":
/*!***************************************************!*\
  !*** ./node_modules/prop-types/checkPropTypes.js ***!
  \***************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
 
"use strict";
eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar printWarning = function() {};\n\nif (true) {\n  var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ \"./node_modules/prop-types/lib/ReactPropTypesSecret.js\");\n  var loggedTypeFailures = {};\n  var has = __webpack_require__(/*! ./lib/has */ \"./node_modules/prop-types/lib/has.js\");\n\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) { /**/ }\n  };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n  if (true) {\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error;\n        // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            var err = Error(\n              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n              'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n            );\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n        } catch (ex) {\n          error = ex;\n        }\n        if (error && !(error instanceof Error)) {\n          printWarning(\n            (componentName || 'React class') + ': type specification of ' +\n            location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n            'You may have forgotten to pass an argument to the type checker ' +\n            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n            'shape all require an argument).'\n          );\n        }\n        if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error.message] = true;\n\n          var stack = getStack ? getStack() : '';\n\n          printWarning(\n            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n          );\n        }\n      }\n    }\n  }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n  if (true) {\n    loggedTypeFailures = {};\n  }\n}\n\nmodule.exports = checkPropTypes;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9jaGVja1Byb3BUeXBlcy5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7O0FBRWI7O0FBRUEsSUFBSSxJQUFxQztBQUN6Qyw2QkFBNkIsbUJBQU8sQ0FBQyx5RkFBNEI7QUFDakU7QUFDQSxZQUFZLG1CQUFPLENBQUMsdURBQVc7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxZQUFZO0FBQ2xCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxXQUFXO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBLE1BQU0sSUFBcUM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZHQUE2RztBQUM3RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTREO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxJQUFxQztBQUMzQztBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvY2hlY2tQcm9wVHlwZXMuanM/MjYyNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uKCkge307XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG4gIHZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcbiAgdmFyIGhhcyA9IHJlcXVpcmUoJy4vbGliL2hhcycpO1xuXG4gIHByaW50V2FybmluZyA9IGZ1bmN0aW9uKHRleHQpIHtcbiAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICsgdGV4dDtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLVxuICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG4gICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9IGNhdGNoICh4KSB7IC8qKi8gfVxuICB9O1xufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IHRoZSB2YWx1ZXMgbWF0Y2ggd2l0aCB0aGUgdHlwZSBzcGVjcy5cbiAqIEVycm9yIG1lc3NhZ2VzIGFyZSBtZW1vcml6ZWQgYW5kIHdpbGwgb25seSBiZSBzaG93biBvbmNlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFwIG9mIG5hbWUgdG8gYSBSZWFjdFByb3BUeXBlXG4gKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNrZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuIFwicHJvcFwiLCBcImNvbnRleHRcIiwgXCJjaGlsZCBjb250ZXh0XCJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb21wb25lbnROYW1lIE5hbWUgb2YgdGhlIGNvbXBvbmVudCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gKiBAcGFyYW0gez9GdW5jdGlvbn0gZ2V0U3RhY2sgUmV0dXJucyB0aGUgY29tcG9uZW50IHN0YWNrLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCBjb21wb25lbnROYW1lLCBnZXRTdGFjaykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGZvciAodmFyIHR5cGVTcGVjTmFtZSBpbiB0eXBlU3BlY3MpIHtcbiAgICAgIGlmIChoYXModHlwZVNwZWNzLCB0eXBlU3BlY05hbWUpKSB7XG4gICAgICAgIHZhciBlcnJvcjtcbiAgICAgICAgLy8gUHJvcCB0eXBlIHZhbGlkYXRpb24gbWF5IHRocm93LiBJbiBjYXNlIHRoZXkgZG8sIHdlIGRvbid0IHdhbnQgdG9cbiAgICAgICAgLy8gZmFpbCB0aGUgcmVuZGVyIHBoYXNlIHdoZXJlIGl0IGRpZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9nIGl0LlxuICAgICAgICAvLyBBZnRlciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGFuIGludmFyaWFudCB0aGF0IGdldHMgY2F1Z2h0LiBJdCdzIHRoZSBzYW1lXG4gICAgICAgICAgLy8gYmVoYXZpb3IgYXMgd2l0aG91dCB0aGlzIHN0YXRlbWVudCBleGNlcHQgd2l0aCBhIGJldHRlciBtZXNzYWdlLlxuICAgICAgICAgIGlmICh0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhciBlcnIgPSBFcnJvcihcbiAgICAgICAgICAgICAgKGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJykgKyAnOiAnICsgbG9jYXRpb24gKyAnIHR5cGUgYCcgKyB0eXBlU3BlY05hbWUgKyAnYCBpcyBpbnZhbGlkOyAnICtcbiAgICAgICAgICAgICAgJ2l0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tIHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZSwgYnV0IHJlY2VpdmVkIGAnICsgdHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdICsgJ2AuJyArXG4gICAgICAgICAgICAgICdUaGlzIG9mdGVuIGhhcHBlbnMgYmVjYXVzZSBvZiB0eXBvcyBzdWNoIGFzIGBQcm9wVHlwZXMuZnVuY3Rpb25gIGluc3RlYWQgb2YgYFByb3BUeXBlcy5mdW5jYC4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVycm9yID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXJyb3IgPSBleDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3IgJiYgIShlcnJvciBpbnN0YW5jZW9mIEVycm9yKSkge1xuICAgICAgICAgIHByaW50V2FybmluZyhcbiAgICAgICAgICAgIChjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycpICsgJzogdHlwZSBzcGVjaWZpY2F0aW9uIG9mICcgK1xuICAgICAgICAgICAgbG9jYXRpb24gKyAnIGAnICsgdHlwZVNwZWNOYW1lICsgJ2AgaXMgaW52YWxpZDsgdGhlIHR5cGUgY2hlY2tlciAnICtcbiAgICAgICAgICAgICdmdW5jdGlvbiBtdXN0IHJldHVybiBgbnVsbGAgb3IgYW4gYEVycm9yYCBidXQgcmV0dXJuZWQgYSAnICsgdHlwZW9mIGVycm9yICsgJy4gJyArXG4gICAgICAgICAgICAnWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyArXG4gICAgICAgICAgICAnY3JlYXRvciAoYXJyYXlPZiwgaW5zdGFuY2VPZiwgb2JqZWN0T2YsIG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICtcbiAgICAgICAgICAgICdzaGFwZSBhbGwgcmVxdWlyZSBhbiBhcmd1bWVudCkuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgIShlcnJvci5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHtcbiAgICAgICAgICAvLyBPbmx5IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0aGVyZSB0ZW5kcyB0byBiZSBhIGxvdCBvZiB0aGVcbiAgICAgICAgICAvLyBzYW1lIGVycm9yLlxuICAgICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvci5tZXNzYWdlXSA9IHRydWU7XG5cbiAgICAgICAgICB2YXIgc3RhY2sgPSBnZXRTdGFjayA/IGdldFN0YWNrKCkgOiAnJztcblxuICAgICAgICAgIHByaW50V2FybmluZyhcbiAgICAgICAgICAgICdGYWlsZWQgJyArIGxvY2F0aW9uICsgJyB0eXBlOiAnICsgZXJyb3IubWVzc2FnZSArIChzdGFjayAhPSBudWxsID8gc3RhY2sgOiAnJylcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVzZXRzIHdhcm5pbmcgY2FjaGUgd2hlbiB0ZXN0aW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNoZWNrUHJvcFR5cGVzLnJlc2V0V2FybmluZ0NhY2hlID0gZnVuY3Rpb24oKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjaGVja1Byb3BUeXBlcztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/prop-types/checkPropTypes.js\n");
 
/***/ }),
 
/***/ "./node_modules/prop-types/factoryWithTypeCheckers.js":
/*!************************************************************!*\
  !*** ./node_modules/prop-types/factoryWithTypeCheckers.js ***!
  \************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
 
"use strict";
eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactIs = __webpack_require__(/*! react-is */ \"./node_modules/react-is/index.js\");\nvar assign = __webpack_require__(/*! object-assign */ \"./node_modules/next/dist/build/polyfills/object-assign.js\");\n\nvar ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ \"./node_modules/prop-types/lib/ReactPropTypesSecret.js\");\nvar has = __webpack_require__(/*! ./lib/has */ \"./node_modules/prop-types/lib/has.js\");\nvar checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ \"./node_modules/prop-types/checkPropTypes.js\");\n\nvar printWarning = function() {};\n\nif (true) {\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n  return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n  /* global Symbol */\n  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n  /**\n   * Returns the iterator method function contained on the iterable object.\n   *\n   * Be sure to invoke the function with the iterable as context:\n   *\n   *     var iteratorFn = getIteratorFn(myIterable);\n   *     if (iteratorFn) {\n   *       var iterator = iteratorFn.call(myIterable);\n   *       ...\n   *     }\n   *\n   * @param {?object} maybeIterable\n   * @return {?function}\n   */\n  function getIteratorFn(maybeIterable) {\n    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  /**\n   * Collection of methods that allow declaration and validation of props that are\n   * supplied to React components. Example usage:\n   *\n   *   var Props = require('ReactPropTypes');\n   *   var MyArticle = React.createClass({\n   *     propTypes: {\n   *       // An optional string prop named \"description\".\n   *       description: Props.string,\n   *\n   *       // A required enum prop named \"category\".\n   *       category: Props.oneOf(['News','Photos']).isRequired,\n   *\n   *       // A prop named \"dialog\" that requires an instance of Dialog.\n   *       dialog: Props.instanceOf(Dialog).isRequired\n   *     },\n   *     render: function() { ... }\n   *   });\n   *\n   * A more formal specification of how these methods are used:\n   *\n   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n   *   decl := ReactPropTypes.{type}(.isRequired)?\n   *\n   * Each and every declaration produces a function with the same signature. This\n   * allows the creation of custom validation functions. For example:\n   *\n   *  var MyLink = React.createClass({\n   *    propTypes: {\n   *      // An optional string or URI prop named \"href\".\n   *      href: function(props, propName, componentName) {\n   *        var propValue = props[propName];\n   *        if (propValue != null && typeof propValue !== 'string' &&\n   *            !(propValue instanceof URI)) {\n   *          return new Error(\n   *            'Expected a string or an URI for ' + propName + ' in ' +\n   *            componentName\n   *          );\n   *        }\n   *      }\n   *    },\n   *    render: function() {...}\n   *  });\n   *\n   * @internal\n   */\n\n  var ANONYMOUS = '<<anonymous>>';\n\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n  var ReactPropTypes = {\n    array: createPrimitiveTypeChecker('array'),\n    bigint: createPrimitiveTypeChecker('bigint'),\n    bool: createPrimitiveTypeChecker('boolean'),\n    func: createPrimitiveTypeChecker('function'),\n    number: createPrimitiveTypeChecker('number'),\n    object: createPrimitiveTypeChecker('object'),\n    string: createPrimitiveTypeChecker('string'),\n    symbol: createPrimitiveTypeChecker('symbol'),\n\n    any: createAnyTypeChecker(),\n    arrayOf: createArrayOfTypeChecker,\n    element: createElementTypeChecker(),\n    elementType: createElementTypeTypeChecker(),\n    instanceOf: createInstanceTypeChecker,\n    node: createNodeChecker(),\n    objectOf: createObjectOfTypeChecker,\n    oneOf: createEnumTypeChecker,\n    oneOfType: createUnionTypeChecker,\n    shape: createShapeTypeChecker,\n    exact: createStrictShapeTypeChecker,\n  };\n\n  /**\n   * inlined Object.is polyfill to avoid requiring consumers ship their own\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n   */\n  /*eslint-disable no-self-compare*/\n  function is(x, y) {\n    // SameValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      return x !== x && y !== y;\n    }\n  }\n  /*eslint-enable no-self-compare*/\n\n  /**\n   * We use an Error-like object for backward compatibility as people may call\n   * PropTypes directly and inspect their output. However, we don't use real\n   * Errors anymore. We don't inspect their stack anyway, and creating them\n   * is prohibitively expensive if they are created too often, such as what\n   * happens in oneOfType() for any type before the one that matched.\n   */\n  function PropTypeError(message, data) {\n    this.message = message;\n    this.data = data && typeof data === 'object' ? data: {};\n    this.stack = '';\n  }\n  // Make `instanceof Error` still work for returned errors.\n  PropTypeError.prototype = Error.prototype;\n\n  function createChainableTypeChecker(validate) {\n    if (true) {\n      var manualPropTypeCallCache = {};\n      var manualPropTypeWarningCount = 0;\n    }\n    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n      componentName = componentName || ANONYMOUS;\n      propFullName = propFullName || propName;\n\n      if (secret !== ReactPropTypesSecret) {\n        if (throwOnDirectAccess) {\n          // New behavior only for users of `prop-types` package\n          var err = new Error(\n            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n            'Use `PropTypes.checkPropTypes()` to call them. ' +\n            'Read more at http://fb.me/use-check-prop-types'\n          );\n          err.name = 'Invariant Violation';\n          throw err;\n        } else if ( true && typeof console !== 'undefined') {\n          // Old behavior for people using React.PropTypes\n          var cacheKey = componentName + ':' + propName;\n          if (\n            !manualPropTypeCallCache[cacheKey] &&\n            // Avoid spamming the console because they are often not actionable except for lib authors\n            manualPropTypeWarningCount < 3\n          ) {\n            printWarning(\n              'You are manually calling a React.PropTypes validation ' +\n              'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n              'and will throw in the standalone `prop-types` package. ' +\n              'You may be seeing this warning due to a third-party PropTypes ' +\n              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n            );\n            manualPropTypeCallCache[cacheKey] = true;\n            manualPropTypeWarningCount++;\n          }\n        }\n      }\n      if (props[propName] == null) {\n        if (isRequired) {\n          if (props[propName] === null) {\n            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n          }\n          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n        }\n        return null;\n      } else {\n        return validate(props, propName, componentName, location, propFullName);\n      }\n    }\n\n    var chainedCheckType = checkType.bind(null, false);\n    chainedCheckType.isRequired = checkType.bind(null, true);\n\n    return chainedCheckType;\n  }\n\n  function createPrimitiveTypeChecker(expectedType) {\n    function validate(props, propName, componentName, location, propFullName, secret) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== expectedType) {\n        // `propValue` being instance of, say, date/regexp, pass the 'object'\n        // check, but we can offer a more precise error message here rather than\n        // 'of type `object`'.\n        var preciseType = getPreciseType(propValue);\n\n        return new PropTypeError(\n          'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n          {expectedType: expectedType}\n        );\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createAnyTypeChecker() {\n    return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n  }\n\n  function createArrayOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n      }\n      var propValue = props[propName];\n      if (!Array.isArray(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n      }\n      for (var i = 0; i < propValue.length; i++) {\n        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n        if (error instanceof Error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!isValidElement(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!ReactIs.isValidElementType(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createInstanceTypeChecker(expectedClass) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!(props[propName] instanceof expectedClass)) {\n        var expectedClassName = expectedClass.name || ANONYMOUS;\n        var actualClassName = getClassName(props[propName]);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createEnumTypeChecker(expectedValues) {\n    if (!Array.isArray(expectedValues)) {\n      if (true) {\n        if (arguments.length > 1) {\n          printWarning(\n            'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n            'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n          );\n        } else {\n          printWarning('Invalid argument supplied to oneOf, expected an array.');\n        }\n      }\n      return emptyFunctionThatReturnsNull;\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      for (var i = 0; i < expectedValues.length; i++) {\n        if (is(propValue, expectedValues[i])) {\n          return null;\n        }\n      }\n\n      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n        var type = getPreciseType(value);\n        if (type === 'symbol') {\n          return String(value);\n        }\n        return value;\n      });\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createObjectOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n      }\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n      }\n      for (var key in propValue) {\n        if (has(propValue, key)) {\n          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n          if (error instanceof Error) {\n            return error;\n          }\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createUnionTypeChecker(arrayOfTypeCheckers) {\n    if (!Array.isArray(arrayOfTypeCheckers)) {\n       true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0;\n      return emptyFunctionThatReturnsNull;\n    }\n\n    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n      var checker = arrayOfTypeCheckers[i];\n      if (typeof checker !== 'function') {\n        printWarning(\n          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n        );\n        return emptyFunctionThatReturnsNull;\n      }\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var expectedTypes = [];\n      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n        var checker = arrayOfTypeCheckers[i];\n        var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n        if (checkerResult == null) {\n          return null;\n        }\n        if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n          expectedTypes.push(checkerResult.data.expectedType);\n        }\n      }\n      var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createNodeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!isNode(props[propName])) {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function invalidValidatorError(componentName, location, propFullName, key, type) {\n    return new PropTypeError(\n      (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n      'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n    );\n  }\n\n  function createShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      for (var key in shapeTypes) {\n        var checker = shapeTypes[key];\n        if (typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createStrictShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      // We need to check all keys in case some are required but missing from props.\n      var allKeys = assign({}, props[propName], shapeTypes);\n      for (var key in allKeys) {\n        var checker = shapeTypes[key];\n        if (has(shapeTypes, key) && typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        if (!checker) {\n          return new PropTypeError(\n            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n            '\\nBad object: ' + JSON.stringify(props[propName], null, '  ') +\n            '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, '  ')\n          );\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case 'number':\n      case 'string':\n      case 'undefined':\n        return true;\n      case 'boolean':\n        return !propValue;\n      case 'object':\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propValue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === 'symbol') {\n      return true;\n    }\n\n    // falsy value can't be a Symbol\n    if (!propValue) {\n      return false;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue['@@toStringTag'] === 'Symbol') {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return 'array';\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return 'function' rather than\n      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return 'object';\n    }\n    if (isSymbol(propType, propValue)) {\n      return 'symbol';\n    }\n    return propType;\n  }\n\n  // This handles more types than `getPropType`. Only used for error messages.\n  // See `createPrimitiveTypeChecker`.\n  function getPreciseType(propValue) {\n    if (typeof propValue === 'undefined' || propValue === null) {\n      return '' + propValue;\n    }\n    var propType = getPropType(propValue);\n    if (propType === 'object') {\n      if (propValue instanceof Date) {\n        return 'date';\n      } else if (propValue instanceof RegExp) {\n        return 'regexp';\n      }\n    }\n    return propType;\n  }\n\n  // Returns a string that is postfixed to a warning about an invalid type.\n  // For example, \"undefined\" or \"of type array\"\n  function getPostfixForTypeWarning(value) {\n    var type = getPreciseType(value);\n    switch (type) {\n      case 'array':\n      case 'object':\n        return 'an ' + type;\n      case 'boolean':\n      case 'date':\n      case 'regexp':\n        return 'a ' + type;\n      default:\n        return type;\n    }\n  }\n\n  // Returns class name of the object, if any.\n  function getClassName(propValue) {\n    if (!propValue.constructor || !propValue.constructor.name) {\n      return ANONYMOUS;\n    }\n    return propValue.constructor.name;\n  }\n\n  ReactPropTypes.checkPropTypes = checkPropTypes;\n  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7O0FBRWIsY0FBYyxtQkFBTyxDQUFDLGtEQUFVO0FBQ2hDLGFBQWEsbUJBQU8sQ0FBQyxnRkFBZTs7QUFFcEMsMkJBQTJCLG1CQUFPLENBQUMseUZBQTRCO0FBQy9ELFVBQVUsbUJBQU8sQ0FBQyx1REFBVztBQUM3QixxQkFBcUIsbUJBQU8sQ0FBQyxxRUFBa0I7O0FBRS9DOztBQUVBLElBQUksSUFBcUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsOEJBQThCO0FBQzlCLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixLQUFLO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsNEJBQTRCO0FBQzVCLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxRQUFRLElBQXFDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsU0FBUyxLQUFxQztBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHNCQUFzQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVUsSUFBcUM7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQkFBc0IsMkJBQTJCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSxLQUFxQyw0RkFBNEYsQ0FBTTtBQUM3STtBQUNBOztBQUVBLG9CQUFvQixnQ0FBZ0M7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzQkFBc0IsZ0NBQWdDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpSEFBaUg7QUFDakg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzP2I3NmIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcbnZhciBhc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9saWIvaGFzJyk7XG52YXIgY2hlY2tQcm9wVHlwZXMgPSByZXF1aXJlKCcuL2NoZWNrUHJvcFR5cGVzJyk7XG5cbnZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbigpIHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBwcmludFdhcm5pbmcgPSBmdW5jdGlvbih0ZXh0KSB7XG4gICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIHRleHQ7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIC8vIC0tLSBXZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cbiAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuICAgICAgLy8gdG8gZmluZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoeCkge31cbiAgfTtcbn1cblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvblRoYXRSZXR1cm5zTnVsbCgpIHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXNWYWxpZEVsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpIHtcbiAgLyogZ2xvYmFsIFN5bWJvbCAqL1xuICB2YXIgSVRFUkFUT1JfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaXRlcmF0b3I7XG4gIHZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLlxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpdGVyYXRvciBtZXRob2QgZnVuY3Rpb24gY29udGFpbmVkIG9uIHRoZSBpdGVyYWJsZSBvYmplY3QuXG4gICAqXG4gICAqIEJlIHN1cmUgdG8gaW52b2tlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBpdGVyYWJsZSBhcyBjb250ZXh0OlxuICAgKlxuICAgKiAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG15SXRlcmFibGUpO1xuICAgKiAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICogICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG15SXRlcmFibGUpO1xuICAgKiAgICAgICAuLi5cbiAgICogICAgIH1cbiAgICpcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJhYmxlXG4gICAqIEByZXR1cm4gez9mdW5jdGlvbn1cbiAgICovXG4gIGZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4obWF5YmVJdGVyYWJsZSkge1xuICAgIHZhciBpdGVyYXRvckZuID0gbWF5YmVJdGVyYWJsZSAmJiAoSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXSk7XG4gICAgaWYgKHR5cGVvZiBpdGVyYXRvckZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JGbjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29sbGVjdGlvbiBvZiBtZXRob2RzIHRoYXQgYWxsb3cgZGVjbGFyYXRpb24gYW5kIHZhbGlkYXRpb24gb2YgcHJvcHMgdGhhdCBhcmVcbiAgICogc3VwcGxpZWQgdG8gUmVhY3QgY29tcG9uZW50cy4gRXhhbXBsZSB1c2FnZTpcbiAgICpcbiAgICogICB2YXIgUHJvcHMgPSByZXF1aXJlKCdSZWFjdFByb3BUeXBlcycpO1xuICAgKiAgIHZhciBNeUFydGljbGUgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gICAqICAgICBwcm9wVHlwZXM6IHtcbiAgICogICAgICAgLy8gQW4gb3B0aW9uYWwgc3RyaW5nIHByb3AgbmFtZWQgXCJkZXNjcmlwdGlvblwiLlxuICAgKiAgICAgICBkZXNjcmlwdGlvbjogUHJvcHMuc3RyaW5nLFxuICAgKlxuICAgKiAgICAgICAvLyBBIHJlcXVpcmVkIGVudW0gcHJvcCBuYW1lZCBcImNhdGVnb3J5XCIuXG4gICAqICAgICAgIGNhdGVnb3J5OiBQcm9wcy5vbmVPZihbJ05ld3MnLCdQaG90b3MnXSkuaXNSZXF1aXJlZCxcbiAgICpcbiAgICogICAgICAgLy8gQSBwcm9wIG5hbWVkIFwiZGlhbG9nXCIgdGhhdCByZXF1aXJlcyBhbiBpbnN0YW5jZSBvZiBEaWFsb2cuXG4gICAqICAgICAgIGRpYWxvZzogUHJvcHMuaW5zdGFuY2VPZihEaWFsb2cpLmlzUmVxdWlyZWRcbiAgICogICAgIH0sXG4gICAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeyAuLi4gfVxuICAgKiAgIH0pO1xuICAgKlxuICAgKiBBIG1vcmUgZm9ybWFsIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZXNlIG1ldGhvZHMgYXJlIHVzZWQ6XG4gICAqXG4gICAqICAgdHlwZSA6PSBhcnJheXxib29sfGZ1bmN8b2JqZWN0fG51bWJlcnxzdHJpbmd8b25lT2YoWy4uLl0pfGluc3RhbmNlT2YoLi4uKVxuICAgKiAgIGRlY2wgOj0gUmVhY3RQcm9wVHlwZXMue3R5cGV9KC5pc1JlcXVpcmVkKT9cbiAgICpcbiAgICogRWFjaCBhbmQgZXZlcnkgZGVjbGFyYXRpb24gcHJvZHVjZXMgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZS4gVGhpc1xuICAgKiBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mIGN1c3RvbSB2YWxpZGF0aW9uIGZ1bmN0aW9ucy4gRm9yIGV4YW1wbGU6XG4gICAqXG4gICAqICB2YXIgTXlMaW5rID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuICAgKiAgICBwcm9wVHlwZXM6IHtcbiAgICogICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgb3IgVVJJIHByb3AgbmFtZWQgXCJocmVmXCIuXG4gICAqICAgICAgaHJlZjogZnVuY3Rpb24ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG4gICAqICAgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgKiAgICAgICAgaWYgKHByb3BWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBwcm9wVmFsdWUgIT09ICdzdHJpbmcnICYmXG4gICAqICAgICAgICAgICAgIShwcm9wVmFsdWUgaW5zdGFuY2VvZiBVUkkpKSB7XG4gICAqICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoXG4gICAqICAgICAgICAgICAgJ0V4cGVjdGVkIGEgc3RyaW5nIG9yIGFuIFVSSSBmb3IgJyArIHByb3BOYW1lICsgJyBpbiAnICtcbiAgICogICAgICAgICAgICBjb21wb25lbnROYW1lXG4gICAqICAgICAgICAgICk7XG4gICAqICAgICAgICB9XG4gICAqICAgICAgfVxuICAgKiAgICB9LFxuICAgKiAgICByZW5kZXI6IGZ1bmN0aW9uKCkgey4uLn1cbiAgICogIH0pO1xuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG5cbiAgdmFyIEFOT05ZTU9VUyA9ICc8PGFub255bW91cz4+JztcblxuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYXJyYXknKSxcbiAgICBiaWdpbnQ6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdiaWdpbnQnKSxcbiAgICBib29sOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYm9vbGVhbicpLFxuICAgIGZ1bmM6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdmdW5jdGlvbicpLFxuICAgIG51bWJlcjogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ251bWJlcicpLFxuICAgIG9iamVjdDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ29iamVjdCcpLFxuICAgIHN0cmluZzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N0cmluZycpLFxuICAgIHN5bWJvbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N5bWJvbCcpLFxuXG4gICAgYW55OiBjcmVhdGVBbnlUeXBlQ2hlY2tlcigpLFxuICAgIGFycmF5T2Y6IGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcixcbiAgICBlbGVtZW50OiBjcmVhdGVFbGVtZW50VHlwZUNoZWNrZXIoKSxcbiAgICBlbGVtZW50VHlwZTogY3JlYXRlRWxlbWVudFR5cGVUeXBlQ2hlY2tlcigpLFxuICAgIGluc3RhbmNlT2Y6IGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIsXG4gICAgbm9kZTogY3JlYXRlTm9kZUNoZWNrZXIoKSxcbiAgICBvYmplY3RPZjogY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlcixcbiAgICBvbmVPZjogY3JlYXRlRW51bVR5cGVDaGVja2VyLFxuICAgIG9uZU9mVHlwZTogY3JlYXRlVW5pb25UeXBlQ2hlY2tlcixcbiAgICBzaGFwZTogY3JlYXRlU2hhcGVUeXBlQ2hlY2tlcixcbiAgICBleGFjdDogY3JlYXRlU3RyaWN0U2hhcGVUeXBlQ2hlY2tlcixcbiAgfTtcblxuICAvKipcbiAgICogaW5saW5lZCBPYmplY3QuaXMgcG9seWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1bWVycyBzaGlwIHRoZWlyIG93blxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvaXNcbiAgICovXG4gIC8qZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlKi9cbiAgZnVuY3Rpb24gaXMoeCwgeSkge1xuICAgIC8vIFNhbWVWYWx1ZSBhbGdvcml0aG1cbiAgICBpZiAoeCA9PT0geSkge1xuICAgICAgLy8gU3RlcHMgMS01LCA3LTEwXG4gICAgICAvLyBTdGVwcyA2LmItNi5lOiArMCAhPSAtMFxuICAgICAgcmV0dXJuIHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTdGVwIDYuYTogTmFOID09IE5hTlxuICAgICAgcmV0dXJuIHggIT09IHggJiYgeSAhPT0geTtcbiAgICB9XG4gIH1cbiAgLyplc2xpbnQtZW5hYmxlIG5vLXNlbGYtY29tcGFyZSovXG5cbiAgLyoqXG4gICAqIFdlIHVzZSBhbiBFcnJvci1saWtlIG9iamVjdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBhcyBwZW9wbGUgbWF5IGNhbGxcbiAgICogUHJvcFR5cGVzIGRpcmVjdGx5IGFuZCBpbnNwZWN0IHRoZWlyIG91dHB1dC4gSG93ZXZlciwgd2UgZG9uJ3QgdXNlIHJlYWxcbiAgICogRXJyb3JzIGFueW1vcmUuIFdlIGRvbid0IGluc3BlY3QgdGhlaXIgc3RhY2sgYW55d2F5LCBhbmQgY3JlYXRpbmcgdGhlbVxuICAgKiBpcyBwcm9oaWJpdGl2ZWx5IGV4cGVuc2l2ZSBpZiB0aGV5IGFyZSBjcmVhdGVkIHRvbyBvZnRlbiwgc3VjaCBhcyB3aGF0XG4gICAqIGhhcHBlbnMgaW4gb25lT2ZUeXBlKCkgZm9yIGFueSB0eXBlIGJlZm9yZSB0aGUgb25lIHRoYXQgbWF0Y2hlZC5cbiAgICovXG4gIGZ1bmN0aW9uIFByb3BUeXBlRXJyb3IobWVzc2FnZSwgZGF0YSkge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5kYXRhID0gZGF0YSAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgPyBkYXRhOiB7fTtcbiAgICB0aGlzLnN0YWNrID0gJyc7XG4gIH1cbiAgLy8gTWFrZSBgaW5zdGFuY2VvZiBFcnJvcmAgc3RpbGwgd29yayBmb3IgcmV0dXJuZWQgZXJyb3JzLlxuICBQcm9wVHlwZUVycm9yLnByb3RvdHlwZSA9IEVycm9yLnByb3RvdHlwZTtcblxuICBmdW5jdGlvbiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGUgPSB7fTtcbiAgICAgIHZhciBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCA9IDA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNoZWNrVHlwZShpc1JlcXVpcmVkLCBwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgICAgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWUgfHwgQU5PTllNT1VTO1xuICAgICAgcHJvcEZ1bGxOYW1lID0gcHJvcEZ1bGxOYW1lIHx8IHByb3BOYW1lO1xuXG4gICAgICBpZiAoc2VjcmV0ICE9PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgICBpZiAodGhyb3dPbkRpcmVjdEFjY2Vzcykge1xuICAgICAgICAgIC8vIE5ldyBiZWhhdmlvciBvbmx5IGZvciB1c2VycyBvZiBgcHJvcC10eXBlc2AgcGFja2FnZVxuICAgICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAnVXNlIGBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKWAgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgLy8gT2xkIGJlaGF2aW9yIGZvciBwZW9wbGUgdXNpbmcgUmVhY3QuUHJvcFR5cGVzXG4gICAgICAgICAgdmFyIGNhY2hlS2V5ID0gY29tcG9uZW50TmFtZSArICc6JyArIHByb3BOYW1lO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFtYW51YWxQcm9wVHlwZUNhbGxDYWNoZVtjYWNoZUtleV0gJiZcbiAgICAgICAgICAgIC8vIEF2b2lkIHNwYW1taW5nIHRoZSBjb25zb2xlIGJlY2F1c2UgdGhleSBhcmUgb2Z0ZW4gbm90IGFjdGlvbmFibGUgZXhjZXB0IGZvciBsaWIgYXV0aG9yc1xuICAgICAgICAgICAgbWFudWFsUHJvcFR5cGVXYXJuaW5nQ291bnQgPCAzXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBwcmludFdhcm5pbmcoXG4gICAgICAgICAgICAgICdZb3UgYXJlIG1hbnVhbGx5IGNhbGxpbmcgYSBSZWFjdC5Qcm9wVHlwZXMgdmFsaWRhdGlvbiAnICtcbiAgICAgICAgICAgICAgJ2Z1bmN0aW9uIGZvciB0aGUgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBwcm9wIG9uIGAnICsgY29tcG9uZW50TmFtZSArICdgLiBUaGlzIGlzIGRlcHJlY2F0ZWQgJyArXG4gICAgICAgICAgICAgICdhbmQgd2lsbCB0aHJvdyBpbiB0aGUgc3RhbmRhbG9uZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAgICdZb3UgbWF5IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcgZHVlIHRvIGEgdGhpcmQtcGFydHkgUHJvcFR5cGVzICcgK1xuICAgICAgICAgICAgICAnbGlicmFyeS4gU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1kb250LWNhbGwtcHJvcHR5cGVzICcgKyAnZm9yIGRldGFpbHMuJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5XSA9IHRydWU7XG4gICAgICAgICAgICBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PSBudWxsKSB7XG4gICAgICAgIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdUaGUgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCAnICsgKCdpbiBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgYnV0IGl0cyB2YWx1ZSBpcyBgbnVsbGAuJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkIGluICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGB1bmRlZmluZWRgLicpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjaGFpbmVkQ2hlY2tUeXBlID0gY2hlY2tUeXBlLmJpbmQobnVsbCwgZmFsc2UpO1xuICAgIGNoYWluZWRDaGVja1R5cGUuaXNSZXF1aXJlZCA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIHRydWUpO1xuXG4gICAgcmV0dXJuIGNoYWluZWRDaGVja1R5cGU7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcihleHBlY3RlZFR5cGUpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICBpZiAocHJvcFR5cGUgIT09IGV4cGVjdGVkVHlwZSkge1xuICAgICAgICAvLyBgcHJvcFZhbHVlYCBiZWluZyBpbnN0YW5jZSBvZiwgc2F5LCBkYXRlL3JlZ2V4cCwgcGFzcyB0aGUgJ29iamVjdCdcbiAgICAgICAgLy8gY2hlY2ssIGJ1dCB3ZSBjYW4gb2ZmZXIgYSBtb3JlIHByZWNpc2UgZXJyb3IgbWVzc2FnZSBoZXJlIHJhdGhlciB0aGFuXG4gICAgICAgIC8vICdvZiB0eXBlIGBvYmplY3RgJy5cbiAgICAgICAgdmFyIHByZWNpc2VUeXBlID0gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKTtcblxuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoXG4gICAgICAgICAgJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcmVjaXNlVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCAnKSArICgnYCcgKyBleHBlY3RlZFR5cGUgKyAnYC4nKSxcbiAgICAgICAgICB7ZXhwZWN0ZWRUeXBlOiBleHBlY3RlZFR5cGV9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUFueVR5cGVDaGVja2VyKCkge1xuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcihlbXB0eUZ1bmN0aW9uVGhhdFJldHVybnNOdWxsKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKHR5cGVvZiB0eXBlQ2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLicpO1xuICAgICAgfVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGFuIGFycmF5LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwgaSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICdbJyArIGkgKyAnXScsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghaXNWYWxpZEVsZW1lbnQocHJvcFZhbHVlKSkge1xuICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVFbGVtZW50VHlwZVR5cGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghUmVhY3RJcy5pc1ZhbGlkRWxlbWVudFR5cGUocHJvcFZhbHVlKSkge1xuICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQgdHlwZS4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIoZXhwZWN0ZWRDbGFzcykge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKCEocHJvcHNbcHJvcE5hbWVdIGluc3RhbmNlb2YgZXhwZWN0ZWRDbGFzcykpIHtcbiAgICAgICAgdmFyIGV4cGVjdGVkQ2xhc3NOYW1lID0gZXhwZWN0ZWRDbGFzcy5uYW1lIHx8IEFOT05ZTU9VUztcbiAgICAgICAgdmFyIGFjdHVhbENsYXNzTmFtZSA9IGdldENsYXNzTmFtZShwcm9wc1twcm9wTmFtZV0pO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBhY3R1YWxDbGFzc05hbWUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgJykgKyAoJ2luc3RhbmNlIG9mIGAnICsgZXhwZWN0ZWRDbGFzc05hbWUgKyAnYC4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUVudW1UeXBlQ2hlY2tlcihleHBlY3RlZFZhbHVlcykge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShleHBlY3RlZFZhbHVlcykpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHByaW50V2FybmluZyhcbiAgICAgICAgICAgICdJbnZhbGlkIGFyZ3VtZW50cyBzdXBwbGllZCB0byBvbmVPZiwgZXhwZWN0ZWQgYW4gYXJyYXksIGdvdCAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgYXJndW1lbnRzLiAnICtcbiAgICAgICAgICAgICdBIGNvbW1vbiBtaXN0YWtlIGlzIHRvIHdyaXRlIG9uZU9mKHgsIHksIHopIGluc3RlYWQgb2Ygb25lT2YoW3gsIHksIHpdKS4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmludFdhcm5pbmcoJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2YsIGV4cGVjdGVkIGFuIGFycmF5LicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZW1wdHlGdW5jdGlvblRoYXRSZXR1cm5zTnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpcyhwcm9wVmFsdWUsIGV4cGVjdGVkVmFsdWVzW2ldKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZXNTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShleHBlY3RlZFZhbHVlcywgZnVuY3Rpb24gcmVwbGFjZXIoa2V5LCB2YWx1ZSkge1xuICAgICAgICB2YXIgdHlwZSA9IGdldFByZWNpc2VUeXBlKHZhbHVlKTtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdzeW1ib2wnKSB7XG4gICAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHZhbHVlIGAnICsgU3RyaW5nKHByb3BWYWx1ZSkgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgb25lIG9mICcgKyB2YWx1ZXNTdHJpbmcgKyAnLicpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdQcm9wZXJ0eSBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIGNvbXBvbmVudCBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgb2JqZWN0T2YuJyk7XG4gICAgICB9XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgaWYgKGhhcyhwcm9wVmFsdWUsIGtleSkpIHtcbiAgICAgICAgICB2YXIgZXJyb3IgPSB0eXBlQ2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZVVuaW9uVHlwZUNoZWNrZXIoYXJyYXlPZlR5cGVDaGVja2Vycykge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhcnJheU9mVHlwZUNoZWNrZXJzKSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHByaW50V2FybmluZygnSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZlR5cGUsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFycmF5LicpIDogdm9pZCAwO1xuICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb25UaGF0UmV0dXJuc051bGw7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheU9mVHlwZUNoZWNrZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgY2hlY2tlciA9IGFycmF5T2ZUeXBlQ2hlY2tlcnNbaV07XG4gICAgICBpZiAodHlwZW9mIGNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcHJpbnRXYXJuaW5nKFxuICAgICAgICAgICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mVHlwZS4gRXhwZWN0ZWQgYW4gYXJyYXkgb2YgY2hlY2sgZnVuY3Rpb25zLCBidXQgJyArXG4gICAgICAgICAgJ3JlY2VpdmVkICcgKyBnZXRQb3N0Zml4Rm9yVHlwZVdhcm5pbmcoY2hlY2tlcikgKyAnIGF0IGluZGV4ICcgKyBpICsgJy4nXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBlbXB0eUZ1bmN0aW9uVGhhdFJldHVybnNOdWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIGV4cGVjdGVkVHlwZXMgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZlR5cGVDaGVja2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hlY2tlciA9IGFycmF5T2ZUeXBlQ2hlY2tlcnNbaV07XG4gICAgICAgIHZhciBjaGVja2VyUmVzdWx0ID0gY2hlY2tlcihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGNoZWNrZXJSZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGVja2VyUmVzdWx0LmRhdGEgJiYgaGFzKGNoZWNrZXJSZXN1bHQuZGF0YSwgJ2V4cGVjdGVkVHlwZScpKSB7XG4gICAgICAgICAgZXhwZWN0ZWRUeXBlcy5wdXNoKGNoZWNrZXJSZXN1bHQuZGF0YS5leHBlY3RlZFR5cGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgZXhwZWN0ZWRUeXBlc01lc3NhZ2UgPSAoZXhwZWN0ZWRUeXBlcy5sZW5ndGggPiAwKSA/ICcsIGV4cGVjdGVkIG9uZSBvZiB0eXBlIFsnICsgZXhwZWN0ZWRUeXBlcy5qb2luKCcsICcpICsgJ10nOiAnJztcbiAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agc3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AnICsgZXhwZWN0ZWRUeXBlc01lc3NhZ2UgKyAnLicpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU5vZGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKCFpc05vZGUocHJvcHNbcHJvcE5hbWVdKSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIHN1cHBsaWVkIHRvICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIFJlYWN0Tm9kZS4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGludmFsaWRWYWxpZGF0b3JFcnJvcihjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBrZXksIHR5cGUpIHtcbiAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoXG4gICAgICAoY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnKSArICc6ICcgKyBsb2NhdGlvbiArICcgdHlwZSBgJyArIHByb3BGdWxsTmFtZSArICcuJyArIGtleSArICdgIGlzIGludmFsaWQ7ICcgK1xuICAgICAgJ2l0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tIHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZSwgYnV0IHJlY2VpdmVkIGAnICsgdHlwZSArICdgLidcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlU2hhcGVUeXBlQ2hlY2tlcihzaGFwZVR5cGVzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlIGAnICsgcHJvcFR5cGUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYG9iamVjdGAuJykpO1xuICAgICAgfVxuICAgICAgZm9yICh2YXIga2V5IGluIHNoYXBlVHlwZXMpIHtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBzaGFwZVR5cGVzW2tleV07XG4gICAgICAgIGlmICh0eXBlb2YgY2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiBpbnZhbGlkVmFsaWRhdG9yRXJyb3IoY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwga2V5LCBnZXRQcmVjaXNlVHlwZShjaGVja2VyKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlU3RyaWN0U2hhcGVUeXBlQ2hlY2tlcihzaGFwZVR5cGVzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlIGAnICsgcHJvcFR5cGUgKyAnYCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYG9iamVjdGAuJykpO1xuICAgICAgfVxuICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBhbGwga2V5cyBpbiBjYXNlIHNvbWUgYXJlIHJlcXVpcmVkIGJ1dCBtaXNzaW5nIGZyb20gcHJvcHMuXG4gICAgICB2YXIgYWxsS2V5cyA9IGFzc2lnbih7fSwgcHJvcHNbcHJvcE5hbWVdLCBzaGFwZVR5cGVzKTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBhbGxLZXlzKSB7XG4gICAgICAgIHZhciBjaGVja2VyID0gc2hhcGVUeXBlc1trZXldO1xuICAgICAgICBpZiAoaGFzKHNoYXBlVHlwZXMsIGtleSkgJiYgdHlwZW9mIGNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gaW52YWxpZFZhbGlkYXRvckVycm9yKGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIGtleSwgZ2V0UHJlY2lzZVR5cGUoY2hlY2tlcikpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY2hlY2tlcikge1xuICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcihcbiAgICAgICAgICAgICdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBrZXkgYCcgKyBrZXkgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYC4nICtcbiAgICAgICAgICAgICdcXG5CYWQgb2JqZWN0OiAnICsgSlNPTi5zdHJpbmdpZnkocHJvcHNbcHJvcE5hbWVdLCBudWxsLCAnICAnKSArXG4gICAgICAgICAgICAnXFxuVmFsaWQga2V5czogJyArIEpTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKHNoYXBlVHlwZXMpLCBudWxsLCAnICAnKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBpc05vZGUocHJvcFZhbHVlKSB7XG4gICAgc3dpdGNoICh0eXBlb2YgcHJvcFZhbHVlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHJldHVybiAhcHJvcFZhbHVlO1xuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBwcm9wVmFsdWUuZXZlcnkoaXNOb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcFZhbHVlID09PSBudWxsIHx8IGlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihwcm9wVmFsdWUpO1xuICAgICAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChwcm9wVmFsdWUpO1xuICAgICAgICAgIHZhciBzdGVwO1xuICAgICAgICAgIGlmIChpdGVyYXRvckZuICE9PSBwcm9wVmFsdWUuZW50cmllcykge1xuICAgICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgICAgICBpZiAoIWlzTm9kZShzdGVwLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy5cbiAgICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc05vZGUoZW50cnlbMV0pKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpIHtcbiAgICAvLyBOYXRpdmUgU3ltYm9sLlxuICAgIGlmIChwcm9wVHlwZSA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIGZhbHN5IHZhbHVlIGNhbid0IGJlIGEgU3ltYm9sXG4gICAgaWYgKCFwcm9wVmFsdWUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddID09PSAnU3ltYm9sJ1xuICAgIGlmIChwcm9wVmFsdWVbJ0BAdG9TdHJpbmdUYWcnXSA9PT0gJ1N5bWJvbCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIGZvciBub24tc3BlYyBjb21wbGlhbnQgU3ltYm9scyB3aGljaCBhcmUgcG9seWZpbGxlZC5cbiAgICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBwcm9wVmFsdWUgaW5zdGFuY2VvZiBTeW1ib2wpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEVxdWl2YWxlbnQgb2YgYHR5cGVvZmAgYnV0IHdpdGggc3BlY2lhbCBoYW5kbGluZyBmb3IgYXJyYXkgYW5kIHJlZ2V4cC5cbiAgZnVuY3Rpb24gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKSB7XG4gICAgdmFyIHByb3BUeXBlID0gdHlwZW9mIHByb3BWYWx1ZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICByZXR1cm4gJ2FycmF5JztcbiAgICB9XG4gICAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgLy8gT2xkIHdlYmtpdHMgKGF0IGxlYXN0IHVudGlsIEFuZHJvaWQgNC4wKSByZXR1cm4gJ2Z1bmN0aW9uJyByYXRoZXIgdGhhblxuICAgICAgLy8gJ29iamVjdCcgZm9yIHR5cGVvZiBhIFJlZ0V4cC4gV2UnbGwgbm9ybWFsaXplIHRoaXMgaGVyZSBzbyB0aGF0IC9ibGEvXG4gICAgICAvLyBwYXNzZXMgUHJvcFR5cGVzLm9iamVjdC5cbiAgICAgIHJldHVybiAnb2JqZWN0JztcbiAgICB9XG4gICAgaWYgKGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpKSB7XG4gICAgICByZXR1cm4gJ3N5bWJvbCc7XG4gICAgfVxuICAgIHJldHVybiBwcm9wVHlwZTtcbiAgfVxuXG4gIC8vIFRoaXMgaGFuZGxlcyBtb3JlIHR5cGVzIHRoYW4gYGdldFByb3BUeXBlYC4gT25seSB1c2VkIGZvciBlcnJvciBtZXNzYWdlcy5cbiAgLy8gU2VlIGBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcmAuXG4gIGZ1bmN0aW9uIGdldFByZWNpc2VUeXBlKHByb3BWYWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcHJvcFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBwcm9wVmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJyArIHByb3BWYWx1ZTtcbiAgICB9XG4gICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICBpZiAocHJvcFR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gJ2RhdGUnO1xuICAgICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgcmV0dXJuICdyZWdleHAnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJvcFR5cGU7XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcG9zdGZpeGVkIHRvIGEgd2FybmluZyBhYm91dCBhbiBpbnZhbGlkIHR5cGUuXG4gIC8vIEZvciBleGFtcGxlLCBcInVuZGVmaW5lZFwiIG9yIFwib2YgdHlwZSBhcnJheVwiXG4gIGZ1bmN0aW9uIGdldFBvc3RmaXhGb3JUeXBlV2FybmluZyh2YWx1ZSkge1xuICAgIHZhciB0eXBlID0gZ2V0UHJlY2lzZVR5cGUodmFsdWUpO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgcmV0dXJuICdhbiAnICsgdHlwZTtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICBjYXNlICdyZWdleHAnOlxuICAgICAgICByZXR1cm4gJ2EgJyArIHR5cGU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXR1cm5zIGNsYXNzIG5hbWUgb2YgdGhlIG9iamVjdCwgaWYgYW55LlxuICBmdW5jdGlvbiBnZXRDbGFzc05hbWUocHJvcFZhbHVlKSB7XG4gICAgaWYgKCFwcm9wVmFsdWUuY29uc3RydWN0b3IgfHwgIXByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5uYW1lKSB7XG4gICAgICByZXR1cm4gQU5PTllNT1VTO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcFZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7XG4gIH1cblxuICBSZWFjdFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyA9IGNoZWNrUHJvcFR5cGVzO1xuICBSZWFjdFByb3BUeXBlcy5yZXNldFdhcm5pbmdDYWNoZSA9IGNoZWNrUHJvcFR5cGVzLnJlc2V0V2FybmluZ0NhY2hlO1xuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/prop-types/factoryWithTypeCheckers.js\n");
 
/***/ }),
 
/***/ "./node_modules/prop-types/index.js":
/*!******************************************!*\
  !*** ./node_modules/prop-types/index.js ***!
  \******************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
 
eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (true) {\n  var ReactIs = __webpack_require__(/*! react-is */ \"./node_modules/react-is/index.js\");\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ \"./node_modules/prop-types/factoryWithTypeCheckers.js\")(ReactIs.isElement, throwOnDirectAccess);\n} else {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSSxJQUFxQztBQUN6QyxnQkFBZ0IsbUJBQU8sQ0FBQyxrREFBVTs7QUFFbEM7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFPLENBQUMsdUZBQTJCO0FBQ3RELEVBQUUsS0FBSyxFQUlOIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzP2JkZTEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/prop-types/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/prop-types/lib/ReactPropTypesSecret.js":
/*!*************************************************************!*\
  !*** ./node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
  \*************************************************************/
/***/ (function(module) {
 
"use strict";
eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVhOztBQUViOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcz9lMDk4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/prop-types/lib/ReactPropTypesSecret.js\n");
 
/***/ }),
 
/***/ "./node_modules/prop-types/lib/has.js":
/*!********************************************!*\
  !*** ./node_modules/prop-types/lib/has.js ***!
  \********************************************/
/***/ (function(module) {
 
eval("module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvaGFzLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9oYXMuanM/ZTQ3MCJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IEZ1bmN0aW9uLmNhbGwuYmluZChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/prop-types/lib/has.js\n");
 
/***/ }),
 
/***/ "./node_modules/react-apollo/lib/react-apollo.esm.js":
/*!***********************************************************!*\
  !*** ./node_modules/react-apollo/lib/react-apollo.esm.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloConsumer\": function() { return /* reexport safe */ _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.ApolloConsumer; },\n/* harmony export */   \"ApolloProvider\": function() { return /* reexport safe */ _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.ApolloProvider; },\n/* harmony export */   \"Mutation\": function() { return /* reexport safe */ _apollo_react_components__WEBPACK_IMPORTED_MODULE_1__.Mutation; },\n/* harmony export */   \"Query\": function() { return /* reexport safe */ _apollo_react_components__WEBPACK_IMPORTED_MODULE_1__.Query; },\n/* harmony export */   \"Subscription\": function() { return /* reexport safe */ _apollo_react_components__WEBPACK_IMPORTED_MODULE_1__.Subscription; },\n/* harmony export */   \"getApolloContext\": function() { return /* reexport safe */ _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.getApolloContext; },\n/* harmony export */   \"getDataFromTree\": function() { return /* reexport safe */ _apollo_react_ssr__WEBPACK_IMPORTED_MODULE_4__.getDataFromTree; },\n/* harmony export */   \"getMarkupFromTree\": function() { return /* reexport safe */ _apollo_react_ssr__WEBPACK_IMPORTED_MODULE_4__.getMarkupFromTree; },\n/* harmony export */   \"graphql\": function() { return /* reexport safe */ _apollo_react_hoc__WEBPACK_IMPORTED_MODULE_2__.graphql; },\n/* harmony export */   \"renderToStringWithData\": function() { return /* reexport safe */ _apollo_react_ssr__WEBPACK_IMPORTED_MODULE_4__.renderToStringWithData; },\n/* harmony export */   \"resetApolloContext\": function() { return /* reexport safe */ _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__.resetApolloContext; },\n/* harmony export */   \"useApolloClient\": function() { return /* reexport safe */ _apollo_react_hooks__WEBPACK_IMPORTED_MODULE_3__.useApolloClient; },\n/* harmony export */   \"useLazyQuery\": function() { return /* reexport safe */ _apollo_react_hooks__WEBPACK_IMPORTED_MODULE_3__.useLazyQuery; },\n/* harmony export */   \"useMutation\": function() { return /* reexport safe */ _apollo_react_hooks__WEBPACK_IMPORTED_MODULE_3__.useMutation; },\n/* harmony export */   \"useQuery\": function() { return /* reexport safe */ _apollo_react_hooks__WEBPACK_IMPORTED_MODULE_3__.useQuery; },\n/* harmony export */   \"useSubscription\": function() { return /* reexport safe */ _apollo_react_hooks__WEBPACK_IMPORTED_MODULE_3__.useSubscription; },\n/* harmony export */   \"withApollo\": function() { return /* reexport safe */ _apollo_react_hoc__WEBPACK_IMPORTED_MODULE_2__.withApollo; },\n/* harmony export */   \"withMutation\": function() { return /* reexport safe */ _apollo_react_hoc__WEBPACK_IMPORTED_MODULE_2__.withMutation; },\n/* harmony export */   \"withQuery\": function() { return /* reexport safe */ _apollo_react_hoc__WEBPACK_IMPORTED_MODULE_2__.withQuery; },\n/* harmony export */   \"withSubscription\": function() { return /* reexport safe */ _apollo_react_hoc__WEBPACK_IMPORTED_MODULE_2__.withSubscription; }\n/* harmony export */ });\n/* harmony import */ var _apollo_react_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @apollo/react-common */ \"./node_modules/@apollo/react-common/lib/react-common.esm.js\");\n/* harmony import */ var _apollo_react_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @apollo/react-components */ \"./node_modules/@apollo/react-components/lib/react-components.esm.js\");\n/* harmony import */ var _apollo_react_hoc__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @apollo/react-hoc */ \"./node_modules/@apollo/react-hoc/lib/react-hoc.esm.js\");\n/* harmony import */ var _apollo_react_hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @apollo/react-hooks */ \"./node_modules/@apollo/react-hooks/lib/react-hooks.esm.js\");\n/* harmony import */ var _apollo_react_ssr__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @apollo/react-ssr */ \"./node_modules/@apollo/react-ssr/lib/react-ssr.esm.js\");\n\n\n\n\n\n//# sourceMappingURL=react-apollo.esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtYXBvbGxvL2xpYi9yZWFjdC1hcG9sbG8uZXNtLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBNEc7QUFDbkM7QUFDMEI7QUFDUztBQUNiO0FBQy9GIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1hcG9sbG8vbGliL3JlYWN0LWFwb2xsby5lc20uanM/M2Y5MyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBBcG9sbG9Db25zdW1lciwgQXBvbGxvUHJvdmlkZXIsIGdldEFwb2xsb0NvbnRleHQsIHJlc2V0QXBvbGxvQ29udGV4dCB9IGZyb20gJ0BhcG9sbG8vcmVhY3QtY29tbW9uJztcbmV4cG9ydCB7IE11dGF0aW9uLCBRdWVyeSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAnQGFwb2xsby9yZWFjdC1jb21wb25lbnRzJztcbmV4cG9ydCB7IGdyYXBocWwsIHdpdGhBcG9sbG8sIHdpdGhNdXRhdGlvbiwgd2l0aFF1ZXJ5LCB3aXRoU3Vic2NyaXB0aW9uIH0gZnJvbSAnQGFwb2xsby9yZWFjdC1ob2MnO1xuZXhwb3J0IHsgdXNlQXBvbGxvQ2xpZW50LCB1c2VMYXp5UXVlcnksIHVzZU11dGF0aW9uLCB1c2VRdWVyeSwgdXNlU3Vic2NyaXB0aW9uIH0gZnJvbSAnQGFwb2xsby9yZWFjdC1ob29rcyc7XG5leHBvcnQgeyBnZXREYXRhRnJvbVRyZWUsIGdldE1hcmt1cEZyb21UcmVlLCByZW5kZXJUb1N0cmluZ1dpdGhEYXRhIH0gZnJvbSAnQGFwb2xsby9yZWFjdC1zc3InO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVhY3QtYXBvbGxvLmVzbS5qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-apollo/lib/react-apollo.esm.js\n");
 
/***/ }),
 
/***/ "./node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js":
/*!***********************************************************************************!*\
  !*** ./node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js ***!
  \***********************************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
 
"use strict";
eval("/**\n * @license React\n * react-dom-server-legacy.browser.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n  (function() {\n'use strict';\n\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar ReactVersion = '18.0.0-fc46dba67-20220329';\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n\nfunction warn(format) {\n  {\n    {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      printWarning('warn', format, args);\n    }\n  }\n}\nfunction error(format) {\n  {\n    {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\nfunction scheduleWork(callback) {\n  callback();\n}\nfunction beginWriting(destination) {}\nvar prevWasCommentSegmenter = false;\nfunction writeChunk(destination, chunk) {\n  writeChunkAndReturn(destination, chunk);\n}\nfunction writeChunkAndReturn(destination, chunk) {\n  if (prevWasCommentSegmenter) {\n    prevWasCommentSegmenter = false;\n\n    if (chunk[0] !== '<') {\n      destination.push('<!-- -->');\n    }\n  }\n\n  if (chunk === '<!-- -->') {\n    prevWasCommentSegmenter = true;\n    return true;\n  }\n\n  return destination.push(chunk);\n}\nfunction completeWriting(destination) {}\nfunction close(destination) {\n  destination.push(null);\n}\nfunction stringToChunk(content) {\n  return content;\n}\nfunction stringToPrecomputedChunk(content) {\n  return content;\n}\nfunction closeWithError(destination, error) {\n  // $FlowFixMe: This is an Error object or the destination accepts other types.\n  destination.destroy(error);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n  {\n    // toStringTag is needed for namespaced types like Temporal.Instant\n    var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n    var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n    return type;\n  }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n  {\n    try {\n      testStringCoercion(value);\n      return false;\n    } catch (e) {\n      return true;\n    }\n  }\n}\n\nfunction testStringCoercion(value) {\n  // If you ended up here by following an exception call stack, here's what's\n  // happened: you supplied an object or symbol value to React (as a prop, key,\n  // DOM attribute, CSS property, string ref, etc.) and when React tried to\n  // coerce it to a string using `'' + value`, an exception was thrown.\n  //\n  // The most common types that will cause this exception are `Symbol` instances\n  // and Temporal objects like `Temporal.Instant`. But any object that has a\n  // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n  // exception. (Library authors do this to prevent users from using built-in\n  // numeric operators like `+` or comparison operators like `>=` because custom\n  // methods are needed to perform accurate arithmetic or comparison.)\n  //\n  // To fix the problem, coerce this object or symbol value to a string before\n  // passing it to React. The most reliable way is usually `String(value)`.\n  //\n  // To find which value is throwing, check the browser or debugger console.\n  // Before this exception was thrown, there should be `console.error` output\n  // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n  // problem and how that type was used: key, atrribute, input value prop, etc.\n  // In most cases, this console output also shows the component and its\n  // ancestor components where the exception happened.\n  //\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\n\nfunction checkAttributeStringCoercion(value, attributeName) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided `%s` attribute is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', attributeName, typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkCSSPropertyStringCoercion(value, propName) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided `%s` CSS property is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', propName, typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkHtmlStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided HTML markup uses a value of unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n// A reserved attribute.\n// It is handled by React separately and shouldn't be written to the DOM.\nvar RESERVED = 0; // A simple string attribute.\n// Attributes that aren't in the filter are presumed to have this type.\n\nvar STRING = 1; // A string attribute that accepts booleans in React. In HTML, these are called\n// \"enumerated\" attributes with \"true\" and \"false\" as possible values.\n// When true, it should be set to a \"true\" string.\n// When false, it should be set to a \"false\" string.\n\nvar BOOLEANISH_STRING = 2; // A real boolean attribute.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n\nvar BOOLEAN = 3; // An attribute that can be used as a flag as well as with a value.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n// For any other value, should be present with that value.\n\nvar OVERLOADED_BOOLEAN = 4; // An attribute that must be numeric or parse as a numeric.\n// When falsy, it should be removed.\n\nvar NUMERIC = 5; // An attribute that must be positive numeric or parse as a positive numeric.\n// When falsy, it should be removed.\n\nvar POSITIVE_NUMERIC = 6;\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = \":A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n/* eslint-enable max-len */\n\nvar ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + \"\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n  if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) {\n    return true;\n  }\n\n  if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) {\n    return false;\n  }\n\n  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n    validatedAttributeNameCache[attributeName] = true;\n    return true;\n  }\n\n  illegalAttributeNameCache[attributeName] = true;\n\n  {\n    error('Invalid attribute name: `%s`', attributeName);\n  }\n\n  return false;\n}\nfunction shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag) {\n  if (propertyInfo !== null && propertyInfo.type === RESERVED) {\n    return false;\n  }\n\n  switch (typeof value) {\n    case 'function': // $FlowIssue symbol is perfectly valid here\n\n    case 'symbol':\n      // eslint-disable-line\n      return true;\n\n    case 'boolean':\n      {\n        if (isCustomComponentTag) {\n          return false;\n        }\n\n        if (propertyInfo !== null) {\n          return !propertyInfo.acceptsBooleans;\n        } else {\n          var prefix = name.toLowerCase().slice(0, 5);\n          return prefix !== 'data-' && prefix !== 'aria-';\n        }\n      }\n\n    default:\n      return false;\n  }\n}\nfunction getPropertyInfo(name) {\n  return properties.hasOwnProperty(name) ? properties[name] : null;\n}\n\nfunction PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL, removeEmptyString) {\n  this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN;\n  this.attributeName = attributeName;\n  this.attributeNamespace = attributeNamespace;\n  this.mustUseProperty = mustUseProperty;\n  this.propertyName = name;\n  this.type = type;\n  this.sanitizeURL = sanitizeURL;\n  this.removeEmptyString = removeEmptyString;\n} // When adding attributes to this list, be sure to also add them to\n// the `possibleStandardNames` module to ensure casing and incorrect\n// name warnings.\n\n\nvar properties = {}; // These props are reserved by React. They shouldn't be written to the DOM.\n\nvar reservedProps = ['children', 'dangerouslySetInnerHTML', // TODO: This prevents the assignment of defaultValue to regular\n// elements (not just inputs). Now that ReactDOMInput assigns to the\n// defaultValue property -- do we need this?\n'defaultValue', 'defaultChecked', 'innerHTML', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'style'];\n\nreservedProps.forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, RESERVED, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // A few React string attributes have a different name.\n// This is a mapping from React prop names to the attribute names.\n\n[['acceptCharset', 'accept-charset'], ['className', 'class'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv']].forEach(function (_ref) {\n  var name = _ref[0],\n      attributeName = _ref[1];\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are \"enumerated\" HTML attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n\n['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are \"enumerated\" SVG attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n// Since these are SVG attributes, their attribute names are case-sensitive.\n\n['autoReverse', 'externalResourcesRequired', 'focusable', 'preserveAlpha'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML boolean attributes.\n\n['allowFullScreen', 'async', // Note: there is a special case that prevents it from being written to the DOM\n// on the client side because the browsers are inconsistent. Instead we call focus().\n'autoFocus', 'autoPlay', 'controls', 'default', 'defer', 'disabled', 'disablePictureInPicture', 'disableRemotePlayback', 'formNoValidate', 'hidden', 'loop', 'noModule', 'noValidate', 'open', 'playsInline', 'readOnly', 'required', 'reversed', 'scoped', 'seamless', // Microdata\n'itemScope'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are the few React props that we set as DOM properties\n// rather than attributes. These are all booleans.\n\n['checked', // Note: `option.selected` is not updated if `select.multiple` is\n// disabled with `removeAttribute`. We have special logic for handling this.\n'multiple', 'muted', 'selected' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that are \"overloaded booleans\": they behave like\n// booleans, but can also accept a string value.\n\n['capture', 'download' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that must be positive numbers.\n\n['cols', 'rows', 'size', 'span' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that must be numbers.\n\n['rowSpan', 'start'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, NUMERIC, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n});\nvar CAMELIZE = /[\\-\\:]([a-z])/g;\n\nvar capitalize = function (token) {\n  return token[1].toUpperCase();\n}; // This is a list of all SVG attributes that need special casing, namespacing,\n// or boolean value assignment. Regular attributes that just accept strings\n// and have the same names are omitted, just like in the HTML attribute filter.\n// Some of these attributes can be hard to find. This list was created by\n// scraping the MDN documentation.\n\n\n['accent-height', 'alignment-baseline', 'arabic-form', 'baseline-shift', 'cap-height', 'clip-path', 'clip-rule', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'dominant-baseline', 'enable-background', 'fill-opacity', 'fill-rule', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-name', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'horiz-adv-x', 'horiz-origin-x', 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', 'marker-mid', 'marker-start', 'overline-position', 'overline-thickness', 'paint-order', 'panose-1', 'pointer-events', 'rendering-intent', 'shape-rendering', 'stop-color', 'stop-opacity', 'strikethrough-position', 'strikethrough-thickness', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-decoration', 'text-rendering', 'underline-position', 'underline-thickness', 'unicode-bidi', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'vector-effect', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'word-spacing', 'writing-mode', 'xmlns:xlink', 'x-height' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // String SVG attributes with the xlink namespace.\n\n['xlink:actuate', 'xlink:arcrole', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, 'http://www.w3.org/1999/xlink', false, // sanitizeURL\n  false);\n}); // String SVG attributes with the xml namespace.\n\n['xml:base', 'xml:lang', 'xml:space' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, 'http://www.w3.org/XML/1998/namespace', false, // sanitizeURL\n  false);\n}); // These attribute exists both in HTML and SVG.\n// The attribute name is case-sensitive in SVG so we can't just use\n// the React name like we do for attributes that exist only in HTML.\n\n['tabIndex', 'crossOrigin'].forEach(function (attributeName) {\n  properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty\n  attributeName.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These attributes accept URLs. These must not allow javascript: URLS.\n// These will also need to accept Trusted Types object in the future.\n\nvar xlinkHref = 'xlinkHref';\nproperties[xlinkHref] = new PropertyInfoRecord('xlinkHref', STRING, false, // mustUseProperty\n'xlink:href', 'http://www.w3.org/1999/xlink', true, // sanitizeURL\nfalse);\n['src', 'href', 'action', 'formAction'].forEach(function (attributeName) {\n  properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty\n  attributeName.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  true, // sanitizeURL\n  true);\n});\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\nvar isUnitlessNumber = {\n  animationIterationCount: true,\n  aspectRatio: true,\n  borderImageOutset: true,\n  borderImageSlice: true,\n  borderImageWidth: true,\n  boxFlex: true,\n  boxFlexGroup: true,\n  boxOrdinalGroup: true,\n  columnCount: true,\n  columns: true,\n  flex: true,\n  flexGrow: true,\n  flexPositive: true,\n  flexShrink: true,\n  flexNegative: true,\n  flexOrder: true,\n  gridArea: true,\n  gridRow: true,\n  gridRowEnd: true,\n  gridRowSpan: true,\n  gridRowStart: true,\n  gridColumn: true,\n  gridColumnEnd: true,\n  gridColumnSpan: true,\n  gridColumnStart: true,\n  fontWeight: true,\n  lineClamp: true,\n  lineHeight: true,\n  opacity: true,\n  order: true,\n  orphans: true,\n  tabSize: true,\n  widows: true,\n  zIndex: true,\n  zoom: true,\n  // SVG-related properties\n  fillOpacity: true,\n  floodOpacity: true,\n  stopOpacity: true,\n  strokeDasharray: true,\n  strokeDashoffset: true,\n  strokeMiterlimit: true,\n  strokeOpacity: true,\n  strokeWidth: true\n};\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\n\nfunction prefixKey(prefix, key) {\n  return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\n\n\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O']; // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\n\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n  prefixes.forEach(function (prefix) {\n    isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n  });\n});\n\nvar hasReadOnlyValue = {\n  button: true,\n  checkbox: true,\n  image: true,\n  hidden: true,\n  radio: true,\n  reset: true,\n  submit: true\n};\nfunction checkControlledValueProps(tagName, props) {\n  {\n    if (!(hasReadOnlyValue[props.type] || props.onChange || props.onInput || props.readOnly || props.disabled || props.value == null)) {\n      error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n    }\n\n    if (!(props.onChange || props.readOnly || props.disabled || props.checked == null)) {\n      error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n    }\n  }\n}\n\nfunction isCustomComponent(tagName, props) {\n  if (tagName.indexOf('-') === -1) {\n    return typeof props.is === 'string';\n  }\n\n  switch (tagName) {\n    // These are reserved SVG and MathML elements.\n    // We don't mind this list too much because we expect it to never grow.\n    // The alternative is to track the namespace in a few places which is convoluted.\n    // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts\n    case 'annotation-xml':\n    case 'color-profile':\n    case 'font-face':\n    case 'font-face-src':\n    case 'font-face-uri':\n    case 'font-face-format':\n    case 'font-face-name':\n    case 'missing-glyph':\n      return false;\n\n    default:\n      return true;\n  }\n}\n\nvar ariaProperties = {\n  'aria-current': 0,\n  // state\n  'aria-description': 0,\n  'aria-details': 0,\n  'aria-disabled': 0,\n  // state\n  'aria-hidden': 0,\n  // state\n  'aria-invalid': 0,\n  // state\n  'aria-keyshortcuts': 0,\n  'aria-label': 0,\n  'aria-roledescription': 0,\n  // Widget Attributes\n  'aria-autocomplete': 0,\n  'aria-checked': 0,\n  'aria-expanded': 0,\n  'aria-haspopup': 0,\n  'aria-level': 0,\n  'aria-modal': 0,\n  'aria-multiline': 0,\n  'aria-multiselectable': 0,\n  'aria-orientation': 0,\n  'aria-placeholder': 0,\n  'aria-pressed': 0,\n  'aria-readonly': 0,\n  'aria-required': 0,\n  'aria-selected': 0,\n  'aria-sort': 0,\n  'aria-valuemax': 0,\n  'aria-valuemin': 0,\n  'aria-valuenow': 0,\n  'aria-valuetext': 0,\n  // Live Region Attributes\n  'aria-atomic': 0,\n  'aria-busy': 0,\n  'aria-live': 0,\n  'aria-relevant': 0,\n  // Drag-and-Drop Attributes\n  'aria-dropeffect': 0,\n  'aria-grabbed': 0,\n  // Relationship Attributes\n  'aria-activedescendant': 0,\n  'aria-colcount': 0,\n  'aria-colindex': 0,\n  'aria-colspan': 0,\n  'aria-controls': 0,\n  'aria-describedby': 0,\n  'aria-errormessage': 0,\n  'aria-flowto': 0,\n  'aria-labelledby': 0,\n  'aria-owns': 0,\n  'aria-posinset': 0,\n  'aria-rowcount': 0,\n  'aria-rowindex': 0,\n  'aria-rowspan': 0,\n  'aria-setsize': 0\n};\n\nvar warnedProperties = {};\nvar rARIA = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');\nvar rARIACamel = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');\n\nfunction validateProperty(tagName, name) {\n  {\n    if (hasOwnProperty.call(warnedProperties, name) && warnedProperties[name]) {\n      return true;\n    }\n\n    if (rARIACamel.test(name)) {\n      var ariaName = 'aria-' + name.slice(4).toLowerCase();\n      var correctName = ariaProperties.hasOwnProperty(ariaName) ? ariaName : null; // If this is an aria-* attribute, but is not listed in the known DOM\n      // DOM properties, then it is an invalid aria-* attribute.\n\n      if (correctName == null) {\n        error('Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.', name);\n\n        warnedProperties[name] = true;\n        return true;\n      } // aria-* attributes should be lowercase; suggest the lowercase version.\n\n\n      if (name !== correctName) {\n        error('Invalid ARIA attribute `%s`. Did you mean `%s`?', name, correctName);\n\n        warnedProperties[name] = true;\n        return true;\n      }\n    }\n\n    if (rARIA.test(name)) {\n      var lowerCasedName = name.toLowerCase();\n      var standardName = ariaProperties.hasOwnProperty(lowerCasedName) ? lowerCasedName : null; // If this is an aria-* attribute, but is not listed in the known DOM\n      // DOM properties, then it is an invalid aria-* attribute.\n\n      if (standardName == null) {\n        warnedProperties[name] = true;\n        return false;\n      } // aria-* attributes should be lowercase; suggest the lowercase version.\n\n\n      if (name !== standardName) {\n        error('Unknown ARIA attribute `%s`. Did you mean `%s`?', name, standardName);\n\n        warnedProperties[name] = true;\n        return true;\n      }\n    }\n  }\n\n  return true;\n}\n\nfunction warnInvalidARIAProps(type, props) {\n  {\n    var invalidProps = [];\n\n    for (var key in props) {\n      var isValid = validateProperty(type, key);\n\n      if (!isValid) {\n        invalidProps.push(key);\n      }\n    }\n\n    var unknownPropString = invalidProps.map(function (prop) {\n      return '`' + prop + '`';\n    }).join(', ');\n\n    if (invalidProps.length === 1) {\n      error('Invalid aria prop %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type);\n    } else if (invalidProps.length > 1) {\n      error('Invalid aria props %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type);\n    }\n  }\n}\n\nfunction validateProperties(type, props) {\n  if (isCustomComponent(type, props)) {\n    return;\n  }\n\n  warnInvalidARIAProps(type, props);\n}\n\nvar didWarnValueNull = false;\nfunction validateProperties$1(type, props) {\n  {\n    if (type !== 'input' && type !== 'textarea' && type !== 'select') {\n      return;\n    }\n\n    if (props != null && props.value === null && !didWarnValueNull) {\n      didWarnValueNull = true;\n\n      if (type === 'select' && props.multiple) {\n        error('`value` prop on `%s` should not be null. ' + 'Consider using an empty array when `multiple` is set to `true` ' + 'to clear the component or `undefined` for uncontrolled components.', type);\n      } else {\n        error('`value` prop on `%s` should not be null. ' + 'Consider using an empty string to clear the component or `undefined` ' + 'for uncontrolled components.', type);\n      }\n    }\n  }\n}\n\n// When adding attributes to the HTML or SVG allowed attribute list, be sure to\n// also add them to this module to ensure casing and incorrect name\n// warnings.\nvar possibleStandardNames = {\n  // HTML\n  accept: 'accept',\n  acceptcharset: 'acceptCharset',\n  'accept-charset': 'acceptCharset',\n  accesskey: 'accessKey',\n  action: 'action',\n  allowfullscreen: 'allowFullScreen',\n  alt: 'alt',\n  as: 'as',\n  async: 'async',\n  autocapitalize: 'autoCapitalize',\n  autocomplete: 'autoComplete',\n  autocorrect: 'autoCorrect',\n  autofocus: 'autoFocus',\n  autoplay: 'autoPlay',\n  autosave: 'autoSave',\n  capture: 'capture',\n  cellpadding: 'cellPadding',\n  cellspacing: 'cellSpacing',\n  challenge: 'challenge',\n  charset: 'charSet',\n  checked: 'checked',\n  children: 'children',\n  cite: 'cite',\n  class: 'className',\n  classid: 'classID',\n  classname: 'className',\n  cols: 'cols',\n  colspan: 'colSpan',\n  content: 'content',\n  contenteditable: 'contentEditable',\n  contextmenu: 'contextMenu',\n  controls: 'controls',\n  controlslist: 'controlsList',\n  coords: 'coords',\n  crossorigin: 'crossOrigin',\n  dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',\n  data: 'data',\n  datetime: 'dateTime',\n  default: 'default',\n  defaultchecked: 'defaultChecked',\n  defaultvalue: 'defaultValue',\n  defer: 'defer',\n  dir: 'dir',\n  disabled: 'disabled',\n  disablepictureinpicture: 'disablePictureInPicture',\n  disableremoteplayback: 'disableRemotePlayback',\n  download: 'download',\n  draggable: 'draggable',\n  enctype: 'encType',\n  enterkeyhint: 'enterKeyHint',\n  for: 'htmlFor',\n  form: 'form',\n  formmethod: 'formMethod',\n  formaction: 'formAction',\n  formenctype: 'formEncType',\n  formnovalidate: 'formNoValidate',\n  formtarget: 'formTarget',\n  frameborder: 'frameBorder',\n  headers: 'headers',\n  height: 'height',\n  hidden: 'hidden',\n  high: 'high',\n  href: 'href',\n  hreflang: 'hrefLang',\n  htmlfor: 'htmlFor',\n  httpequiv: 'httpEquiv',\n  'http-equiv': 'httpEquiv',\n  icon: 'icon',\n  id: 'id',\n  imagesizes: 'imageSizes',\n  imagesrcset: 'imageSrcSet',\n  innerhtml: 'innerHTML',\n  inputmode: 'inputMode',\n  integrity: 'integrity',\n  is: 'is',\n  itemid: 'itemID',\n  itemprop: 'itemProp',\n  itemref: 'itemRef',\n  itemscope: 'itemScope',\n  itemtype: 'itemType',\n  keyparams: 'keyParams',\n  keytype: 'keyType',\n  kind: 'kind',\n  label: 'label',\n  lang: 'lang',\n  list: 'list',\n  loop: 'loop',\n  low: 'low',\n  manifest: 'manifest',\n  marginwidth: 'marginWidth',\n  marginheight: 'marginHeight',\n  max: 'max',\n  maxlength: 'maxLength',\n  media: 'media',\n  mediagroup: 'mediaGroup',\n  method: 'method',\n  min: 'min',\n  minlength: 'minLength',\n  multiple: 'multiple',\n  muted: 'muted',\n  name: 'name',\n  nomodule: 'noModule',\n  nonce: 'nonce',\n  novalidate: 'noValidate',\n  open: 'open',\n  optimum: 'optimum',\n  pattern: 'pattern',\n  placeholder: 'placeholder',\n  playsinline: 'playsInline',\n  poster: 'poster',\n  preload: 'preload',\n  profile: 'profile',\n  radiogroup: 'radioGroup',\n  readonly: 'readOnly',\n  referrerpolicy: 'referrerPolicy',\n  rel: 'rel',\n  required: 'required',\n  reversed: 'reversed',\n  role: 'role',\n  rows: 'rows',\n  rowspan: 'rowSpan',\n  sandbox: 'sandbox',\n  scope: 'scope',\n  scoped: 'scoped',\n  scrolling: 'scrolling',\n  seamless: 'seamless',\n  selected: 'selected',\n  shape: 'shape',\n  size: 'size',\n  sizes: 'sizes',\n  span: 'span',\n  spellcheck: 'spellCheck',\n  src: 'src',\n  srcdoc: 'srcDoc',\n  srclang: 'srcLang',\n  srcset: 'srcSet',\n  start: 'start',\n  step: 'step',\n  style: 'style',\n  summary: 'summary',\n  tabindex: 'tabIndex',\n  target: 'target',\n  title: 'title',\n  type: 'type',\n  usemap: 'useMap',\n  value: 'value',\n  width: 'width',\n  wmode: 'wmode',\n  wrap: 'wrap',\n  // SVG\n  about: 'about',\n  accentheight: 'accentHeight',\n  'accent-height': 'accentHeight',\n  accumulate: 'accumulate',\n  additive: 'additive',\n  alignmentbaseline: 'alignmentBaseline',\n  'alignment-baseline': 'alignmentBaseline',\n  allowreorder: 'allowReorder',\n  alphabetic: 'alphabetic',\n  amplitude: 'amplitude',\n  arabicform: 'arabicForm',\n  'arabic-form': 'arabicForm',\n  ascent: 'ascent',\n  attributename: 'attributeName',\n  attributetype: 'attributeType',\n  autoreverse: 'autoReverse',\n  azimuth: 'azimuth',\n  basefrequency: 'baseFrequency',\n  baselineshift: 'baselineShift',\n  'baseline-shift': 'baselineShift',\n  baseprofile: 'baseProfile',\n  bbox: 'bbox',\n  begin: 'begin',\n  bias: 'bias',\n  by: 'by',\n  calcmode: 'calcMode',\n  capheight: 'capHeight',\n  'cap-height': 'capHeight',\n  clip: 'clip',\n  clippath: 'clipPath',\n  'clip-path': 'clipPath',\n  clippathunits: 'clipPathUnits',\n  cliprule: 'clipRule',\n  'clip-rule': 'clipRule',\n  color: 'color',\n  colorinterpolation: 'colorInterpolation',\n  'color-interpolation': 'colorInterpolation',\n  colorinterpolationfilters: 'colorInterpolationFilters',\n  'color-interpolation-filters': 'colorInterpolationFilters',\n  colorprofile: 'colorProfile',\n  'color-profile': 'colorProfile',\n  colorrendering: 'colorRendering',\n  'color-rendering': 'colorRendering',\n  contentscripttype: 'contentScriptType',\n  contentstyletype: 'contentStyleType',\n  cursor: 'cursor',\n  cx: 'cx',\n  cy: 'cy',\n  d: 'd',\n  datatype: 'datatype',\n  decelerate: 'decelerate',\n  descent: 'descent',\n  diffuseconstant: 'diffuseConstant',\n  direction: 'direction',\n  display: 'display',\n  divisor: 'divisor',\n  dominantbaseline: 'dominantBaseline',\n  'dominant-baseline': 'dominantBaseline',\n  dur: 'dur',\n  dx: 'dx',\n  dy: 'dy',\n  edgemode: 'edgeMode',\n  elevation: 'elevation',\n  enablebackground: 'enableBackground',\n  'enable-background': 'enableBackground',\n  end: 'end',\n  exponent: 'exponent',\n  externalresourcesrequired: 'externalResourcesRequired',\n  fill: 'fill',\n  fillopacity: 'fillOpacity',\n  'fill-opacity': 'fillOpacity',\n  fillrule: 'fillRule',\n  'fill-rule': 'fillRule',\n  filter: 'filter',\n  filterres: 'filterRes',\n  filterunits: 'filterUnits',\n  floodopacity: 'floodOpacity',\n  'flood-opacity': 'floodOpacity',\n  floodcolor: 'floodColor',\n  'flood-color': 'floodColor',\n  focusable: 'focusable',\n  fontfamily: 'fontFamily',\n  'font-family': 'fontFamily',\n  fontsize: 'fontSize',\n  'font-size': 'fontSize',\n  fontsizeadjust: 'fontSizeAdjust',\n  'font-size-adjust': 'fontSizeAdjust',\n  fontstretch: 'fontStretch',\n  'font-stretch': 'fontStretch',\n  fontstyle: 'fontStyle',\n  'font-style': 'fontStyle',\n  fontvariant: 'fontVariant',\n  'font-variant': 'fontVariant',\n  fontweight: 'fontWeight',\n  'font-weight': 'fontWeight',\n  format: 'format',\n  from: 'from',\n  fx: 'fx',\n  fy: 'fy',\n  g1: 'g1',\n  g2: 'g2',\n  glyphname: 'glyphName',\n  'glyph-name': 'glyphName',\n  glyphorientationhorizontal: 'glyphOrientationHorizontal',\n  'glyph-orientation-horizontal': 'glyphOrientationHorizontal',\n  glyphorientationvertical: 'glyphOrientationVertical',\n  'glyph-orientation-vertical': 'glyphOrientationVertical',\n  glyphref: 'glyphRef',\n  gradienttransform: 'gradientTransform',\n  gradientunits: 'gradientUnits',\n  hanging: 'hanging',\n  horizadvx: 'horizAdvX',\n  'horiz-adv-x': 'horizAdvX',\n  horizoriginx: 'horizOriginX',\n  'horiz-origin-x': 'horizOriginX',\n  ideographic: 'ideographic',\n  imagerendering: 'imageRendering',\n  'image-rendering': 'imageRendering',\n  in2: 'in2',\n  in: 'in',\n  inlist: 'inlist',\n  intercept: 'intercept',\n  k1: 'k1',\n  k2: 'k2',\n  k3: 'k3',\n  k4: 'k4',\n  k: 'k',\n  kernelmatrix: 'kernelMatrix',\n  kernelunitlength: 'kernelUnitLength',\n  kerning: 'kerning',\n  keypoints: 'keyPoints',\n  keysplines: 'keySplines',\n  keytimes: 'keyTimes',\n  lengthadjust: 'lengthAdjust',\n  letterspacing: 'letterSpacing',\n  'letter-spacing': 'letterSpacing',\n  lightingcolor: 'lightingColor',\n  'lighting-color': 'lightingColor',\n  limitingconeangle: 'limitingConeAngle',\n  local: 'local',\n  markerend: 'markerEnd',\n  'marker-end': 'markerEnd',\n  markerheight: 'markerHeight',\n  markermid: 'markerMid',\n  'marker-mid': 'markerMid',\n  markerstart: 'markerStart',\n  'marker-start': 'markerStart',\n  markerunits: 'markerUnits',\n  markerwidth: 'markerWidth',\n  mask: 'mask',\n  maskcontentunits: 'maskContentUnits',\n  maskunits: 'maskUnits',\n  mathematical: 'mathematical',\n  mode: 'mode',\n  numoctaves: 'numOctaves',\n  offset: 'offset',\n  opacity: 'opacity',\n  operator: 'operator',\n  order: 'order',\n  orient: 'orient',\n  orientation: 'orientation',\n  origin: 'origin',\n  overflow: 'overflow',\n  overlineposition: 'overlinePosition',\n  'overline-position': 'overlinePosition',\n  overlinethickness: 'overlineThickness',\n  'overline-thickness': 'overlineThickness',\n  paintorder: 'paintOrder',\n  'paint-order': 'paintOrder',\n  panose1: 'panose1',\n  'panose-1': 'panose1',\n  pathlength: 'pathLength',\n  patterncontentunits: 'patternContentUnits',\n  patterntransform: 'patternTransform',\n  patternunits: 'patternUnits',\n  pointerevents: 'pointerEvents',\n  'pointer-events': 'pointerEvents',\n  points: 'points',\n  pointsatx: 'pointsAtX',\n  pointsaty: 'pointsAtY',\n  pointsatz: 'pointsAtZ',\n  prefix: 'prefix',\n  preservealpha: 'preserveAlpha',\n  preserveaspectratio: 'preserveAspectRatio',\n  primitiveunits: 'primitiveUnits',\n  property: 'property',\n  r: 'r',\n  radius: 'radius',\n  refx: 'refX',\n  refy: 'refY',\n  renderingintent: 'renderingIntent',\n  'rendering-intent': 'renderingIntent',\n  repeatcount: 'repeatCount',\n  repeatdur: 'repeatDur',\n  requiredextensions: 'requiredExtensions',\n  requiredfeatures: 'requiredFeatures',\n  resource: 'resource',\n  restart: 'restart',\n  result: 'result',\n  results: 'results',\n  rotate: 'rotate',\n  rx: 'rx',\n  ry: 'ry',\n  scale: 'scale',\n  security: 'security',\n  seed: 'seed',\n  shaperendering: 'shapeRendering',\n  'shape-rendering': 'shapeRendering',\n  slope: 'slope',\n  spacing: 'spacing',\n  specularconstant: 'specularConstant',\n  specularexponent: 'specularExponent',\n  speed: 'speed',\n  spreadmethod: 'spreadMethod',\n  startoffset: 'startOffset',\n  stddeviation: 'stdDeviation',\n  stemh: 'stemh',\n  stemv: 'stemv',\n  stitchtiles: 'stitchTiles',\n  stopcolor: 'stopColor',\n  'stop-color': 'stopColor',\n  stopopacity: 'stopOpacity',\n  'stop-opacity': 'stopOpacity',\n  strikethroughposition: 'strikethroughPosition',\n  'strikethrough-position': 'strikethroughPosition',\n  strikethroughthickness: 'strikethroughThickness',\n  'strikethrough-thickness': 'strikethroughThickness',\n  string: 'string',\n  stroke: 'stroke',\n  strokedasharray: 'strokeDasharray',\n  'stroke-dasharray': 'strokeDasharray',\n  strokedashoffset: 'strokeDashoffset',\n  'stroke-dashoffset': 'strokeDashoffset',\n  strokelinecap: 'strokeLinecap',\n  'stroke-linecap': 'strokeLinecap',\n  strokelinejoin: 'strokeLinejoin',\n  'stroke-linejoin': 'strokeLinejoin',\n  strokemiterlimit: 'strokeMiterlimit',\n  'stroke-miterlimit': 'strokeMiterlimit',\n  strokewidth: 'strokeWidth',\n  'stroke-width': 'strokeWidth',\n  strokeopacity: 'strokeOpacity',\n  'stroke-opacity': 'strokeOpacity',\n  suppresscontenteditablewarning: 'suppressContentEditableWarning',\n  suppresshydrationwarning: 'suppressHydrationWarning',\n  surfacescale: 'surfaceScale',\n  systemlanguage: 'systemLanguage',\n  tablevalues: 'tableValues',\n  targetx: 'targetX',\n  targety: 'targetY',\n  textanchor: 'textAnchor',\n  'text-anchor': 'textAnchor',\n  textdecoration: 'textDecoration',\n  'text-decoration': 'textDecoration',\n  textlength: 'textLength',\n  textrendering: 'textRendering',\n  'text-rendering': 'textRendering',\n  to: 'to',\n  transform: 'transform',\n  typeof: 'typeof',\n  u1: 'u1',\n  u2: 'u2',\n  underlineposition: 'underlinePosition',\n  'underline-position': 'underlinePosition',\n  underlinethickness: 'underlineThickness',\n  'underline-thickness': 'underlineThickness',\n  unicode: 'unicode',\n  unicodebidi: 'unicodeBidi',\n  'unicode-bidi': 'unicodeBidi',\n  unicoderange: 'unicodeRange',\n  'unicode-range': 'unicodeRange',\n  unitsperem: 'unitsPerEm',\n  'units-per-em': 'unitsPerEm',\n  unselectable: 'unselectable',\n  valphabetic: 'vAlphabetic',\n  'v-alphabetic': 'vAlphabetic',\n  values: 'values',\n  vectoreffect: 'vectorEffect',\n  'vector-effect': 'vectorEffect',\n  version: 'version',\n  vertadvy: 'vertAdvY',\n  'vert-adv-y': 'vertAdvY',\n  vertoriginx: 'vertOriginX',\n  'vert-origin-x': 'vertOriginX',\n  vertoriginy: 'vertOriginY',\n  'vert-origin-y': 'vertOriginY',\n  vhanging: 'vHanging',\n  'v-hanging': 'vHanging',\n  videographic: 'vIdeographic',\n  'v-ideographic': 'vIdeographic',\n  viewbox: 'viewBox',\n  viewtarget: 'viewTarget',\n  visibility: 'visibility',\n  vmathematical: 'vMathematical',\n  'v-mathematical': 'vMathematical',\n  vocab: 'vocab',\n  widths: 'widths',\n  wordspacing: 'wordSpacing',\n  'word-spacing': 'wordSpacing',\n  writingmode: 'writingMode',\n  'writing-mode': 'writingMode',\n  x1: 'x1',\n  x2: 'x2',\n  x: 'x',\n  xchannelselector: 'xChannelSelector',\n  xheight: 'xHeight',\n  'x-height': 'xHeight',\n  xlinkactuate: 'xlinkActuate',\n  'xlink:actuate': 'xlinkActuate',\n  xlinkarcrole: 'xlinkArcrole',\n  'xlink:arcrole': 'xlinkArcrole',\n  xlinkhref: 'xlinkHref',\n  'xlink:href': 'xlinkHref',\n  xlinkrole: 'xlinkRole',\n  'xlink:role': 'xlinkRole',\n  xlinkshow: 'xlinkShow',\n  'xlink:show': 'xlinkShow',\n  xlinktitle: 'xlinkTitle',\n  'xlink:title': 'xlinkTitle',\n  xlinktype: 'xlinkType',\n  'xlink:type': 'xlinkType',\n  xmlbase: 'xmlBase',\n  'xml:base': 'xmlBase',\n  xmllang: 'xmlLang',\n  'xml:lang': 'xmlLang',\n  xmlns: 'xmlns',\n  'xml:space': 'xmlSpace',\n  xmlnsxlink: 'xmlnsXlink',\n  'xmlns:xlink': 'xmlnsXlink',\n  xmlspace: 'xmlSpace',\n  y1: 'y1',\n  y2: 'y2',\n  y: 'y',\n  ychannelselector: 'yChannelSelector',\n  z: 'z',\n  zoomandpan: 'zoomAndPan'\n};\n\nvar validateProperty$1 = function () {};\n\n{\n  var warnedProperties$1 = {};\n  var EVENT_NAME_REGEX = /^on./;\n  var INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/;\n  var rARIA$1 = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');\n  var rARIACamel$1 = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');\n\n  validateProperty$1 = function (tagName, name, value, eventRegistry) {\n    if (hasOwnProperty.call(warnedProperties$1, name) && warnedProperties$1[name]) {\n      return true;\n    }\n\n    var lowerCasedName = name.toLowerCase();\n\n    if (lowerCasedName === 'onfocusin' || lowerCasedName === 'onfocusout') {\n      error('React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.');\n\n      warnedProperties$1[name] = true;\n      return true;\n    } // We can't rely on the event system being injected on the server.\n\n\n    if (eventRegistry != null) {\n      var registrationNameDependencies = eventRegistry.registrationNameDependencies,\n          possibleRegistrationNames = eventRegistry.possibleRegistrationNames;\n\n      if (registrationNameDependencies.hasOwnProperty(name)) {\n        return true;\n      }\n\n      var registrationName = possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames[lowerCasedName] : null;\n\n      if (registrationName != null) {\n        error('Invalid event handler property `%s`. Did you mean `%s`?', name, registrationName);\n\n        warnedProperties$1[name] = true;\n        return true;\n      }\n\n      if (EVENT_NAME_REGEX.test(name)) {\n        error('Unknown event handler property `%s`. It will be ignored.', name);\n\n        warnedProperties$1[name] = true;\n        return true;\n      }\n    } else if (EVENT_NAME_REGEX.test(name)) {\n      // If no event plugins have been injected, we are in a server environment.\n      // So we can't tell if the event name is correct for sure, but we can filter\n      // out known bad ones like `onclick`. We can't suggest a specific replacement though.\n      if (INVALID_EVENT_NAME_REGEX.test(name)) {\n        error('Invalid event handler property `%s`. ' + 'React events use the camelCase naming convention, for example `onClick`.', name);\n      }\n\n      warnedProperties$1[name] = true;\n      return true;\n    } // Let the ARIA attribute hook validate ARIA attributes\n\n\n    if (rARIA$1.test(name) || rARIACamel$1.test(name)) {\n      return true;\n    }\n\n    if (lowerCasedName === 'innerhtml') {\n      error('Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.');\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (lowerCasedName === 'aria') {\n      error('The `aria` attribute is reserved for future use in React. ' + 'Pass individual `aria-` attributes instead.');\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (lowerCasedName === 'is' && value !== null && value !== undefined && typeof value !== 'string') {\n      error('Received a `%s` for a string attribute `is`. If this is expected, cast ' + 'the value to a string.', typeof value);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (typeof value === 'number' && isNaN(value)) {\n      error('Received NaN for the `%s` attribute. If this is expected, cast ' + 'the value to a string.', name);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    var propertyInfo = getPropertyInfo(name);\n    var isReserved = propertyInfo !== null && propertyInfo.type === RESERVED; // Known attributes should match the casing specified in the property config.\n\n    if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n      var standardName = possibleStandardNames[lowerCasedName];\n\n      if (standardName !== name) {\n        error('Invalid DOM property `%s`. Did you mean `%s`?', name, standardName);\n\n        warnedProperties$1[name] = true;\n        return true;\n      }\n    } else if (!isReserved && name !== lowerCasedName) {\n      // Unknown attributes should have lowercase casing since that's how they\n      // will be cased anyway with server rendering.\n      error('React does not recognize the `%s` prop on a DOM element. If you ' + 'intentionally want it to appear in the DOM as a custom ' + 'attribute, spell it as lowercase `%s` instead. ' + 'If you accidentally passed it from a parent component, remove ' + 'it from the DOM element.', name, lowerCasedName);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (typeof value === 'boolean' && shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {\n      if (value) {\n        error('Received `%s` for a non-boolean attribute `%s`.\\n\\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s=\"%s\" or %s={value.toString()}.', value, name, name, value, name);\n      } else {\n        error('Received `%s` for a non-boolean attribute `%s`.\\n\\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s=\"%s\" or %s={value.toString()}.\\n\\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', value, name, name, value, name, name, name);\n      }\n\n      warnedProperties$1[name] = true;\n      return true;\n    } // Now that we've validated casing, do not validate\n    // data types for reserved props\n\n\n    if (isReserved) {\n      return true;\n    } // Warn when a known attribute is a bad type\n\n\n    if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {\n      warnedProperties$1[name] = true;\n      return false;\n    } // Warn when passing the strings 'false' or 'true' into a boolean prop\n\n\n    if ((value === 'false' || value === 'true') && propertyInfo !== null && propertyInfo.type === BOOLEAN) {\n      error('Received the string `%s` for the boolean attribute `%s`. ' + '%s ' + 'Did you mean %s={%s}?', value, name, value === 'false' ? 'The browser will interpret it as a truthy value.' : 'Although this works, it will not work as expected if you pass the string \"false\".', name, value);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    return true;\n  };\n}\n\nvar warnUnknownProperties = function (type, props, eventRegistry) {\n  {\n    var unknownProps = [];\n\n    for (var key in props) {\n      var isValid = validateProperty$1(type, key, props[key], eventRegistry);\n\n      if (!isValid) {\n        unknownProps.push(key);\n      }\n    }\n\n    var unknownPropString = unknownProps.map(function (prop) {\n      return '`' + prop + '`';\n    }).join(', ');\n\n    if (unknownProps.length === 1) {\n      error('Invalid value for prop %s on <%s> tag. Either remove it from the element, ' + 'or pass a string or number value to keep it in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type);\n    } else if (unknownProps.length > 1) {\n      error('Invalid values for props %s on <%s> tag. Either remove them from the element, ' + 'or pass a string or number value to keep them in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type);\n    }\n  }\n};\n\nfunction validateProperties$2(type, props, eventRegistry) {\n  if (isCustomComponent(type, props)) {\n    return;\n  }\n\n  warnUnknownProperties(type, props, eventRegistry);\n}\n\nvar warnValidStyle = function () {};\n\n{\n  // 'msTransform' is correct, but the other prefixes should be capitalized\n  var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n  var msPattern = /^-ms-/;\n  var hyphenPattern = /-(.)/g; // style values shouldn't contain a semicolon\n\n  var badStyleValueWithSemicolonPattern = /;\\s*$/;\n  var warnedStyleNames = {};\n  var warnedStyleValues = {};\n  var warnedForNaNValue = false;\n  var warnedForInfinityValue = false;\n\n  var camelize = function (string) {\n    return string.replace(hyphenPattern, function (_, character) {\n      return character.toUpperCase();\n    });\n  };\n\n  var warnHyphenatedStyleName = function (name) {\n    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n      return;\n    }\n\n    warnedStyleNames[name] = true;\n\n    error('Unsupported style property %s. Did you mean %s?', name, // As Andi Smith suggests\n    // (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n    // is converted to lowercase `ms`.\n    camelize(name.replace(msPattern, 'ms-')));\n  };\n\n  var warnBadVendoredStyleName = function (name) {\n    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n      return;\n    }\n\n    warnedStyleNames[name] = true;\n\n    error('Unsupported vendor-prefixed style property %s. Did you mean %s?', name, name.charAt(0).toUpperCase() + name.slice(1));\n  };\n\n  var warnStyleValueWithSemicolon = function (name, value) {\n    if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n      return;\n    }\n\n    warnedStyleValues[value] = true;\n\n    error(\"Style property values shouldn't contain a semicolon. \" + 'Try \"%s: %s\" instead.', name, value.replace(badStyleValueWithSemicolonPattern, ''));\n  };\n\n  var warnStyleValueIsNaN = function (name, value) {\n    if (warnedForNaNValue) {\n      return;\n    }\n\n    warnedForNaNValue = true;\n\n    error('`NaN` is an invalid value for the `%s` css style property.', name);\n  };\n\n  var warnStyleValueIsInfinity = function (name, value) {\n    if (warnedForInfinityValue) {\n      return;\n    }\n\n    warnedForInfinityValue = true;\n\n    error('`Infinity` is an invalid value for the `%s` css style property.', name);\n  };\n\n  warnValidStyle = function (name, value) {\n    if (name.indexOf('-') > -1) {\n      warnHyphenatedStyleName(name);\n    } else if (badVendoredStyleNamePattern.test(name)) {\n      warnBadVendoredStyleName(name);\n    } else if (badStyleValueWithSemicolonPattern.test(value)) {\n      warnStyleValueWithSemicolon(name, value);\n    }\n\n    if (typeof value === 'number') {\n      if (isNaN(value)) {\n        warnStyleValueIsNaN(name, value);\n      } else if (!isFinite(value)) {\n        warnStyleValueIsInfinity(name, value);\n      }\n    }\n  };\n}\n\nvar warnValidStyle$1 = warnValidStyle;\n\n// code copied and modified from escape-html\nvar matchHtmlRegExp = /[\"'&<>]/;\n/**\n * Escapes special characters and HTML entities in a given html string.\n *\n * @param  {string} string HTML string to escape for later insertion\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n  {\n    checkHtmlStringCoercion(string);\n  }\n\n  var str = '' + string;\n  var match = matchHtmlRegExp.exec(str);\n\n  if (!match) {\n    return str;\n  }\n\n  var escape;\n  var html = '';\n  var index;\n  var lastIndex = 0;\n\n  for (index = match.index; index < str.length; index++) {\n    switch (str.charCodeAt(index)) {\n      case 34:\n        // \"\n        escape = '&quot;';\n        break;\n\n      case 38:\n        // &\n        escape = '&amp;';\n        break;\n\n      case 39:\n        // '\n        escape = '&#x27;'; // modified from escape-html; used to be '&#39'\n\n        break;\n\n      case 60:\n        // <\n        escape = '&lt;';\n        break;\n\n      case 62:\n        // >\n        escape = '&gt;';\n        break;\n\n      default:\n        continue;\n    }\n\n    if (lastIndex !== index) {\n      html += str.substring(lastIndex, index);\n    }\n\n    lastIndex = index + 1;\n    html += escape;\n  }\n\n  return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n} // end code copied and modified from escape-html\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\n\n\nfunction escapeTextForBrowser(text) {\n  if (typeof text === 'boolean' || typeof text === 'number') {\n    // this shortcircuit helps perf for types that we know will never have\n    // special characters, especially given that this function is used often\n    // for numeric dom ids.\n    return '' + text;\n  }\n\n  return escapeHtml(text);\n}\n\nvar uppercasePattern = /([A-Z])/g;\nvar msPattern$1 = /^ms-/;\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n *   > hyphenateStyleName('backgroundColor')\n *   < \"background-color\"\n *   > hyphenateStyleName('MozTransition')\n *   < \"-moz-transition\"\n *   > hyphenateStyleName('msTransition')\n *   < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n */\n\nfunction hyphenateStyleName(name) {\n  return name.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern$1, '-ms-');\n}\n\n// and any newline or tab are filtered out as if they're not part of the URL.\n// https://url.spec.whatwg.org/#url-parsing\n// Tab or newline are defined as \\r\\n\\t:\n// https://infra.spec.whatwg.org/#ascii-tab-or-newline\n// A C0 control is a code point in the range \\u0000 NULL to \\u001F\n// INFORMATION SEPARATOR ONE, inclusive:\n// https://infra.spec.whatwg.org/#c0-control-or-space\n\n/* eslint-disable max-len */\n\nvar isJavaScriptProtocol = /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*\\:/i;\nvar didWarn = false;\n\nfunction sanitizeURL(url) {\n  {\n    if (!didWarn && isJavaScriptProtocol.test(url)) {\n      didWarn = true;\n\n      error('A future version of React will block javascript: URLs as a security precaution. ' + 'Use event handlers instead if you can. If you need to generate unsafe HTML try ' + 'using dangerouslySetInnerHTML instead. React was passed %s.', JSON.stringify(url));\n    }\n  }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\nvar startInlineScript = stringToPrecomputedChunk('<script>');\nvar endInlineScript = stringToPrecomputedChunk('</script>');\nvar startScriptSrc = stringToPrecomputedChunk('<script src=\"');\nvar startModuleSrc = stringToPrecomputedChunk('<script type=\"module\" src=\"');\nvar endAsyncScript = stringToPrecomputedChunk('\" async=\"\"></script>'); // Allows us to keep track of what we've already written so we can refer back to it.\n\nfunction createResponseState(identifierPrefix, nonce, bootstrapScriptContent, bootstrapScripts, bootstrapModules) {\n  var idPrefix = identifierPrefix === undefined ? '' : identifierPrefix;\n  var inlineScriptWithNonce = nonce === undefined ? startInlineScript : stringToPrecomputedChunk('<script nonce=\"' + escapeTextForBrowser(nonce) + '\">');\n  var bootstrapChunks = [];\n\n  if (bootstrapScriptContent !== undefined) {\n    bootstrapChunks.push(inlineScriptWithNonce, stringToChunk(escapeTextForBrowser(bootstrapScriptContent)), endInlineScript);\n  }\n\n  if (bootstrapScripts !== undefined) {\n    for (var i = 0; i < bootstrapScripts.length; i++) {\n      bootstrapChunks.push(startScriptSrc, stringToChunk(escapeTextForBrowser(bootstrapScripts[i])), endAsyncScript);\n    }\n  }\n\n  if (bootstrapModules !== undefined) {\n    for (var _i = 0; _i < bootstrapModules.length; _i++) {\n      bootstrapChunks.push(startModuleSrc, stringToChunk(escapeTextForBrowser(bootstrapModules[_i])), endAsyncScript);\n    }\n  }\n\n  return {\n    bootstrapChunks: bootstrapChunks,\n    startInlineScript: inlineScriptWithNonce,\n    placeholderPrefix: stringToPrecomputedChunk(idPrefix + 'P:'),\n    segmentPrefix: stringToPrecomputedChunk(idPrefix + 'S:'),\n    boundaryPrefix: idPrefix + 'B:',\n    idPrefix: idPrefix,\n    nextSuspenseID: 0,\n    sentCompleteSegmentFunction: false,\n    sentCompleteBoundaryFunction: false,\n    sentClientRenderFunction: false\n  };\n} // Constants for the insertion mode we're currently writing in. We don't encode all HTML5 insertion\n// modes. We only include the variants as they matter for the sake of our purposes.\n// We don't actually provide the namespace therefore we use constants instead of the string.\n\nvar ROOT_HTML_MODE = 0; // Used for the root most element tag.\n\nvar HTML_MODE = 1;\nvar SVG_MODE = 2;\nvar MATHML_MODE = 3;\nvar HTML_TABLE_MODE = 4;\nvar HTML_TABLE_BODY_MODE = 5;\nvar HTML_TABLE_ROW_MODE = 6;\nvar HTML_COLGROUP_MODE = 7; // We have a greater than HTML_TABLE_MODE check elsewhere. If you add more cases here, make sure it\n// still makes sense\n\nfunction createFormatContext(insertionMode, selectedValue) {\n  return {\n    insertionMode: insertionMode,\n    selectedValue: selectedValue\n  };\n}\nfunction getChildFormatContext(parentContext, type, props) {\n  switch (type) {\n    case 'select':\n      return createFormatContext(HTML_MODE, props.value != null ? props.value : props.defaultValue);\n\n    case 'svg':\n      return createFormatContext(SVG_MODE, null);\n\n    case 'math':\n      return createFormatContext(MATHML_MODE, null);\n\n    case 'foreignObject':\n      return createFormatContext(HTML_MODE, null);\n    // Table parents are special in that their children can only be created at all if they're\n    // wrapped in a table parent. So we need to encode that we're entering this mode.\n\n    case 'table':\n      return createFormatContext(HTML_TABLE_MODE, null);\n\n    case 'thead':\n    case 'tbody':\n    case 'tfoot':\n      return createFormatContext(HTML_TABLE_BODY_MODE, null);\n\n    case 'colgroup':\n      return createFormatContext(HTML_COLGROUP_MODE, null);\n\n    case 'tr':\n      return createFormatContext(HTML_TABLE_ROW_MODE, null);\n  }\n\n  if (parentContext.insertionMode >= HTML_TABLE_MODE) {\n    // Whatever tag this was, it wasn't a table parent or other special parent, so we must have\n    // entered plain HTML again.\n    return createFormatContext(HTML_MODE, null);\n  }\n\n  if (parentContext.insertionMode === ROOT_HTML_MODE) {\n    // We've emitted the root and is now in plain HTML mode.\n    return createFormatContext(HTML_MODE, null);\n  }\n\n  return parentContext;\n}\nvar UNINITIALIZED_SUSPENSE_BOUNDARY_ID = null;\nfunction assignSuspenseBoundaryID(responseState) {\n  var generatedID = responseState.nextSuspenseID++;\n  return stringToPrecomputedChunk(responseState.boundaryPrefix + generatedID.toString(16));\n}\nfunction makeId(responseState, treeId, localId) {\n  var idPrefix = responseState.idPrefix;\n  var id = ':' + idPrefix + 'R' + treeId; // Unless this is the first id at this level, append a number at the end\n  // that represents the position of this useId hook among all the useId\n  // hooks for this fiber.\n\n  if (localId > 0) {\n    id += 'H' + localId.toString(32);\n  }\n\n  return id + ':';\n}\n\nfunction encodeHTMLTextNode(text) {\n  return escapeTextForBrowser(text);\n}\n\nvar textSeparator = stringToPrecomputedChunk('<!-- -->');\nfunction pushTextInstance(target, text, responseState) {\n  if (text === '') {\n    // Empty text doesn't have a DOM node representation and the hydration is aware of this.\n    return;\n  } // TODO: Avoid adding a text separator in common cases.\n\n\n  target.push(stringToChunk(encodeHTMLTextNode(text)), textSeparator);\n}\nvar styleNameCache = new Map();\n\nfunction processStyleName(styleName) {\n  var chunk = styleNameCache.get(styleName);\n\n  if (chunk !== undefined) {\n    return chunk;\n  }\n\n  var result = stringToPrecomputedChunk(escapeTextForBrowser(hyphenateStyleName(styleName)));\n  styleNameCache.set(styleName, result);\n  return result;\n}\n\nvar styleAttributeStart = stringToPrecomputedChunk(' style=\"');\nvar styleAssign = stringToPrecomputedChunk(':');\nvar styleSeparator = stringToPrecomputedChunk(';');\n\nfunction pushStyle(target, responseState, style) {\n  if (typeof style !== 'object') {\n    throw new Error('The `style` prop expects a mapping from style properties to values, ' + \"not a string. For example, style={{marginRight: spacing + 'em'}} when \" + 'using JSX.');\n  }\n\n  var isFirst = true;\n\n  for (var styleName in style) {\n    if (!hasOwnProperty.call(style, styleName)) {\n      continue;\n    } // If you provide unsafe user data here they can inject arbitrary CSS\n    // which may be problematic (I couldn't repro this):\n    // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n    // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n    // This is not an XSS hole but instead a potential CSS injection issue\n    // which has lead to a greater discussion about how we're going to\n    // trust URLs moving forward. See #2115901\n\n\n    var styleValue = style[styleName];\n\n    if (styleValue == null || typeof styleValue === 'boolean' || styleValue === '') {\n      // TODO: We used to set empty string as a style with an empty value. Does that ever make sense?\n      continue;\n    }\n\n    var nameChunk = void 0;\n    var valueChunk = void 0;\n    var isCustomProperty = styleName.indexOf('--') === 0;\n\n    if (isCustomProperty) {\n      nameChunk = stringToChunk(escapeTextForBrowser(styleName));\n\n      {\n        checkCSSPropertyStringCoercion(styleValue, styleName);\n      }\n\n      valueChunk = stringToChunk(escapeTextForBrowser(('' + styleValue).trim()));\n    } else {\n      {\n        warnValidStyle$1(styleName, styleValue);\n      }\n\n      nameChunk = processStyleName(styleName);\n\n      if (typeof styleValue === 'number') {\n        if (styleValue !== 0 && !hasOwnProperty.call(isUnitlessNumber, styleName)) {\n          valueChunk = stringToChunk(styleValue + 'px'); // Presumes implicit 'px' suffix for unitless numbers\n        } else {\n          valueChunk = stringToChunk('' + styleValue);\n        }\n      } else {\n        {\n          checkCSSPropertyStringCoercion(styleValue, styleName);\n        }\n\n        valueChunk = stringToChunk(escapeTextForBrowser(('' + styleValue).trim()));\n      }\n    }\n\n    if (isFirst) {\n      isFirst = false; // If it's first, we don't need any separators prefixed.\n\n      target.push(styleAttributeStart, nameChunk, styleAssign, valueChunk);\n    } else {\n      target.push(styleSeparator, nameChunk, styleAssign, valueChunk);\n    }\n  }\n\n  if (!isFirst) {\n    target.push(attributeEnd);\n  }\n}\n\nvar attributeSeparator = stringToPrecomputedChunk(' ');\nvar attributeAssign = stringToPrecomputedChunk('=\"');\nvar attributeEnd = stringToPrecomputedChunk('\"');\nvar attributeEmptyString = stringToPrecomputedChunk('=\"\"');\n\nfunction pushAttribute(target, responseState, name, value) {\n  switch (name) {\n    case 'style':\n      {\n        pushStyle(target, responseState, value);\n        return;\n      }\n\n    case 'defaultValue':\n    case 'defaultChecked': // These shouldn't be set as attributes on generic HTML elements.\n\n    case 'innerHTML': // Must use dangerouslySetInnerHTML instead.\n\n    case 'suppressContentEditableWarning':\n    case 'suppressHydrationWarning':\n      // Ignored. These are built-in to React on the client.\n      return;\n  }\n\n  if ( // shouldIgnoreAttribute\n  // We have already filtered out null/undefined and reserved words.\n  name.length > 2 && (name[0] === 'o' || name[0] === 'O') && (name[1] === 'n' || name[1] === 'N')) {\n    return;\n  }\n\n  var propertyInfo = getPropertyInfo(name);\n\n  if (propertyInfo !== null) {\n    // shouldRemoveAttribute\n    switch (typeof value) {\n      case 'function': // $FlowIssue symbol is perfectly valid here\n\n      case 'symbol':\n        // eslint-disable-line\n        return;\n\n      case 'boolean':\n        {\n          if (!propertyInfo.acceptsBooleans) {\n            return;\n          }\n        }\n    }\n\n    var attributeName = propertyInfo.attributeName;\n    var attributeNameChunk = stringToChunk(attributeName); // TODO: If it's known we can cache the chunk.\n\n    switch (propertyInfo.type) {\n      case BOOLEAN:\n        if (value) {\n          target.push(attributeSeparator, attributeNameChunk, attributeEmptyString);\n        }\n\n        return;\n\n      case OVERLOADED_BOOLEAN:\n        if (value === true) {\n          target.push(attributeSeparator, attributeNameChunk, attributeEmptyString);\n        } else if (value === false) ; else {\n          target.push(attributeSeparator, attributeNameChunk, attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n        }\n\n        return;\n\n      case NUMERIC:\n        if (!isNaN(value)) {\n          target.push(attributeSeparator, attributeNameChunk, attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n        }\n\n        break;\n\n      case POSITIVE_NUMERIC:\n        if (!isNaN(value) && value >= 1) {\n          target.push(attributeSeparator, attributeNameChunk, attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n        }\n\n        break;\n\n      default:\n        if (propertyInfo.sanitizeURL) {\n          {\n            checkAttributeStringCoercion(value, attributeName);\n          }\n\n          value = '' + value;\n          sanitizeURL(value);\n        }\n\n        target.push(attributeSeparator, attributeNameChunk, attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n    }\n  } else if (isAttributeNameSafe(name)) {\n    // shouldRemoveAttribute\n    switch (typeof value) {\n      case 'function': // $FlowIssue symbol is perfectly valid here\n\n      case 'symbol':\n        // eslint-disable-line\n        return;\n\n      case 'boolean':\n        {\n          var prefix = name.toLowerCase().slice(0, 5);\n\n          if (prefix !== 'data-' && prefix !== 'aria-') {\n            return;\n          }\n        }\n    }\n\n    target.push(attributeSeparator, stringToChunk(name), attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n  }\n}\n\nvar endOfStartTag = stringToPrecomputedChunk('>');\nvar endOfStartTagSelfClosing = stringToPrecomputedChunk('/>');\n\nfunction pushInnerHTML(target, innerHTML, children) {\n  if (innerHTML != null) {\n    if (children != null) {\n      throw new Error('Can only set one of `children` or `props.dangerouslySetInnerHTML`.');\n    }\n\n    if (typeof innerHTML !== 'object' || !('__html' in innerHTML)) {\n      throw new Error('`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. ' + 'Please visit https://reactjs.org/link/dangerously-set-inner-html ' + 'for more information.');\n    }\n\n    var html = innerHTML.__html;\n\n    if (html !== null && html !== undefined) {\n      {\n        checkHtmlStringCoercion(html);\n      }\n\n      target.push(stringToChunk('' + html));\n    }\n  }\n} // TODO: Move these to ResponseState so that we warn for every request.\n// It would help debugging in stateful servers (e.g. service worker).\n\n\nvar didWarnDefaultInputValue = false;\nvar didWarnDefaultChecked = false;\nvar didWarnDefaultSelectValue = false;\nvar didWarnDefaultTextareaValue = false;\nvar didWarnInvalidOptionChildren = false;\nvar didWarnInvalidOptionInnerHTML = false;\nvar didWarnSelectedSetOnOption = false;\n\nfunction checkSelectProp(props, propName) {\n  {\n    var value = props[propName];\n\n    if (value != null) {\n      var array = isArray(value);\n\n      if (props.multiple && !array) {\n        error('The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.', propName);\n      } else if (!props.multiple && array) {\n        error('The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.', propName);\n      }\n    }\n  }\n}\n\nfunction pushStartSelect(target, props, responseState) {\n  {\n    checkControlledValueProps('select', props);\n    checkSelectProp(props, 'value');\n    checkSelectProp(props, 'defaultValue');\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnDefaultSelectValue) {\n      error('Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components');\n\n      didWarnDefaultSelectValue = true;\n    }\n  }\n\n  target.push(startChunkForTag('select'));\n  var children = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          // TODO: This doesn't really make sense for select since it can't use the controlled\n          // value in the innerHTML.\n          innerHTML = propValue;\n          break;\n\n        case 'defaultValue':\n        case 'value':\n          // These are set on the Context instead and applied to the nested options.\n          break;\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag);\n  pushInnerHTML(target, innerHTML, children);\n  return children;\n}\n\nfunction flattenOptionChildren(children) {\n  var content = ''; // Flatten children and warn if they aren't strings or numbers;\n  // invalid types are ignored.\n\n  React.Children.forEach(children, function (child) {\n    if (child == null) {\n      return;\n    }\n\n    content += child;\n\n    {\n      if (!didWarnInvalidOptionChildren && typeof child !== 'string' && typeof child !== 'number') {\n        didWarnInvalidOptionChildren = true;\n\n        error('Cannot infer the option value of complex children. ' + 'Pass a `value` prop or use a plain string as children to <option>.');\n      }\n    }\n  });\n  return content;\n}\n\nvar selectedMarkerAttribute = stringToPrecomputedChunk(' selected=\"\"');\n\nfunction pushStartOption(target, props, responseState, formatContext) {\n  var selectedValue = formatContext.selectedValue;\n  target.push(startChunkForTag('option'));\n  var children = null;\n  var value = null;\n  var selected = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'selected':\n          // ignore\n          selected = propValue;\n\n          {\n            // TODO: Remove support for `selected` in <option>.\n            if (!didWarnSelectedSetOnOption) {\n              error('Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.');\n\n              didWarnSelectedSetOnOption = true;\n            }\n          }\n\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          innerHTML = propValue;\n          break;\n        // eslint-disable-next-line-no-fallthrough\n\n        case 'value':\n          value = propValue;\n        // We intentionally fallthrough to also set the attribute on the node.\n        // eslint-disable-next-line-no-fallthrough\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  if (selectedValue != null) {\n    var stringValue;\n\n    if (value !== null) {\n      {\n        checkAttributeStringCoercion(value, 'value');\n      }\n\n      stringValue = '' + value;\n    } else {\n      {\n        if (innerHTML !== null) {\n          if (!didWarnInvalidOptionInnerHTML) {\n            didWarnInvalidOptionInnerHTML = true;\n\n            error('Pass a `value` prop if you set dangerouslyInnerHTML so React knows ' + 'which value should be selected.');\n          }\n        }\n      }\n\n      stringValue = flattenOptionChildren(children);\n    }\n\n    if (isArray(selectedValue)) {\n      // multiple\n      for (var i = 0; i < selectedValue.length; i++) {\n        {\n          checkAttributeStringCoercion(selectedValue[i], 'value');\n        }\n\n        var v = '' + selectedValue[i];\n\n        if (v === stringValue) {\n          target.push(selectedMarkerAttribute);\n          break;\n        }\n      }\n    } else {\n      {\n        checkAttributeStringCoercion(selectedValue, 'select.value');\n      }\n\n      if ('' + selectedValue === stringValue) {\n        target.push(selectedMarkerAttribute);\n      }\n    }\n  } else if (selected) {\n    target.push(selectedMarkerAttribute);\n  }\n\n  target.push(endOfStartTag);\n  pushInnerHTML(target, innerHTML, children);\n  return children;\n}\n\nfunction pushInput(target, props, responseState) {\n  {\n    checkControlledValueProps('input', props);\n\n    if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnDefaultChecked) {\n      error('%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', 'A component', props.type);\n\n      didWarnDefaultChecked = true;\n    }\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnDefaultInputValue) {\n      error('%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', 'A component', props.type);\n\n      didWarnDefaultInputValue = true;\n    }\n  }\n\n  target.push(startChunkForTag('input'));\n  var value = null;\n  var defaultValue = null;\n  var checked = null;\n  var defaultChecked = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n        case 'dangerouslySetInnerHTML':\n          throw new Error('input' + \" is a self-closing tag and must neither have `children` nor \" + 'use `dangerouslySetInnerHTML`.');\n        // eslint-disable-next-line-no-fallthrough\n\n        case 'defaultChecked':\n          defaultChecked = propValue;\n          break;\n\n        case 'defaultValue':\n          defaultValue = propValue;\n          break;\n\n        case 'checked':\n          checked = propValue;\n          break;\n\n        case 'value':\n          value = propValue;\n          break;\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  if (checked !== null) {\n    pushAttribute(target, responseState, 'checked', checked);\n  } else if (defaultChecked !== null) {\n    pushAttribute(target, responseState, 'checked', defaultChecked);\n  }\n\n  if (value !== null) {\n    pushAttribute(target, responseState, 'value', value);\n  } else if (defaultValue !== null) {\n    pushAttribute(target, responseState, 'value', defaultValue);\n  }\n\n  target.push(endOfStartTagSelfClosing);\n  return null;\n}\n\nfunction pushStartTextArea(target, props, responseState) {\n  {\n    checkControlledValueProps('textarea', props);\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnDefaultTextareaValue) {\n      error('Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components');\n\n      didWarnDefaultTextareaValue = true;\n    }\n  }\n\n  target.push(startChunkForTag('textarea'));\n  var value = null;\n  var defaultValue = null;\n  var children = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'value':\n          value = propValue;\n          break;\n\n        case 'defaultValue':\n          defaultValue = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          throw new Error('`dangerouslySetInnerHTML` does not make sense on <textarea>.');\n        // eslint-disable-next-line-no-fallthrough\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  if (value === null && defaultValue !== null) {\n    value = defaultValue;\n  }\n\n  target.push(endOfStartTag); // TODO (yungsters): Remove support for children content in <textarea>.\n\n  if (children != null) {\n    {\n      error('Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.');\n    }\n\n    if (value != null) {\n      throw new Error('If you supply `defaultValue` on a <textarea>, do not pass children.');\n    }\n\n    if (isArray(children)) {\n      if (children.length > 1) {\n        throw new Error('<textarea> can only have at most one child.');\n      } // TODO: remove the coercion and the DEV check below because it will\n      // always be overwritten by the coercion several lines below it. #22309\n\n\n      {\n        checkHtmlStringCoercion(children[0]);\n      }\n\n      value = '' + children[0];\n    }\n\n    {\n      checkHtmlStringCoercion(children);\n    }\n\n    value = '' + children;\n  }\n\n  if (typeof value === 'string' && value[0] === '\\n') {\n    // text/html ignores the first character in these tags if it's a newline\n    // Prefer to break application/xml over text/html (for now) by adding\n    // a newline specifically to get eaten by the parser. (Alternately for\n    // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n    // \\r is normalized out by HTMLTextAreaElement#value.)\n    // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n    // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n    // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n    // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n    //  from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n    target.push(leadingNewline);\n  } // ToString and push directly instead of recurse over children.\n  // We don't really support complex children in the value anyway.\n  // This also currently avoids a trailing comment node which breaks textarea.\n\n\n  if (value !== null) {\n    {\n      checkAttributeStringCoercion(value, 'value');\n    }\n\n    target.push(stringToChunk(encodeHTMLTextNode('' + value)));\n  }\n\n  return null;\n}\n\nfunction pushSelfClosing(target, props, tag, responseState) {\n  target.push(startChunkForTag(tag));\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n        case 'dangerouslySetInnerHTML':\n          throw new Error(tag + \" is a self-closing tag and must neither have `children` nor \" + 'use `dangerouslySetInnerHTML`.');\n        // eslint-disable-next-line-no-fallthrough\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTagSelfClosing);\n  return null;\n}\n\nfunction pushStartMenuItem(target, props, responseState) {\n  target.push(startChunkForTag('menuitem'));\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n        case 'dangerouslySetInnerHTML':\n          throw new Error('menuitems cannot have `children` nor `dangerouslySetInnerHTML`.');\n        // eslint-disable-next-line-no-fallthrough\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag);\n  return null;\n}\n\nfunction pushStartGenericElement(target, props, tag, responseState) {\n  target.push(startChunkForTag(tag));\n  var children = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          innerHTML = propValue;\n          break;\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag);\n  pushInnerHTML(target, innerHTML, children);\n\n  if (typeof children === 'string') {\n    // Special case children as a string to avoid the unnecessary comment.\n    // TODO: Remove this special case after the general optimization is in place.\n    target.push(stringToChunk(encodeHTMLTextNode(children)));\n    return null;\n  }\n\n  return children;\n}\n\nfunction pushStartCustomElement(target, props, tag, responseState) {\n  target.push(startChunkForTag(tag));\n  var children = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          innerHTML = propValue;\n          break;\n\n        case 'style':\n          pushStyle(target, responseState, propValue);\n          break;\n\n        case 'suppressContentEditableWarning':\n        case 'suppressHydrationWarning':\n          // Ignored. These are built-in to React on the client.\n          break;\n\n        default:\n          if (isAttributeNameSafe(propKey) && typeof propValue !== 'function' && typeof propValue !== 'symbol') {\n            target.push(attributeSeparator, stringToChunk(propKey), attributeAssign, stringToChunk(escapeTextForBrowser(propValue)), attributeEnd);\n          }\n\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag);\n  pushInnerHTML(target, innerHTML, children);\n  return children;\n}\n\nvar leadingNewline = stringToPrecomputedChunk('\\n');\n\nfunction pushStartPreformattedElement(target, props, tag, responseState) {\n  target.push(startChunkForTag(tag));\n  var children = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          innerHTML = propValue;\n          break;\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag); // text/html ignores the first character in these tags if it's a newline\n  // Prefer to break application/xml over text/html (for now) by adding\n  // a newline specifically to get eaten by the parser. (Alternately for\n  // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n  // \\r is normalized out by HTMLTextAreaElement#value.)\n  // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n  // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n  // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n  // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n  //  from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n  // TODO: This doesn't deal with the case where the child is an array\n  // or component that returns a string.\n\n  if (innerHTML != null) {\n    if (children != null) {\n      throw new Error('Can only set one of `children` or `props.dangerouslySetInnerHTML`.');\n    }\n\n    if (typeof innerHTML !== 'object' || !('__html' in innerHTML)) {\n      throw new Error('`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. ' + 'Please visit https://reactjs.org/link/dangerously-set-inner-html ' + 'for more information.');\n    }\n\n    var html = innerHTML.__html;\n\n    if (html !== null && html !== undefined) {\n      if (typeof html === 'string' && html.length > 0 && html[0] === '\\n') {\n        target.push(leadingNewline, stringToChunk(html));\n      } else {\n        {\n          checkHtmlStringCoercion(html);\n        }\n\n        target.push(stringToChunk('' + html));\n      }\n    }\n  }\n\n  if (typeof children === 'string' && children[0] === '\\n') {\n    target.push(leadingNewline);\n  }\n\n  return children;\n} // We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\n\nvar validatedTagCache = new Map();\n\nfunction startChunkForTag(tag) {\n  var tagStartChunk = validatedTagCache.get(tag);\n\n  if (tagStartChunk === undefined) {\n    if (!VALID_TAG_REGEX.test(tag)) {\n      throw new Error(\"Invalid tag: \" + tag);\n    }\n\n    tagStartChunk = stringToPrecomputedChunk('<' + tag);\n    validatedTagCache.set(tag, tagStartChunk);\n  }\n\n  return tagStartChunk;\n}\n\nvar DOCTYPE = stringToPrecomputedChunk('<!DOCTYPE html>');\nfunction pushStartInstance(target, type, props, responseState, formatContext) {\n  {\n    validateProperties(type, props);\n    validateProperties$1(type, props);\n    validateProperties$2(type, props, null);\n\n    if (!props.suppressContentEditableWarning && props.contentEditable && props.children != null) {\n      error('A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.');\n    }\n\n    if (formatContext.insertionMode !== SVG_MODE && formatContext.insertionMode !== MATHML_MODE) {\n      if (type.indexOf('-') === -1 && typeof props.is !== 'string' && type.toLowerCase() !== type) {\n        error('<%s /> is using incorrect casing. ' + 'Use PascalCase for React components, ' + 'or lowercase for HTML elements.', type);\n      }\n    }\n  }\n\n  switch (type) {\n    // Special tags\n    case 'select':\n      return pushStartSelect(target, props, responseState);\n\n    case 'option':\n      return pushStartOption(target, props, responseState, formatContext);\n\n    case 'textarea':\n      return pushStartTextArea(target, props, responseState);\n\n    case 'input':\n      return pushInput(target, props, responseState);\n\n    case 'menuitem':\n      return pushStartMenuItem(target, props, responseState);\n    // Newline eating tags\n\n    case 'listing':\n    case 'pre':\n      {\n        return pushStartPreformattedElement(target, props, type, responseState);\n      }\n    // Omitted close tags\n\n    case 'area':\n    case 'base':\n    case 'br':\n    case 'col':\n    case 'embed':\n    case 'hr':\n    case 'img':\n    case 'keygen':\n    case 'link':\n    case 'meta':\n    case 'param':\n    case 'source':\n    case 'track':\n    case 'wbr':\n      {\n        return pushSelfClosing(target, props, type, responseState);\n      }\n    // These are reserved SVG and MathML elements, that are never custom elements.\n    // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts\n\n    case 'annotation-xml':\n    case 'color-profile':\n    case 'font-face':\n    case 'font-face-src':\n    case 'font-face-uri':\n    case 'font-face-format':\n    case 'font-face-name':\n    case 'missing-glyph':\n      {\n        return pushStartGenericElement(target, props, type, responseState);\n      }\n\n    case 'html':\n      {\n        if (formatContext.insertionMode === ROOT_HTML_MODE) {\n          // If we're rendering the html tag and we're at the root (i.e. not in foreignObject)\n          // then we also emit the DOCTYPE as part of the root content as a convenience for\n          // rendering the whole document.\n          target.push(DOCTYPE);\n        }\n\n        return pushStartGenericElement(target, props, type, responseState);\n      }\n\n    default:\n      {\n        if (type.indexOf('-') === -1 && typeof props.is !== 'string') {\n          // Generic element\n          return pushStartGenericElement(target, props, type, responseState);\n        } else {\n          // Custom element\n          return pushStartCustomElement(target, props, type, responseState);\n        }\n      }\n  }\n}\nvar endTag1 = stringToPrecomputedChunk('</');\nvar endTag2 = stringToPrecomputedChunk('>');\nfunction pushEndInstance(target, type, props) {\n  switch (type) {\n    // Omitted close tags\n    // TODO: Instead of repeating this switch we could try to pass a flag from above.\n    // That would require returning a tuple. Which might be ok if it gets inlined.\n    case 'area':\n    case 'base':\n    case 'br':\n    case 'col':\n    case 'embed':\n    case 'hr':\n    case 'img':\n    case 'input':\n    case 'keygen':\n    case 'link':\n    case 'meta':\n    case 'param':\n    case 'source':\n    case 'track':\n    case 'wbr':\n      {\n        // No close tag needed.\n        break;\n      }\n\n    default:\n      {\n        target.push(endTag1, stringToChunk(type), endTag2);\n      }\n  }\n}\nfunction writeCompletedRoot(destination, responseState) {\n  var bootstrapChunks = responseState.bootstrapChunks;\n  var i = 0;\n\n  for (; i < bootstrapChunks.length - 1; i++) {\n    writeChunk(destination, bootstrapChunks[i]);\n  }\n\n  if (i < bootstrapChunks.length) {\n    return writeChunkAndReturn(destination, bootstrapChunks[i]);\n  }\n\n  return true;\n} // Structural Nodes\n// A placeholder is a node inside a hidden partial tree that can be filled in later, but before\n// display. It's never visible to users. We use the template tag because it can be used in every\n// type of parent. <script> tags also work in every other tag except <colgroup>.\n\nvar placeholder1 = stringToPrecomputedChunk('<template id=\"');\nvar placeholder2 = stringToPrecomputedChunk('\"></template>');\nfunction writePlaceholder(destination, responseState, id) {\n  writeChunk(destination, placeholder1);\n  writeChunk(destination, responseState.placeholderPrefix);\n  var formattedID = stringToChunk(id.toString(16));\n  writeChunk(destination, formattedID);\n  return writeChunkAndReturn(destination, placeholder2);\n} // Suspense boundaries are encoded as comments.\n\nvar startCompletedSuspenseBoundary = stringToPrecomputedChunk('<!--$-->');\nvar startPendingSuspenseBoundary1 = stringToPrecomputedChunk('<!--$?--><template id=\"');\nvar startPendingSuspenseBoundary2 = stringToPrecomputedChunk('\"></template>');\nvar startClientRenderedSuspenseBoundary = stringToPrecomputedChunk('<!--$!-->');\nvar endSuspenseBoundary = stringToPrecomputedChunk('<!--/$-->');\nfunction writeStartCompletedSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, startCompletedSuspenseBoundary);\n}\nfunction writeStartPendingSuspenseBoundary(destination, responseState, id) {\n  writeChunk(destination, startPendingSuspenseBoundary1);\n\n  if (id === null) {\n    throw new Error('An ID must have been assigned before we can complete the boundary.');\n  }\n\n  writeChunk(destination, id);\n  return writeChunkAndReturn(destination, startPendingSuspenseBoundary2);\n}\nfunction writeStartClientRenderedSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, startClientRenderedSuspenseBoundary);\n}\nfunction writeEndCompletedSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, endSuspenseBoundary);\n}\nfunction writeEndPendingSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, endSuspenseBoundary);\n}\nfunction writeEndClientRenderedSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, endSuspenseBoundary);\n}\nvar startSegmentHTML = stringToPrecomputedChunk('<div hidden id=\"');\nvar startSegmentHTML2 = stringToPrecomputedChunk('\">');\nvar endSegmentHTML = stringToPrecomputedChunk('</div>');\nvar startSegmentSVG = stringToPrecomputedChunk('<svg aria-hidden=\"true\" style=\"display:none\" id=\"');\nvar startSegmentSVG2 = stringToPrecomputedChunk('\">');\nvar endSegmentSVG = stringToPrecomputedChunk('</svg>');\nvar startSegmentMathML = stringToPrecomputedChunk('<math aria-hidden=\"true\" style=\"display:none\" id=\"');\nvar startSegmentMathML2 = stringToPrecomputedChunk('\">');\nvar endSegmentMathML = stringToPrecomputedChunk('</math>');\nvar startSegmentTable = stringToPrecomputedChunk('<table hidden id=\"');\nvar startSegmentTable2 = stringToPrecomputedChunk('\">');\nvar endSegmentTable = stringToPrecomputedChunk('</table>');\nvar startSegmentTableBody = stringToPrecomputedChunk('<table hidden><tbody id=\"');\nvar startSegmentTableBody2 = stringToPrecomputedChunk('\">');\nvar endSegmentTableBody = stringToPrecomputedChunk('</tbody></table>');\nvar startSegmentTableRow = stringToPrecomputedChunk('<table hidden><tr id=\"');\nvar startSegmentTableRow2 = stringToPrecomputedChunk('\">');\nvar endSegmentTableRow = stringToPrecomputedChunk('</tr></table>');\nvar startSegmentColGroup = stringToPrecomputedChunk('<table hidden><colgroup id=\"');\nvar startSegmentColGroup2 = stringToPrecomputedChunk('\">');\nvar endSegmentColGroup = stringToPrecomputedChunk('</colgroup></table>');\nfunction writeStartSegment(destination, responseState, formatContext, id) {\n  switch (formatContext.insertionMode) {\n    case ROOT_HTML_MODE:\n    case HTML_MODE:\n      {\n        writeChunk(destination, startSegmentHTML);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentHTML2);\n      }\n\n    case SVG_MODE:\n      {\n        writeChunk(destination, startSegmentSVG);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentSVG2);\n      }\n\n    case MATHML_MODE:\n      {\n        writeChunk(destination, startSegmentMathML);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentMathML2);\n      }\n\n    case HTML_TABLE_MODE:\n      {\n        writeChunk(destination, startSegmentTable);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentTable2);\n      }\n    // TODO: For the rest of these, there will be extra wrapper nodes that never\n    // get deleted from the document. We need to delete the table too as part\n    // of the injected scripts. They are invisible though so it's not too terrible\n    // and it's kind of an edge case to suspend in a table. Totally supported though.\n\n    case HTML_TABLE_BODY_MODE:\n      {\n        writeChunk(destination, startSegmentTableBody);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentTableBody2);\n      }\n\n    case HTML_TABLE_ROW_MODE:\n      {\n        writeChunk(destination, startSegmentTableRow);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentTableRow2);\n      }\n\n    case HTML_COLGROUP_MODE:\n      {\n        writeChunk(destination, startSegmentColGroup);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentColGroup2);\n      }\n\n    default:\n      {\n        throw new Error('Unknown insertion mode. This is a bug in React.');\n      }\n  }\n}\nfunction writeEndSegment(destination, formatContext) {\n  switch (formatContext.insertionMode) {\n    case ROOT_HTML_MODE:\n    case HTML_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentHTML);\n      }\n\n    case SVG_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentSVG);\n      }\n\n    case MATHML_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentMathML);\n      }\n\n    case HTML_TABLE_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentTable);\n      }\n\n    case HTML_TABLE_BODY_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentTableBody);\n      }\n\n    case HTML_TABLE_ROW_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentTableRow);\n      }\n\n    case HTML_COLGROUP_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentColGroup);\n      }\n\n    default:\n      {\n        throw new Error('Unknown insertion mode. This is a bug in React.');\n      }\n  }\n} // Instruction Set\n// The following code is the source scripts that we then minify and inline below,\n// with renamed function names that we hope don't collide:\n// const COMMENT_NODE = 8;\n// const SUSPENSE_START_DATA = '$';\n// const SUSPENSE_END_DATA = '/$';\n// const SUSPENSE_PENDING_START_DATA = '$?';\n// const SUSPENSE_FALLBACK_START_DATA = '$!';\n//\n// function clientRenderBoundary(suspenseBoundaryID) {\n//   // Find the fallback's first element.\n//   const suspenseIdNode = document.getElementById(suspenseBoundaryID);\n//   if (!suspenseIdNode) {\n//     // The user must have already navigated away from this tree.\n//     // E.g. because the parent was hydrated.\n//     return;\n//   }\n//   // Find the boundary around the fallback. This is always the previous node.\n//   const suspenseNode = suspenseIdNode.previousSibling;\n//   // Tag it to be client rendered.\n//   suspenseNode.data = SUSPENSE_FALLBACK_START_DATA;\n//   // Tell React to retry it if the parent already hydrated.\n//   if (suspenseNode._reactRetry) {\n//     suspenseNode._reactRetry();\n//   }\n// }\n//\n// function completeBoundary(suspenseBoundaryID, contentID) {\n//   // Find the fallback's first element.\n//   const suspenseIdNode = document.getElementById(suspenseBoundaryID);\n//   const contentNode = document.getElementById(contentID);\n//   // We'll detach the content node so that regardless of what happens next we don't leave in the tree.\n//   // This might also help by not causing recalcing each time we move a child from here to the target.\n//   contentNode.parentNode.removeChild(contentNode);\n//   if (!suspenseIdNode) {\n//     // The user must have already navigated away from this tree.\n//     // E.g. because the parent was hydrated. That's fine there's nothing to do\n//     // but we have to make sure that we already deleted the container node.\n//     return;\n//   }\n//   // Find the boundary around the fallback. This is always the previous node.\n//   const suspenseNode = suspenseIdNode.previousSibling;\n//\n//   // Clear all the existing children. This is complicated because\n//   // there can be embedded Suspense boundaries in the fallback.\n//   // This is similar to clearSuspenseBoundary in ReactDOMHostConfig.\n//   // TODO: We could avoid this if we never emitted suspense boundaries in fallback trees.\n//   // They never hydrate anyway. However, currently we support incrementally loading the fallback.\n//   const parentInstance = suspenseNode.parentNode;\n//   let node = suspenseNode.nextSibling;\n//   let depth = 0;\n//   do {\n//     if (node && node.nodeType === COMMENT_NODE) {\n//       const data = node.data;\n//       if (data === SUSPENSE_END_DATA) {\n//         if (depth === 0) {\n//           break;\n//         } else {\n//           depth--;\n//         }\n//       } else if (\n//         data === SUSPENSE_START_DATA ||\n//         data === SUSPENSE_PENDING_START_DATA ||\n//         data === SUSPENSE_FALLBACK_START_DATA\n//       ) {\n//         depth++;\n//       }\n//     }\n//\n//     const nextNode = node.nextSibling;\n//     parentInstance.removeChild(node);\n//     node = nextNode;\n//   } while (node);\n//\n//   const endOfBoundary = node;\n//\n//   // Insert all the children from the contentNode between the start and end of suspense boundary.\n//   while (contentNode.firstChild) {\n//     parentInstance.insertBefore(contentNode.firstChild, endOfBoundary);\n//   }\n//   suspenseNode.data = SUSPENSE_START_DATA;\n//   if (suspenseNode._reactRetry) {\n//     suspenseNode._reactRetry();\n//   }\n// }\n//\n// function completeSegment(containerID, placeholderID) {\n//   const segmentContainer = document.getElementById(containerID);\n//   const placeholderNode = document.getElementById(placeholderID);\n//   // We always expect both nodes to exist here because, while we might\n//   // have navigated away from the main tree, we still expect the detached\n//   // tree to exist.\n//   segmentContainer.parentNode.removeChild(segmentContainer);\n//   while (segmentContainer.firstChild) {\n//     placeholderNode.parentNode.insertBefore(\n//       segmentContainer.firstChild,\n//       placeholderNode,\n//     );\n//   }\n//   placeholderNode.parentNode.removeChild(placeholderNode);\n// }\n\nvar completeSegmentFunction = 'function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)}';\nvar completeBoundaryFunction = 'function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if(\"/$\"===d)if(0===e)break;else e--;else\"$\"!==d&&\"$?\"!==d&&\"$!\"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data=\"$\";a._reactRetry&&a._reactRetry()}}';\nvar clientRenderFunction = 'function $RX(a){if(a=document.getElementById(a))a=a.previousSibling,a.data=\"$!\",a._reactRetry&&a._reactRetry()}';\nvar completeSegmentScript1Full = stringToPrecomputedChunk(completeSegmentFunction + ';$RS(\"');\nvar completeSegmentScript1Partial = stringToPrecomputedChunk('$RS(\"');\nvar completeSegmentScript2 = stringToPrecomputedChunk('\",\"');\nvar completeSegmentScript3 = stringToPrecomputedChunk('\")</script>');\nfunction writeCompletedSegmentInstruction(destination, responseState, contentSegmentID) {\n  writeChunk(destination, responseState.startInlineScript);\n\n  if (!responseState.sentCompleteSegmentFunction) {\n    // The first time we write this, we'll need to include the full implementation.\n    responseState.sentCompleteSegmentFunction = true;\n    writeChunk(destination, completeSegmentScript1Full);\n  } else {\n    // Future calls can just reuse the same function.\n    writeChunk(destination, completeSegmentScript1Partial);\n  }\n\n  writeChunk(destination, responseState.segmentPrefix);\n  var formattedID = stringToChunk(contentSegmentID.toString(16));\n  writeChunk(destination, formattedID);\n  writeChunk(destination, completeSegmentScript2);\n  writeChunk(destination, responseState.placeholderPrefix);\n  writeChunk(destination, formattedID);\n  return writeChunkAndReturn(destination, completeSegmentScript3);\n}\nvar completeBoundaryScript1Full = stringToPrecomputedChunk(completeBoundaryFunction + ';$RC(\"');\nvar completeBoundaryScript1Partial = stringToPrecomputedChunk('$RC(\"');\nvar completeBoundaryScript2 = stringToPrecomputedChunk('\",\"');\nvar completeBoundaryScript3 = stringToPrecomputedChunk('\")</script>');\nfunction writeCompletedBoundaryInstruction(destination, responseState, boundaryID, contentSegmentID) {\n  writeChunk(destination, responseState.startInlineScript);\n\n  if (!responseState.sentCompleteBoundaryFunction) {\n    // The first time we write this, we'll need to include the full implementation.\n    responseState.sentCompleteBoundaryFunction = true;\n    writeChunk(destination, completeBoundaryScript1Full);\n  } else {\n    // Future calls can just reuse the same function.\n    writeChunk(destination, completeBoundaryScript1Partial);\n  }\n\n  if (boundaryID === null) {\n    throw new Error('An ID must have been assigned before we can complete the boundary.');\n  }\n\n  var formattedContentID = stringToChunk(contentSegmentID.toString(16));\n  writeChunk(destination, boundaryID);\n  writeChunk(destination, completeBoundaryScript2);\n  writeChunk(destination, responseState.segmentPrefix);\n  writeChunk(destination, formattedContentID);\n  return writeChunkAndReturn(destination, completeBoundaryScript3);\n}\nvar clientRenderScript1Full = stringToPrecomputedChunk(clientRenderFunction + ';$RX(\"');\nvar clientRenderScript1Partial = stringToPrecomputedChunk('$RX(\"');\nvar clientRenderScript2 = stringToPrecomputedChunk('\")</script>');\nfunction writeClientRenderBoundaryInstruction(destination, responseState, boundaryID) {\n  writeChunk(destination, responseState.startInlineScript);\n\n  if (!responseState.sentClientRenderFunction) {\n    // The first time we write this, we'll need to include the full implementation.\n    responseState.sentClientRenderFunction = true;\n    writeChunk(destination, clientRenderScript1Full);\n  } else {\n    // Future calls can just reuse the same function.\n    writeChunk(destination, clientRenderScript1Partial);\n  }\n\n  if (boundaryID === null) {\n    throw new Error('An ID must have been assigned before we can complete the boundary.');\n  }\n\n  writeChunk(destination, boundaryID);\n  return writeChunkAndReturn(destination, clientRenderScript2);\n}\n\nfunction createResponseState$1(generateStaticMarkup, identifierPrefix) {\n  var responseState = createResponseState(identifierPrefix, undefined);\n  return {\n    // Keep this in sync with ReactDOMServerFormatConfig\n    bootstrapChunks: responseState.bootstrapChunks,\n    startInlineScript: responseState.startInlineScript,\n    placeholderPrefix: responseState.placeholderPrefix,\n    segmentPrefix: responseState.segmentPrefix,\n    boundaryPrefix: responseState.boundaryPrefix,\n    idPrefix: responseState.idPrefix,\n    nextSuspenseID: responseState.nextSuspenseID,\n    sentCompleteSegmentFunction: responseState.sentCompleteSegmentFunction,\n    sentCompleteBoundaryFunction: responseState.sentCompleteBoundaryFunction,\n    sentClientRenderFunction: responseState.sentClientRenderFunction,\n    // This is an extra field for the legacy renderer\n    generateStaticMarkup: generateStaticMarkup\n  };\n}\nfunction createRootFormatContext() {\n  return {\n    insertionMode: HTML_MODE,\n    // We skip the root mode because we don't want to emit the DOCTYPE in legacy mode.\n    selectedValue: null\n  };\n}\nfunction pushTextInstance$1(target, text, responseState) {\n  if (responseState.generateStaticMarkup) {\n    target.push(stringToChunk(escapeTextForBrowser(text)));\n  } else {\n    pushTextInstance(target, text);\n  }\n}\nfunction writeStartCompletedSuspenseBoundary$1(destination, responseState) {\n  if (responseState.generateStaticMarkup) {\n    // A completed boundary is done and doesn't need a representation in the HTML\n    // if we're not going to be hydrating it.\n    return true;\n  }\n\n  return writeStartCompletedSuspenseBoundary(destination);\n}\nfunction writeStartClientRenderedSuspenseBoundary$1(destination, responseState) {\n  if (responseState.generateStaticMarkup) {\n    // A client rendered boundary is done and doesn't need a representation in the HTML\n    // since we'll never hydrate it. This is arguably an error in static generation.\n    return true;\n  }\n\n  return writeStartClientRenderedSuspenseBoundary(destination);\n}\nfunction writeEndCompletedSuspenseBoundary$1(destination, responseState) {\n  if (responseState.generateStaticMarkup) {\n    return true;\n  }\n\n  return writeEndCompletedSuspenseBoundary(destination);\n}\nfunction writeEndClientRenderedSuspenseBoundary$1(destination, responseState) {\n  if (responseState.generateStaticMarkup) {\n    return true;\n  }\n\n  return writeEndClientRenderedSuspenseBoundary(destination);\n}\n\nvar assign = Object.assign;\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_SCOPE_TYPE = Symbol.for('react.scope');\nvar REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for('react.debug_trace_mode');\nvar REACT_LEGACY_HIDDEN_TYPE = Symbol.for('react.legacy_hidden');\nvar REACT_SERVER_CONTEXT_DEFAULT_VALUE_NOT_LOADED = Symbol.for('react.default_value');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable !== 'object') {\n    return null;\n  }\n\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n\n  return null;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  var displayName = outerType.displayName;\n\n  if (displayName) {\n    return displayName;\n  }\n\n  var functionName = innerType.displayName || innerType.name || '';\n  return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n  return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n  if (type == null) {\n    // Host root, text node or just invalid type.\n    return null;\n  }\n\n  {\n    if (typeof type.tag === 'number') {\n      error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n    }\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || null;\n  }\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'Fragment';\n\n    case REACT_PORTAL_TYPE:\n      return 'Portal';\n\n    case REACT_PROFILER_TYPE:\n      return 'Profiler';\n\n    case REACT_STRICT_MODE_TYPE:\n      return 'StrictMode';\n\n    case REACT_SUSPENSE_TYPE:\n      return 'Suspense';\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return 'SuspenseList';\n\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        var context = type;\n        return getContextName(context) + '.Consumer';\n\n      case REACT_PROVIDER_TYPE:\n        var provider = type;\n        return getContextName(provider._context) + '.Provider';\n\n      case REACT_FORWARD_REF_TYPE:\n        return getWrappedName(type, type.render, 'ForwardRef');\n\n      case REACT_MEMO_TYPE:\n        var outerName = type.displayName || null;\n\n        if (outerName !== null) {\n          return outerName;\n        }\n\n        return getComponentNameFromType(type.type) || 'Memo';\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            return getComponentNameFromType(init(payload));\n          } catch (x) {\n            return null;\n          }\n        }\n\n      // eslint-disable-next-line no-fallthrough\n    }\n  }\n\n  return null;\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n  {\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      prevLog = console.log;\n      prevInfo = console.info;\n      prevWarn = console.warn;\n      prevError = console.error;\n      prevGroup = console.group;\n      prevGroupCollapsed = console.groupCollapsed;\n      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n      var props = {\n        configurable: true,\n        enumerable: true,\n        value: disabledLog,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        info: props,\n        log: props,\n        warn: props,\n        error: props,\n        group: props,\n        groupCollapsed: props,\n        groupEnd: props\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    disabledDepth++;\n  }\n}\nfunction reenableLogs() {\n  {\n    disabledDepth--;\n\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      var props = {\n        configurable: true,\n        enumerable: true,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        log: assign({}, props, {\n          value: prevLog\n        }),\n        info: assign({}, props, {\n          value: prevInfo\n        }),\n        warn: assign({}, props, {\n          value: prevWarn\n        }),\n        error: assign({}, props, {\n          value: prevError\n        }),\n        group: assign({}, props, {\n          value: prevGroup\n        }),\n        groupCollapsed: assign({}, props, {\n          value: prevGroupCollapsed\n        }),\n        groupEnd: assign({}, props, {\n          value: prevGroupEnd\n        })\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    if (disabledDepth < 0) {\n      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n    }\n  }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n  {\n    if (prefix === undefined) {\n      // Extract the VM specific prefix used by each line.\n      try {\n        throw Error();\n      } catch (x) {\n        var match = x.stack.trim().match(/\\n( *(at )?)/);\n        prefix = match && match[1] || '';\n      }\n    } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n    return '\\n' + prefix + name;\n  }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n  componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n  // If something asked for a stack inside a fake render, it should get ignored.\n  if ( !fn || reentry) {\n    return '';\n  }\n\n  {\n    var frame = componentFrameCache.get(fn);\n\n    if (frame !== undefined) {\n      return frame;\n    }\n  }\n\n  var control;\n  reentry = true;\n  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n  Error.prepareStackTrace = undefined;\n  var previousDispatcher;\n\n  {\n    previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n    // for warnings.\n\n    ReactCurrentDispatcher.current = null;\n    disableLogs();\n  }\n\n  try {\n    // This should throw.\n    if (construct) {\n      // Something should be setting the props in the constructor.\n      var Fake = function () {\n        throw Error();\n      }; // $FlowFixMe\n\n\n      Object.defineProperty(Fake.prototype, 'props', {\n        set: function () {\n          // We use a throwing setter instead of frozen or non-writable props\n          // because that won't throw in a non-strict mode function.\n          throw Error();\n        }\n      });\n\n      if (typeof Reflect === 'object' && Reflect.construct) {\n        // We construct a different control for this case to include any extra\n        // frames added by the construct call.\n        try {\n          Reflect.construct(Fake, []);\n        } catch (x) {\n          control = x;\n        }\n\n        Reflect.construct(fn, [], Fake);\n      } else {\n        try {\n          Fake.call();\n        } catch (x) {\n          control = x;\n        }\n\n        fn.call(Fake.prototype);\n      }\n    } else {\n      try {\n        throw Error();\n      } catch (x) {\n        control = x;\n      }\n\n      fn();\n    }\n  } catch (sample) {\n    // This is inlined manually because closure doesn't do it for us.\n    if (sample && control && typeof sample.stack === 'string') {\n      // This extracts the first frame from the sample that isn't also in the control.\n      // Skipping one frame that we assume is the frame that calls the two.\n      var sampleLines = sample.stack.split('\\n');\n      var controlLines = control.stack.split('\\n');\n      var s = sampleLines.length - 1;\n      var c = controlLines.length - 1;\n\n      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n        // We expect at least one stack frame to be shared.\n        // Typically this will be the root most one. However, stack frames may be\n        // cut off due to maximum stack limits. In this case, one maybe cut off\n        // earlier than the other. We assume that the sample is longer or the same\n        // and there for cut off earlier. So we should find the root most frame in\n        // the sample somewhere in the control.\n        c--;\n      }\n\n      for (; s >= 1 && c >= 0; s--, c--) {\n        // Next we find the first one that isn't the same which should be the\n        // frame that called our sample function and the control.\n        if (sampleLines[s] !== controlLines[c]) {\n          // In V8, the first line is describing the message but other VMs don't.\n          // If we're about to return the first line, and the control is also on the same\n          // line, that's a pretty good indicator that our sample threw at same line as\n          // the control. I.e. before we entered the sample frame. So we ignore this result.\n          // This can happen if you passed a class to function component, or non-function.\n          if (s !== 1 || c !== 1) {\n            do {\n              s--;\n              c--; // We may still have similar intermediate frames from the construct call.\n              // The next one that isn't the same should be our match though.\n\n              if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n                var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n                // but we have a user-provided \"displayName\"\n                // splice it in to make the stack more readable.\n\n\n                if (fn.displayName && _frame.includes('<anonymous>')) {\n                  _frame = _frame.replace('<anonymous>', fn.displayName);\n                }\n\n                {\n                  if (typeof fn === 'function') {\n                    componentFrameCache.set(fn, _frame);\n                  }\n                } // Return the line we found.\n\n\n                return _frame;\n              }\n            } while (s >= 1 && c >= 0);\n          }\n\n          break;\n        }\n      }\n    }\n  } finally {\n    reentry = false;\n\n    {\n      ReactCurrentDispatcher.current = previousDispatcher;\n      reenableLogs();\n    }\n\n    Error.prepareStackTrace = previousPrepareStackTrace;\n  } // Fallback to just using the name if we couldn't make it throw.\n\n\n  var name = fn ? fn.displayName || fn.name : '';\n  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n  {\n    if (typeof fn === 'function') {\n      componentFrameCache.set(fn, syntheticFrame);\n    }\n  }\n\n  return syntheticFrame;\n}\n\nfunction describeClassComponentFrame(ctor, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(ctor, true);\n  }\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(fn, false);\n  }\n}\n\nfunction shouldConstruct(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n  if (type == null) {\n    return '';\n  }\n\n  if (typeof type === 'function') {\n    {\n      return describeNativeComponentFrame(type, shouldConstruct(type));\n    }\n  }\n\n  if (typeof type === 'string') {\n    return describeBuiltInComponentFrame(type);\n  }\n\n  switch (type) {\n    case REACT_SUSPENSE_TYPE:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return describeBuiltInComponentFrame('SuspenseList');\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        return describeFunctionComponentFrame(type.render);\n\n      case REACT_MEMO_TYPE:\n        // Memo may contain any component type so we recursively resolve it.\n        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            // Lazy may contain any component type so we recursively resolve it.\n            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n          } catch (x) {}\n        }\n    }\n  }\n\n  return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame.setExtraStackFrame(null);\n    }\n  }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n  {\n    // $FlowFixMe This is okay but Flow doesn't know it.\n    var has = Function.call.bind(hasOwnProperty);\n\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            // eslint-disable-next-line react-internal/prod-error-codes\n            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n\n          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n        } catch (ex) {\n          error$1 = ex;\n        }\n\n        if (error$1 && !(error$1 instanceof Error)) {\n          setCurrentlyValidatingElement(element);\n\n          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n          setCurrentlyValidatingElement(null);\n        }\n\n        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error$1.message] = true;\n          setCurrentlyValidatingElement(element);\n\n          error('Failed %s type: %s', location, error$1.message);\n\n          setCurrentlyValidatingElement(null);\n        }\n      }\n    }\n  }\n}\n\nvar warnedAboutMissingGetChildContext;\n\n{\n  warnedAboutMissingGetChildContext = {};\n}\n\nvar emptyContextObject = {};\n\n{\n  Object.freeze(emptyContextObject);\n}\n\nfunction getMaskedContext(type, unmaskedContext) {\n  {\n    var contextTypes = type.contextTypes;\n\n    if (!contextTypes) {\n      return emptyContextObject;\n    }\n\n    var context = {};\n\n    for (var key in contextTypes) {\n      context[key] = unmaskedContext[key];\n    }\n\n    {\n      var name = getComponentNameFromType(type) || 'Unknown';\n      checkPropTypes(contextTypes, context, 'context', name);\n    }\n\n    return context;\n  }\n}\nfunction processChildContext(instance, type, parentContext, childContextTypes) {\n  {\n    // TODO (bvaughn) Replace this behavior with an invariant() in the future.\n    // It has only been added in Fiber to match the (unintentional) behavior in Stack.\n    if (typeof instance.getChildContext !== 'function') {\n      {\n        var componentName = getComponentNameFromType(type) || 'Unknown';\n\n        if (!warnedAboutMissingGetChildContext[componentName]) {\n          warnedAboutMissingGetChildContext[componentName] = true;\n\n          error('%s.childContextTypes is specified but there is no getChildContext() method ' + 'on the instance. You can either define getChildContext() on %s or remove ' + 'childContextTypes from it.', componentName, componentName);\n        }\n      }\n\n      return parentContext;\n    }\n\n    var childContext = instance.getChildContext();\n\n    for (var contextKey in childContext) {\n      if (!(contextKey in childContextTypes)) {\n        throw new Error((getComponentNameFromType(type) || 'Unknown') + \".getChildContext(): key \\\"\" + contextKey + \"\\\" is not defined in childContextTypes.\");\n      }\n    }\n\n    {\n      var name = getComponentNameFromType(type) || 'Unknown';\n      checkPropTypes(childContextTypes, childContext, 'child context', name);\n    }\n\n    return assign({}, parentContext, childContext);\n  }\n}\n\nvar rendererSigil;\n\n{\n  // Use this to detect multiple renderers using the same context\n  rendererSigil = {};\n} // Used to store the parent path of all context overrides in a shared linked list.\n// Forming a reverse tree.\n\n\nvar rootContextSnapshot = null; // We assume that this runtime owns the \"current\" field on all ReactContext instances.\n// This global (actually thread local) state represents what state all those \"current\",\n// fields are currently in.\n\nvar currentActiveSnapshot = null;\n\nfunction popNode(prev) {\n  {\n    prev.context._currentValue2 = prev.parentValue;\n  }\n}\n\nfunction pushNode(next) {\n  {\n    next.context._currentValue2 = next.value;\n  }\n}\n\nfunction popToNearestCommonAncestor(prev, next) {\n  if (prev === next) ; else {\n    popNode(prev);\n    var parentPrev = prev.parent;\n    var parentNext = next.parent;\n\n    if (parentPrev === null) {\n      if (parentNext !== null) {\n        throw new Error('The stacks must reach the root at the same time. This is a bug in React.');\n      }\n    } else {\n      if (parentNext === null) {\n        throw new Error('The stacks must reach the root at the same time. This is a bug in React.');\n      }\n\n      popToNearestCommonAncestor(parentPrev, parentNext);\n    } // On the way back, we push the new ones that weren't common.\n\n\n    pushNode(next);\n  }\n}\n\nfunction popAllPrevious(prev) {\n  popNode(prev);\n  var parentPrev = prev.parent;\n\n  if (parentPrev !== null) {\n    popAllPrevious(parentPrev);\n  }\n}\n\nfunction pushAllNext(next) {\n  var parentNext = next.parent;\n\n  if (parentNext !== null) {\n    pushAllNext(parentNext);\n  }\n\n  pushNode(next);\n}\n\nfunction popPreviousToCommonLevel(prev, next) {\n  popNode(prev);\n  var parentPrev = prev.parent;\n\n  if (parentPrev === null) {\n    throw new Error('The depth must equal at least at zero before reaching the root. This is a bug in React.');\n  }\n\n  if (parentPrev.depth === next.depth) {\n    // We found the same level. Now we just need to find a shared ancestor.\n    popToNearestCommonAncestor(parentPrev, next);\n  } else {\n    // We must still be deeper.\n    popPreviousToCommonLevel(parentPrev, next);\n  }\n}\n\nfunction popNextToCommonLevel(prev, next) {\n  var parentNext = next.parent;\n\n  if (parentNext === null) {\n    throw new Error('The depth must equal at least at zero before reaching the root. This is a bug in React.');\n  }\n\n  if (prev.depth === parentNext.depth) {\n    // We found the same level. Now we just need to find a shared ancestor.\n    popToNearestCommonAncestor(prev, parentNext);\n  } else {\n    // We must still be deeper.\n    popNextToCommonLevel(prev, parentNext);\n  }\n\n  pushNode(next);\n} // Perform context switching to the new snapshot.\n// To make it cheap to read many contexts, while not suspending, we make the switch eagerly by\n// updating all the context's current values. That way reads, always just read the current value.\n// At the cost of updating contexts even if they're never read by this subtree.\n\n\nfunction switchContext(newSnapshot) {\n  // The basic algorithm we need to do is to pop back any contexts that are no longer on the stack.\n  // We also need to update any new contexts that are now on the stack with the deepest value.\n  // The easiest way to update new contexts is to just reapply them in reverse order from the\n  // perspective of the backpointers. To avoid allocating a lot when switching, we use the stack\n  // for that. Therefore this algorithm is recursive.\n  // 1) First we pop which ever snapshot tree was deepest. Popping old contexts as we go.\n  // 2) Then we find the nearest common ancestor from there. Popping old contexts as we go.\n  // 3) Then we reapply new contexts on the way back up the stack.\n  var prev = currentActiveSnapshot;\n  var next = newSnapshot;\n\n  if (prev !== next) {\n    if (prev === null) {\n      // $FlowFixMe: This has to be non-null since it's not equal to prev.\n      pushAllNext(next);\n    } else if (next === null) {\n      popAllPrevious(prev);\n    } else if (prev.depth === next.depth) {\n      popToNearestCommonAncestor(prev, next);\n    } else if (prev.depth > next.depth) {\n      popPreviousToCommonLevel(prev, next);\n    } else {\n      popNextToCommonLevel(prev, next);\n    }\n\n    currentActiveSnapshot = next;\n  }\n}\nfunction pushProvider(context, nextValue) {\n  var prevValue;\n\n  {\n    prevValue = context._currentValue2;\n    context._currentValue2 = nextValue;\n\n    {\n      if (context._currentRenderer2 !== undefined && context._currentRenderer2 !== null && context._currentRenderer2 !== rendererSigil) {\n        error('Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.');\n      }\n\n      context._currentRenderer2 = rendererSigil;\n    }\n  }\n\n  var prevNode = currentActiveSnapshot;\n  var newNode = {\n    parent: prevNode,\n    depth: prevNode === null ? 0 : prevNode.depth + 1,\n    context: context,\n    parentValue: prevValue,\n    value: nextValue\n  };\n  currentActiveSnapshot = newNode;\n  return newNode;\n}\nfunction popProvider(context) {\n  var prevSnapshot = currentActiveSnapshot;\n\n  if (prevSnapshot === null) {\n    throw new Error('Tried to pop a Context at the root of the app. This is a bug in React.');\n  }\n\n  {\n    if (prevSnapshot.context !== context) {\n      error('The parent context is not the expected context. This is probably a bug in React.');\n    }\n  }\n\n  {\n    var _value = prevSnapshot.parentValue;\n\n    if (_value === REACT_SERVER_CONTEXT_DEFAULT_VALUE_NOT_LOADED) {\n      prevSnapshot.context._currentValue2 = prevSnapshot.context._defaultValue;\n    } else {\n      prevSnapshot.context._currentValue2 = _value;\n    }\n\n    {\n      if (context._currentRenderer2 !== undefined && context._currentRenderer2 !== null && context._currentRenderer2 !== rendererSigil) {\n        error('Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.');\n      }\n\n      context._currentRenderer2 = rendererSigil;\n    }\n  }\n\n  return currentActiveSnapshot = prevSnapshot.parent;\n}\nfunction getActiveContext() {\n  return currentActiveSnapshot;\n}\nfunction readContext(context) {\n  var value =  context._currentValue2;\n  return value;\n}\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n *\n * Note that this module is currently shared and assumed to be stateless.\n * If this becomes an actual Map, that will break.\n */\nfunction get(key) {\n  return key._reactInternals;\n}\nfunction set(key, value) {\n  key._reactInternals = value;\n}\n\nvar didWarnAboutNoopUpdateForComponent = {};\nvar didWarnAboutDeprecatedWillMount = {};\nvar didWarnAboutUninitializedState;\nvar didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate;\nvar didWarnAboutLegacyLifecyclesAndDerivedState;\nvar didWarnAboutUndefinedDerivedState;\nvar warnOnUndefinedDerivedState;\nvar warnOnInvalidCallback;\nvar didWarnAboutDirectlyAssigningPropsToState;\nvar didWarnAboutContextTypeAndContextTypes;\nvar didWarnAboutInvalidateContextType;\n\n{\n  didWarnAboutUninitializedState = new Set();\n  didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = new Set();\n  didWarnAboutLegacyLifecyclesAndDerivedState = new Set();\n  didWarnAboutDirectlyAssigningPropsToState = new Set();\n  didWarnAboutUndefinedDerivedState = new Set();\n  didWarnAboutContextTypeAndContextTypes = new Set();\n  didWarnAboutInvalidateContextType = new Set();\n  var didWarnOnInvalidCallback = new Set();\n\n  warnOnInvalidCallback = function (callback, callerName) {\n    if (callback === null || typeof callback === 'function') {\n      return;\n    }\n\n    var key = callerName + '_' + callback;\n\n    if (!didWarnOnInvalidCallback.has(key)) {\n      didWarnOnInvalidCallback.add(key);\n\n      error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);\n    }\n  };\n\n  warnOnUndefinedDerivedState = function (type, partialState) {\n    if (partialState === undefined) {\n      var componentName = getComponentNameFromType(type) || 'Component';\n\n      if (!didWarnAboutUndefinedDerivedState.has(componentName)) {\n        didWarnAboutUndefinedDerivedState.add(componentName);\n\n        error('%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. ' + 'You have returned undefined.', componentName);\n      }\n    }\n  };\n}\n\nfunction warnNoop(publicInstance, callerName) {\n  {\n    var _constructor = publicInstance.constructor;\n    var componentName = _constructor && getComponentNameFromType(_constructor) || 'ReactClass';\n    var warningKey = componentName + '.' + callerName;\n\n    if (didWarnAboutNoopUpdateForComponent[warningKey]) {\n      return;\n    }\n\n    error('%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op.\\n\\nPlease check the code for the %s component.', callerName, callerName, componentName);\n\n    didWarnAboutNoopUpdateForComponent[warningKey] = true;\n  }\n}\n\nvar classComponentUpdater = {\n  isMounted: function (inst) {\n    return false;\n  },\n  enqueueSetState: function (inst, payload, callback) {\n    var internals = get(inst);\n\n    if (internals.queue === null) {\n      warnNoop(inst, 'setState');\n    } else {\n      internals.queue.push(payload);\n\n      {\n        if (callback !== undefined && callback !== null) {\n          warnOnInvalidCallback(callback, 'setState');\n        }\n      }\n    }\n  },\n  enqueueReplaceState: function (inst, payload, callback) {\n    var internals = get(inst);\n    internals.replace = true;\n    internals.queue = [payload];\n\n    {\n      if (callback !== undefined && callback !== null) {\n        warnOnInvalidCallback(callback, 'setState');\n      }\n    }\n  },\n  enqueueForceUpdate: function (inst, callback) {\n    var internals = get(inst);\n\n    if (internals.queue === null) {\n      warnNoop(inst, 'forceUpdate');\n    } else {\n      {\n        if (callback !== undefined && callback !== null) {\n          warnOnInvalidCallback(callback, 'setState');\n        }\n      }\n    }\n  }\n};\n\nfunction applyDerivedStateFromProps(instance, ctor, getDerivedStateFromProps, prevState, nextProps) {\n  var partialState = getDerivedStateFromProps(nextProps, prevState);\n\n  {\n    warnOnUndefinedDerivedState(ctor, partialState);\n  } // Merge the partial state and the previous state.\n\n\n  var newState = partialState === null || partialState === undefined ? prevState : assign({}, prevState, partialState);\n  return newState;\n}\n\nfunction constructClassInstance(ctor, props, maskedLegacyContext) {\n  var context = emptyContextObject;\n  var contextType = ctor.contextType;\n\n  {\n    if ('contextType' in ctor) {\n      var isValid = // Allow null for conditional declaration\n      contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a <Context.Consumer>\n\n      if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) {\n        didWarnAboutInvalidateContextType.add(ctor);\n        var addendum = '';\n\n        if (contextType === undefined) {\n          addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.';\n        } else if (typeof contextType !== 'object') {\n          addendum = ' However, it is set to a ' + typeof contextType + '.';\n        } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {\n          addendum = ' Did you accidentally pass the Context.Provider instead?';\n        } else if (contextType._context !== undefined) {\n          // <Context.Consumer>\n          addendum = ' Did you accidentally pass the Context.Consumer instead?';\n        } else {\n          addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.';\n        }\n\n        error('%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentNameFromType(ctor) || 'Component', addendum);\n      }\n    }\n  }\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    context = readContext(contextType);\n  } else {\n    context = maskedLegacyContext;\n  }\n\n  var instance = new ctor(props, context);\n\n  {\n    if (typeof ctor.getDerivedStateFromProps === 'function' && (instance.state === null || instance.state === undefined)) {\n      var componentName = getComponentNameFromType(ctor) || 'Component';\n\n      if (!didWarnAboutUninitializedState.has(componentName)) {\n        didWarnAboutUninitializedState.add(componentName);\n\n        error('`%s` uses `getDerivedStateFromProps` but its initial state is ' + '%s. This is not recommended. Instead, define the initial state by ' + 'assigning an object to `this.state` in the constructor of `%s`. ' + 'This ensures that `getDerivedStateFromProps` arguments have a consistent shape.', componentName, instance.state === null ? 'null' : 'undefined', componentName);\n      }\n    } // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n    // Warn about these lifecycles if they are present.\n    // Don't warn about react-lifecycles-compat polyfilled methods though.\n\n\n    if (typeof ctor.getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function') {\n      var foundWillMountName = null;\n      var foundWillReceivePropsName = null;\n      var foundWillUpdateName = null;\n\n      if (typeof instance.componentWillMount === 'function' && instance.componentWillMount.__suppressDeprecationWarning !== true) {\n        foundWillMountName = 'componentWillMount';\n      } else if (typeof instance.UNSAFE_componentWillMount === 'function') {\n        foundWillMountName = 'UNSAFE_componentWillMount';\n      }\n\n      if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {\n        foundWillReceivePropsName = 'componentWillReceiveProps';\n      } else if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n        foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n      }\n\n      if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {\n        foundWillUpdateName = 'componentWillUpdate';\n      } else if (typeof instance.UNSAFE_componentWillUpdate === 'function') {\n        foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n      }\n\n      if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) {\n        var _componentName = getComponentNameFromType(ctor) || 'Component';\n\n        var newApiName = typeof ctor.getDerivedStateFromProps === 'function' ? 'getDerivedStateFromProps()' : 'getSnapshotBeforeUpdate()';\n\n        if (!didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName)) {\n          didWarnAboutLegacyLifecyclesAndDerivedState.add(_componentName);\n\n          error('Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' + '%s uses %s but also contains the following legacy lifecycles:%s%s%s\\n\\n' + 'The above lifecycles should be removed. Learn more about this warning here:\\n' + 'https://reactjs.org/link/unsafe-component-lifecycles', _componentName, newApiName, foundWillMountName !== null ? \"\\n  \" + foundWillMountName : '', foundWillReceivePropsName !== null ? \"\\n  \" + foundWillReceivePropsName : '', foundWillUpdateName !== null ? \"\\n  \" + foundWillUpdateName : '');\n        }\n      }\n    }\n  }\n\n  return instance;\n}\n\nfunction checkClassInstance(instance, ctor, newProps) {\n  {\n    var name = getComponentNameFromType(ctor) || 'Component';\n    var renderPresent = instance.render;\n\n    if (!renderPresent) {\n      if (ctor.prototype && typeof ctor.prototype.render === 'function') {\n        error('%s(...): No `render` method found on the returned component ' + 'instance: did you accidentally return an object from the constructor?', name);\n      } else {\n        error('%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', name);\n      }\n    }\n\n    if (instance.getInitialState && !instance.getInitialState.isReactClassApproved && !instance.state) {\n      error('getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', name);\n    }\n\n    if (instance.getDefaultProps && !instance.getDefaultProps.isReactClassApproved) {\n      error('getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', name);\n    }\n\n    if (instance.propTypes) {\n      error('propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', name);\n    }\n\n    if (instance.contextType) {\n      error('contextType was defined as an instance property on %s. Use a static ' + 'property to define contextType instead.', name);\n    }\n\n    {\n      if (instance.contextTypes) {\n        error('contextTypes was defined as an instance property on %s. Use a static ' + 'property to define contextTypes instead.', name);\n      }\n\n      if (ctor.contextType && ctor.contextTypes && !didWarnAboutContextTypeAndContextTypes.has(ctor)) {\n        didWarnAboutContextTypeAndContextTypes.add(ctor);\n\n        error('%s declares both contextTypes and contextType static properties. ' + 'The legacy contextTypes property will be ignored.', name);\n      }\n    }\n\n    if (typeof instance.componentShouldUpdate === 'function') {\n      error('%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', name);\n    }\n\n    if (ctor.prototype && ctor.prototype.isPureReactComponent && typeof instance.shouldComponentUpdate !== 'undefined') {\n      error('%s has a method called shouldComponentUpdate(). ' + 'shouldComponentUpdate should not be used when extending React.PureComponent. ' + 'Please extend React.Component if shouldComponentUpdate is used.', getComponentNameFromType(ctor) || 'A pure component');\n    }\n\n    if (typeof instance.componentDidUnmount === 'function') {\n      error('%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', name);\n    }\n\n    if (typeof instance.componentDidReceiveProps === 'function') {\n      error('%s has a method called ' + 'componentDidReceiveProps(). But there is no such lifecycle method. ' + 'If you meant to update the state in response to changing props, ' + 'use componentWillReceiveProps(). If you meant to fetch data or ' + 'run side-effects or mutations after React has updated the UI, use componentDidUpdate().', name);\n    }\n\n    if (typeof instance.componentWillRecieveProps === 'function') {\n      error('%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', name);\n    }\n\n    if (typeof instance.UNSAFE_componentWillRecieveProps === 'function') {\n      error('%s has a method called ' + 'UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?', name);\n    }\n\n    var hasMutatedProps = instance.props !== newProps;\n\n    if (instance.props !== undefined && hasMutatedProps) {\n      error('%s(...): When calling super() in `%s`, make sure to pass ' + \"up the same props that your component's constructor was passed.\", name, name);\n    }\n\n    if (instance.defaultProps) {\n      error('Setting defaultProps as an instance property on %s is not supported and will be ignored.' + ' Instead, define defaultProps as a static property on %s.', name, name);\n    }\n\n    if (typeof instance.getSnapshotBeforeUpdate === 'function' && typeof instance.componentDidUpdate !== 'function' && !didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(ctor)) {\n      didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(ctor);\n\n      error('%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). ' + 'This component defines getSnapshotBeforeUpdate() only.', getComponentNameFromType(ctor));\n    }\n\n    if (typeof instance.getDerivedStateFromProps === 'function') {\n      error('%s: getDerivedStateFromProps() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name);\n    }\n\n    if (typeof instance.getDerivedStateFromError === 'function') {\n      error('%s: getDerivedStateFromError() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name);\n    }\n\n    if (typeof ctor.getSnapshotBeforeUpdate === 'function') {\n      error('%s: getSnapshotBeforeUpdate() is defined as a static method ' + 'and will be ignored. Instead, declare it as an instance method.', name);\n    }\n\n    var _state = instance.state;\n\n    if (_state && (typeof _state !== 'object' || isArray(_state))) {\n      error('%s.state: must be set to an object or null', name);\n    }\n\n    if (typeof instance.getChildContext === 'function' && typeof ctor.childContextTypes !== 'object') {\n      error('%s.getChildContext(): childContextTypes must be defined in order to ' + 'use getChildContext().', name);\n    }\n  }\n}\n\nfunction callComponentWillMount(type, instance) {\n  var oldState = instance.state;\n\n  if (typeof instance.componentWillMount === 'function') {\n    {\n      if ( instance.componentWillMount.__suppressDeprecationWarning !== true) {\n        var componentName = getComponentNameFromType(type) || 'Unknown';\n\n        if (!didWarnAboutDeprecatedWillMount[componentName]) {\n          warn( // keep this warning in sync with ReactStrictModeWarning.js\n          'componentWillMount has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move code from componentWillMount to componentDidMount (preferred in most cases) ' + 'or the constructor.\\n' + '\\nPlease update the following components: %s', componentName);\n\n          didWarnAboutDeprecatedWillMount[componentName] = true;\n        }\n      }\n    }\n\n    instance.componentWillMount();\n  }\n\n  if (typeof instance.UNSAFE_componentWillMount === 'function') {\n    instance.UNSAFE_componentWillMount();\n  }\n\n  if (oldState !== instance.state) {\n    {\n      error('%s.componentWillMount(): Assigning directly to this.state is ' + \"deprecated (except inside a component's \" + 'constructor). Use setState instead.', getComponentNameFromType(type) || 'Component');\n    }\n\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n  }\n}\n\nfunction processUpdateQueue(internalInstance, inst, props, maskedLegacyContext) {\n  if (internalInstance.queue !== null && internalInstance.queue.length > 0) {\n    var oldQueue = internalInstance.queue;\n    var oldReplace = internalInstance.replace;\n    internalInstance.queue = null;\n    internalInstance.replace = false;\n\n    if (oldReplace && oldQueue.length === 1) {\n      inst.state = oldQueue[0];\n    } else {\n      var nextState = oldReplace ? oldQueue[0] : inst.state;\n      var dontMutate = true;\n\n      for (var i = oldReplace ? 1 : 0; i < oldQueue.length; i++) {\n        var partial = oldQueue[i];\n        var partialState = typeof partial === 'function' ? partial.call(inst, nextState, props, maskedLegacyContext) : partial;\n\n        if (partialState != null) {\n          if (dontMutate) {\n            dontMutate = false;\n            nextState = assign({}, nextState, partialState);\n          } else {\n            assign(nextState, partialState);\n          }\n        }\n      }\n\n      inst.state = nextState;\n    }\n  } else {\n    internalInstance.queue = null;\n  }\n} // Invokes the mount life-cycles on a previously never rendered instance.\n\n\nfunction mountClassInstance(instance, ctor, newProps, maskedLegacyContext) {\n  {\n    checkClassInstance(instance, ctor, newProps);\n  }\n\n  var initialState = instance.state !== undefined ? instance.state : null;\n  instance.updater = classComponentUpdater;\n  instance.props = newProps;\n  instance.state = initialState; // We don't bother initializing the refs object on the server, since we're not going to resolve them anyway.\n  // The internal instance will be used to manage updates that happen during this mount.\n\n  var internalInstance = {\n    queue: [],\n    replace: false\n  };\n  set(instance, internalInstance);\n  var contextType = ctor.contextType;\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    instance.context = readContext(contextType);\n  } else {\n    instance.context = maskedLegacyContext;\n  }\n\n  {\n    if (instance.state === newProps) {\n      var componentName = getComponentNameFromType(ctor) || 'Component';\n\n      if (!didWarnAboutDirectlyAssigningPropsToState.has(componentName)) {\n        didWarnAboutDirectlyAssigningPropsToState.add(componentName);\n\n        error('%s: It is not recommended to assign props directly to state ' + \"because updates to props won't be reflected in state. \" + 'In most cases, it is better to use props directly.', componentName);\n      }\n    }\n  }\n\n  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n\n  if (typeof getDerivedStateFromProps === 'function') {\n    instance.state = applyDerivedStateFromProps(instance, ctor, getDerivedStateFromProps, initialState, newProps);\n  } // In order to support react-lifecycles-compat polyfilled components,\n  // Unsafe lifecycles should not be invoked for components using the new APIs.\n\n\n  if (typeof ctor.getDerivedStateFromProps !== 'function' && typeof instance.getSnapshotBeforeUpdate !== 'function' && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {\n    callComponentWillMount(ctor, instance); // If we had additional state updates during this life-cycle, let's\n    // process them now.\n\n    processUpdateQueue(internalInstance, instance, newProps, maskedLegacyContext);\n  }\n}\n\n// Ids are base 32 strings whose binary representation corresponds to the\n// position of a node in a tree.\n// Every time the tree forks into multiple children, we add additional bits to\n// the left of the sequence that represent the position of the child within the\n// current level of children.\n//\n//      00101       00010001011010101\n//      ╰─┬─╯       ╰───────┬───────╯\n//   Fork 5 of 20       Parent id\n//\n// The leading 0s are important. In the above example, you only need 3 bits to\n// represent slot 5. However, you need 5 bits to represent all the forks at\n// the current level, so we must account for the empty bits at the end.\n//\n// For this same reason, slots are 1-indexed instead of 0-indexed. Otherwise,\n// the zeroth id at a level would be indistinguishable from its parent.\n//\n// If a node has only one child, and does not materialize an id (i.e. does not\n// contain a useId hook), then we don't need to allocate any space in the\n// sequence. It's treated as a transparent indirection. For example, these two\n// trees produce the same ids:\n//\n// <>                          <>\n//   <Indirection>               <A />\n//     <A />                     <B />\n//   </Indirection>            </>\n//   <B />\n// </>\n//\n// However, we cannot skip any node that materializes an id. Otherwise, a parent\n// id that does not fork would be indistinguishable from its child id. For\n// example, this tree does not fork, but the parent and child must have\n// different ids.\n//\n// <Parent>\n//   <Child />\n// </Parent>\n//\n// To handle this scenario, every time we materialize an id, we allocate a\n// new level with a single slot. You can think of this as a fork with only one\n// prong, or an array of children with length 1.\n//\n// It's possible for the size of the sequence to exceed 32 bits, the max\n// size for bitwise operations. When this happens, we make more room by\n// converting the right part of the id to a string and storing it in an overflow\n// variable. We use a base 32 string representation, because 32 is the largest\n// power of 2 that is supported by toString(). We want the base to be large so\n// that the resulting ids are compact, and we want the base to be a power of 2\n// because every log2(base) bits corresponds to a single character, i.e. every\n// log2(32) = 5 bits. That means we can lop bits off the end 5 at a time without\n// affecting the final result.\nvar emptyTreeContext = {\n  id: 1,\n  overflow: ''\n};\nfunction getTreeId(context) {\n  var overflow = context.overflow;\n  var idWithLeadingBit = context.id;\n  var id = idWithLeadingBit & ~getLeadingBit(idWithLeadingBit);\n  return id.toString(32) + overflow;\n}\nfunction pushTreeContext(baseContext, totalChildren, index) {\n  var baseIdWithLeadingBit = baseContext.id;\n  var baseOverflow = baseContext.overflow; // The leftmost 1 marks the end of the sequence, non-inclusive. It's not part\n  // of the id; we use it to account for leading 0s.\n\n  var baseLength = getBitLength(baseIdWithLeadingBit) - 1;\n  var baseId = baseIdWithLeadingBit & ~(1 << baseLength);\n  var slot = index + 1;\n  var length = getBitLength(totalChildren) + baseLength; // 30 is the max length we can store without overflowing, taking into\n  // consideration the leading 1 we use to mark the end of the sequence.\n\n  if (length > 30) {\n    // We overflowed the bitwise-safe range. Fall back to slower algorithm.\n    // This branch assumes the length of the base id is greater than 5; it won't\n    // work for smaller ids, because you need 5 bits per character.\n    //\n    // We encode the id in multiple steps: first the base id, then the\n    // remaining digits.\n    //\n    // Each 5 bit sequence corresponds to a single base 32 character. So for\n    // example, if the current id is 23 bits long, we can convert 20 of those\n    // bits into a string of 4 characters, with 3 bits left over.\n    //\n    // First calculate how many bits in the base id represent a complete\n    // sequence of characters.\n    var numberOfOverflowBits = baseLength - baseLength % 5; // Then create a bitmask that selects only those bits.\n\n    var newOverflowBits = (1 << numberOfOverflowBits) - 1; // Select the bits, and convert them to a base 32 string.\n\n    var newOverflow = (baseId & newOverflowBits).toString(32); // Now we can remove those bits from the base id.\n\n    var restOfBaseId = baseId >> numberOfOverflowBits;\n    var restOfBaseLength = baseLength - numberOfOverflowBits; // Finally, encode the rest of the bits using the normal algorithm. Because\n    // we made more room, this time it won't overflow.\n\n    var restOfLength = getBitLength(totalChildren) + restOfBaseLength;\n    var restOfNewBits = slot << restOfBaseLength;\n    var id = restOfNewBits | restOfBaseId;\n    var overflow = newOverflow + baseOverflow;\n    return {\n      id: 1 << restOfLength | id,\n      overflow: overflow\n    };\n  } else {\n    // Normal path\n    var newBits = slot << baseLength;\n\n    var _id = newBits | baseId;\n\n    var _overflow = baseOverflow;\n    return {\n      id: 1 << length | _id,\n      overflow: _overflow\n    };\n  }\n}\n\nfunction getBitLength(number) {\n  return 32 - clz32(number);\n}\n\nfunction getLeadingBit(id) {\n  return 1 << getBitLength(id) - 1;\n} // TODO: Math.clz32 is supported in Node 12+. Maybe we can drop the fallback.\n\n\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback; // Count leading zeros.\n// Based on:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32\n\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nfunction clz32Fallback(x) {\n  var asUint = x >>> 0;\n\n  if (asUint === 0) {\n    return 32;\n  }\n\n  return 31 - (log(asUint) / LN2 | 0) | 0;\n}\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n  return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n  ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\nvar currentlyRenderingComponent = null;\nvar currentlyRenderingTask = null;\nvar firstWorkInProgressHook = null;\nvar workInProgressHook = null; // Whether the work-in-progress hook is a re-rendered hook\n\nvar isReRender = false; // Whether an update was scheduled during the currently executing render pass.\n\nvar didScheduleRenderPhaseUpdate = false; // Counts the number of useId hooks in this component\n\nvar localIdCounter = 0; // Lazily created map of render-phase updates\n\nvar renderPhaseUpdates = null; // Counter to prevent infinite loops.\n\nvar numberOfReRenders = 0;\nvar RE_RENDER_LIMIT = 25;\nvar isInHookUserCodeInDev = false; // In DEV, this is the name of the currently executing primitive hook\n\nvar currentHookNameInDev;\n\nfunction resolveCurrentlyRenderingComponent() {\n  if (currentlyRenderingComponent === null) {\n    throw new Error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n  }\n\n  {\n    if (isInHookUserCodeInDev) {\n      error('Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. ' + 'You can only call Hooks at the top level of your React function. ' + 'For more information, see ' + 'https://reactjs.org/link/rules-of-hooks');\n    }\n  }\n\n  return currentlyRenderingComponent;\n}\n\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n  if (prevDeps === null) {\n    {\n      error('%s received a final argument during this render, but not during ' + 'the previous render. Even though the final argument is optional, ' + 'its type cannot change between renders.', currentHookNameInDev);\n    }\n\n    return false;\n  }\n\n  {\n    // Don't bother comparing lengths in prod because these arrays should be\n    // passed inline.\n    if (nextDeps.length !== prevDeps.length) {\n      error('The final argument passed to %s changed size between renders. The ' + 'order and size of this array must remain constant.\\n\\n' + 'Previous: %s\\n' + 'Incoming: %s', currentHookNameInDev, \"[\" + nextDeps.join(', ') + \"]\", \"[\" + prevDeps.join(', ') + \"]\");\n    }\n  }\n\n  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++) {\n    if (objectIs(nextDeps[i], prevDeps[i])) {\n      continue;\n    }\n\n    return false;\n  }\n\n  return true;\n}\n\nfunction createHook() {\n  if (numberOfReRenders > 0) {\n    throw new Error('Rendered more hooks than during the previous render');\n  }\n\n  return {\n    memoizedState: null,\n    queue: null,\n    next: null\n  };\n}\n\nfunction createWorkInProgressHook() {\n  if (workInProgressHook === null) {\n    // This is the first hook in the list\n    if (firstWorkInProgressHook === null) {\n      isReRender = false;\n      firstWorkInProgressHook = workInProgressHook = createHook();\n    } else {\n      // There's already a work-in-progress. Reuse it.\n      isReRender = true;\n      workInProgressHook = firstWorkInProgressHook;\n    }\n  } else {\n    if (workInProgressHook.next === null) {\n      isReRender = false; // Append to the end of the list\n\n      workInProgressHook = workInProgressHook.next = createHook();\n    } else {\n      // There's already a work-in-progress. Reuse it.\n      isReRender = true;\n      workInProgressHook = workInProgressHook.next;\n    }\n  }\n\n  return workInProgressHook;\n}\n\nfunction prepareToUseHooks(task, componentIdentity) {\n  currentlyRenderingComponent = componentIdentity;\n  currentlyRenderingTask = task;\n\n  {\n    isInHookUserCodeInDev = false;\n  } // The following should have already been reset\n  // didScheduleRenderPhaseUpdate = false;\n  // localIdCounter = 0;\n  // firstWorkInProgressHook = null;\n  // numberOfReRenders = 0;\n  // renderPhaseUpdates = null;\n  // workInProgressHook = null;\n\n\n  localIdCounter = 0;\n}\nfunction finishHooks(Component, props, children, refOrContext) {\n  // This must be called after every function component to prevent hooks from\n  // being used in classes.\n  while (didScheduleRenderPhaseUpdate) {\n    // Updates were scheduled during the render phase. They are stored in\n    // the `renderPhaseUpdates` map. Call the component again, reusing the\n    // work-in-progress hooks and applying the additional updates on top. Keep\n    // restarting until no more updates are scheduled.\n    didScheduleRenderPhaseUpdate = false;\n    localIdCounter = 0;\n    numberOfReRenders += 1; // Start over from the beginning of the list\n\n    workInProgressHook = null;\n    children = Component(props, refOrContext);\n  }\n\n  resetHooksState();\n  return children;\n}\nfunction checkDidRenderIdHook() {\n  // This should be called immediately after every finishHooks call.\n  // Conceptually, it's part of the return value of finishHooks; it's only a\n  // separate function to avoid using an array tuple.\n  var didRenderIdHook = localIdCounter !== 0;\n  return didRenderIdHook;\n} // Reset the internal hooks state if an error occurs while rendering a component\n\nfunction resetHooksState() {\n  {\n    isInHookUserCodeInDev = false;\n  }\n\n  currentlyRenderingComponent = null;\n  currentlyRenderingTask = null;\n  didScheduleRenderPhaseUpdate = false;\n  firstWorkInProgressHook = null;\n  numberOfReRenders = 0;\n  renderPhaseUpdates = null;\n  workInProgressHook = null;\n}\n\nfunction readContext$1(context) {\n  {\n    if (isInHookUserCodeInDev) {\n      error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().');\n    }\n  }\n\n  return readContext(context);\n}\n\nfunction useContext(context) {\n  {\n    currentHookNameInDev = 'useContext';\n  }\n\n  resolveCurrentlyRenderingComponent();\n  return readContext(context);\n}\n\nfunction basicStateReducer(state, action) {\n  // $FlowFixMe: Flow doesn't like mixed types\n  return typeof action === 'function' ? action(state) : action;\n}\n\nfunction useState(initialState) {\n  {\n    currentHookNameInDev = 'useState';\n  }\n\n  return useReducer(basicStateReducer, // useReducer has a special case to support lazy useState initializers\n  initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n  {\n    if (reducer !== basicStateReducer) {\n      currentHookNameInDev = 'useReducer';\n    }\n  }\n\n  currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n  workInProgressHook = createWorkInProgressHook();\n\n  if (isReRender) {\n    // This is a re-render. Apply the new render phase updates to the previous\n    // current hook.\n    var queue = workInProgressHook.queue;\n    var dispatch = queue.dispatch;\n\n    if (renderPhaseUpdates !== null) {\n      // Render phase updates are stored in a map of queue -> linked list\n      var firstRenderPhaseUpdate = renderPhaseUpdates.get(queue);\n\n      if (firstRenderPhaseUpdate !== undefined) {\n        renderPhaseUpdates.delete(queue);\n        var newState = workInProgressHook.memoizedState;\n        var update = firstRenderPhaseUpdate;\n\n        do {\n          // Process this render phase update. We don't have to check the\n          // priority because it will always be the same as the current\n          // render's.\n          var action = update.action;\n\n          {\n            isInHookUserCodeInDev = true;\n          }\n\n          newState = reducer(newState, action);\n\n          {\n            isInHookUserCodeInDev = false;\n          }\n\n          update = update.next;\n        } while (update !== null);\n\n        workInProgressHook.memoizedState = newState;\n        return [newState, dispatch];\n      }\n    }\n\n    return [workInProgressHook.memoizedState, dispatch];\n  } else {\n    {\n      isInHookUserCodeInDev = true;\n    }\n\n    var initialState;\n\n    if (reducer === basicStateReducer) {\n      // Special case for `useState`.\n      initialState = typeof initialArg === 'function' ? initialArg() : initialArg;\n    } else {\n      initialState = init !== undefined ? init(initialArg) : initialArg;\n    }\n\n    {\n      isInHookUserCodeInDev = false;\n    }\n\n    workInProgressHook.memoizedState = initialState;\n\n    var _queue = workInProgressHook.queue = {\n      last: null,\n      dispatch: null\n    };\n\n    var _dispatch = _queue.dispatch = dispatchAction.bind(null, currentlyRenderingComponent, _queue);\n\n    return [workInProgressHook.memoizedState, _dispatch];\n  }\n}\n\nfunction useMemo(nextCreate, deps) {\n  currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n  workInProgressHook = createWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n\n  if (workInProgressHook !== null) {\n    var prevState = workInProgressHook.memoizedState;\n\n    if (prevState !== null) {\n      if (nextDeps !== null) {\n        var prevDeps = prevState[1];\n\n        if (areHookInputsEqual(nextDeps, prevDeps)) {\n          return prevState[0];\n        }\n      }\n    }\n  }\n\n  {\n    isInHookUserCodeInDev = true;\n  }\n\n  var nextValue = nextCreate();\n\n  {\n    isInHookUserCodeInDev = false;\n  }\n\n  workInProgressHook.memoizedState = [nextValue, nextDeps];\n  return nextValue;\n}\n\nfunction useRef(initialValue) {\n  currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n  workInProgressHook = createWorkInProgressHook();\n  var previousRef = workInProgressHook.memoizedState;\n\n  if (previousRef === null) {\n    var ref = {\n      current: initialValue\n    };\n\n    {\n      Object.seal(ref);\n    }\n\n    workInProgressHook.memoizedState = ref;\n    return ref;\n  } else {\n    return previousRef;\n  }\n}\n\nfunction useLayoutEffect(create, inputs) {\n  {\n    currentHookNameInDev = 'useLayoutEffect';\n\n    error('useLayoutEffect does nothing on the server, because its effect cannot ' + \"be encoded into the server renderer's output format. This will lead \" + 'to a mismatch between the initial, non-hydrated UI and the intended ' + 'UI. To avoid this, useLayoutEffect should only be used in ' + 'components that render exclusively on the client. ' + 'See https://reactjs.org/link/uselayouteffect-ssr for common fixes.');\n  }\n}\n\nfunction dispatchAction(componentIdentity, queue, action) {\n  if (numberOfReRenders >= RE_RENDER_LIMIT) {\n    throw new Error('Too many re-renders. React limits the number of renders to prevent ' + 'an infinite loop.');\n  }\n\n  if (componentIdentity === currentlyRenderingComponent) {\n    // This is a render phase update. Stash it in a lazily-created map of\n    // queue -> linked list of updates. After this render pass, we'll restart\n    // and apply the stashed updates on top of the work-in-progress hook.\n    didScheduleRenderPhaseUpdate = true;\n    var update = {\n      action: action,\n      next: null\n    };\n\n    if (renderPhaseUpdates === null) {\n      renderPhaseUpdates = new Map();\n    }\n\n    var firstRenderPhaseUpdate = renderPhaseUpdates.get(queue);\n\n    if (firstRenderPhaseUpdate === undefined) {\n      renderPhaseUpdates.set(queue, update);\n    } else {\n      // Append the update to the end of the list.\n      var lastRenderPhaseUpdate = firstRenderPhaseUpdate;\n\n      while (lastRenderPhaseUpdate.next !== null) {\n        lastRenderPhaseUpdate = lastRenderPhaseUpdate.next;\n      }\n\n      lastRenderPhaseUpdate.next = update;\n    }\n  }\n}\n\nfunction useCallback(callback, deps) {\n  return useMemo(function () {\n    return callback;\n  }, deps);\n} // TODO Decide on how to implement this hook for server rendering.\n// If a mutation occurs during render, consider triggering a Suspense boundary\n// and falling back to client rendering.\n\nfunction useMutableSource(source, getSnapshot, subscribe) {\n  resolveCurrentlyRenderingComponent();\n  return getSnapshot(source._source);\n}\n\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  if (getServerSnapshot === undefined) {\n    throw new Error('Missing getServerSnapshot, which is required for ' + 'server-rendered content. Will revert to client rendering.');\n  }\n\n  return getServerSnapshot();\n}\n\nfunction useDeferredValue(value) {\n  resolveCurrentlyRenderingComponent();\n  return value;\n}\n\nfunction unsupportedStartTransition() {\n  throw new Error('startTransition cannot be called during server rendering.');\n}\n\nfunction useTransition() {\n  resolveCurrentlyRenderingComponent();\n  return [false, unsupportedStartTransition];\n}\n\nfunction useId() {\n  var task = currentlyRenderingTask;\n  var treeId = getTreeId(task.treeContext);\n  var responseState = currentResponseState;\n\n  if (responseState === null) {\n    throw new Error('Invalid hook call. Hooks can only be called inside of the body of a function component.');\n  }\n\n  var localId = localIdCounter++;\n  return makeId(responseState, treeId, localId);\n}\n\nfunction noop() {}\n\nvar Dispatcher = {\n  readContext: readContext$1,\n  useContext: useContext,\n  useMemo: useMemo,\n  useReducer: useReducer,\n  useRef: useRef,\n  useState: useState,\n  useInsertionEffect: noop,\n  useLayoutEffect: useLayoutEffect,\n  useCallback: useCallback,\n  // useImperativeHandle is not run in the server environment\n  useImperativeHandle: noop,\n  // Effects are not run in the server environment.\n  useEffect: noop,\n  // Debugging effect\n  useDebugValue: noop,\n  useDeferredValue: useDeferredValue,\n  useTransition: useTransition,\n  useId: useId,\n  // Subscriptions are not setup in a server environment.\n  useMutableSource: useMutableSource,\n  useSyncExternalStore: useSyncExternalStore\n};\n\nvar currentResponseState = null;\nfunction setCurrentResponseState(responseState) {\n  currentResponseState = responseState;\n}\n\nfunction getStackByComponentStackNode(componentStack) {\n  try {\n    var info = '';\n    var node = componentStack;\n\n    do {\n      switch (node.tag) {\n        case 0:\n          info += describeBuiltInComponentFrame(node.type, null, null);\n          break;\n\n        case 1:\n          info += describeFunctionComponentFrame(node.type, null, null);\n          break;\n\n        case 2:\n          info += describeClassComponentFrame(node.type, null, null);\n          break;\n      }\n\n      node = node.parent;\n    } while (node);\n\n    return info;\n  } catch (x) {\n    return '\\nError generating stack: ' + x.message + '\\n' + x.stack;\n  }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\nvar PENDING = 0;\nvar COMPLETED = 1;\nvar FLUSHED = 2;\nvar ABORTED = 3;\nvar ERRORED = 4;\nvar OPEN = 0;\nvar CLOSING = 1;\nvar CLOSED = 2;\n// This is a default heuristic for how to split up the HTML content into progressive\n// loading. Our goal is to be able to display additional new content about every 500ms.\n// Faster than that is unnecessary and should be throttled on the client. It also\n// adds unnecessary overhead to do more splits. We don't know if it's a higher or lower\n// end device but higher end suffer less from the overhead than lower end does from\n// not getting small enough pieces. We error on the side of low end.\n// We base this on low end 3G speeds which is about 500kbits per second. We assume\n// that there can be a reasonable drop off from max bandwidth which leaves you with\n// as little as 80%. We can receive half of that each 500ms - at best. In practice,\n// a little bandwidth is lost to processing and contention - e.g. CSS and images that\n// are downloaded along with the main content. So we estimate about half of that to be\n// the lower end throughput. In other words, we expect that you can at least show\n// about 12.5kb of content per 500ms. Not counting starting latency for the first\n// paint.\n// 500 * 1024 / 8 * .8 * 0.5 / 2\nvar DEFAULT_PROGRESSIVE_CHUNK_SIZE = 12800;\n\nfunction defaultErrorHandler(error) {\n  console['error'](error); // Don't transform to our wrapper\n}\n\nfunction noop$1() {}\n\nfunction createRequest(children, responseState, rootFormatContext, progressiveChunkSize, onError, onAllReady, onShellReady, onShellError, onFatalError) {\n  var pingedTasks = [];\n  var abortSet = new Set();\n  var request = {\n    destination: null,\n    responseState: responseState,\n    progressiveChunkSize: progressiveChunkSize === undefined ? DEFAULT_PROGRESSIVE_CHUNK_SIZE : progressiveChunkSize,\n    status: OPEN,\n    fatalError: null,\n    nextSegmentId: 0,\n    allPendingTasks: 0,\n    pendingRootTasks: 0,\n    completedRootSegment: null,\n    abortableTasks: abortSet,\n    pingedTasks: pingedTasks,\n    clientRenderedBoundaries: [],\n    completedBoundaries: [],\n    partialBoundaries: [],\n    onError: onError === undefined ? defaultErrorHandler : onError,\n    onAllReady: onAllReady === undefined ? noop$1 : onAllReady,\n    onShellReady: onShellReady === undefined ? noop$1 : onShellReady,\n    onShellError: onShellError === undefined ? noop$1 : onShellError,\n    onFatalError: onFatalError === undefined ? noop$1 : onFatalError\n  }; // This segment represents the root fallback.\n\n  var rootSegment = createPendingSegment(request, 0, null, rootFormatContext); // There is no parent so conceptually, we're unblocked to flush this segment.\n\n  rootSegment.parentFlushed = true;\n  var rootTask = createTask(request, children, null, rootSegment, abortSet, emptyContextObject, rootContextSnapshot, emptyTreeContext);\n  pingedTasks.push(rootTask);\n  return request;\n}\n\nfunction pingTask(request, task) {\n  var pingedTasks = request.pingedTasks;\n  pingedTasks.push(task);\n\n  if (pingedTasks.length === 1) {\n    scheduleWork(function () {\n      return performWork(request);\n    });\n  }\n}\n\nfunction createSuspenseBoundary(request, fallbackAbortableTasks) {\n  return {\n    id: UNINITIALIZED_SUSPENSE_BOUNDARY_ID,\n    rootSegmentID: -1,\n    parentFlushed: false,\n    pendingTasks: 0,\n    forceClientRender: false,\n    completedSegments: [],\n    byteSize: 0,\n    fallbackAbortableTasks: fallbackAbortableTasks\n  };\n}\n\nfunction createTask(request, node, blockedBoundary, blockedSegment, abortSet, legacyContext, context, treeContext) {\n  request.allPendingTasks++;\n\n  if (blockedBoundary === null) {\n    request.pendingRootTasks++;\n  } else {\n    blockedBoundary.pendingTasks++;\n  }\n\n  var task = {\n    node: node,\n    ping: function () {\n      return pingTask(request, task);\n    },\n    blockedBoundary: blockedBoundary,\n    blockedSegment: blockedSegment,\n    abortSet: abortSet,\n    legacyContext: legacyContext,\n    context: context,\n    treeContext: treeContext\n  };\n\n  {\n    task.componentStack = null;\n  }\n\n  abortSet.add(task);\n  return task;\n}\n\nfunction createPendingSegment(request, index, boundary, formatContext) {\n  return {\n    status: PENDING,\n    id: -1,\n    // lazily assigned later\n    index: index,\n    parentFlushed: false,\n    chunks: [],\n    children: [],\n    formatContext: formatContext,\n    boundary: boundary\n  };\n} // DEV-only global reference to the currently executing task\n\n\nvar currentTaskInDEV = null;\n\nfunction getCurrentStackInDEV() {\n  {\n    if (currentTaskInDEV === null || currentTaskInDEV.componentStack === null) {\n      return '';\n    }\n\n    return getStackByComponentStackNode(currentTaskInDEV.componentStack);\n  }\n}\n\nfunction pushBuiltInComponentStackInDEV(task, type) {\n  {\n    task.componentStack = {\n      tag: 0,\n      parent: task.componentStack,\n      type: type\n    };\n  }\n}\n\nfunction pushFunctionComponentStackInDEV(task, type) {\n  {\n    task.componentStack = {\n      tag: 1,\n      parent: task.componentStack,\n      type: type\n    };\n  }\n}\n\nfunction pushClassComponentStackInDEV(task, type) {\n  {\n    task.componentStack = {\n      tag: 2,\n      parent: task.componentStack,\n      type: type\n    };\n  }\n}\n\nfunction popComponentStackInDEV(task) {\n  {\n    if (task.componentStack === null) {\n      error('Unexpectedly popped too many stack frames. This is a bug in React.');\n    } else {\n      task.componentStack = task.componentStack.parent;\n    }\n  }\n}\n\nfunction logRecoverableError(request, error) {\n  // If this callback errors, we intentionally let that error bubble up to become a fatal error\n  // so that someone fixes the error reporting instead of hiding it.\n  var onError = request.onError;\n  onError(error);\n}\n\nfunction fatalError(request, error) {\n  // This is called outside error handling code such as if the root errors outside\n  // a suspense boundary or if the root suspense boundary's fallback errors.\n  // It's also called if React itself or its host configs errors.\n  var onShellError = request.onShellError;\n  onShellError(error);\n  var onFatalError = request.onFatalError;\n  onFatalError(error);\n\n  if (request.destination !== null) {\n    request.status = CLOSED;\n    closeWithError(request.destination, error);\n  } else {\n    request.status = CLOSING;\n    request.fatalError = error;\n  }\n}\n\nfunction renderSuspenseBoundary(request, task, props) {\n  pushBuiltInComponentStackInDEV(task, 'Suspense');\n  var parentBoundary = task.blockedBoundary;\n  var parentSegment = task.blockedSegment; // Each time we enter a suspense boundary, we split out into a new segment for\n  // the fallback so that we can later replace that segment with the content.\n  // This also lets us split out the main content even if it doesn't suspend,\n  // in case it ends up generating a large subtree of content.\n\n  var fallback = props.fallback;\n  var content = props.children;\n  var fallbackAbortSet = new Set();\n  var newBoundary = createSuspenseBoundary(request, fallbackAbortSet);\n  var insertionIndex = parentSegment.chunks.length; // The children of the boundary segment is actually the fallback.\n\n  var boundarySegment = createPendingSegment(request, insertionIndex, newBoundary, parentSegment.formatContext);\n  parentSegment.children.push(boundarySegment); // This segment is the actual child content. We can start rendering that immediately.\n\n  var contentRootSegment = createPendingSegment(request, 0, null, parentSegment.formatContext); // We mark the root segment as having its parent flushed. It's not really flushed but there is\n  // no parent segment so there's nothing to wait on.\n\n  contentRootSegment.parentFlushed = true; // Currently this is running synchronously. We could instead schedule this to pingedTasks.\n  // I suspect that there might be some efficiency benefits from not creating the suspended task\n  // and instead just using the stack if possible.\n  // TODO: Call this directly instead of messing with saving and restoring contexts.\n  // We can reuse the current context and task to render the content immediately without\n  // context switching. We just need to temporarily switch which boundary and which segment\n  // we're writing to. If something suspends, it'll spawn new suspended task with that context.\n\n  task.blockedBoundary = newBoundary;\n  task.blockedSegment = contentRootSegment;\n\n  try {\n    // We use the safe form because we don't handle suspending here. Only error handling.\n    renderNode(request, task, content);\n    contentRootSegment.status = COMPLETED;\n    queueCompletedSegment(newBoundary, contentRootSegment);\n\n    if (newBoundary.pendingTasks === 0) {\n      // This must have been the last segment we were waiting on. This boundary is now complete.\n      // Therefore we won't need the fallback. We early return so that we don't have to create\n      // the fallback.\n      popComponentStackInDEV(task);\n      return;\n    }\n  } catch (error) {\n    contentRootSegment.status = ERRORED;\n    logRecoverableError(request, error);\n    newBoundary.forceClientRender = true; // We don't need to decrement any task numbers because we didn't spawn any new task.\n    // We don't need to schedule any task because we know the parent has written yet.\n    // We do need to fallthrough to create the fallback though.\n  } finally {\n    task.blockedBoundary = parentBoundary;\n    task.blockedSegment = parentSegment;\n  } // We create suspended task for the fallback because we don't want to actually work\n  // on it yet in case we finish the main content, so we queue for later.\n\n\n  var suspendedFallbackTask = createTask(request, fallback, parentBoundary, boundarySegment, fallbackAbortSet, task.legacyContext, task.context, task.treeContext);\n\n  {\n    suspendedFallbackTask.componentStack = task.componentStack;\n  } // TODO: This should be queued at a separate lower priority queue so that we only work\n  // on preparing fallbacks if we don't have any more main content to task on.\n\n\n  request.pingedTasks.push(suspendedFallbackTask);\n  popComponentStackInDEV(task);\n}\n\nfunction renderHostElement(request, task, type, props) {\n  pushBuiltInComponentStackInDEV(task, type);\n  var segment = task.blockedSegment;\n  var children = pushStartInstance(segment.chunks, type, props, request.responseState, segment.formatContext);\n  var prevContext = segment.formatContext;\n  segment.formatContext = getChildFormatContext(prevContext, type, props); // We use the non-destructive form because if something suspends, we still\n  // need to pop back up and finish this subtree of HTML.\n\n  renderNode(request, task, children); // We expect that errors will fatal the whole task and that we don't need\n  // the correct context. Therefore this is not in a finally.\n\n  segment.formatContext = prevContext;\n  pushEndInstance(segment.chunks, type);\n  popComponentStackInDEV(task);\n}\n\nfunction shouldConstruct$1(Component) {\n  return Component.prototype && Component.prototype.isReactComponent;\n}\n\nfunction renderWithHooks(request, task, Component, props, secondArg) {\n  var componentIdentity = {};\n  prepareToUseHooks(task, componentIdentity);\n  var result = Component(props, secondArg);\n  return finishHooks(Component, props, result, secondArg);\n}\n\nfunction finishClassComponent(request, task, instance, Component, props) {\n  var nextChildren = instance.render();\n\n  {\n    if (instance.props !== props) {\n      if (!didWarnAboutReassigningProps) {\n        error('It looks like %s is reassigning its own `this.props` while rendering. ' + 'This is not supported and can lead to confusing bugs.', getComponentNameFromType(Component) || 'a component');\n      }\n\n      didWarnAboutReassigningProps = true;\n    }\n  }\n\n  {\n    var childContextTypes = Component.childContextTypes;\n\n    if (childContextTypes !== null && childContextTypes !== undefined) {\n      var previousContext = task.legacyContext;\n      var mergedContext = processChildContext(instance, Component, previousContext, childContextTypes);\n      task.legacyContext = mergedContext;\n      renderNodeDestructive(request, task, nextChildren);\n      task.legacyContext = previousContext;\n      return;\n    }\n  }\n\n  renderNodeDestructive(request, task, nextChildren);\n}\n\nfunction renderClassComponent(request, task, Component, props) {\n  pushClassComponentStackInDEV(task, Component);\n  var maskedContext =  getMaskedContext(Component, task.legacyContext) ;\n  var instance = constructClassInstance(Component, props, maskedContext);\n  mountClassInstance(instance, Component, props, maskedContext);\n  finishClassComponent(request, task, instance, Component, props);\n  popComponentStackInDEV(task);\n}\n\nvar didWarnAboutBadClass = {};\nvar didWarnAboutModulePatternComponent = {};\nvar didWarnAboutContextTypeOnFunctionComponent = {};\nvar didWarnAboutGetDerivedStateOnFunctionComponent = {};\nvar didWarnAboutReassigningProps = false;\nvar didWarnAboutGenerators = false;\nvar didWarnAboutMaps = false;\nvar hasWarnedAboutUsingContextAsConsumer = false; // This would typically be a function component but we still support module pattern\n// components for some reason.\n\nfunction renderIndeterminateComponent(request, task, Component, props) {\n  var legacyContext;\n\n  {\n    legacyContext = getMaskedContext(Component, task.legacyContext);\n  }\n\n  pushFunctionComponentStackInDEV(task, Component);\n\n  {\n    if (Component.prototype && typeof Component.prototype.render === 'function') {\n      var componentName = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutBadClass[componentName]) {\n        error(\"The <%s /> component appears to have a render method, but doesn't extend React.Component. \" + 'This is likely to cause errors. Change %s to extend React.Component instead.', componentName, componentName);\n\n        didWarnAboutBadClass[componentName] = true;\n      }\n    }\n  }\n\n  var value = renderWithHooks(request, task, Component, props, legacyContext);\n  var hasId = checkDidRenderIdHook();\n\n  {\n    // Support for module components is deprecated and is removed behind a flag.\n    // Whether or not it would crash later, we want to show a good message in DEV first.\n    if (typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) {\n      var _componentName = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutModulePatternComponent[_componentName]) {\n        error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + \"If you can't use a class try assigning the prototype on the function as a workaround. \" + \"`%s.prototype = React.Component.prototype`. Don't use an arrow function since it \" + 'cannot be called with `new` by React.', _componentName, _componentName, _componentName);\n\n        didWarnAboutModulePatternComponent[_componentName] = true;\n      }\n    }\n  }\n\n  if ( // Run these checks in production only if the flag is off.\n  // Eventually we'll delete this branch altogether.\n   typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) {\n    {\n      var _componentName2 = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutModulePatternComponent[_componentName2]) {\n        error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + \"If you can't use a class try assigning the prototype on the function as a workaround. \" + \"`%s.prototype = React.Component.prototype`. Don't use an arrow function since it \" + 'cannot be called with `new` by React.', _componentName2, _componentName2, _componentName2);\n\n        didWarnAboutModulePatternComponent[_componentName2] = true;\n      }\n    }\n\n    mountClassInstance(value, Component, props, legacyContext);\n    finishClassComponent(request, task, value, Component, props);\n  } else {\n\n    {\n      validateFunctionComponentInDev(Component);\n    } // We're now successfully past this task, and we don't have to pop back to\n    // the previous task every again, so we can use the destructive recursive form.\n\n\n    if (hasId) {\n      // This component materialized an id. We treat this as its own level, with\n      // a single \"child\" slot.\n      var prevTreeContext = task.treeContext;\n      var totalChildren = 1;\n      var index = 0;\n      task.treeContext = pushTreeContext(prevTreeContext, totalChildren, index);\n\n      try {\n        renderNodeDestructive(request, task, value);\n      } finally {\n        task.treeContext = prevTreeContext;\n      }\n    } else {\n      renderNodeDestructive(request, task, value);\n    }\n  }\n\n  popComponentStackInDEV(task);\n}\n\nfunction validateFunctionComponentInDev(Component) {\n  {\n    if (Component) {\n      if (Component.childContextTypes) {\n        error('%s(...): childContextTypes cannot be defined on a function component.', Component.displayName || Component.name || 'Component');\n      }\n    }\n\n    if (typeof Component.getDerivedStateFromProps === 'function') {\n      var _componentName3 = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3]) {\n        error('%s: Function components do not support getDerivedStateFromProps.', _componentName3);\n\n        didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3] = true;\n      }\n    }\n\n    if (typeof Component.contextType === 'object' && Component.contextType !== null) {\n      var _componentName4 = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutContextTypeOnFunctionComponent[_componentName4]) {\n        error('%s: Function components do not support contextType.', _componentName4);\n\n        didWarnAboutContextTypeOnFunctionComponent[_componentName4] = true;\n      }\n    }\n  }\n}\n\nfunction resolveDefaultProps(Component, baseProps) {\n  if (Component && Component.defaultProps) {\n    // Resolve default props. Taken from ReactElement\n    var props = assign({}, baseProps);\n    var defaultProps = Component.defaultProps;\n\n    for (var propName in defaultProps) {\n      if (props[propName] === undefined) {\n        props[propName] = defaultProps[propName];\n      }\n    }\n\n    return props;\n  }\n\n  return baseProps;\n}\n\nfunction renderForwardRef(request, task, type, props, ref) {\n  pushFunctionComponentStackInDEV(task, type.render);\n  var children = renderWithHooks(request, task, type.render, props, ref);\n  var hasId = checkDidRenderIdHook();\n\n  if (hasId) {\n    // This component materialized an id. We treat this as its own level, with\n    // a single \"child\" slot.\n    var prevTreeContext = task.treeContext;\n    var totalChildren = 1;\n    var index = 0;\n    task.treeContext = pushTreeContext(prevTreeContext, totalChildren, index);\n\n    try {\n      renderNodeDestructive(request, task, children);\n    } finally {\n      task.treeContext = prevTreeContext;\n    }\n  } else {\n    renderNodeDestructive(request, task, children);\n  }\n\n  popComponentStackInDEV(task);\n}\n\nfunction renderMemo(request, task, type, props, ref) {\n  var innerType = type.type;\n  var resolvedProps = resolveDefaultProps(innerType, props);\n  renderElement(request, task, innerType, resolvedProps, ref);\n}\n\nfunction renderContextConsumer(request, task, context, props) {\n  // The logic below for Context differs depending on PROD or DEV mode. In\n  // DEV mode, we create a separate object for Context.Consumer that acts\n  // like a proxy to Context. This proxy object adds unnecessary code in PROD\n  // so we use the old behaviour (Context.Consumer references Context) to\n  // reduce size and overhead. The separate object references context via\n  // a property called \"_context\", which also gives us the ability to check\n  // in DEV mode if this property exists or not and warn if it does not.\n  {\n    if (context._context === undefined) {\n      // This may be because it's a Context (rather than a Consumer).\n      // Or it may be because it's older React where they're the same thing.\n      // We only want to warn if we're sure it's a new React.\n      if (context !== context.Consumer) {\n        if (!hasWarnedAboutUsingContextAsConsumer) {\n          hasWarnedAboutUsingContextAsConsumer = true;\n\n          error('Rendering <Context> directly is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');\n        }\n      }\n    } else {\n      context = context._context;\n    }\n  }\n\n  var render = props.children;\n\n  {\n    if (typeof render !== 'function') {\n      error('A context consumer was rendered with multiple children, or a child ' + \"that isn't a function. A context consumer expects a single child \" + 'that is a function. If you did pass a function, make sure there ' + 'is no trailing or leading whitespace around it.');\n    }\n  }\n\n  var newValue = readContext(context);\n  var newChildren = render(newValue);\n  renderNodeDestructive(request, task, newChildren);\n}\n\nfunction renderContextProvider(request, task, type, props) {\n  var context = type._context;\n  var value = props.value;\n  var children = props.children;\n  var prevSnapshot;\n\n  {\n    prevSnapshot = task.context;\n  }\n\n  task.context = pushProvider(context, value);\n  renderNodeDestructive(request, task, children);\n  task.context = popProvider(context);\n\n  {\n    if (prevSnapshot !== task.context) {\n      error('Popping the context provider did not return back to the original snapshot. This is a bug in React.');\n    }\n  }\n}\n\nfunction renderLazyComponent(request, task, lazyComponent, props, ref) {\n  pushBuiltInComponentStackInDEV(task, 'Lazy');\n  var payload = lazyComponent._payload;\n  var init = lazyComponent._init;\n  var Component = init(payload);\n  var resolvedProps = resolveDefaultProps(Component, props);\n  renderElement(request, task, Component, resolvedProps, ref);\n  popComponentStackInDEV(task);\n}\n\nfunction renderElement(request, task, type, props, ref) {\n  if (typeof type === 'function') {\n    if (shouldConstruct$1(type)) {\n      renderClassComponent(request, task, type, props);\n      return;\n    } else {\n      renderIndeterminateComponent(request, task, type, props);\n      return;\n    }\n  }\n\n  if (typeof type === 'string') {\n    renderHostElement(request, task, type, props);\n    return;\n  }\n\n  switch (type) {\n    // TODO: LegacyHidden acts the same as a fragment. This only works\n    // because we currently assume that every instance of LegacyHidden is\n    // accompanied by a host component wrapper. In the hidden mode, the host\n    // component is given a `hidden` attribute, which ensures that the\n    // initial HTML is not visible. To support the use of LegacyHidden as a\n    // true fragment, without an extra DOM node, we would have to hide the\n    // initial HTML in some other way.\n    // TODO: Add REACT_OFFSCREEN_TYPE here too with the same capability.\n    case REACT_LEGACY_HIDDEN_TYPE:\n    case REACT_DEBUG_TRACING_MODE_TYPE:\n    case REACT_STRICT_MODE_TYPE:\n    case REACT_PROFILER_TYPE:\n    case REACT_FRAGMENT_TYPE:\n      {\n        renderNodeDestructive(request, task, props.children);\n        return;\n      }\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      {\n        pushBuiltInComponentStackInDEV(task, 'SuspenseList'); // TODO: SuspenseList should control the boundaries.\n\n        renderNodeDestructive(request, task, props.children);\n        popComponentStackInDEV(task);\n        return;\n      }\n\n    case REACT_SCOPE_TYPE:\n      {\n\n        throw new Error('ReactDOMServer does not yet support scope components.');\n      }\n    // eslint-disable-next-line-no-fallthrough\n\n    case REACT_SUSPENSE_TYPE:\n      {\n        {\n          renderSuspenseBoundary(request, task, props);\n        }\n\n        return;\n      }\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        {\n          renderForwardRef(request, task, type, props, ref);\n          return;\n        }\n\n      case REACT_MEMO_TYPE:\n        {\n          renderMemo(request, task, type, props, ref);\n          return;\n        }\n\n      case REACT_PROVIDER_TYPE:\n        {\n          renderContextProvider(request, task, type, props);\n          return;\n        }\n\n      case REACT_CONTEXT_TYPE:\n        {\n          renderContextConsumer(request, task, type, props);\n          return;\n        }\n\n      case REACT_LAZY_TYPE:\n        {\n          renderLazyComponent(request, task, type, props);\n          return;\n        }\n    }\n  }\n\n  var info = '';\n\n  {\n    if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n      info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and \" + 'named imports.';\n    }\n  }\n\n  throw new Error('Element type is invalid: expected a string (for built-in ' + 'components) or a class/function (for composite components) ' + (\"but got: \" + (type == null ? type : typeof type) + \".\" + info));\n}\n\nfunction validateIterable(iterable, iteratorFn) {\n  {\n    // We don't support rendering Generators because it's a mutation.\n    // See https://github.com/facebook/react/issues/12995\n    if (typeof Symbol === 'function' && // $FlowFixMe Flow doesn't know about toStringTag\n    iterable[Symbol.toStringTag] === 'Generator') {\n      if (!didWarnAboutGenerators) {\n        error('Using Generators as children is unsupported and will likely yield ' + 'unexpected results because enumerating a generator mutates it. ' + 'You may convert it to an array with `Array.from()` or the ' + '`[...spread]` operator before rendering. Keep in mind ' + 'you might need to polyfill these features for older browsers.');\n      }\n\n      didWarnAboutGenerators = true;\n    } // Warn about using Maps as children\n\n\n    if (iterable.entries === iteratorFn) {\n      if (!didWarnAboutMaps) {\n        error('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n      }\n\n      didWarnAboutMaps = true;\n    }\n  }\n} // This function by it self renders a node and consumes the task by mutating it\n// to update the current execution state.\n\n\nfunction renderNodeDestructive(request, task, node) {\n  // Stash the node we're working on. We'll pick up from this task in case\n  // something suspends.\n  task.node = node; // Handle object types\n\n  if (typeof node === 'object' && node !== null) {\n    switch (node.$$typeof) {\n      case REACT_ELEMENT_TYPE:\n        {\n          var element = node;\n          var type = element.type;\n          var props = element.props;\n          var ref = element.ref;\n          renderElement(request, task, type, props, ref);\n          return;\n        }\n\n      case REACT_PORTAL_TYPE:\n        throw new Error('Portals are not currently supported by the server renderer. ' + 'Render them conditionally so that they only appear on the client render.');\n      // eslint-disable-next-line-no-fallthrough\n\n      case REACT_LAZY_TYPE:\n        {\n          {\n            var lazyNode = node;\n            var payload = lazyNode._payload;\n            var init = lazyNode._init;\n            var resolvedNode = init(payload);\n            renderNodeDestructive(request, task, resolvedNode);\n            return;\n          }\n        }\n    }\n\n    if (isArray(node)) {\n      renderChildrenArray(request, task, node);\n      return;\n    }\n\n    var iteratorFn = getIteratorFn(node);\n\n    if (iteratorFn) {\n      {\n        validateIterable(node, iteratorFn);\n      }\n\n      var iterator = iteratorFn.call(node);\n\n      if (iterator) {\n        // We need to know how many total children are in this set, so that we\n        // can allocate enough id slots to acommodate them. So we must exhaust\n        // the iterator before we start recursively rendering the children.\n        // TODO: This is not great but I think it's inherent to the id\n        // generation algorithm.\n        var step = iterator.next(); // If there are not entries, we need to push an empty so we start by checking that.\n\n        if (!step.done) {\n          var children = [];\n\n          do {\n            children.push(step.value);\n            step = iterator.next();\n          } while (!step.done);\n\n          renderChildrenArray(request, task, children);\n          return;\n        }\n\n        return;\n      }\n    }\n\n    var childString = Object.prototype.toString.call(node);\n    throw new Error(\"Objects are not valid as a React child (found: \" + (childString === '[object Object]' ? 'object with keys {' + Object.keys(node).join(', ') + '}' : childString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n  }\n\n  if (typeof node === 'string') {\n    pushTextInstance$1(task.blockedSegment.chunks, node, request.responseState);\n    return;\n  }\n\n  if (typeof node === 'number') {\n    pushTextInstance$1(task.blockedSegment.chunks, '' + node, request.responseState);\n    return;\n  }\n\n  {\n    if (typeof node === 'function') {\n      error('Functions are not valid as a React child. This may happen if ' + 'you return a Component instead of <Component /> from render. ' + 'Or maybe you meant to call this function rather than return it.');\n    }\n  }\n}\n\nfunction renderChildrenArray(request, task, children) {\n  var totalChildren = children.length;\n\n  for (var i = 0; i < totalChildren; i++) {\n    var prevTreeContext = task.treeContext;\n    task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i);\n\n    try {\n      // We need to use the non-destructive form so that we can safely pop back\n      // up and render the sibling if something suspends.\n      renderNode(request, task, children[i]);\n    } finally {\n      task.treeContext = prevTreeContext;\n    }\n  }\n}\n\nfunction spawnNewSuspendedTask(request, task, x) {\n  // Something suspended, we'll need to create a new segment and resolve it later.\n  var segment = task.blockedSegment;\n  var insertionIndex = segment.chunks.length;\n  var newSegment = createPendingSegment(request, insertionIndex, null, segment.formatContext);\n  segment.children.push(newSegment);\n  var newTask = createTask(request, task.node, task.blockedBoundary, newSegment, task.abortSet, task.legacyContext, task.context, task.treeContext);\n\n  {\n    if (task.componentStack !== null) {\n      // We pop one task off the stack because the node that suspended will be tried again,\n      // which will add it back onto the stack.\n      newTask.componentStack = task.componentStack.parent;\n    }\n  }\n\n  var ping = newTask.ping;\n  x.then(ping, ping);\n} // This is a non-destructive form of rendering a node. If it suspends it spawns\n// a new task and restores the context of this task to what it was before.\n\n\nfunction renderNode(request, task, node) {\n  // TODO: Store segment.children.length here and reset it in case something\n  // suspended partially through writing something.\n  // Snapshot the current context in case something throws to interrupt the\n  // process.\n  var previousFormatContext = task.blockedSegment.formatContext;\n  var previousLegacyContext = task.legacyContext;\n  var previousContext = task.context;\n  var previousComponentStack = null;\n\n  {\n    previousComponentStack = task.componentStack;\n  }\n\n  try {\n    return renderNodeDestructive(request, task, node);\n  } catch (x) {\n    resetHooksState();\n\n    if (typeof x === 'object' && x !== null && typeof x.then === 'function') {\n      spawnNewSuspendedTask(request, task, x); // Restore the context. We assume that this will be restored by the inner\n      // functions in case nothing throws so we don't use \"finally\" here.\n\n      task.blockedSegment.formatContext = previousFormatContext;\n      task.legacyContext = previousLegacyContext;\n      task.context = previousContext; // Restore all active ReactContexts to what they were before.\n\n      switchContext(previousContext);\n\n      {\n        task.componentStack = previousComponentStack;\n      }\n\n      return;\n    } else {\n      // Restore the context. We assume that this will be restored by the inner\n      // functions in case nothing throws so we don't use \"finally\" here.\n      task.blockedSegment.formatContext = previousFormatContext;\n      task.legacyContext = previousLegacyContext;\n      task.context = previousContext; // Restore all active ReactContexts to what they were before.\n\n      switchContext(previousContext);\n\n      {\n        task.componentStack = previousComponentStack;\n      } // We assume that we don't need the correct context.\n      // Let's terminate the rest of the tree and don't render any siblings.\n\n\n      throw x;\n    }\n  }\n}\n\nfunction erroredTask(request, boundary, segment, error) {\n  // Report the error to a global handler.\n  logRecoverableError(request, error);\n\n  if (boundary === null) {\n    fatalError(request, error);\n  } else {\n    boundary.pendingTasks--;\n\n    if (!boundary.forceClientRender) {\n      boundary.forceClientRender = true; // Regardless of what happens next, this boundary won't be displayed,\n      // so we can flush it, if the parent already flushed.\n\n      if (boundary.parentFlushed) {\n        // We don't have a preference where in the queue this goes since it's likely\n        // to error on the client anyway. However, intentionally client-rendered\n        // boundaries should be flushed earlier so that they can start on the client.\n        // We reuse the same queue for errors.\n        request.clientRenderedBoundaries.push(boundary);\n      }\n    }\n  }\n\n  request.allPendingTasks--;\n\n  if (request.allPendingTasks === 0) {\n    var onAllReady = request.onAllReady;\n    onAllReady();\n  }\n}\n\nfunction abortTaskSoft(task) {\n  // This aborts task without aborting the parent boundary that it blocks.\n  // It's used for when we didn't need this task to complete the tree.\n  // If task was needed, then it should use abortTask instead.\n  var request = this;\n  var boundary = task.blockedBoundary;\n  var segment = task.blockedSegment;\n  segment.status = ABORTED;\n  finishedTask(request, boundary, segment);\n}\n\nfunction abortTask(task) {\n  // This aborts the task and aborts the parent that it blocks, putting it into\n  // client rendered mode.\n  var request = this;\n  var boundary = task.blockedBoundary;\n  var segment = task.blockedSegment;\n  segment.status = ABORTED;\n\n  if (boundary === null) {\n    request.allPendingTasks--; // We didn't complete the root so we have nothing to show. We can close\n    // the request;\n\n    if (request.status !== CLOSED) {\n      request.status = CLOSED;\n\n      if (request.destination !== null) {\n        close(request.destination);\n      }\n    }\n  } else {\n    boundary.pendingTasks--;\n\n    if (!boundary.forceClientRender) {\n      boundary.forceClientRender = true;\n\n      if (boundary.parentFlushed) {\n        request.clientRenderedBoundaries.push(boundary);\n      }\n    } // If this boundary was still pending then we haven't already cancelled its fallbacks.\n    // We'll need to abort the fallbacks, which will also error that parent boundary.\n\n\n    boundary.fallbackAbortableTasks.forEach(abortTask, request);\n    boundary.fallbackAbortableTasks.clear();\n    request.allPendingTasks--;\n\n    if (request.allPendingTasks === 0) {\n      var onAllReady = request.onAllReady;\n      onAllReady();\n    }\n  }\n}\n\nfunction queueCompletedSegment(boundary, segment) {\n  if (segment.chunks.length === 0 && segment.children.length === 1 && segment.children[0].boundary === null) {\n    // This is an empty segment. There's nothing to write, so we can instead transfer the ID\n    // to the child. That way any existing references point to the child.\n    var childSegment = segment.children[0];\n    childSegment.id = segment.id;\n    childSegment.parentFlushed = true;\n\n    if (childSegment.status === COMPLETED) {\n      queueCompletedSegment(boundary, childSegment);\n    }\n  } else {\n    var completedSegments = boundary.completedSegments;\n    completedSegments.push(segment);\n  }\n}\n\nfunction finishedTask(request, boundary, segment) {\n  if (boundary === null) {\n    if (segment.parentFlushed) {\n      if (request.completedRootSegment !== null) {\n        throw new Error('There can only be one root segment. This is a bug in React.');\n      }\n\n      request.completedRootSegment = segment;\n    }\n\n    request.pendingRootTasks--;\n\n    if (request.pendingRootTasks === 0) {\n      // We have completed the shell so the shell can't error anymore.\n      request.onShellError = noop$1;\n      var onShellReady = request.onShellReady;\n      onShellReady();\n    }\n  } else {\n    boundary.pendingTasks--;\n\n    if (boundary.forceClientRender) ; else if (boundary.pendingTasks === 0) {\n      // This must have been the last segment we were waiting on. This boundary is now complete.\n      if (segment.parentFlushed) {\n        // Our parent segment already flushed, so we need to schedule this segment to be emitted.\n        // If it is a segment that was aborted, we'll write other content instead so we don't need\n        // to emit it.\n        if (segment.status === COMPLETED) {\n          queueCompletedSegment(boundary, segment);\n        }\n      }\n\n      if (boundary.parentFlushed) {\n        // The segment might be part of a segment that didn't flush yet, but if the boundary's\n        // parent flushed, we need to schedule the boundary to be emitted.\n        request.completedBoundaries.push(boundary);\n      } // We can now cancel any pending task on the fallback since we won't need to show it anymore.\n      // This needs to happen after we read the parentFlushed flags because aborting can finish\n      // work which can trigger user code, which can start flushing, which can change those flags.\n\n\n      boundary.fallbackAbortableTasks.forEach(abortTaskSoft, request);\n      boundary.fallbackAbortableTasks.clear();\n    } else {\n      if (segment.parentFlushed) {\n        // Our parent already flushed, so we need to schedule this segment to be emitted.\n        // If it is a segment that was aborted, we'll write other content instead so we don't need\n        // to emit it.\n        if (segment.status === COMPLETED) {\n          queueCompletedSegment(boundary, segment);\n          var completedSegments = boundary.completedSegments;\n\n          if (completedSegments.length === 1) {\n            // This is the first time since we last flushed that we completed anything.\n            // We can schedule this boundary to emit its partially completed segments early\n            // in case the parent has already been flushed.\n            if (boundary.parentFlushed) {\n              request.partialBoundaries.push(boundary);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  request.allPendingTasks--;\n\n  if (request.allPendingTasks === 0) {\n    // This needs to be called at the very end so that we can synchronously write the result\n    // in the callback if needed.\n    var onAllReady = request.onAllReady;\n    onAllReady();\n  }\n}\n\nfunction retryTask(request, task) {\n  var segment = task.blockedSegment;\n\n  if (segment.status !== PENDING) {\n    // We completed this by other means before we had a chance to retry it.\n    return;\n  } // We restore the context to what it was when we suspended.\n  // We don't restore it after we leave because it's likely that we'll end up\n  // needing a very similar context soon again.\n\n\n  switchContext(task.context);\n  var prevTaskInDEV = null;\n\n  {\n    prevTaskInDEV = currentTaskInDEV;\n    currentTaskInDEV = task;\n  }\n\n  try {\n    // We call the destructive form that mutates this task. That way if something\n    // suspends again, we can reuse the same task instead of spawning a new one.\n    renderNodeDestructive(request, task, task.node);\n    task.abortSet.delete(task);\n    segment.status = COMPLETED;\n    finishedTask(request, task.blockedBoundary, segment);\n  } catch (x) {\n    resetHooksState();\n\n    if (typeof x === 'object' && x !== null && typeof x.then === 'function') {\n      // Something suspended again, let's pick it back up later.\n      var ping = task.ping;\n      x.then(ping, ping);\n    } else {\n      task.abortSet.delete(task);\n      segment.status = ERRORED;\n      erroredTask(request, task.blockedBoundary, segment, x);\n    }\n  } finally {\n    {\n      currentTaskInDEV = prevTaskInDEV;\n    }\n  }\n}\n\nfunction performWork(request) {\n  if (request.status === CLOSED) {\n    return;\n  }\n\n  var prevContext = getActiveContext();\n  var prevDispatcher = ReactCurrentDispatcher$1.current;\n  ReactCurrentDispatcher$1.current = Dispatcher;\n  var prevGetCurrentStackImpl;\n\n  {\n    prevGetCurrentStackImpl = ReactDebugCurrentFrame$1.getCurrentStack;\n    ReactDebugCurrentFrame$1.getCurrentStack = getCurrentStackInDEV;\n  }\n\n  var prevResponseState = currentResponseState;\n  setCurrentResponseState(request.responseState);\n\n  try {\n    var pingedTasks = request.pingedTasks;\n    var i;\n\n    for (i = 0; i < pingedTasks.length; i++) {\n      var task = pingedTasks[i];\n      retryTask(request, task);\n    }\n\n    pingedTasks.splice(0, i);\n\n    if (request.destination !== null) {\n      flushCompletedQueues(request, request.destination);\n    }\n  } catch (error) {\n    logRecoverableError(request, error);\n    fatalError(request, error);\n  } finally {\n    setCurrentResponseState(prevResponseState);\n    ReactCurrentDispatcher$1.current = prevDispatcher;\n\n    {\n      ReactDebugCurrentFrame$1.getCurrentStack = prevGetCurrentStackImpl;\n    }\n\n    if (prevDispatcher === Dispatcher) {\n      // This means that we were in a reentrant work loop. This could happen\n      // in a renderer that supports synchronous work like renderToString,\n      // when it's called from within another renderer.\n      // Normally we don't bother switching the contexts to their root/default\n      // values when leaving because we'll likely need the same or similar\n      // context again. However, when we're inside a synchronous loop like this\n      // we'll to restore the context to what it was before returning.\n      switchContext(prevContext);\n    }\n  }\n}\n\nfunction flushSubtree(request, destination, segment) {\n  segment.parentFlushed = true;\n\n  switch (segment.status) {\n    case PENDING:\n      {\n        // We're emitting a placeholder for this segment to be filled in later.\n        // Therefore we'll need to assign it an ID - to refer to it by.\n        var segmentID = segment.id = request.nextSegmentId++;\n        return writePlaceholder(destination, request.responseState, segmentID);\n      }\n\n    case COMPLETED:\n      {\n        segment.status = FLUSHED;\n        var r = true;\n        var chunks = segment.chunks;\n        var chunkIdx = 0;\n        var children = segment.children;\n\n        for (var childIdx = 0; childIdx < children.length; childIdx++) {\n          var nextChild = children[childIdx]; // Write all the chunks up until the next child.\n\n          for (; chunkIdx < nextChild.index; chunkIdx++) {\n            writeChunk(destination, chunks[chunkIdx]);\n          }\n\n          r = flushSegment(request, destination, nextChild);\n        } // Finally just write all the remaining chunks\n\n\n        for (; chunkIdx < chunks.length - 1; chunkIdx++) {\n          writeChunk(destination, chunks[chunkIdx]);\n        }\n\n        if (chunkIdx < chunks.length) {\n          r = writeChunkAndReturn(destination, chunks[chunkIdx]);\n        }\n\n        return r;\n      }\n\n    default:\n      {\n        throw new Error('Aborted, errored or already flushed boundaries should not be flushed again. This is a bug in React.');\n      }\n  }\n}\n\nfunction flushSegment(request, destination, segment) {\n  var boundary = segment.boundary;\n\n  if (boundary === null) {\n    // Not a suspense boundary.\n    return flushSubtree(request, destination, segment);\n  }\n\n  boundary.parentFlushed = true; // This segment is a Suspense boundary. We need to decide whether to\n  // emit the content or the fallback now.\n\n  if (boundary.forceClientRender) {\n    // Emit a client rendered suspense boundary wrapper.\n    // We never queue the inner boundary so we'll never emit its content or partial segments.\n    writeStartClientRenderedSuspenseBoundary$1(destination, request.responseState); // Flush the fallback.\n\n    flushSubtree(request, destination, segment);\n    return writeEndClientRenderedSuspenseBoundary$1(destination, request.responseState);\n  } else if (boundary.pendingTasks > 0) {\n    // This boundary is still loading. Emit a pending suspense boundary wrapper.\n    // Assign an ID to refer to the future content by.\n    boundary.rootSegmentID = request.nextSegmentId++;\n\n    if (boundary.completedSegments.length > 0) {\n      // If this is at least partially complete, we can queue it to be partially emitted early.\n      request.partialBoundaries.push(boundary);\n    } /// This is the first time we should have referenced this ID.\n\n\n    var id = boundary.id = assignSuspenseBoundaryID(request.responseState);\n    writeStartPendingSuspenseBoundary(destination, request.responseState, id); // Flush the fallback.\n\n    flushSubtree(request, destination, segment);\n    return writeEndPendingSuspenseBoundary(destination, request.responseState);\n  } else if (boundary.byteSize > request.progressiveChunkSize) {\n    // This boundary is large and will be emitted separately so that we can progressively show\n    // other content. We add it to the queue during the flush because we have to ensure that\n    // the parent flushes first so that there's something to inject it into.\n    // We also have to make sure that it's emitted into the queue in a deterministic slot.\n    // I.e. we can't insert it here when it completes.\n    // Assign an ID to refer to the future content by.\n    boundary.rootSegmentID = request.nextSegmentId++;\n    request.completedBoundaries.push(boundary); // Emit a pending rendered suspense boundary wrapper.\n\n    writeStartPendingSuspenseBoundary(destination, request.responseState, boundary.id); // Flush the fallback.\n\n    flushSubtree(request, destination, segment);\n    return writeEndPendingSuspenseBoundary(destination, request.responseState);\n  } else {\n    // We can inline this boundary's content as a complete boundary.\n    writeStartCompletedSuspenseBoundary$1(destination, request.responseState);\n    var completedSegments = boundary.completedSegments;\n\n    if (completedSegments.length !== 1) {\n      throw new Error('A previously unvisited boundary must have exactly one root segment. This is a bug in React.');\n    }\n\n    var contentSegment = completedSegments[0];\n    flushSegment(request, destination, contentSegment);\n    return writeEndCompletedSuspenseBoundary$1(destination, request.responseState);\n  }\n}\n\nfunction flushClientRenderedBoundary(request, destination, boundary) {\n  return writeClientRenderBoundaryInstruction(destination, request.responseState, boundary.id);\n}\n\nfunction flushSegmentContainer(request, destination, segment) {\n  writeStartSegment(destination, request.responseState, segment.formatContext, segment.id);\n  flushSegment(request, destination, segment);\n  return writeEndSegment(destination, segment.formatContext);\n}\n\nfunction flushCompletedBoundary(request, destination, boundary) {\n  var completedSegments = boundary.completedSegments;\n  var i = 0;\n\n  for (; i < completedSegments.length; i++) {\n    var segment = completedSegments[i];\n    flushPartiallyCompletedSegment(request, destination, boundary, segment);\n  }\n\n  completedSegments.length = 0;\n  return writeCompletedBoundaryInstruction(destination, request.responseState, boundary.id, boundary.rootSegmentID);\n}\n\nfunction flushPartialBoundary(request, destination, boundary) {\n  var completedSegments = boundary.completedSegments;\n  var i = 0;\n\n  for (; i < completedSegments.length; i++) {\n    var segment = completedSegments[i];\n\n    if (!flushPartiallyCompletedSegment(request, destination, boundary, segment)) {\n      i++;\n      completedSegments.splice(0, i); // Only write as much as the buffer wants. Something higher priority\n      // might want to write later.\n\n      return false;\n    }\n  }\n\n  completedSegments.splice(0, i);\n  return true;\n}\n\nfunction flushPartiallyCompletedSegment(request, destination, boundary, segment) {\n  if (segment.status === FLUSHED) {\n    // We've already flushed this inline.\n    return true;\n  }\n\n  var segmentID = segment.id;\n\n  if (segmentID === -1) {\n    // This segment wasn't previously referred to. This happens at the root of\n    // a boundary. We make kind of a leap here and assume this is the root.\n    var rootSegmentID = segment.id = boundary.rootSegmentID;\n\n    if (rootSegmentID === -1) {\n      throw new Error('A root segment ID must have been assigned by now. This is a bug in React.');\n    }\n\n    return flushSegmentContainer(request, destination, segment);\n  } else {\n    flushSegmentContainer(request, destination, segment);\n    return writeCompletedSegmentInstruction(destination, request.responseState, segmentID);\n  }\n}\n\nfunction flushCompletedQueues(request, destination) {\n\n  try {\n    // The structure of this is to go through each queue one by one and write\n    // until the sink tells us to stop. When we should stop, we still finish writing\n    // that item fully and then yield. At that point we remove the already completed\n    // items up until the point we completed them.\n    // TODO: Emit preloading.\n    // TODO: It's kind of unfortunate to keep checking this array after we've already\n    // emitted the root.\n    var completedRootSegment = request.completedRootSegment;\n\n    if (completedRootSegment !== null && request.pendingRootTasks === 0) {\n      flushSegment(request, destination, completedRootSegment);\n      request.completedRootSegment = null;\n      writeCompletedRoot(destination, request.responseState);\n    } // We emit client rendering instructions for already emitted boundaries first.\n    // This is so that we can signal to the client to start client rendering them as\n    // soon as possible.\n\n\n    var clientRenderedBoundaries = request.clientRenderedBoundaries;\n    var i;\n\n    for (i = 0; i < clientRenderedBoundaries.length; i++) {\n      var boundary = clientRenderedBoundaries[i];\n\n      if (!flushClientRenderedBoundary(request, destination, boundary)) {\n        request.destination = null;\n        i++;\n        clientRenderedBoundaries.splice(0, i);\n        return;\n      }\n    }\n\n    clientRenderedBoundaries.splice(0, i); // Next we emit any complete boundaries. It's better to favor boundaries\n    // that are completely done since we can actually show them, than it is to emit\n    // any individual segments from a partially complete boundary.\n\n    var completedBoundaries = request.completedBoundaries;\n\n    for (i = 0; i < completedBoundaries.length; i++) {\n      var _boundary = completedBoundaries[i];\n\n      if (!flushCompletedBoundary(request, destination, _boundary)) {\n        request.destination = null;\n        i++;\n        completedBoundaries.splice(0, i);\n        return;\n      }\n    }\n\n    completedBoundaries.splice(0, i); // Allow anything written so far to flush to the underlying sink before\n    // we continue with lower priorities.\n\n    completeWriting(destination);\n    beginWriting(destination); // TODO: Here we'll emit data used by hydration.\n    // Next we emit any segments of any boundaries that are partially complete\n    // but not deeply complete.\n\n    var partialBoundaries = request.partialBoundaries;\n\n    for (i = 0; i < partialBoundaries.length; i++) {\n      var _boundary2 = partialBoundaries[i];\n\n      if (!flushPartialBoundary(request, destination, _boundary2)) {\n        request.destination = null;\n        i++;\n        partialBoundaries.splice(0, i);\n        return;\n      }\n    }\n\n    partialBoundaries.splice(0, i); // Next we check the completed boundaries again. This may have had\n    // boundaries added to it in case they were too larged to be inlined.\n    // New ones might be added in this loop.\n\n    var largeBoundaries = request.completedBoundaries;\n\n    for (i = 0; i < largeBoundaries.length; i++) {\n      var _boundary3 = largeBoundaries[i];\n\n      if (!flushCompletedBoundary(request, destination, _boundary3)) {\n        request.destination = null;\n        i++;\n        largeBoundaries.splice(0, i);\n        return;\n      }\n    }\n\n    largeBoundaries.splice(0, i);\n  } finally {\n\n    if (request.allPendingTasks === 0 && request.pingedTasks.length === 0 && request.clientRenderedBoundaries.length === 0 && request.completedBoundaries.length === 0 // We don't need to check any partially completed segments because\n    // either they have pending task or they're complete.\n    ) {\n        {\n          if (request.abortableTasks.size !== 0) {\n            error('There was still abortable task at the root when we closed. This is a bug in React.');\n          }\n        } // We're done.\n\n\n        close(destination);\n      }\n  }\n}\n\nfunction startWork(request) {\n  scheduleWork(function () {\n    return performWork(request);\n  });\n}\nfunction startFlowing(request, destination) {\n  if (request.status === CLOSING) {\n    request.status = CLOSED;\n    closeWithError(destination, request.fatalError);\n    return;\n  }\n\n  if (request.status === CLOSED) {\n    return;\n  }\n\n  if (request.destination !== null) {\n    // We're already flowing.\n    return;\n  }\n\n  request.destination = destination;\n\n  try {\n    flushCompletedQueues(request, destination);\n  } catch (error) {\n    logRecoverableError(request, error);\n    fatalError(request, error);\n  }\n} // This is called to early terminate a request. It puts all pending boundaries in client rendered state.\n\nfunction abort(request) {\n  try {\n    var abortableTasks = request.abortableTasks;\n    abortableTasks.forEach(abortTask, request);\n    abortableTasks.clear();\n\n    if (request.destination !== null) {\n      flushCompletedQueues(request, request.destination);\n    }\n  } catch (error) {\n    logRecoverableError(request, error);\n    fatalError(request, error);\n  }\n}\n\nfunction onError() {// Non-fatal errors are ignored.\n}\n\nfunction renderToStringImpl(children, options, generateStaticMarkup) {\n  var didFatal = false;\n  var fatalError = null;\n  var result = '';\n  var destination = {\n    push: function (chunk) {\n      if (chunk !== null) {\n        result += chunk;\n      }\n\n      return true;\n    },\n    destroy: function (error) {\n      didFatal = true;\n      fatalError = error;\n    }\n  };\n  var readyToStream = false;\n\n  function onShellReady() {\n    readyToStream = true;\n  }\n\n  var request = createRequest(children, createResponseState$1(generateStaticMarkup, options ? options.identifierPrefix : undefined), createRootFormatContext(), Infinity, onError, undefined, onShellReady, undefined, undefined);\n  startWork(request); // If anything suspended and is still pending, we'll abort it before writing.\n  // That way we write only client-rendered boundaries from the start.\n\n  abort(request);\n  startFlowing(request, destination);\n\n  if (didFatal) {\n    throw fatalError;\n  }\n\n  if (!readyToStream) {\n    // Note: This error message is the one we use on the client. It doesn't\n    // really make sense here. But this is the legacy server renderer, anyway.\n    // We're going to delete it soon.\n    throw new Error('A component suspended while responding to synchronous input. This ' + 'will cause the UI to be replaced with a loading indicator. To fix, ' + 'updates that suspend should be wrapped with startTransition.');\n  }\n\n  return result;\n}\n\nfunction renderToString(children, options) {\n  return renderToStringImpl(children, options, false);\n}\n\nfunction renderToStaticMarkup(children, options) {\n  return renderToStringImpl(children, options, true);\n}\n\nfunction renderToNodeStream() {\n  throw new Error('ReactDOMServer.renderToNodeStream(): The streaming API is not available ' + 'in the browser. Use ReactDOMServer.renderToString() instead.');\n}\n\nfunction renderToStaticNodeStream() {\n  throw new Error('ReactDOMServer.renderToStaticNodeStream(): The streaming API is not available ' + 'in the browser. Use ReactDOMServer.renderToStaticMarkup() instead.');\n}\n\nexports.renderToNodeStream = renderToNodeStream;\nexports.renderToStaticMarkup = renderToStaticMarkup;\nexports.renderToStaticNodeStream = renderToStaticNodeStream;\nexports.renderToString = renderToString;\nexports.version = ReactVersion;\n  })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20tc2VydmVyLWxlZ2FjeS5icm93c2VyLmRldmVsb3BtZW50LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFYTs7QUFFYixJQUFJLElBQXFDO0FBQ3pDO0FBQ0E7O0FBRUEsWUFBWSxtQkFBTyxDQUFDLDRDQUFPOztBQUUzQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2RkFBNkYsYUFBYTtBQUMxRztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUdBQWlHLGVBQWU7QUFDaEg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7O0FBR047QUFDQTtBQUNBLEtBQUssR0FBRzs7QUFFUixrREFBa0Q7QUFDbEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsd0NBQXdDO0FBQ3hDO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCOztBQUVBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7O0FBRUEsMkJBQTJCO0FBQzNCO0FBQ0E7O0FBRUEsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEI7QUFDNUI7O0FBRUEsaUJBQWlCO0FBQ2pCOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7O0FBR0EscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxHQUFHO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxHQUFHOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsR0FBRztBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxHQUFHOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsR0FBRzs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxHQUFHO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBLDZDQUE2QztBQUM3Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtRkFBbUY7QUFDbkY7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUSwwQ0FBMEM7OztBQUdsRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnR0FBZ0c7QUFDaEc7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSwwQ0FBMEM7OztBQUdsRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTs7O0FBR047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07OztBQUdOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDhFQUE4RTs7QUFFOUU7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxzSkFBc0osaUJBQWlCO0FBQ3ZLLFFBQVE7QUFDUixzSkFBc0osaUJBQWlCLHdEQUF3RCxtQkFBbUIsZ0JBQWdCLCtCQUErQjtBQUNqUzs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOzs7QUFHQTtBQUNBO0FBQ0EsTUFBTTs7O0FBR047QUFDQTtBQUNBO0FBQ0EsTUFBTTs7O0FBR047QUFDQSxvR0FBb0csR0FBRzs7QUFFdkc7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7O0FBRS9CLDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCLG9CQUFvQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QjtBQUN2Qjs7QUFFQTtBQUNBO0FBQ0Esd0JBQXdCLEdBQUcsOEJBQThCOztBQUV6RDs7QUFFQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLFlBQVksUUFBUTtBQUNwQjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUNBQWlDOztBQUVqQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1RUFBdUU7O0FBRXZFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQiw2QkFBNkI7QUFDakQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUJBQXFCLDhCQUE4QjtBQUNuRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUEsd0JBQXdCOztBQUV4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7QUFDNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEM7QUFDMUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0RBQWdEOztBQUVoRDtBQUNBO0FBQ0EsaUlBQWlJLDhCQUE4QjtBQUMvSjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQsVUFBVTtBQUNWO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1Qjs7QUFFdkI7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJEQUEyRDs7QUFFM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLDRCQUE0QjtBQUN0QztBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkVBQTZFLFlBQVk7QUFDekY7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQjtBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNCQUFzQiwwQkFBMEI7QUFDaEQ7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsOEJBQThCOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkVBQTZFLFlBQVk7QUFDekY7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7O0FBR0EscURBQXFEOztBQUVyRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLGdDQUFnQztBQUN6QztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpREFBaUQsNkJBQTZCLDZCQUE2QixnQ0FBZ0MsYUFBYSwyQ0FBMkMsNEJBQTRCO0FBQy9OLGtEQUFrRCw2QkFBNkIsNkJBQTZCLDRCQUE0QixNQUFNLG9CQUFvQix1Q0FBdUMsR0FBRyxzQkFBc0IsYUFBYSwyQkFBMkIsU0FBUyxxQ0FBcUMsZ0JBQWdCLGlCQUFpQixJQUFJLFNBQVMsS0FBSyxhQUFhLGdDQUFnQyxXQUFXLGdDQUFnQztBQUNuYyw0Q0FBNEMsK0ZBQStGO0FBQzNJLHNGQUFzRjtBQUN0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0ZBQXdGO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdGQUFnRjtBQUNoRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDOztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQSxTQUFTO0FBQ1QsdUJBQXVCO0FBQ3ZCO0FBQ0EsU0FBUztBQUNULHVCQUF1QjtBQUN2QjtBQUNBLFNBQVM7QUFDVCx3QkFBd0I7QUFDeEI7QUFDQSxTQUFTO0FBQ1Qsd0JBQXdCO0FBQ3hCO0FBQ0EsU0FBUztBQUNULGlDQUFpQztBQUNqQztBQUNBLFNBQVM7QUFDVCwyQkFBMkI7QUFDM0I7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBLE1BQU07OztBQUdOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwyREFBMkQ7O0FBRTNEO0FBQ0E7O0FBRUE7QUFDQSx5REFBeUQ7QUFDekQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7OztBQUdUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGFBQWEsa0JBQWtCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7O0FBRUE7QUFDQTtBQUNBLGdGQUFnRjtBQUNoRjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7OztBQUdsQjtBQUNBO0FBQ0EsY0FBYztBQUNkOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkhBQTJIO0FBQzNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsb0VBQW9FOztBQUVwRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQjtBQUNwQjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7O0FBR0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSiw0RkFBNEY7QUFDNUY7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsOElBQThJOztBQUU5STtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLFVBQVU7QUFDVjtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsVUFBVTtBQUNWLGtFQUFrRSw0Q0FBNEM7QUFDOUc7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQSx1Q0FBdUMscUJBQXFCO0FBQzVEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOzs7QUFHQTtBQUNBLDRDQUE0QztBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDLGdCQUFnQjs7QUFFaEI7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pEOztBQUVBO0FBQ0E7QUFDQSx3RUFBd0U7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUE0RDs7QUFFNUQsMkRBQTJEOztBQUUzRCwrREFBK0Q7O0FBRS9EO0FBQ0EsOERBQThEO0FBQzlEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7OztBQUdGLHFEQUFxRDtBQUNyRDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjs7QUFFL0Isd0JBQXdCOztBQUV4QiwwQ0FBMEM7O0FBRTFDLHdCQUF3Qjs7QUFFeEIsK0JBQStCOztBQUUvQjtBQUNBO0FBQ0EsbUNBQW1DOztBQUVuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQiw0Q0FBNEM7QUFDOUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsMEJBQTBCOztBQUUxQjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEI7O0FBRTVCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUVBQWlFO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTs7QUFFVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNOztBQUVOO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkJBQTJCO0FBQzNCOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMLCtFQUErRTs7QUFFL0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0Q7O0FBRXBEO0FBQ0EsZ0RBQWdEOztBQUVoRCxnR0FBZ0c7QUFDaEc7O0FBRUEsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLDBDQUEwQztBQUMxQztBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7OztBQUdBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkVBQTJFO0FBQzNFOztBQUVBLHVDQUF1QztBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEO0FBQ2xEOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBLE1BQU07QUFDTjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDhEQUE4RDs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07OztBQUdOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjs7O0FBR0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9COztBQUVwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7O0FBRVo7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdJQUFnSSxxQ0FBcUM7QUFDcks7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsa0JBQWtCLG1CQUFtQjtBQUNyQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBLCtDQUErQztBQUMvQzs7QUFFQTtBQUNBO0FBQ0Esc0NBQXNDOztBQUV0Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7O0FBRXRDOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0EseUNBQXlDO0FBQ3pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0JBQStCO0FBQy9COztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0Isd0JBQXdCO0FBQ3hDO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtCQUErQiw0QkFBNEI7QUFDM0QsOENBQThDOztBQUU5QyxpQkFBaUIsNEJBQTRCO0FBQzdDO0FBQ0E7O0FBRUE7QUFDQSxVQUFVOzs7QUFHVixlQUFlLDhCQUE4QjtBQUM3QztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlDQUFpQztBQUNqQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvRkFBb0Y7O0FBRXBGO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07OztBQUdOO0FBQ0EsK0VBQStFOztBQUUvRTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdEOztBQUVoRCx3RkFBd0Y7O0FBRXhGO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLDhCQUE4QjtBQUN2QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLDhCQUE4QjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0Esc0NBQXNDO0FBQ3RDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUEsZ0JBQWdCLHFDQUFxQztBQUNyRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyQ0FBMkM7QUFDM0M7QUFDQTs7QUFFQTs7QUFFQSxnQkFBZ0IsZ0NBQWdDO0FBQ2hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNDQUFzQztBQUN0Qzs7QUFFQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBOztBQUVBOztBQUVBLGdCQUFnQiw4QkFBOEI7QUFDOUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0NBQW9DO0FBQ3BDO0FBQ0E7O0FBRUE7O0FBRUEsZ0JBQWdCLDRCQUE0QjtBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVOzs7QUFHVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0I7QUFDcEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0I7QUFDdEI7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDBCQUEwQjtBQUMxQiw0QkFBNEI7QUFDNUIsZ0NBQWdDO0FBQ2hDLHNCQUFzQjtBQUN0QixlQUFlO0FBQ2YsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vY2pzL3JlYWN0LWRvbS1zZXJ2ZXItbGVnYWN5LmJyb3dzZXIuZGV2ZWxvcG1lbnQuanM/MmUyZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1kb20tc2VydmVyLWxlZ2FjeS5icm93c2VyLmRldmVsb3BtZW50LmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIChmdW5jdGlvbigpIHtcbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIFJlYWN0VmVyc2lvbiA9ICcxOC4wLjAtZmM0NmRiYTY3LTIwMjIwMzI5JztcblxudmFyIFJlYWN0U2hhcmVkSW50ZXJuYWxzID0gUmVhY3QuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7XG5cbi8vIGJ5IGNhbGxzIHRvIHRoZXNlIG1ldGhvZHMgYnkgYSBCYWJlbCBwbHVnaW4uXG4vL1xuLy8gSW4gUFJPRCAob3IgaW4gcGFja2FnZXMgd2l0aG91dCBhY2Nlc3MgdG8gUmVhY3QgaW50ZXJuYWxzKSxcbi8vIHRoZXkgYXJlIGxlZnQgYXMgdGhleSBhcmUgaW5zdGVhZC5cblxuZnVuY3Rpb24gd2Fybihmb3JtYXQpIHtcbiAge1xuICAgIHtcbiAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG5cbiAgICAgIHByaW50V2FybmluZygnd2FybicsIGZvcm1hdCwgYXJncyk7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBlcnJvcihmb3JtYXQpIHtcbiAge1xuICAgIHtcbiAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiA+IDEgPyBfbGVuMiAtIDEgOiAwKSwgX2tleTIgPSAxOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICAgIGFyZ3NbX2tleTIgLSAxXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgICB9XG5cbiAgICAgIHByaW50V2FybmluZygnZXJyb3InLCBmb3JtYXQsIGFyZ3MpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcmludFdhcm5pbmcobGV2ZWwsIGZvcm1hdCwgYXJncykge1xuICAvLyBXaGVuIGNoYW5naW5nIHRoaXMgbG9naWMsIHlvdSBtaWdodCB3YW50IHRvIGFsc29cbiAgLy8gdXBkYXRlIGNvbnNvbGVXaXRoU3RhY2tEZXYud3d3LmpzIGFzIHdlbGwuXG4gIHtcbiAgICB2YXIgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0RGVidWdDdXJyZW50RnJhbWU7XG4gICAgdmFyIHN0YWNrID0gUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZS5nZXRTdGFja0FkZGVuZHVtKCk7XG5cbiAgICBpZiAoc3RhY2sgIT09ICcnKSB7XG4gICAgICBmb3JtYXQgKz0gJyVzJztcbiAgICAgIGFyZ3MgPSBhcmdzLmNvbmNhdChbc3RhY2tdKTtcbiAgICB9IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9zYWZlLXN0cmluZy1jb2VyY2lvblxuXG5cbiAgICB2YXIgYXJnc1dpdGhGb3JtYXQgPSBhcmdzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIFN0cmluZyhpdGVtKTtcbiAgICB9KTsgLy8gQ2FyZWZ1bDogUk4gY3VycmVudGx5IGRlcGVuZHMgb24gdGhpcyBwcmVmaXhcblxuICAgIGFyZ3NXaXRoRm9ybWF0LnVuc2hpZnQoJ1dhcm5pbmc6ICcgKyBmb3JtYXQpOyAvLyBXZSBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBzcHJlYWQgKG9yIC5hcHBseSkgZGlyZWN0bHkgYmVjYXVzZSBpdFxuICAgIC8vIGJyZWFrcyBJRTk6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTM2MTBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvbm8tcHJvZHVjdGlvbi1sb2dnaW5nXG5cbiAgICBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChjb25zb2xlW2xldmVsXSwgY29uc29sZSwgYXJnc1dpdGhGb3JtYXQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNjaGVkdWxlV29yayhjYWxsYmFjaykge1xuICBjYWxsYmFjaygpO1xufVxuZnVuY3Rpb24gYmVnaW5Xcml0aW5nKGRlc3RpbmF0aW9uKSB7fVxudmFyIHByZXZXYXNDb21tZW50U2VnbWVudGVyID0gZmFsc2U7XG5mdW5jdGlvbiB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjaHVuaykge1xuICB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBjaHVuayk7XG59XG5mdW5jdGlvbiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBjaHVuaykge1xuICBpZiAocHJldldhc0NvbW1lbnRTZWdtZW50ZXIpIHtcbiAgICBwcmV2V2FzQ29tbWVudFNlZ21lbnRlciA9IGZhbHNlO1xuXG4gICAgaWYgKGNodW5rWzBdICE9PSAnPCcpIHtcbiAgICAgIGRlc3RpbmF0aW9uLnB1c2goJzwhLS0gLS0+Jyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNodW5rID09PSAnPCEtLSAtLT4nKSB7XG4gICAgcHJldldhc0NvbW1lbnRTZWdtZW50ZXIgPSB0cnVlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGRlc3RpbmF0aW9uLnB1c2goY2h1bmspO1xufVxuZnVuY3Rpb24gY29tcGxldGVXcml0aW5nKGRlc3RpbmF0aW9uKSB7fVxuZnVuY3Rpb24gY2xvc2UoZGVzdGluYXRpb24pIHtcbiAgZGVzdGluYXRpb24ucHVzaChudWxsKTtcbn1cbmZ1bmN0aW9uIHN0cmluZ1RvQ2h1bmsoY29udGVudCkge1xuICByZXR1cm4gY29udGVudDtcbn1cbmZ1bmN0aW9uIHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhjb250ZW50KSB7XG4gIHJldHVybiBjb250ZW50O1xufVxuZnVuY3Rpb24gY2xvc2VXaXRoRXJyb3IoZGVzdGluYXRpb24sIGVycm9yKSB7XG4gIC8vICRGbG93Rml4TWU6IFRoaXMgaXMgYW4gRXJyb3Igb2JqZWN0IG9yIHRoZSBkZXN0aW5hdGlvbiBhY2NlcHRzIG90aGVyIHR5cGVzLlxuICBkZXN0aW5hdGlvbi5kZXN0cm95KGVycm9yKTtcbn1cblxuLypcbiAqIFRoZSBgJycgKyB2YWx1ZWAgcGF0dGVybiAodXNlZCBpbiBpbiBwZXJmLXNlbnNpdGl2ZSBjb2RlKSB0aHJvd3MgZm9yIFN5bWJvbFxuICogYW5kIFRlbXBvcmFsLiogdHlwZXMuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC8yMjA2NC5cbiAqXG4gKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgbW9kdWxlIHdpbGwgdGhyb3cgYW4gZWFzaWVyLXRvLXVuZGVyc3RhbmQsXG4gKiBlYXNpZXItdG8tZGVidWcgZXhjZXB0aW9uIHdpdGggYSBjbGVhciBlcnJvcnMgbWVzc2FnZSBtZXNzYWdlIGV4cGxhaW5pbmcgdGhlXG4gKiBwcm9ibGVtLiAoSW5zdGVhZCBvZiBhIGNvbmZ1c2luZyBleGNlcHRpb24gdGhyb3duIGluc2lkZSB0aGUgaW1wbGVtZW50YXRpb25cbiAqIG9mIHRoZSBgdmFsdWVgIG9iamVjdCkuXG4gKi9cbi8vICRGbG93Rml4TWUgb25seSBjYWxsZWQgaW4gREVWLCBzbyB2b2lkIHJldHVybiBpcyBub3QgcG9zc2libGUuXG5mdW5jdGlvbiB0eXBlTmFtZSh2YWx1ZSkge1xuICB7XG4gICAgLy8gdG9TdHJpbmdUYWcgaXMgbmVlZGVkIGZvciBuYW1lc3BhY2VkIHR5cGVzIGxpa2UgVGVtcG9yYWwuSW5zdGFudFxuICAgIHZhciBoYXNUb1N0cmluZ1RhZyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLnRvU3RyaW5nVGFnO1xuICAgIHZhciB0eXBlID0gaGFzVG9TdHJpbmdUYWcgJiYgdmFsdWVbU3ltYm9sLnRvU3RyaW5nVGFnXSB8fCB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lIHx8ICdPYmplY3QnO1xuICAgIHJldHVybiB0eXBlO1xuICB9XG59IC8vICRGbG93Rml4TWUgb25seSBjYWxsZWQgaW4gREVWLCBzbyB2b2lkIHJldHVybiBpcyBub3QgcG9zc2libGUuXG5cblxuZnVuY3Rpb24gd2lsbENvZXJjaW9uVGhyb3codmFsdWUpIHtcbiAge1xuICAgIHRyeSB7XG4gICAgICB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpIHtcbiAgLy8gSWYgeW91IGVuZGVkIHVwIGhlcmUgYnkgZm9sbG93aW5nIGFuIGV4Y2VwdGlvbiBjYWxsIHN0YWNrLCBoZXJlJ3Mgd2hhdCdzXG4gIC8vIGhhcHBlbmVkOiB5b3Ugc3VwcGxpZWQgYW4gb2JqZWN0IG9yIHN5bWJvbCB2YWx1ZSB0byBSZWFjdCAoYXMgYSBwcm9wLCBrZXksXG4gIC8vIERPTSBhdHRyaWJ1dGUsIENTUyBwcm9wZXJ0eSwgc3RyaW5nIHJlZiwgZXRjLikgYW5kIHdoZW4gUmVhY3QgdHJpZWQgdG9cbiAgLy8gY29lcmNlIGl0IHRvIGEgc3RyaW5nIHVzaW5nIGAnJyArIHZhbHVlYCwgYW4gZXhjZXB0aW9uIHdhcyB0aHJvd24uXG4gIC8vXG4gIC8vIFRoZSBtb3N0IGNvbW1vbiB0eXBlcyB0aGF0IHdpbGwgY2F1c2UgdGhpcyBleGNlcHRpb24gYXJlIGBTeW1ib2xgIGluc3RhbmNlc1xuICAvLyBhbmQgVGVtcG9yYWwgb2JqZWN0cyBsaWtlIGBUZW1wb3JhbC5JbnN0YW50YC4gQnV0IGFueSBvYmplY3QgdGhhdCBoYXMgYVxuICAvLyBgdmFsdWVPZmAgb3IgYFtTeW1ib2wudG9QcmltaXRpdmVdYCBtZXRob2QgdGhhdCB0aHJvd3Mgd2lsbCBhbHNvIGNhdXNlIHRoaXNcbiAgLy8gZXhjZXB0aW9uLiAoTGlicmFyeSBhdXRob3JzIGRvIHRoaXMgdG8gcHJldmVudCB1c2VycyBmcm9tIHVzaW5nIGJ1aWx0LWluXG4gIC8vIG51bWVyaWMgb3BlcmF0b3JzIGxpa2UgYCtgIG9yIGNvbXBhcmlzb24gb3BlcmF0b3JzIGxpa2UgYD49YCBiZWNhdXNlIGN1c3RvbVxuICAvLyBtZXRob2RzIGFyZSBuZWVkZWQgdG8gcGVyZm9ybSBhY2N1cmF0ZSBhcml0aG1ldGljIG9yIGNvbXBhcmlzb24uKVxuICAvL1xuICAvLyBUbyBmaXggdGhlIHByb2JsZW0sIGNvZXJjZSB0aGlzIG9iamVjdCBvciBzeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmcgYmVmb3JlXG4gIC8vIHBhc3NpbmcgaXQgdG8gUmVhY3QuIFRoZSBtb3N0IHJlbGlhYmxlIHdheSBpcyB1c3VhbGx5IGBTdHJpbmcodmFsdWUpYC5cbiAgLy9cbiAgLy8gVG8gZmluZCB3aGljaCB2YWx1ZSBpcyB0aHJvd2luZywgY2hlY2sgdGhlIGJyb3dzZXIgb3IgZGVidWdnZXIgY29uc29sZS5cbiAgLy8gQmVmb3JlIHRoaXMgZXhjZXB0aW9uIHdhcyB0aHJvd24sIHRoZXJlIHNob3VsZCBiZSBgY29uc29sZS5lcnJvcmAgb3V0cHV0XG4gIC8vIHRoYXQgc2hvd3MgdGhlIHR5cGUgKFN5bWJvbCwgVGVtcG9yYWwuUGxhaW5EYXRlLCBldGMuKSB0aGF0IGNhdXNlZCB0aGVcbiAgLy8gcHJvYmxlbSBhbmQgaG93IHRoYXQgdHlwZSB3YXMgdXNlZDoga2V5LCBhdHJyaWJ1dGUsIGlucHV0IHZhbHVlIHByb3AsIGV0Yy5cbiAgLy8gSW4gbW9zdCBjYXNlcywgdGhpcyBjb25zb2xlIG91dHB1dCBhbHNvIHNob3dzIHRoZSBjb21wb25lbnQgYW5kIGl0c1xuICAvLyBhbmNlc3RvciBjb21wb25lbnRzIHdoZXJlIHRoZSBleGNlcHRpb24gaGFwcGVuZWQuXG4gIC8vXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9zYWZlLXN0cmluZy1jb2VyY2lvblxuICByZXR1cm4gJycgKyB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbih2YWx1ZSwgYXR0cmlidXRlTmFtZSkge1xuICB7XG4gICAgaWYgKHdpbGxDb2VyY2lvblRocm93KHZhbHVlKSkge1xuICAgICAgZXJyb3IoJ1RoZSBwcm92aWRlZCBgJXNgIGF0dHJpYnV0ZSBpcyBhbiB1bnN1cHBvcnRlZCB0eXBlICVzLicgKyAnIFRoaXMgdmFsdWUgbXVzdCBiZSBjb2VyY2VkIHRvIGEgc3RyaW5nIGJlZm9yZSBiZWZvcmUgdXNpbmcgaXQgaGVyZS4nLCBhdHRyaWJ1dGVOYW1lLCB0eXBlTmFtZSh2YWx1ZSkpO1xuXG4gICAgICByZXR1cm4gdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKTsgLy8gdGhyb3cgKHRvIGhlbHAgY2FsbGVycyBmaW5kIHRyb3VibGVzaG9vdGluZyBjb21tZW50cylcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGNoZWNrQ1NTUHJvcGVydHlTdHJpbmdDb2VyY2lvbih2YWx1ZSwgcHJvcE5hbWUpIHtcbiAge1xuICAgIGlmICh3aWxsQ29lcmNpb25UaHJvdyh2YWx1ZSkpIHtcbiAgICAgIGVycm9yKCdUaGUgcHJvdmlkZWQgYCVzYCBDU1MgcHJvcGVydHkgaXMgYW4gdW5zdXBwb3J0ZWQgdHlwZSAlcy4nICsgJyBUaGlzIHZhbHVlIG11c3QgYmUgY29lcmNlZCB0byBhIHN0cmluZyBiZWZvcmUgYmVmb3JlIHVzaW5nIGl0IGhlcmUuJywgcHJvcE5hbWUsIHR5cGVOYW1lKHZhbHVlKSk7XG5cbiAgICAgIHJldHVybiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpOyAvLyB0aHJvdyAodG8gaGVscCBjYWxsZXJzIGZpbmQgdHJvdWJsZXNob290aW5nIGNvbW1lbnRzKVxuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gY2hlY2tIdG1sU3RyaW5nQ29lcmNpb24odmFsdWUpIHtcbiAge1xuICAgIGlmICh3aWxsQ29lcmNpb25UaHJvdyh2YWx1ZSkpIHtcbiAgICAgIGVycm9yKCdUaGUgcHJvdmlkZWQgSFRNTCBtYXJrdXAgdXNlcyBhIHZhbHVlIG9mIHVuc3VwcG9ydGVkIHR5cGUgJXMuJyArICcgVGhpcyB2YWx1ZSBtdXN0IGJlIGNvZXJjZWQgdG8gYSBzdHJpbmcgYmVmb3JlIGJlZm9yZSB1c2luZyBpdCBoZXJlLicsIHR5cGVOYW1lKHZhbHVlKSk7XG5cbiAgICAgIHJldHVybiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpOyAvLyB0aHJvdyAodG8gaGVscCBjYWxsZXJzIGZpbmQgdHJvdWJsZXNob290aW5nIGNvbW1lbnRzKVxuICAgIH1cbiAgfVxufVxuXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG4vLyBBIHJlc2VydmVkIGF0dHJpYnV0ZS5cbi8vIEl0IGlzIGhhbmRsZWQgYnkgUmVhY3Qgc2VwYXJhdGVseSBhbmQgc2hvdWxkbid0IGJlIHdyaXR0ZW4gdG8gdGhlIERPTS5cbnZhciBSRVNFUlZFRCA9IDA7IC8vIEEgc2ltcGxlIHN0cmluZyBhdHRyaWJ1dGUuXG4vLyBBdHRyaWJ1dGVzIHRoYXQgYXJlbid0IGluIHRoZSBmaWx0ZXIgYXJlIHByZXN1bWVkIHRvIGhhdmUgdGhpcyB0eXBlLlxuXG52YXIgU1RSSU5HID0gMTsgLy8gQSBzdHJpbmcgYXR0cmlidXRlIHRoYXQgYWNjZXB0cyBib29sZWFucyBpbiBSZWFjdC4gSW4gSFRNTCwgdGhlc2UgYXJlIGNhbGxlZFxuLy8gXCJlbnVtZXJhdGVkXCIgYXR0cmlidXRlcyB3aXRoIFwidHJ1ZVwiIGFuZCBcImZhbHNlXCIgYXMgcG9zc2libGUgdmFsdWVzLlxuLy8gV2hlbiB0cnVlLCBpdCBzaG91bGQgYmUgc2V0IHRvIGEgXCJ0cnVlXCIgc3RyaW5nLlxuLy8gV2hlbiBmYWxzZSwgaXQgc2hvdWxkIGJlIHNldCB0byBhIFwiZmFsc2VcIiBzdHJpbmcuXG5cbnZhciBCT09MRUFOSVNIX1NUUklORyA9IDI7IC8vIEEgcmVhbCBib29sZWFuIGF0dHJpYnV0ZS5cbi8vIFdoZW4gdHJ1ZSwgaXQgc2hvdWxkIGJlIHByZXNlbnQgKHNldCBlaXRoZXIgdG8gYW4gZW1wdHkgc3RyaW5nIG9yIGl0cyBuYW1lKS5cbi8vIFdoZW4gZmFsc2UsIGl0IHNob3VsZCBiZSBvbWl0dGVkLlxuXG52YXIgQk9PTEVBTiA9IDM7IC8vIEFuIGF0dHJpYnV0ZSB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgZmxhZyBhcyB3ZWxsIGFzIHdpdGggYSB2YWx1ZS5cbi8vIFdoZW4gdHJ1ZSwgaXQgc2hvdWxkIGJlIHByZXNlbnQgKHNldCBlaXRoZXIgdG8gYW4gZW1wdHkgc3RyaW5nIG9yIGl0cyBuYW1lKS5cbi8vIFdoZW4gZmFsc2UsIGl0IHNob3VsZCBiZSBvbWl0dGVkLlxuLy8gRm9yIGFueSBvdGhlciB2YWx1ZSwgc2hvdWxkIGJlIHByZXNlbnQgd2l0aCB0aGF0IHZhbHVlLlxuXG52YXIgT1ZFUkxPQURFRF9CT09MRUFOID0gNDsgLy8gQW4gYXR0cmlidXRlIHRoYXQgbXVzdCBiZSBudW1lcmljIG9yIHBhcnNlIGFzIGEgbnVtZXJpYy5cbi8vIFdoZW4gZmFsc3ksIGl0IHNob3VsZCBiZSByZW1vdmVkLlxuXG52YXIgTlVNRVJJQyA9IDU7IC8vIEFuIGF0dHJpYnV0ZSB0aGF0IG11c3QgYmUgcG9zaXRpdmUgbnVtZXJpYyBvciBwYXJzZSBhcyBhIHBvc2l0aXZlIG51bWVyaWMuXG4vLyBXaGVuIGZhbHN5LCBpdCBzaG91bGQgYmUgcmVtb3ZlZC5cblxudmFyIFBPU0lUSVZFX05VTUVSSUMgPSA2O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG52YXIgQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUiA9IFwiOkEtWl9hLXpcXFxcdTAwQzAtXFxcXHUwMEQ2XFxcXHUwMEQ4LVxcXFx1MDBGNlxcXFx1MDBGOC1cXFxcdTAyRkZcXFxcdTAzNzAtXFxcXHUwMzdEXFxcXHUwMzdGLVxcXFx1MUZGRlxcXFx1MjAwQy1cXFxcdTIwMERcXFxcdTIwNzAtXFxcXHUyMThGXFxcXHUyQzAwLVxcXFx1MkZFRlxcXFx1MzAwMS1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYwLVxcXFx1RkZGRFwiO1xuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuICovXG5cbnZhciBBVFRSSUJVVEVfTkFNRV9DSEFSID0gQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUiArIFwiXFxcXC0uMC05XFxcXHUwMEI3XFxcXHUwMzAwLVxcXFx1MDM2RlxcXFx1MjAzRi1cXFxcdTIwNDBcIjtcbnZhciBWQUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdFWCA9IG5ldyBSZWdFeHAoJ15bJyArIEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIgKyAnXVsnICsgQVRUUklCVVRFX05BTUVfQ0hBUiArICddKiQnKTtcbnZhciBpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlID0ge307XG52YXIgdmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlID0ge307XG5mdW5jdGlvbiBpc0F0dHJpYnV0ZU5hbWVTYWZlKGF0dHJpYnV0ZU5hbWUpIHtcbiAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlLCBhdHRyaWJ1dGVOYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZSwgYXR0cmlidXRlTmFtZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoVkFMSURfQVRUUklCVVRFX05BTUVfUkVHRVgudGVzdChhdHRyaWJ1dGVOYW1lKSkge1xuICAgIHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZVthdHRyaWJ1dGVOYW1lXSA9IHRydWU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0gdHJ1ZTtcblxuICB7XG4gICAgZXJyb3IoJ0ludmFsaWQgYXR0cmlidXRlIG5hbWU6IGAlc2AnLCBhdHRyaWJ1dGVOYW1lKTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIHNob3VsZFJlbW92ZUF0dHJpYnV0ZVdpdGhXYXJuaW5nKG5hbWUsIHZhbHVlLCBwcm9wZXJ0eUluZm8sIGlzQ3VzdG9tQ29tcG9uZW50VGFnKSB7XG4gIGlmIChwcm9wZXJ0eUluZm8gIT09IG51bGwgJiYgcHJvcGVydHlJbmZvLnR5cGUgPT09IFJFU0VSVkVEKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICBjYXNlICdmdW5jdGlvbic6IC8vICRGbG93SXNzdWUgc3ltYm9sIGlzIHBlcmZlY3RseSB2YWxpZCBoZXJlXG5cbiAgICBjYXNlICdzeW1ib2wnOlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIHtcbiAgICAgICAgaWYgKGlzQ3VzdG9tQ29tcG9uZW50VGFnKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BlcnR5SW5mbyAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiAhcHJvcGVydHlJbmZvLmFjY2VwdHNCb29sZWFucztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgcHJlZml4ID0gbmFtZS50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsIDUpO1xuICAgICAgICAgIHJldHVybiBwcmVmaXggIT09ICdkYXRhLScgJiYgcHJlZml4ICE9PSAnYXJpYS0nO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5mdW5jdGlvbiBnZXRQcm9wZXJ0eUluZm8obmFtZSkge1xuICByZXR1cm4gcHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IHByb3BlcnRpZXNbbmFtZV0gOiBudWxsO1xufVxuXG5mdW5jdGlvbiBQcm9wZXJ0eUluZm9SZWNvcmQobmFtZSwgdHlwZSwgbXVzdFVzZVByb3BlcnR5LCBhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGVOYW1lc3BhY2UsIHNhbml0aXplVVJMLCByZW1vdmVFbXB0eVN0cmluZykge1xuICB0aGlzLmFjY2VwdHNCb29sZWFucyA9IHR5cGUgPT09IEJPT0xFQU5JU0hfU1RSSU5HIHx8IHR5cGUgPT09IEJPT0xFQU4gfHwgdHlwZSA9PT0gT1ZFUkxPQURFRF9CT09MRUFOO1xuICB0aGlzLmF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGVOYW1lO1xuICB0aGlzLmF0dHJpYnV0ZU5hbWVzcGFjZSA9IGF0dHJpYnV0ZU5hbWVzcGFjZTtcbiAgdGhpcy5tdXN0VXNlUHJvcGVydHkgPSBtdXN0VXNlUHJvcGVydHk7XG4gIHRoaXMucHJvcGVydHlOYW1lID0gbmFtZTtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy5zYW5pdGl6ZVVSTCA9IHNhbml0aXplVVJMO1xuICB0aGlzLnJlbW92ZUVtcHR5U3RyaW5nID0gcmVtb3ZlRW1wdHlTdHJpbmc7XG59IC8vIFdoZW4gYWRkaW5nIGF0dHJpYnV0ZXMgdG8gdGhpcyBsaXN0LCBiZSBzdXJlIHRvIGFsc28gYWRkIHRoZW0gdG9cbi8vIHRoZSBgcG9zc2libGVTdGFuZGFyZE5hbWVzYCBtb2R1bGUgdG8gZW5zdXJlIGNhc2luZyBhbmQgaW5jb3JyZWN0XG4vLyBuYW1lIHdhcm5pbmdzLlxuXG5cbnZhciBwcm9wZXJ0aWVzID0ge307IC8vIFRoZXNlIHByb3BzIGFyZSByZXNlcnZlZCBieSBSZWFjdC4gVGhleSBzaG91bGRuJ3QgYmUgd3JpdHRlbiB0byB0aGUgRE9NLlxuXG52YXIgcmVzZXJ2ZWRQcm9wcyA9IFsnY2hpbGRyZW4nLCAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnLCAvLyBUT0RPOiBUaGlzIHByZXZlbnRzIHRoZSBhc3NpZ25tZW50IG9mIGRlZmF1bHRWYWx1ZSB0byByZWd1bGFyXG4vLyBlbGVtZW50cyAobm90IGp1c3QgaW5wdXRzKS4gTm93IHRoYXQgUmVhY3RET01JbnB1dCBhc3NpZ25zIHRvIHRoZVxuLy8gZGVmYXVsdFZhbHVlIHByb3BlcnR5IC0tIGRvIHdlIG5lZWQgdGhpcz9cbidkZWZhdWx0VmFsdWUnLCAnZGVmYXVsdENoZWNrZWQnLCAnaW5uZXJIVE1MJywgJ3N1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZycsICdzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcnLCAnc3R5bGUnXTtcblxucmVzZXJ2ZWRQcm9wcy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gIHByb3BlcnRpZXNbbmFtZV0gPSBuZXcgUHJvcGVydHlJbmZvUmVjb3JkKG5hbWUsIFJFU0VSVkVELCBmYWxzZSwgLy8gbXVzdFVzZVByb3BlcnR5XG4gIG5hbWUsIC8vIGF0dHJpYnV0ZU5hbWVcbiAgbnVsbCwgLy8gYXR0cmlidXRlTmFtZXNwYWNlXG4gIGZhbHNlLCAvLyBzYW5pdGl6ZVVSTFxuICBmYWxzZSk7XG59KTsgLy8gQSBmZXcgUmVhY3Qgc3RyaW5nIGF0dHJpYnV0ZXMgaGF2ZSBhIGRpZmZlcmVudCBuYW1lLlxuLy8gVGhpcyBpcyBhIG1hcHBpbmcgZnJvbSBSZWFjdCBwcm9wIG5hbWVzIHRvIHRoZSBhdHRyaWJ1dGUgbmFtZXMuXG5cbltbJ2FjY2VwdENoYXJzZXQnLCAnYWNjZXB0LWNoYXJzZXQnXSwgWydjbGFzc05hbWUnLCAnY2xhc3MnXSwgWydodG1sRm9yJywgJ2ZvciddLCBbJ2h0dHBFcXVpdicsICdodHRwLWVxdWl2J11dLmZvckVhY2goZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIG5hbWUgPSBfcmVmWzBdLFxuICAgICAgYXR0cmlidXRlTmFtZSA9IF9yZWZbMV07XG4gIHByb3BlcnRpZXNbbmFtZV0gPSBuZXcgUHJvcGVydHlJbmZvUmVjb3JkKG5hbWUsIFNUUklORywgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBhdHRyaWJ1dGVOYW1lLCAvLyBhdHRyaWJ1dGVOYW1lXG4gIG51bGwsIC8vIGF0dHJpYnV0ZU5hbWVzcGFjZVxuICBmYWxzZSwgLy8gc2FuaXRpemVVUkxcbiAgZmFsc2UpO1xufSk7IC8vIFRoZXNlIGFyZSBcImVudW1lcmF0ZWRcIiBIVE1MIGF0dHJpYnV0ZXMgdGhhdCBhY2NlcHQgXCJ0cnVlXCIgYW5kIFwiZmFsc2VcIi5cbi8vIEluIFJlYWN0LCB3ZSBsZXQgdXNlcnMgcGFzcyBgdHJ1ZWAgYW5kIGBmYWxzZWAgZXZlbiB0aG91Z2ggdGVjaG5pY2FsbHlcbi8vIHRoZXNlIGFyZW4ndCBib29sZWFuIGF0dHJpYnV0ZXMgKHRoZXkgYXJlIGNvZXJjZWQgdG8gc3RyaW5ncykuXG5cblsnY29udGVudEVkaXRhYmxlJywgJ2RyYWdnYWJsZScsICdzcGVsbENoZWNrJywgJ3ZhbHVlJ10uZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICBwcm9wZXJ0aWVzW25hbWVdID0gbmV3IFByb3BlcnR5SW5mb1JlY29yZChuYW1lLCBCT09MRUFOSVNIX1NUUklORywgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBuYW1lLnRvTG93ZXJDYXNlKCksIC8vIGF0dHJpYnV0ZU5hbWVcbiAgbnVsbCwgLy8gYXR0cmlidXRlTmFtZXNwYWNlXG4gIGZhbHNlLCAvLyBzYW5pdGl6ZVVSTFxuICBmYWxzZSk7XG59KTsgLy8gVGhlc2UgYXJlIFwiZW51bWVyYXRlZFwiIFNWRyBhdHRyaWJ1dGVzIHRoYXQgYWNjZXB0IFwidHJ1ZVwiIGFuZCBcImZhbHNlXCIuXG4vLyBJbiBSZWFjdCwgd2UgbGV0IHVzZXJzIHBhc3MgYHRydWVgIGFuZCBgZmFsc2VgIGV2ZW4gdGhvdWdoIHRlY2huaWNhbGx5XG4vLyB0aGVzZSBhcmVuJ3QgYm9vbGVhbiBhdHRyaWJ1dGVzICh0aGV5IGFyZSBjb2VyY2VkIHRvIHN0cmluZ3MpLlxuLy8gU2luY2UgdGhlc2UgYXJlIFNWRyBhdHRyaWJ1dGVzLCB0aGVpciBhdHRyaWJ1dGUgbmFtZXMgYXJlIGNhc2Utc2Vuc2l0aXZlLlxuXG5bJ2F1dG9SZXZlcnNlJywgJ2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQnLCAnZm9jdXNhYmxlJywgJ3ByZXNlcnZlQWxwaGEnXS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gIHByb3BlcnRpZXNbbmFtZV0gPSBuZXcgUHJvcGVydHlJbmZvUmVjb3JkKG5hbWUsIEJPT0xFQU5JU0hfU1RSSU5HLCBmYWxzZSwgLy8gbXVzdFVzZVByb3BlcnR5XG4gIG5hbWUsIC8vIGF0dHJpYnV0ZU5hbWVcbiAgbnVsbCwgLy8gYXR0cmlidXRlTmFtZXNwYWNlXG4gIGZhbHNlLCAvLyBzYW5pdGl6ZVVSTFxuICBmYWxzZSk7XG59KTsgLy8gVGhlc2UgYXJlIEhUTUwgYm9vbGVhbiBhdHRyaWJ1dGVzLlxuXG5bJ2FsbG93RnVsbFNjcmVlbicsICdhc3luYycsIC8vIE5vdGU6IHRoZXJlIGlzIGEgc3BlY2lhbCBjYXNlIHRoYXQgcHJldmVudHMgaXQgZnJvbSBiZWluZyB3cml0dGVuIHRvIHRoZSBET01cbi8vIG9uIHRoZSBjbGllbnQgc2lkZSBiZWNhdXNlIHRoZSBicm93c2VycyBhcmUgaW5jb25zaXN0ZW50LiBJbnN0ZWFkIHdlIGNhbGwgZm9jdXMoKS5cbidhdXRvRm9jdXMnLCAnYXV0b1BsYXknLCAnY29udHJvbHMnLCAnZGVmYXVsdCcsICdkZWZlcicsICdkaXNhYmxlZCcsICdkaXNhYmxlUGljdHVyZUluUGljdHVyZScsICdkaXNhYmxlUmVtb3RlUGxheWJhY2snLCAnZm9ybU5vVmFsaWRhdGUnLCAnaGlkZGVuJywgJ2xvb3AnLCAnbm9Nb2R1bGUnLCAnbm9WYWxpZGF0ZScsICdvcGVuJywgJ3BsYXlzSW5saW5lJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3JldmVyc2VkJywgJ3Njb3BlZCcsICdzZWFtbGVzcycsIC8vIE1pY3JvZGF0YVxuJ2l0ZW1TY29wZSddLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgcHJvcGVydGllc1tuYW1lXSA9IG5ldyBQcm9wZXJ0eUluZm9SZWNvcmQobmFtZSwgQk9PTEVBTiwgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBuYW1lLnRvTG93ZXJDYXNlKCksIC8vIGF0dHJpYnV0ZU5hbWVcbiAgbnVsbCwgLy8gYXR0cmlidXRlTmFtZXNwYWNlXG4gIGZhbHNlLCAvLyBzYW5pdGl6ZVVSTFxuICBmYWxzZSk7XG59KTsgLy8gVGhlc2UgYXJlIHRoZSBmZXcgUmVhY3QgcHJvcHMgdGhhdCB3ZSBzZXQgYXMgRE9NIHByb3BlcnRpZXNcbi8vIHJhdGhlciB0aGFuIGF0dHJpYnV0ZXMuIFRoZXNlIGFyZSBhbGwgYm9vbGVhbnMuXG5cblsnY2hlY2tlZCcsIC8vIE5vdGU6IGBvcHRpb24uc2VsZWN0ZWRgIGlzIG5vdCB1cGRhdGVkIGlmIGBzZWxlY3QubXVsdGlwbGVgIGlzXG4vLyBkaXNhYmxlZCB3aXRoIGByZW1vdmVBdHRyaWJ1dGVgLiBXZSBoYXZlIHNwZWNpYWwgbG9naWMgZm9yIGhhbmRsaW5nIHRoaXMuXG4nbXVsdGlwbGUnLCAnbXV0ZWQnLCAnc2VsZWN0ZWQnIC8vIE5PVEU6IGlmIHlvdSBhZGQgYSBjYW1lbENhc2VkIHByb3AgdG8gdGhpcyBsaXN0LFxuLy8geW91J2xsIG5lZWQgdG8gc2V0IGF0dHJpYnV0ZU5hbWUgdG8gbmFtZS50b0xvd2VyQ2FzZSgpXG4vLyBpbnN0ZWFkIGluIHRoZSBhc3NpZ25tZW50IGJlbG93LlxuXS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gIHByb3BlcnRpZXNbbmFtZV0gPSBuZXcgUHJvcGVydHlJbmZvUmVjb3JkKG5hbWUsIEJPT0xFQU4sIHRydWUsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBuYW1lLCAvLyBhdHRyaWJ1dGVOYW1lXG4gIG51bGwsIC8vIGF0dHJpYnV0ZU5hbWVzcGFjZVxuICBmYWxzZSwgLy8gc2FuaXRpemVVUkxcbiAgZmFsc2UpO1xufSk7IC8vIFRoZXNlIGFyZSBIVE1MIGF0dHJpYnV0ZXMgdGhhdCBhcmUgXCJvdmVybG9hZGVkIGJvb2xlYW5zXCI6IHRoZXkgYmVoYXZlIGxpa2Vcbi8vIGJvb2xlYW5zLCBidXQgY2FuIGFsc28gYWNjZXB0IGEgc3RyaW5nIHZhbHVlLlxuXG5bJ2NhcHR1cmUnLCAnZG93bmxvYWQnIC8vIE5PVEU6IGlmIHlvdSBhZGQgYSBjYW1lbENhc2VkIHByb3AgdG8gdGhpcyBsaXN0LFxuLy8geW91J2xsIG5lZWQgdG8gc2V0IGF0dHJpYnV0ZU5hbWUgdG8gbmFtZS50b0xvd2VyQ2FzZSgpXG4vLyBpbnN0ZWFkIGluIHRoZSBhc3NpZ25tZW50IGJlbG93LlxuXS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gIHByb3BlcnRpZXNbbmFtZV0gPSBuZXcgUHJvcGVydHlJbmZvUmVjb3JkKG5hbWUsIE9WRVJMT0FERURfQk9PTEVBTiwgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBuYW1lLCAvLyBhdHRyaWJ1dGVOYW1lXG4gIG51bGwsIC8vIGF0dHJpYnV0ZU5hbWVzcGFjZVxuICBmYWxzZSwgLy8gc2FuaXRpemVVUkxcbiAgZmFsc2UpO1xufSk7IC8vIFRoZXNlIGFyZSBIVE1MIGF0dHJpYnV0ZXMgdGhhdCBtdXN0IGJlIHBvc2l0aXZlIG51bWJlcnMuXG5cblsnY29scycsICdyb3dzJywgJ3NpemUnLCAnc3BhbicgLy8gTk9URTogaWYgeW91IGFkZCBhIGNhbWVsQ2FzZWQgcHJvcCB0byB0aGlzIGxpc3QsXG4vLyB5b3UnbGwgbmVlZCB0byBzZXQgYXR0cmlidXRlTmFtZSB0byBuYW1lLnRvTG93ZXJDYXNlKClcbi8vIGluc3RlYWQgaW4gdGhlIGFzc2lnbm1lbnQgYmVsb3cuXG5dLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgcHJvcGVydGllc1tuYW1lXSA9IG5ldyBQcm9wZXJ0eUluZm9SZWNvcmQobmFtZSwgUE9TSVRJVkVfTlVNRVJJQywgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBuYW1lLCAvLyBhdHRyaWJ1dGVOYW1lXG4gIG51bGwsIC8vIGF0dHJpYnV0ZU5hbWVzcGFjZVxuICBmYWxzZSwgLy8gc2FuaXRpemVVUkxcbiAgZmFsc2UpO1xufSk7IC8vIFRoZXNlIGFyZSBIVE1MIGF0dHJpYnV0ZXMgdGhhdCBtdXN0IGJlIG51bWJlcnMuXG5cblsncm93U3BhbicsICdzdGFydCddLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgcHJvcGVydGllc1tuYW1lXSA9IG5ldyBQcm9wZXJ0eUluZm9SZWNvcmQobmFtZSwgTlVNRVJJQywgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBuYW1lLnRvTG93ZXJDYXNlKCksIC8vIGF0dHJpYnV0ZU5hbWVcbiAgbnVsbCwgLy8gYXR0cmlidXRlTmFtZXNwYWNlXG4gIGZhbHNlLCAvLyBzYW5pdGl6ZVVSTFxuICBmYWxzZSk7XG59KTtcbnZhciBDQU1FTElaRSA9IC9bXFwtXFw6XShbYS16XSkvZztcblxudmFyIGNhcGl0YWxpemUgPSBmdW5jdGlvbiAodG9rZW4pIHtcbiAgcmV0dXJuIHRva2VuWzFdLnRvVXBwZXJDYXNlKCk7XG59OyAvLyBUaGlzIGlzIGEgbGlzdCBvZiBhbGwgU1ZHIGF0dHJpYnV0ZXMgdGhhdCBuZWVkIHNwZWNpYWwgY2FzaW5nLCBuYW1lc3BhY2luZyxcbi8vIG9yIGJvb2xlYW4gdmFsdWUgYXNzaWdubWVudC4gUmVndWxhciBhdHRyaWJ1dGVzIHRoYXQganVzdCBhY2NlcHQgc3RyaW5nc1xuLy8gYW5kIGhhdmUgdGhlIHNhbWUgbmFtZXMgYXJlIG9taXR0ZWQsIGp1c3QgbGlrZSBpbiB0aGUgSFRNTCBhdHRyaWJ1dGUgZmlsdGVyLlxuLy8gU29tZSBvZiB0aGVzZSBhdHRyaWJ1dGVzIGNhbiBiZSBoYXJkIHRvIGZpbmQuIFRoaXMgbGlzdCB3YXMgY3JlYXRlZCBieVxuLy8gc2NyYXBpbmcgdGhlIE1ETiBkb2N1bWVudGF0aW9uLlxuXG5cblsnYWNjZW50LWhlaWdodCcsICdhbGlnbm1lbnQtYmFzZWxpbmUnLCAnYXJhYmljLWZvcm0nLCAnYmFzZWxpbmUtc2hpZnQnLCAnY2FwLWhlaWdodCcsICdjbGlwLXBhdGgnLCAnY2xpcC1ydWxlJywgJ2NvbG9yLWludGVycG9sYXRpb24nLCAnY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJywgJ2NvbG9yLXByb2ZpbGUnLCAnY29sb3ItcmVuZGVyaW5nJywgJ2RvbWluYW50LWJhc2VsaW5lJywgJ2VuYWJsZS1iYWNrZ3JvdW5kJywgJ2ZpbGwtb3BhY2l0eScsICdmaWxsLXJ1bGUnLCAnZmxvb2QtY29sb3InLCAnZmxvb2Qtb3BhY2l0eScsICdmb250LWZhbWlseScsICdmb250LXNpemUnLCAnZm9udC1zaXplLWFkanVzdCcsICdmb250LXN0cmV0Y2gnLCAnZm9udC1zdHlsZScsICdmb250LXZhcmlhbnQnLCAnZm9udC13ZWlnaHQnLCAnZ2x5cGgtbmFtZScsICdnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsJywgJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJywgJ2hvcml6LWFkdi14JywgJ2hvcml6LW9yaWdpbi14JywgJ2ltYWdlLXJlbmRlcmluZycsICdsZXR0ZXItc3BhY2luZycsICdsaWdodGluZy1jb2xvcicsICdtYXJrZXItZW5kJywgJ21hcmtlci1taWQnLCAnbWFya2VyLXN0YXJ0JywgJ292ZXJsaW5lLXBvc2l0aW9uJywgJ292ZXJsaW5lLXRoaWNrbmVzcycsICdwYWludC1vcmRlcicsICdwYW5vc2UtMScsICdwb2ludGVyLWV2ZW50cycsICdyZW5kZXJpbmctaW50ZW50JywgJ3NoYXBlLXJlbmRlcmluZycsICdzdG9wLWNvbG9yJywgJ3N0b3Atb3BhY2l0eScsICdzdHJpa2V0aHJvdWdoLXBvc2l0aW9uJywgJ3N0cmlrZXRocm91Z2gtdGhpY2tuZXNzJywgJ3N0cm9rZS1kYXNoYXJyYXknLCAnc3Ryb2tlLWRhc2hvZmZzZXQnLCAnc3Ryb2tlLWxpbmVjYXAnLCAnc3Ryb2tlLWxpbmVqb2luJywgJ3N0cm9rZS1taXRlcmxpbWl0JywgJ3N0cm9rZS1vcGFjaXR5JywgJ3N0cm9rZS13aWR0aCcsICd0ZXh0LWFuY2hvcicsICd0ZXh0LWRlY29yYXRpb24nLCAndGV4dC1yZW5kZXJpbmcnLCAndW5kZXJsaW5lLXBvc2l0aW9uJywgJ3VuZGVybGluZS10aGlja25lc3MnLCAndW5pY29kZS1iaWRpJywgJ3VuaWNvZGUtcmFuZ2UnLCAndW5pdHMtcGVyLWVtJywgJ3YtYWxwaGFiZXRpYycsICd2LWhhbmdpbmcnLCAndi1pZGVvZ3JhcGhpYycsICd2LW1hdGhlbWF0aWNhbCcsICd2ZWN0b3ItZWZmZWN0JywgJ3ZlcnQtYWR2LXknLCAndmVydC1vcmlnaW4teCcsICd2ZXJ0LW9yaWdpbi15JywgJ3dvcmQtc3BhY2luZycsICd3cml0aW5nLW1vZGUnLCAneG1sbnM6eGxpbmsnLCAneC1oZWlnaHQnIC8vIE5PVEU6IGlmIHlvdSBhZGQgYSBjYW1lbENhc2VkIHByb3AgdG8gdGhpcyBsaXN0LFxuLy8geW91J2xsIG5lZWQgdG8gc2V0IGF0dHJpYnV0ZU5hbWUgdG8gbmFtZS50b0xvd2VyQ2FzZSgpXG4vLyBpbnN0ZWFkIGluIHRoZSBhc3NpZ25tZW50IGJlbG93LlxuXS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGVOYW1lKSB7XG4gIHZhciBuYW1lID0gYXR0cmlidXRlTmFtZS5yZXBsYWNlKENBTUVMSVpFLCBjYXBpdGFsaXplKTtcbiAgcHJvcGVydGllc1tuYW1lXSA9IG5ldyBQcm9wZXJ0eUluZm9SZWNvcmQobmFtZSwgU1RSSU5HLCBmYWxzZSwgLy8gbXVzdFVzZVByb3BlcnR5XG4gIGF0dHJpYnV0ZU5hbWUsIG51bGwsIC8vIGF0dHJpYnV0ZU5hbWVzcGFjZVxuICBmYWxzZSwgLy8gc2FuaXRpemVVUkxcbiAgZmFsc2UpO1xufSk7IC8vIFN0cmluZyBTVkcgYXR0cmlidXRlcyB3aXRoIHRoZSB4bGluayBuYW1lc3BhY2UuXG5cblsneGxpbms6YWN0dWF0ZScsICd4bGluazphcmNyb2xlJywgJ3hsaW5rOnJvbGUnLCAneGxpbms6c2hvdycsICd4bGluazp0aXRsZScsICd4bGluazp0eXBlJyAvLyBOT1RFOiBpZiB5b3UgYWRkIGEgY2FtZWxDYXNlZCBwcm9wIHRvIHRoaXMgbGlzdCxcbi8vIHlvdSdsbCBuZWVkIHRvIHNldCBhdHRyaWJ1dGVOYW1lIHRvIG5hbWUudG9Mb3dlckNhc2UoKVxuLy8gaW5zdGVhZCBpbiB0aGUgYXNzaWdubWVudCBiZWxvdy5cbl0uZm9yRWFjaChmdW5jdGlvbiAoYXR0cmlidXRlTmFtZSkge1xuICB2YXIgbmFtZSA9IGF0dHJpYnV0ZU5hbWUucmVwbGFjZShDQU1FTElaRSwgY2FwaXRhbGl6ZSk7XG4gIHByb3BlcnRpZXNbbmFtZV0gPSBuZXcgUHJvcGVydHlJbmZvUmVjb3JkKG5hbWUsIFNUUklORywgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBhdHRyaWJ1dGVOYW1lLCAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycsIGZhbHNlLCAvLyBzYW5pdGl6ZVVSTFxuICBmYWxzZSk7XG59KTsgLy8gU3RyaW5nIFNWRyBhdHRyaWJ1dGVzIHdpdGggdGhlIHhtbCBuYW1lc3BhY2UuXG5cblsneG1sOmJhc2UnLCAneG1sOmxhbmcnLCAneG1sOnNwYWNlJyAvLyBOT1RFOiBpZiB5b3UgYWRkIGEgY2FtZWxDYXNlZCBwcm9wIHRvIHRoaXMgbGlzdCxcbi8vIHlvdSdsbCBuZWVkIHRvIHNldCBhdHRyaWJ1dGVOYW1lIHRvIG5hbWUudG9Mb3dlckNhc2UoKVxuLy8gaW5zdGVhZCBpbiB0aGUgYXNzaWdubWVudCBiZWxvdy5cbl0uZm9yRWFjaChmdW5jdGlvbiAoYXR0cmlidXRlTmFtZSkge1xuICB2YXIgbmFtZSA9IGF0dHJpYnV0ZU5hbWUucmVwbGFjZShDQU1FTElaRSwgY2FwaXRhbGl6ZSk7XG4gIHByb3BlcnRpZXNbbmFtZV0gPSBuZXcgUHJvcGVydHlJbmZvUmVjb3JkKG5hbWUsIFNUUklORywgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBhdHRyaWJ1dGVOYW1lLCAnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJywgZmFsc2UsIC8vIHNhbml0aXplVVJMXG4gIGZhbHNlKTtcbn0pOyAvLyBUaGVzZSBhdHRyaWJ1dGUgZXhpc3RzIGJvdGggaW4gSFRNTCBhbmQgU1ZHLlxuLy8gVGhlIGF0dHJpYnV0ZSBuYW1lIGlzIGNhc2Utc2Vuc2l0aXZlIGluIFNWRyBzbyB3ZSBjYW4ndCBqdXN0IHVzZVxuLy8gdGhlIFJlYWN0IG5hbWUgbGlrZSB3ZSBkbyBmb3IgYXR0cmlidXRlcyB0aGF0IGV4aXN0IG9ubHkgaW4gSFRNTC5cblxuWyd0YWJJbmRleCcsICdjcm9zc09yaWdpbiddLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZU5hbWUpIHtcbiAgcHJvcGVydGllc1thdHRyaWJ1dGVOYW1lXSA9IG5ldyBQcm9wZXJ0eUluZm9SZWNvcmQoYXR0cmlidXRlTmFtZSwgU1RSSU5HLCBmYWxzZSwgLy8gbXVzdFVzZVByb3BlcnR5XG4gIGF0dHJpYnV0ZU5hbWUudG9Mb3dlckNhc2UoKSwgLy8gYXR0cmlidXRlTmFtZVxuICBudWxsLCAvLyBhdHRyaWJ1dGVOYW1lc3BhY2VcbiAgZmFsc2UsIC8vIHNhbml0aXplVVJMXG4gIGZhbHNlKTtcbn0pOyAvLyBUaGVzZSBhdHRyaWJ1dGVzIGFjY2VwdCBVUkxzLiBUaGVzZSBtdXN0IG5vdCBhbGxvdyBqYXZhc2NyaXB0OiBVUkxTLlxuLy8gVGhlc2Ugd2lsbCBhbHNvIG5lZWQgdG8gYWNjZXB0IFRydXN0ZWQgVHlwZXMgb2JqZWN0IGluIHRoZSBmdXR1cmUuXG5cbnZhciB4bGlua0hyZWYgPSAneGxpbmtIcmVmJztcbnByb3BlcnRpZXNbeGxpbmtIcmVmXSA9IG5ldyBQcm9wZXJ0eUluZm9SZWNvcmQoJ3hsaW5rSHJlZicsIFNUUklORywgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuJ3hsaW5rOmhyZWYnLCAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycsIHRydWUsIC8vIHNhbml0aXplVVJMXG5mYWxzZSk7XG5bJ3NyYycsICdocmVmJywgJ2FjdGlvbicsICdmb3JtQWN0aW9uJ10uZm9yRWFjaChmdW5jdGlvbiAoYXR0cmlidXRlTmFtZSkge1xuICBwcm9wZXJ0aWVzW2F0dHJpYnV0ZU5hbWVdID0gbmV3IFByb3BlcnR5SW5mb1JlY29yZChhdHRyaWJ1dGVOYW1lLCBTVFJJTkcsIGZhbHNlLCAvLyBtdXN0VXNlUHJvcGVydHlcbiAgYXR0cmlidXRlTmFtZS50b0xvd2VyQ2FzZSgpLCAvLyBhdHRyaWJ1dGVOYW1lXG4gIG51bGwsIC8vIGF0dHJpYnV0ZU5hbWVzcGFjZVxuICB0cnVlLCAvLyBzYW5pdGl6ZVVSTFxuICB0cnVlKTtcbn0pO1xuXG4vKipcbiAqIENTUyBwcm9wZXJ0aWVzIHdoaWNoIGFjY2VwdCBudW1iZXJzIGJ1dCBhcmUgbm90IGluIHVuaXRzIG9mIFwicHhcIi5cbiAqL1xudmFyIGlzVW5pdGxlc3NOdW1iZXIgPSB7XG4gIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiB0cnVlLFxuICBhc3BlY3RSYXRpbzogdHJ1ZSxcbiAgYm9yZGVySW1hZ2VPdXRzZXQ6IHRydWUsXG4gIGJvcmRlckltYWdlU2xpY2U6IHRydWUsXG4gIGJvcmRlckltYWdlV2lkdGg6IHRydWUsXG4gIGJveEZsZXg6IHRydWUsXG4gIGJveEZsZXhHcm91cDogdHJ1ZSxcbiAgYm94T3JkaW5hbEdyb3VwOiB0cnVlLFxuICBjb2x1bW5Db3VudDogdHJ1ZSxcbiAgY29sdW1uczogdHJ1ZSxcbiAgZmxleDogdHJ1ZSxcbiAgZmxleEdyb3c6IHRydWUsXG4gIGZsZXhQb3NpdGl2ZTogdHJ1ZSxcbiAgZmxleFNocmluazogdHJ1ZSxcbiAgZmxleE5lZ2F0aXZlOiB0cnVlLFxuICBmbGV4T3JkZXI6IHRydWUsXG4gIGdyaWRBcmVhOiB0cnVlLFxuICBncmlkUm93OiB0cnVlLFxuICBncmlkUm93RW5kOiB0cnVlLFxuICBncmlkUm93U3BhbjogdHJ1ZSxcbiAgZ3JpZFJvd1N0YXJ0OiB0cnVlLFxuICBncmlkQ29sdW1uOiB0cnVlLFxuICBncmlkQ29sdW1uRW5kOiB0cnVlLFxuICBncmlkQ29sdW1uU3BhbjogdHJ1ZSxcbiAgZ3JpZENvbHVtblN0YXJ0OiB0cnVlLFxuICBmb250V2VpZ2h0OiB0cnVlLFxuICBsaW5lQ2xhbXA6IHRydWUsXG4gIGxpbmVIZWlnaHQ6IHRydWUsXG4gIG9wYWNpdHk6IHRydWUsXG4gIG9yZGVyOiB0cnVlLFxuICBvcnBoYW5zOiB0cnVlLFxuICB0YWJTaXplOiB0cnVlLFxuICB3aWRvd3M6IHRydWUsXG4gIHpJbmRleDogdHJ1ZSxcbiAgem9vbTogdHJ1ZSxcbiAgLy8gU1ZHLXJlbGF0ZWQgcHJvcGVydGllc1xuICBmaWxsT3BhY2l0eTogdHJ1ZSxcbiAgZmxvb2RPcGFjaXR5OiB0cnVlLFxuICBzdG9wT3BhY2l0eTogdHJ1ZSxcbiAgc3Ryb2tlRGFzaGFycmF5OiB0cnVlLFxuICBzdHJva2VEYXNob2Zmc2V0OiB0cnVlLFxuICBzdHJva2VNaXRlcmxpbWl0OiB0cnVlLFxuICBzdHJva2VPcGFjaXR5OiB0cnVlLFxuICBzdHJva2VXaWR0aDogdHJ1ZVxufTtcbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeCB2ZW5kb3Itc3BlY2lmaWMgcHJlZml4LCBlZzogV2Via2l0XG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IHN0eWxlIG5hbWUsIGVnOiB0cmFuc2l0aW9uRHVyYXRpb25cbiAqIEByZXR1cm4ge3N0cmluZ30gc3R5bGUgbmFtZSBwcmVmaXhlZCB3aXRoIGBwcmVmaXhgLCBwcm9wZXJseSBjYW1lbENhc2VkLCBlZzpcbiAqIFdlYmtpdFRyYW5zaXRpb25EdXJhdGlvblxuICovXG5cbmZ1bmN0aW9uIHByZWZpeEtleShwcmVmaXgsIGtleSkge1xuICByZXR1cm4gcHJlZml4ICsga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnN1YnN0cmluZygxKTtcbn1cbi8qKlxuICogU3VwcG9ydCBzdHlsZSBuYW1lcyB0aGF0IG1heSBjb21lIHBhc3NlZCBpbiBwcmVmaXhlZCBieSBhZGRpbmcgcGVybXV0YXRpb25zXG4gKiBvZiB2ZW5kb3IgcHJlZml4ZXMuXG4gKi9cblxuXG52YXIgcHJlZml4ZXMgPSBbJ1dlYmtpdCcsICdtcycsICdNb3onLCAnTyddOyAvLyBVc2luZyBPYmplY3Qua2V5cyBoZXJlLCBvciBlbHNlIHRoZSB2YW5pbGxhIGZvci1pbiBsb29wIG1ha2VzIElFOCBnbyBpbnRvIGFuXG4vLyBpbmZpbml0ZSBsb29wLCBiZWNhdXNlIGl0IGl0ZXJhdGVzIG92ZXIgdGhlIG5ld2x5IGFkZGVkIHByb3BzIHRvby5cblxuT2JqZWN0LmtleXMoaXNVbml0bGVzc051bWJlcikuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICBwcmVmaXhlcy5mb3JFYWNoKGZ1bmN0aW9uIChwcmVmaXgpIHtcbiAgICBpc1VuaXRsZXNzTnVtYmVyW3ByZWZpeEtleShwcmVmaXgsIHByb3ApXSA9IGlzVW5pdGxlc3NOdW1iZXJbcHJvcF07XG4gIH0pO1xufSk7XG5cbnZhciBoYXNSZWFkT25seVZhbHVlID0ge1xuICBidXR0b246IHRydWUsXG4gIGNoZWNrYm94OiB0cnVlLFxuICBpbWFnZTogdHJ1ZSxcbiAgaGlkZGVuOiB0cnVlLFxuICByYWRpbzogdHJ1ZSxcbiAgcmVzZXQ6IHRydWUsXG4gIHN1Ym1pdDogdHJ1ZVxufTtcbmZ1bmN0aW9uIGNoZWNrQ29udHJvbGxlZFZhbHVlUHJvcHModGFnTmFtZSwgcHJvcHMpIHtcbiAge1xuICAgIGlmICghKGhhc1JlYWRPbmx5VmFsdWVbcHJvcHMudHlwZV0gfHwgcHJvcHMub25DaGFuZ2UgfHwgcHJvcHMub25JbnB1dCB8fCBwcm9wcy5yZWFkT25seSB8fCBwcm9wcy5kaXNhYmxlZCB8fCBwcm9wcy52YWx1ZSA9PSBudWxsKSkge1xuICAgICAgZXJyb3IoJ1lvdSBwcm92aWRlZCBhIGB2YWx1ZWAgcHJvcCB0byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiAnICsgJ2BvbkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgJyArICd0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0VmFsdWVgLiBPdGhlcndpc2UsICcgKyAnc2V0IGVpdGhlciBgb25DaGFuZ2VgIG9yIGByZWFkT25seWAuJyk7XG4gICAgfVxuXG4gICAgaWYgKCEocHJvcHMub25DaGFuZ2UgfHwgcHJvcHMucmVhZE9ubHkgfHwgcHJvcHMuZGlzYWJsZWQgfHwgcHJvcHMuY2hlY2tlZCA9PSBudWxsKSkge1xuICAgICAgZXJyb3IoJ1lvdSBwcm92aWRlZCBhIGBjaGVja2VkYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuICcgKyAnYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiAnICsgJ3RoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRDaGVja2VkYC4gT3RoZXJ3aXNlLCAnICsgJ3NldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLicpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc0N1c3RvbUNvbXBvbmVudCh0YWdOYW1lLCBwcm9wcykge1xuICBpZiAodGFnTmFtZS5pbmRleE9mKCctJykgPT09IC0xKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBwcm9wcy5pcyA9PT0gJ3N0cmluZyc7XG4gIH1cblxuICBzd2l0Y2ggKHRhZ05hbWUpIHtcbiAgICAvLyBUaGVzZSBhcmUgcmVzZXJ2ZWQgU1ZHIGFuZCBNYXRoTUwgZWxlbWVudHMuXG4gICAgLy8gV2UgZG9uJ3QgbWluZCB0aGlzIGxpc3QgdG9vIG11Y2ggYmVjYXVzZSB3ZSBleHBlY3QgaXQgdG8gbmV2ZXIgZ3Jvdy5cbiAgICAvLyBUaGUgYWx0ZXJuYXRpdmUgaXMgdG8gdHJhY2sgdGhlIG5hbWVzcGFjZSBpbiBhIGZldyBwbGFjZXMgd2hpY2ggaXMgY29udm9sdXRlZC5cbiAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8jY3VzdG9tLWVsZW1lbnRzLWNvcmUtY29uY2VwdHNcbiAgICBjYXNlICdhbm5vdGF0aW9uLXhtbCc6XG4gICAgY2FzZSAnY29sb3ItcHJvZmlsZSc6XG4gICAgY2FzZSAnZm9udC1mYWNlJzpcbiAgICBjYXNlICdmb250LWZhY2Utc3JjJzpcbiAgICBjYXNlICdmb250LWZhY2UtdXJpJzpcbiAgICBjYXNlICdmb250LWZhY2UtZm9ybWF0JzpcbiAgICBjYXNlICdmb250LWZhY2UtbmFtZSc6XG4gICAgY2FzZSAnbWlzc2luZy1nbHlwaCc6XG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxudmFyIGFyaWFQcm9wZXJ0aWVzID0ge1xuICAnYXJpYS1jdXJyZW50JzogMCxcbiAgLy8gc3RhdGVcbiAgJ2FyaWEtZGVzY3JpcHRpb24nOiAwLFxuICAnYXJpYS1kZXRhaWxzJzogMCxcbiAgJ2FyaWEtZGlzYWJsZWQnOiAwLFxuICAvLyBzdGF0ZVxuICAnYXJpYS1oaWRkZW4nOiAwLFxuICAvLyBzdGF0ZVxuICAnYXJpYS1pbnZhbGlkJzogMCxcbiAgLy8gc3RhdGVcbiAgJ2FyaWEta2V5c2hvcnRjdXRzJzogMCxcbiAgJ2FyaWEtbGFiZWwnOiAwLFxuICAnYXJpYS1yb2xlZGVzY3JpcHRpb24nOiAwLFxuICAvLyBXaWRnZXQgQXR0cmlidXRlc1xuICAnYXJpYS1hdXRvY29tcGxldGUnOiAwLFxuICAnYXJpYS1jaGVja2VkJzogMCxcbiAgJ2FyaWEtZXhwYW5kZWQnOiAwLFxuICAnYXJpYS1oYXNwb3B1cCc6IDAsXG4gICdhcmlhLWxldmVsJzogMCxcbiAgJ2FyaWEtbW9kYWwnOiAwLFxuICAnYXJpYS1tdWx0aWxpbmUnOiAwLFxuICAnYXJpYS1tdWx0aXNlbGVjdGFibGUnOiAwLFxuICAnYXJpYS1vcmllbnRhdGlvbic6IDAsXG4gICdhcmlhLXBsYWNlaG9sZGVyJzogMCxcbiAgJ2FyaWEtcHJlc3NlZCc6IDAsXG4gICdhcmlhLXJlYWRvbmx5JzogMCxcbiAgJ2FyaWEtcmVxdWlyZWQnOiAwLFxuICAnYXJpYS1zZWxlY3RlZCc6IDAsXG4gICdhcmlhLXNvcnQnOiAwLFxuICAnYXJpYS12YWx1ZW1heCc6IDAsXG4gICdhcmlhLXZhbHVlbWluJzogMCxcbiAgJ2FyaWEtdmFsdWVub3cnOiAwLFxuICAnYXJpYS12YWx1ZXRleHQnOiAwLFxuICAvLyBMaXZlIFJlZ2lvbiBBdHRyaWJ1dGVzXG4gICdhcmlhLWF0b21pYyc6IDAsXG4gICdhcmlhLWJ1c3knOiAwLFxuICAnYXJpYS1saXZlJzogMCxcbiAgJ2FyaWEtcmVsZXZhbnQnOiAwLFxuICAvLyBEcmFnLWFuZC1Ecm9wIEF0dHJpYnV0ZXNcbiAgJ2FyaWEtZHJvcGVmZmVjdCc6IDAsXG4gICdhcmlhLWdyYWJiZWQnOiAwLFxuICAvLyBSZWxhdGlvbnNoaXAgQXR0cmlidXRlc1xuICAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JzogMCxcbiAgJ2FyaWEtY29sY291bnQnOiAwLFxuICAnYXJpYS1jb2xpbmRleCc6IDAsXG4gICdhcmlhLWNvbHNwYW4nOiAwLFxuICAnYXJpYS1jb250cm9scyc6IDAsXG4gICdhcmlhLWRlc2NyaWJlZGJ5JzogMCxcbiAgJ2FyaWEtZXJyb3JtZXNzYWdlJzogMCxcbiAgJ2FyaWEtZmxvd3RvJzogMCxcbiAgJ2FyaWEtbGFiZWxsZWRieSc6IDAsXG4gICdhcmlhLW93bnMnOiAwLFxuICAnYXJpYS1wb3NpbnNldCc6IDAsXG4gICdhcmlhLXJvd2NvdW50JzogMCxcbiAgJ2FyaWEtcm93aW5kZXgnOiAwLFxuICAnYXJpYS1yb3dzcGFuJzogMCxcbiAgJ2FyaWEtc2V0c2l6ZSc6IDBcbn07XG5cbnZhciB3YXJuZWRQcm9wZXJ0aWVzID0ge307XG52YXIgckFSSUEgPSBuZXcgUmVnRXhwKCdeKGFyaWEpLVsnICsgQVRUUklCVVRFX05BTUVfQ0hBUiArICddKiQnKTtcbnZhciByQVJJQUNhbWVsID0gbmV3IFJlZ0V4cCgnXihhcmlhKVtBLVpdWycgKyBBVFRSSUJVVEVfTkFNRV9DSEFSICsgJ10qJCcpO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5KHRhZ05hbWUsIG5hbWUpIHtcbiAge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHdhcm5lZFByb3BlcnRpZXMsIG5hbWUpICYmIHdhcm5lZFByb3BlcnRpZXNbbmFtZV0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChyQVJJQUNhbWVsLnRlc3QobmFtZSkpIHtcbiAgICAgIHZhciBhcmlhTmFtZSA9ICdhcmlhLScgKyBuYW1lLnNsaWNlKDQpLnRvTG93ZXJDYXNlKCk7XG4gICAgICB2YXIgY29ycmVjdE5hbWUgPSBhcmlhUHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShhcmlhTmFtZSkgPyBhcmlhTmFtZSA6IG51bGw7IC8vIElmIHRoaXMgaXMgYW4gYXJpYS0qIGF0dHJpYnV0ZSwgYnV0IGlzIG5vdCBsaXN0ZWQgaW4gdGhlIGtub3duIERPTVxuICAgICAgLy8gRE9NIHByb3BlcnRpZXMsIHRoZW4gaXQgaXMgYW4gaW52YWxpZCBhcmlhLSogYXR0cmlidXRlLlxuXG4gICAgICBpZiAoY29ycmVjdE5hbWUgPT0gbnVsbCkge1xuICAgICAgICBlcnJvcignSW52YWxpZCBBUklBIGF0dHJpYnV0ZSBgJXNgLiBBUklBIGF0dHJpYnV0ZXMgZm9sbG93IHRoZSBwYXR0ZXJuIGFyaWEtKiBhbmQgbXVzdCBiZSBsb3dlcmNhc2UuJywgbmFtZSk7XG5cbiAgICAgICAgd2FybmVkUHJvcGVydGllc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSAvLyBhcmlhLSogYXR0cmlidXRlcyBzaG91bGQgYmUgbG93ZXJjYXNlOyBzdWdnZXN0IHRoZSBsb3dlcmNhc2UgdmVyc2lvbi5cblxuXG4gICAgICBpZiAobmFtZSAhPT0gY29ycmVjdE5hbWUpIHtcbiAgICAgICAgZXJyb3IoJ0ludmFsaWQgQVJJQSBhdHRyaWJ1dGUgYCVzYC4gRGlkIHlvdSBtZWFuIGAlc2A/JywgbmFtZSwgY29ycmVjdE5hbWUpO1xuXG4gICAgICAgIHdhcm5lZFByb3BlcnRpZXNbbmFtZV0gPSB0cnVlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAockFSSUEudGVzdChuYW1lKSkge1xuICAgICAgdmFyIGxvd2VyQ2FzZWROYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgdmFyIHN0YW5kYXJkTmFtZSA9IGFyaWFQcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGxvd2VyQ2FzZWROYW1lKSA/IGxvd2VyQ2FzZWROYW1lIDogbnVsbDsgLy8gSWYgdGhpcyBpcyBhbiBhcmlhLSogYXR0cmlidXRlLCBidXQgaXMgbm90IGxpc3RlZCBpbiB0aGUga25vd24gRE9NXG4gICAgICAvLyBET00gcHJvcGVydGllcywgdGhlbiBpdCBpcyBhbiBpbnZhbGlkIGFyaWEtKiBhdHRyaWJ1dGUuXG5cbiAgICAgIGlmIChzdGFuZGFyZE5hbWUgPT0gbnVsbCkge1xuICAgICAgICB3YXJuZWRQcm9wZXJ0aWVzW25hbWVdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSAvLyBhcmlhLSogYXR0cmlidXRlcyBzaG91bGQgYmUgbG93ZXJjYXNlOyBzdWdnZXN0IHRoZSBsb3dlcmNhc2UgdmVyc2lvbi5cblxuXG4gICAgICBpZiAobmFtZSAhPT0gc3RhbmRhcmROYW1lKSB7XG4gICAgICAgIGVycm9yKCdVbmtub3duIEFSSUEgYXR0cmlidXRlIGAlc2AuIERpZCB5b3UgbWVhbiBgJXNgPycsIG5hbWUsIHN0YW5kYXJkTmFtZSk7XG5cbiAgICAgICAgd2FybmVkUHJvcGVydGllc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiB3YXJuSW52YWxpZEFSSUFQcm9wcyh0eXBlLCBwcm9wcykge1xuICB7XG4gICAgdmFyIGludmFsaWRQcm9wcyA9IFtdO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgICB2YXIgaXNWYWxpZCA9IHZhbGlkYXRlUHJvcGVydHkodHlwZSwga2V5KTtcblxuICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgIGludmFsaWRQcm9wcy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHVua25vd25Qcm9wU3RyaW5nID0gaW52YWxpZFByb3BzLm1hcChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgcmV0dXJuICdgJyArIHByb3AgKyAnYCc7XG4gICAgfSkuam9pbignLCAnKTtcblxuICAgIGlmIChpbnZhbGlkUHJvcHMubGVuZ3RoID09PSAxKSB7XG4gICAgICBlcnJvcignSW52YWxpZCBhcmlhIHByb3AgJXMgb24gPCVzPiB0YWcuICcgKyAnRm9yIGRldGFpbHMsIHNlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvaW52YWxpZC1hcmlhLXByb3BzJywgdW5rbm93blByb3BTdHJpbmcsIHR5cGUpO1xuICAgIH0gZWxzZSBpZiAoaW52YWxpZFByb3BzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGVycm9yKCdJbnZhbGlkIGFyaWEgcHJvcHMgJXMgb24gPCVzPiB0YWcuICcgKyAnRm9yIGRldGFpbHMsIHNlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvaW52YWxpZC1hcmlhLXByb3BzJywgdW5rbm93blByb3BTdHJpbmcsIHR5cGUpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnRpZXModHlwZSwgcHJvcHMpIHtcbiAgaWYgKGlzQ3VzdG9tQ29tcG9uZW50KHR5cGUsIHByb3BzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHdhcm5JbnZhbGlkQVJJQVByb3BzKHR5cGUsIHByb3BzKTtcbn1cblxudmFyIGRpZFdhcm5WYWx1ZU51bGwgPSBmYWxzZTtcbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydGllcyQxKHR5cGUsIHByb3BzKSB7XG4gIHtcbiAgICBpZiAodHlwZSAhPT0gJ2lucHV0JyAmJiB0eXBlICE9PSAndGV4dGFyZWEnICYmIHR5cGUgIT09ICdzZWxlY3QnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHByb3BzICE9IG51bGwgJiYgcHJvcHMudmFsdWUgPT09IG51bGwgJiYgIWRpZFdhcm5WYWx1ZU51bGwpIHtcbiAgICAgIGRpZFdhcm5WYWx1ZU51bGwgPSB0cnVlO1xuXG4gICAgICBpZiAodHlwZSA9PT0gJ3NlbGVjdCcgJiYgcHJvcHMubXVsdGlwbGUpIHtcbiAgICAgICAgZXJyb3IoJ2B2YWx1ZWAgcHJvcCBvbiBgJXNgIHNob3VsZCBub3QgYmUgbnVsbC4gJyArICdDb25zaWRlciB1c2luZyBhbiBlbXB0eSBhcnJheSB3aGVuIGBtdWx0aXBsZWAgaXMgc2V0IHRvIGB0cnVlYCAnICsgJ3RvIGNsZWFyIHRoZSBjb21wb25lbnQgb3IgYHVuZGVmaW5lZGAgZm9yIHVuY29udHJvbGxlZCBjb21wb25lbnRzLicsIHR5cGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyb3IoJ2B2YWx1ZWAgcHJvcCBvbiBgJXNgIHNob3VsZCBub3QgYmUgbnVsbC4gJyArICdDb25zaWRlciB1c2luZyBhbiBlbXB0eSBzdHJpbmcgdG8gY2xlYXIgdGhlIGNvbXBvbmVudCBvciBgdW5kZWZpbmVkYCAnICsgJ2ZvciB1bmNvbnRyb2xsZWQgY29tcG9uZW50cy4nLCB0eXBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gV2hlbiBhZGRpbmcgYXR0cmlidXRlcyB0byB0aGUgSFRNTCBvciBTVkcgYWxsb3dlZCBhdHRyaWJ1dGUgbGlzdCwgYmUgc3VyZSB0b1xuLy8gYWxzbyBhZGQgdGhlbSB0byB0aGlzIG1vZHVsZSB0byBlbnN1cmUgY2FzaW5nIGFuZCBpbmNvcnJlY3QgbmFtZVxuLy8gd2FybmluZ3MuXG52YXIgcG9zc2libGVTdGFuZGFyZE5hbWVzID0ge1xuICAvLyBIVE1MXG4gIGFjY2VwdDogJ2FjY2VwdCcsXG4gIGFjY2VwdGNoYXJzZXQ6ICdhY2NlcHRDaGFyc2V0JyxcbiAgJ2FjY2VwdC1jaGFyc2V0JzogJ2FjY2VwdENoYXJzZXQnLFxuICBhY2Nlc3NrZXk6ICdhY2Nlc3NLZXknLFxuICBhY3Rpb246ICdhY3Rpb24nLFxuICBhbGxvd2Z1bGxzY3JlZW46ICdhbGxvd0Z1bGxTY3JlZW4nLFxuICBhbHQ6ICdhbHQnLFxuICBhczogJ2FzJyxcbiAgYXN5bmM6ICdhc3luYycsXG4gIGF1dG9jYXBpdGFsaXplOiAnYXV0b0NhcGl0YWxpemUnLFxuICBhdXRvY29tcGxldGU6ICdhdXRvQ29tcGxldGUnLFxuICBhdXRvY29ycmVjdDogJ2F1dG9Db3JyZWN0JyxcbiAgYXV0b2ZvY3VzOiAnYXV0b0ZvY3VzJyxcbiAgYXV0b3BsYXk6ICdhdXRvUGxheScsXG4gIGF1dG9zYXZlOiAnYXV0b1NhdmUnLFxuICBjYXB0dXJlOiAnY2FwdHVyZScsXG4gIGNlbGxwYWRkaW5nOiAnY2VsbFBhZGRpbmcnLFxuICBjZWxsc3BhY2luZzogJ2NlbGxTcGFjaW5nJyxcbiAgY2hhbGxlbmdlOiAnY2hhbGxlbmdlJyxcbiAgY2hhcnNldDogJ2NoYXJTZXQnLFxuICBjaGVja2VkOiAnY2hlY2tlZCcsXG4gIGNoaWxkcmVuOiAnY2hpbGRyZW4nLFxuICBjaXRlOiAnY2l0ZScsXG4gIGNsYXNzOiAnY2xhc3NOYW1lJyxcbiAgY2xhc3NpZDogJ2NsYXNzSUQnLFxuICBjbGFzc25hbWU6ICdjbGFzc05hbWUnLFxuICBjb2xzOiAnY29scycsXG4gIGNvbHNwYW46ICdjb2xTcGFuJyxcbiAgY29udGVudDogJ2NvbnRlbnQnLFxuICBjb250ZW50ZWRpdGFibGU6ICdjb250ZW50RWRpdGFibGUnLFxuICBjb250ZXh0bWVudTogJ2NvbnRleHRNZW51JyxcbiAgY29udHJvbHM6ICdjb250cm9scycsXG4gIGNvbnRyb2xzbGlzdDogJ2NvbnRyb2xzTGlzdCcsXG4gIGNvb3JkczogJ2Nvb3JkcycsXG4gIGNyb3Nzb3JpZ2luOiAnY3Jvc3NPcmlnaW4nLFxuICBkYW5nZXJvdXNseXNldGlubmVyaHRtbDogJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJyxcbiAgZGF0YTogJ2RhdGEnLFxuICBkYXRldGltZTogJ2RhdGVUaW1lJyxcbiAgZGVmYXVsdDogJ2RlZmF1bHQnLFxuICBkZWZhdWx0Y2hlY2tlZDogJ2RlZmF1bHRDaGVja2VkJyxcbiAgZGVmYXVsdHZhbHVlOiAnZGVmYXVsdFZhbHVlJyxcbiAgZGVmZXI6ICdkZWZlcicsXG4gIGRpcjogJ2RpcicsXG4gIGRpc2FibGVkOiAnZGlzYWJsZWQnLFxuICBkaXNhYmxlcGljdHVyZWlucGljdHVyZTogJ2Rpc2FibGVQaWN0dXJlSW5QaWN0dXJlJyxcbiAgZGlzYWJsZXJlbW90ZXBsYXliYWNrOiAnZGlzYWJsZVJlbW90ZVBsYXliYWNrJyxcbiAgZG93bmxvYWQ6ICdkb3dubG9hZCcsXG4gIGRyYWdnYWJsZTogJ2RyYWdnYWJsZScsXG4gIGVuY3R5cGU6ICdlbmNUeXBlJyxcbiAgZW50ZXJrZXloaW50OiAnZW50ZXJLZXlIaW50JyxcbiAgZm9yOiAnaHRtbEZvcicsXG4gIGZvcm06ICdmb3JtJyxcbiAgZm9ybW1ldGhvZDogJ2Zvcm1NZXRob2QnLFxuICBmb3JtYWN0aW9uOiAnZm9ybUFjdGlvbicsXG4gIGZvcm1lbmN0eXBlOiAnZm9ybUVuY1R5cGUnLFxuICBmb3Jtbm92YWxpZGF0ZTogJ2Zvcm1Ob1ZhbGlkYXRlJyxcbiAgZm9ybXRhcmdldDogJ2Zvcm1UYXJnZXQnLFxuICBmcmFtZWJvcmRlcjogJ2ZyYW1lQm9yZGVyJyxcbiAgaGVhZGVyczogJ2hlYWRlcnMnLFxuICBoZWlnaHQ6ICdoZWlnaHQnLFxuICBoaWRkZW46ICdoaWRkZW4nLFxuICBoaWdoOiAnaGlnaCcsXG4gIGhyZWY6ICdocmVmJyxcbiAgaHJlZmxhbmc6ICdocmVmTGFuZycsXG4gIGh0bWxmb3I6ICdodG1sRm9yJyxcbiAgaHR0cGVxdWl2OiAnaHR0cEVxdWl2JyxcbiAgJ2h0dHAtZXF1aXYnOiAnaHR0cEVxdWl2JyxcbiAgaWNvbjogJ2ljb24nLFxuICBpZDogJ2lkJyxcbiAgaW1hZ2VzaXplczogJ2ltYWdlU2l6ZXMnLFxuICBpbWFnZXNyY3NldDogJ2ltYWdlU3JjU2V0JyxcbiAgaW5uZXJodG1sOiAnaW5uZXJIVE1MJyxcbiAgaW5wdXRtb2RlOiAnaW5wdXRNb2RlJyxcbiAgaW50ZWdyaXR5OiAnaW50ZWdyaXR5JyxcbiAgaXM6ICdpcycsXG4gIGl0ZW1pZDogJ2l0ZW1JRCcsXG4gIGl0ZW1wcm9wOiAnaXRlbVByb3AnLFxuICBpdGVtcmVmOiAnaXRlbVJlZicsXG4gIGl0ZW1zY29wZTogJ2l0ZW1TY29wZScsXG4gIGl0ZW10eXBlOiAnaXRlbVR5cGUnLFxuICBrZXlwYXJhbXM6ICdrZXlQYXJhbXMnLFxuICBrZXl0eXBlOiAna2V5VHlwZScsXG4gIGtpbmQ6ICdraW5kJyxcbiAgbGFiZWw6ICdsYWJlbCcsXG4gIGxhbmc6ICdsYW5nJyxcbiAgbGlzdDogJ2xpc3QnLFxuICBsb29wOiAnbG9vcCcsXG4gIGxvdzogJ2xvdycsXG4gIG1hbmlmZXN0OiAnbWFuaWZlc3QnLFxuICBtYXJnaW53aWR0aDogJ21hcmdpbldpZHRoJyxcbiAgbWFyZ2luaGVpZ2h0OiAnbWFyZ2luSGVpZ2h0JyxcbiAgbWF4OiAnbWF4JyxcbiAgbWF4bGVuZ3RoOiAnbWF4TGVuZ3RoJyxcbiAgbWVkaWE6ICdtZWRpYScsXG4gIG1lZGlhZ3JvdXA6ICdtZWRpYUdyb3VwJyxcbiAgbWV0aG9kOiAnbWV0aG9kJyxcbiAgbWluOiAnbWluJyxcbiAgbWlubGVuZ3RoOiAnbWluTGVuZ3RoJyxcbiAgbXVsdGlwbGU6ICdtdWx0aXBsZScsXG4gIG11dGVkOiAnbXV0ZWQnLFxuICBuYW1lOiAnbmFtZScsXG4gIG5vbW9kdWxlOiAnbm9Nb2R1bGUnLFxuICBub25jZTogJ25vbmNlJyxcbiAgbm92YWxpZGF0ZTogJ25vVmFsaWRhdGUnLFxuICBvcGVuOiAnb3BlbicsXG4gIG9wdGltdW06ICdvcHRpbXVtJyxcbiAgcGF0dGVybjogJ3BhdHRlcm4nLFxuICBwbGFjZWhvbGRlcjogJ3BsYWNlaG9sZGVyJyxcbiAgcGxheXNpbmxpbmU6ICdwbGF5c0lubGluZScsXG4gIHBvc3RlcjogJ3Bvc3RlcicsXG4gIHByZWxvYWQ6ICdwcmVsb2FkJyxcbiAgcHJvZmlsZTogJ3Byb2ZpbGUnLFxuICByYWRpb2dyb3VwOiAncmFkaW9Hcm91cCcsXG4gIHJlYWRvbmx5OiAncmVhZE9ubHknLFxuICByZWZlcnJlcnBvbGljeTogJ3JlZmVycmVyUG9saWN5JyxcbiAgcmVsOiAncmVsJyxcbiAgcmVxdWlyZWQ6ICdyZXF1aXJlZCcsXG4gIHJldmVyc2VkOiAncmV2ZXJzZWQnLFxuICByb2xlOiAncm9sZScsXG4gIHJvd3M6ICdyb3dzJyxcbiAgcm93c3BhbjogJ3Jvd1NwYW4nLFxuICBzYW5kYm94OiAnc2FuZGJveCcsXG4gIHNjb3BlOiAnc2NvcGUnLFxuICBzY29wZWQ6ICdzY29wZWQnLFxuICBzY3JvbGxpbmc6ICdzY3JvbGxpbmcnLFxuICBzZWFtbGVzczogJ3NlYW1sZXNzJyxcbiAgc2VsZWN0ZWQ6ICdzZWxlY3RlZCcsXG4gIHNoYXBlOiAnc2hhcGUnLFxuICBzaXplOiAnc2l6ZScsXG4gIHNpemVzOiAnc2l6ZXMnLFxuICBzcGFuOiAnc3BhbicsXG4gIHNwZWxsY2hlY2s6ICdzcGVsbENoZWNrJyxcbiAgc3JjOiAnc3JjJyxcbiAgc3JjZG9jOiAnc3JjRG9jJyxcbiAgc3JjbGFuZzogJ3NyY0xhbmcnLFxuICBzcmNzZXQ6ICdzcmNTZXQnLFxuICBzdGFydDogJ3N0YXJ0JyxcbiAgc3RlcDogJ3N0ZXAnLFxuICBzdHlsZTogJ3N0eWxlJyxcbiAgc3VtbWFyeTogJ3N1bW1hcnknLFxuICB0YWJpbmRleDogJ3RhYkluZGV4JyxcbiAgdGFyZ2V0OiAndGFyZ2V0JyxcbiAgdGl0bGU6ICd0aXRsZScsXG4gIHR5cGU6ICd0eXBlJyxcbiAgdXNlbWFwOiAndXNlTWFwJyxcbiAgdmFsdWU6ICd2YWx1ZScsXG4gIHdpZHRoOiAnd2lkdGgnLFxuICB3bW9kZTogJ3dtb2RlJyxcbiAgd3JhcDogJ3dyYXAnLFxuICAvLyBTVkdcbiAgYWJvdXQ6ICdhYm91dCcsXG4gIGFjY2VudGhlaWdodDogJ2FjY2VudEhlaWdodCcsXG4gICdhY2NlbnQtaGVpZ2h0JzogJ2FjY2VudEhlaWdodCcsXG4gIGFjY3VtdWxhdGU6ICdhY2N1bXVsYXRlJyxcbiAgYWRkaXRpdmU6ICdhZGRpdGl2ZScsXG4gIGFsaWdubWVudGJhc2VsaW5lOiAnYWxpZ25tZW50QmFzZWxpbmUnLFxuICAnYWxpZ25tZW50LWJhc2VsaW5lJzogJ2FsaWdubWVudEJhc2VsaW5lJyxcbiAgYWxsb3dyZW9yZGVyOiAnYWxsb3dSZW9yZGVyJyxcbiAgYWxwaGFiZXRpYzogJ2FscGhhYmV0aWMnLFxuICBhbXBsaXR1ZGU6ICdhbXBsaXR1ZGUnLFxuICBhcmFiaWNmb3JtOiAnYXJhYmljRm9ybScsXG4gICdhcmFiaWMtZm9ybSc6ICdhcmFiaWNGb3JtJyxcbiAgYXNjZW50OiAnYXNjZW50JyxcbiAgYXR0cmlidXRlbmFtZTogJ2F0dHJpYnV0ZU5hbWUnLFxuICBhdHRyaWJ1dGV0eXBlOiAnYXR0cmlidXRlVHlwZScsXG4gIGF1dG9yZXZlcnNlOiAnYXV0b1JldmVyc2UnLFxuICBhemltdXRoOiAnYXppbXV0aCcsXG4gIGJhc2VmcmVxdWVuY3k6ICdiYXNlRnJlcXVlbmN5JyxcbiAgYmFzZWxpbmVzaGlmdDogJ2Jhc2VsaW5lU2hpZnQnLFxuICAnYmFzZWxpbmUtc2hpZnQnOiAnYmFzZWxpbmVTaGlmdCcsXG4gIGJhc2Vwcm9maWxlOiAnYmFzZVByb2ZpbGUnLFxuICBiYm94OiAnYmJveCcsXG4gIGJlZ2luOiAnYmVnaW4nLFxuICBiaWFzOiAnYmlhcycsXG4gIGJ5OiAnYnknLFxuICBjYWxjbW9kZTogJ2NhbGNNb2RlJyxcbiAgY2FwaGVpZ2h0OiAnY2FwSGVpZ2h0JyxcbiAgJ2NhcC1oZWlnaHQnOiAnY2FwSGVpZ2h0JyxcbiAgY2xpcDogJ2NsaXAnLFxuICBjbGlwcGF0aDogJ2NsaXBQYXRoJyxcbiAgJ2NsaXAtcGF0aCc6ICdjbGlwUGF0aCcsXG4gIGNsaXBwYXRodW5pdHM6ICdjbGlwUGF0aFVuaXRzJyxcbiAgY2xpcHJ1bGU6ICdjbGlwUnVsZScsXG4gICdjbGlwLXJ1bGUnOiAnY2xpcFJ1bGUnLFxuICBjb2xvcjogJ2NvbG9yJyxcbiAgY29sb3JpbnRlcnBvbGF0aW9uOiAnY29sb3JJbnRlcnBvbGF0aW9uJyxcbiAgJ2NvbG9yLWludGVycG9sYXRpb24nOiAnY29sb3JJbnRlcnBvbGF0aW9uJyxcbiAgY29sb3JpbnRlcnBvbGF0aW9uZmlsdGVyczogJ2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMnLFxuICAnY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJzogJ2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMnLFxuICBjb2xvcnByb2ZpbGU6ICdjb2xvclByb2ZpbGUnLFxuICAnY29sb3ItcHJvZmlsZSc6ICdjb2xvclByb2ZpbGUnLFxuICBjb2xvcnJlbmRlcmluZzogJ2NvbG9yUmVuZGVyaW5nJyxcbiAgJ2NvbG9yLXJlbmRlcmluZyc6ICdjb2xvclJlbmRlcmluZycsXG4gIGNvbnRlbnRzY3JpcHR0eXBlOiAnY29udGVudFNjcmlwdFR5cGUnLFxuICBjb250ZW50c3R5bGV0eXBlOiAnY29udGVudFN0eWxlVHlwZScsXG4gIGN1cnNvcjogJ2N1cnNvcicsXG4gIGN4OiAnY3gnLFxuICBjeTogJ2N5JyxcbiAgZDogJ2QnLFxuICBkYXRhdHlwZTogJ2RhdGF0eXBlJyxcbiAgZGVjZWxlcmF0ZTogJ2RlY2VsZXJhdGUnLFxuICBkZXNjZW50OiAnZGVzY2VudCcsXG4gIGRpZmZ1c2Vjb25zdGFudDogJ2RpZmZ1c2VDb25zdGFudCcsXG4gIGRpcmVjdGlvbjogJ2RpcmVjdGlvbicsXG4gIGRpc3BsYXk6ICdkaXNwbGF5JyxcbiAgZGl2aXNvcjogJ2Rpdmlzb3InLFxuICBkb21pbmFudGJhc2VsaW5lOiAnZG9taW5hbnRCYXNlbGluZScsXG4gICdkb21pbmFudC1iYXNlbGluZSc6ICdkb21pbmFudEJhc2VsaW5lJyxcbiAgZHVyOiAnZHVyJyxcbiAgZHg6ICdkeCcsXG4gIGR5OiAnZHknLFxuICBlZGdlbW9kZTogJ2VkZ2VNb2RlJyxcbiAgZWxldmF0aW9uOiAnZWxldmF0aW9uJyxcbiAgZW5hYmxlYmFja2dyb3VuZDogJ2VuYWJsZUJhY2tncm91bmQnLFxuICAnZW5hYmxlLWJhY2tncm91bmQnOiAnZW5hYmxlQmFja2dyb3VuZCcsXG4gIGVuZDogJ2VuZCcsXG4gIGV4cG9uZW50OiAnZXhwb25lbnQnLFxuICBleHRlcm5hbHJlc291cmNlc3JlcXVpcmVkOiAnZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCcsXG4gIGZpbGw6ICdmaWxsJyxcbiAgZmlsbG9wYWNpdHk6ICdmaWxsT3BhY2l0eScsXG4gICdmaWxsLW9wYWNpdHknOiAnZmlsbE9wYWNpdHknLFxuICBmaWxscnVsZTogJ2ZpbGxSdWxlJyxcbiAgJ2ZpbGwtcnVsZSc6ICdmaWxsUnVsZScsXG4gIGZpbHRlcjogJ2ZpbHRlcicsXG4gIGZpbHRlcnJlczogJ2ZpbHRlclJlcycsXG4gIGZpbHRlcnVuaXRzOiAnZmlsdGVyVW5pdHMnLFxuICBmbG9vZG9wYWNpdHk6ICdmbG9vZE9wYWNpdHknLFxuICAnZmxvb2Qtb3BhY2l0eSc6ICdmbG9vZE9wYWNpdHknLFxuICBmbG9vZGNvbG9yOiAnZmxvb2RDb2xvcicsXG4gICdmbG9vZC1jb2xvcic6ICdmbG9vZENvbG9yJyxcbiAgZm9jdXNhYmxlOiAnZm9jdXNhYmxlJyxcbiAgZm9udGZhbWlseTogJ2ZvbnRGYW1pbHknLFxuICAnZm9udC1mYW1pbHknOiAnZm9udEZhbWlseScsXG4gIGZvbnRzaXplOiAnZm9udFNpemUnLFxuICAnZm9udC1zaXplJzogJ2ZvbnRTaXplJyxcbiAgZm9udHNpemVhZGp1c3Q6ICdmb250U2l6ZUFkanVzdCcsXG4gICdmb250LXNpemUtYWRqdXN0JzogJ2ZvbnRTaXplQWRqdXN0JyxcbiAgZm9udHN0cmV0Y2g6ICdmb250U3RyZXRjaCcsXG4gICdmb250LXN0cmV0Y2gnOiAnZm9udFN0cmV0Y2gnLFxuICBmb250c3R5bGU6ICdmb250U3R5bGUnLFxuICAnZm9udC1zdHlsZSc6ICdmb250U3R5bGUnLFxuICBmb250dmFyaWFudDogJ2ZvbnRWYXJpYW50JyxcbiAgJ2ZvbnQtdmFyaWFudCc6ICdmb250VmFyaWFudCcsXG4gIGZvbnR3ZWlnaHQ6ICdmb250V2VpZ2h0JyxcbiAgJ2ZvbnQtd2VpZ2h0JzogJ2ZvbnRXZWlnaHQnLFxuICBmb3JtYXQ6ICdmb3JtYXQnLFxuICBmcm9tOiAnZnJvbScsXG4gIGZ4OiAnZngnLFxuICBmeTogJ2Z5JyxcbiAgZzE6ICdnMScsXG4gIGcyOiAnZzInLFxuICBnbHlwaG5hbWU6ICdnbHlwaE5hbWUnLFxuICAnZ2x5cGgtbmFtZSc6ICdnbHlwaE5hbWUnLFxuICBnbHlwaG9yaWVudGF0aW9uaG9yaXpvbnRhbDogJ2dseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsJyxcbiAgJ2dseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwnOiAnZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwnLFxuICBnbHlwaG9yaWVudGF0aW9udmVydGljYWw6ICdnbHlwaE9yaWVudGF0aW9uVmVydGljYWwnLFxuICAnZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwnOiAnZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsJyxcbiAgZ2x5cGhyZWY6ICdnbHlwaFJlZicsXG4gIGdyYWRpZW50dHJhbnNmb3JtOiAnZ3JhZGllbnRUcmFuc2Zvcm0nLFxuICBncmFkaWVudHVuaXRzOiAnZ3JhZGllbnRVbml0cycsXG4gIGhhbmdpbmc6ICdoYW5naW5nJyxcbiAgaG9yaXphZHZ4OiAnaG9yaXpBZHZYJyxcbiAgJ2hvcml6LWFkdi14JzogJ2hvcml6QWR2WCcsXG4gIGhvcml6b3JpZ2lueDogJ2hvcml6T3JpZ2luWCcsXG4gICdob3Jpei1vcmlnaW4teCc6ICdob3Jpek9yaWdpblgnLFxuICBpZGVvZ3JhcGhpYzogJ2lkZW9ncmFwaGljJyxcbiAgaW1hZ2VyZW5kZXJpbmc6ICdpbWFnZVJlbmRlcmluZycsXG4gICdpbWFnZS1yZW5kZXJpbmcnOiAnaW1hZ2VSZW5kZXJpbmcnLFxuICBpbjI6ICdpbjInLFxuICBpbjogJ2luJyxcbiAgaW5saXN0OiAnaW5saXN0JyxcbiAgaW50ZXJjZXB0OiAnaW50ZXJjZXB0JyxcbiAgazE6ICdrMScsXG4gIGsyOiAnazInLFxuICBrMzogJ2szJyxcbiAgazQ6ICdrNCcsXG4gIGs6ICdrJyxcbiAga2VybmVsbWF0cml4OiAna2VybmVsTWF0cml4JyxcbiAga2VybmVsdW5pdGxlbmd0aDogJ2tlcm5lbFVuaXRMZW5ndGgnLFxuICBrZXJuaW5nOiAna2VybmluZycsXG4gIGtleXBvaW50czogJ2tleVBvaW50cycsXG4gIGtleXNwbGluZXM6ICdrZXlTcGxpbmVzJyxcbiAga2V5dGltZXM6ICdrZXlUaW1lcycsXG4gIGxlbmd0aGFkanVzdDogJ2xlbmd0aEFkanVzdCcsXG4gIGxldHRlcnNwYWNpbmc6ICdsZXR0ZXJTcGFjaW5nJyxcbiAgJ2xldHRlci1zcGFjaW5nJzogJ2xldHRlclNwYWNpbmcnLFxuICBsaWdodGluZ2NvbG9yOiAnbGlnaHRpbmdDb2xvcicsXG4gICdsaWdodGluZy1jb2xvcic6ICdsaWdodGluZ0NvbG9yJyxcbiAgbGltaXRpbmdjb25lYW5nbGU6ICdsaW1pdGluZ0NvbmVBbmdsZScsXG4gIGxvY2FsOiAnbG9jYWwnLFxuICBtYXJrZXJlbmQ6ICdtYXJrZXJFbmQnLFxuICAnbWFya2VyLWVuZCc6ICdtYXJrZXJFbmQnLFxuICBtYXJrZXJoZWlnaHQ6ICdtYXJrZXJIZWlnaHQnLFxuICBtYXJrZXJtaWQ6ICdtYXJrZXJNaWQnLFxuICAnbWFya2VyLW1pZCc6ICdtYXJrZXJNaWQnLFxuICBtYXJrZXJzdGFydDogJ21hcmtlclN0YXJ0JyxcbiAgJ21hcmtlci1zdGFydCc6ICdtYXJrZXJTdGFydCcsXG4gIG1hcmtlcnVuaXRzOiAnbWFya2VyVW5pdHMnLFxuICBtYXJrZXJ3aWR0aDogJ21hcmtlcldpZHRoJyxcbiAgbWFzazogJ21hc2snLFxuICBtYXNrY29udGVudHVuaXRzOiAnbWFza0NvbnRlbnRVbml0cycsXG4gIG1hc2t1bml0czogJ21hc2tVbml0cycsXG4gIG1hdGhlbWF0aWNhbDogJ21hdGhlbWF0aWNhbCcsXG4gIG1vZGU6ICdtb2RlJyxcbiAgbnVtb2N0YXZlczogJ251bU9jdGF2ZXMnLFxuICBvZmZzZXQ6ICdvZmZzZXQnLFxuICBvcGFjaXR5OiAnb3BhY2l0eScsXG4gIG9wZXJhdG9yOiAnb3BlcmF0b3InLFxuICBvcmRlcjogJ29yZGVyJyxcbiAgb3JpZW50OiAnb3JpZW50JyxcbiAgb3JpZW50YXRpb246ICdvcmllbnRhdGlvbicsXG4gIG9yaWdpbjogJ29yaWdpbicsXG4gIG92ZXJmbG93OiAnb3ZlcmZsb3cnLFxuICBvdmVybGluZXBvc2l0aW9uOiAnb3ZlcmxpbmVQb3NpdGlvbicsXG4gICdvdmVybGluZS1wb3NpdGlvbic6ICdvdmVybGluZVBvc2l0aW9uJyxcbiAgb3ZlcmxpbmV0aGlja25lc3M6ICdvdmVybGluZVRoaWNrbmVzcycsXG4gICdvdmVybGluZS10aGlja25lc3MnOiAnb3ZlcmxpbmVUaGlja25lc3MnLFxuICBwYWludG9yZGVyOiAncGFpbnRPcmRlcicsXG4gICdwYWludC1vcmRlcic6ICdwYWludE9yZGVyJyxcbiAgcGFub3NlMTogJ3Bhbm9zZTEnLFxuICAncGFub3NlLTEnOiAncGFub3NlMScsXG4gIHBhdGhsZW5ndGg6ICdwYXRoTGVuZ3RoJyxcbiAgcGF0dGVybmNvbnRlbnR1bml0czogJ3BhdHRlcm5Db250ZW50VW5pdHMnLFxuICBwYXR0ZXJudHJhbnNmb3JtOiAncGF0dGVyblRyYW5zZm9ybScsXG4gIHBhdHRlcm51bml0czogJ3BhdHRlcm5Vbml0cycsXG4gIHBvaW50ZXJldmVudHM6ICdwb2ludGVyRXZlbnRzJyxcbiAgJ3BvaW50ZXItZXZlbnRzJzogJ3BvaW50ZXJFdmVudHMnLFxuICBwb2ludHM6ICdwb2ludHMnLFxuICBwb2ludHNhdHg6ICdwb2ludHNBdFgnLFxuICBwb2ludHNhdHk6ICdwb2ludHNBdFknLFxuICBwb2ludHNhdHo6ICdwb2ludHNBdFonLFxuICBwcmVmaXg6ICdwcmVmaXgnLFxuICBwcmVzZXJ2ZWFscGhhOiAncHJlc2VydmVBbHBoYScsXG4gIHByZXNlcnZlYXNwZWN0cmF0aW86ICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJyxcbiAgcHJpbWl0aXZldW5pdHM6ICdwcmltaXRpdmVVbml0cycsXG4gIHByb3BlcnR5OiAncHJvcGVydHknLFxuICByOiAncicsXG4gIHJhZGl1czogJ3JhZGl1cycsXG4gIHJlZng6ICdyZWZYJyxcbiAgcmVmeTogJ3JlZlknLFxuICByZW5kZXJpbmdpbnRlbnQ6ICdyZW5kZXJpbmdJbnRlbnQnLFxuICAncmVuZGVyaW5nLWludGVudCc6ICdyZW5kZXJpbmdJbnRlbnQnLFxuICByZXBlYXRjb3VudDogJ3JlcGVhdENvdW50JyxcbiAgcmVwZWF0ZHVyOiAncmVwZWF0RHVyJyxcbiAgcmVxdWlyZWRleHRlbnNpb25zOiAncmVxdWlyZWRFeHRlbnNpb25zJyxcbiAgcmVxdWlyZWRmZWF0dXJlczogJ3JlcXVpcmVkRmVhdHVyZXMnLFxuICByZXNvdXJjZTogJ3Jlc291cmNlJyxcbiAgcmVzdGFydDogJ3Jlc3RhcnQnLFxuICByZXN1bHQ6ICdyZXN1bHQnLFxuICByZXN1bHRzOiAncmVzdWx0cycsXG4gIHJvdGF0ZTogJ3JvdGF0ZScsXG4gIHJ4OiAncngnLFxuICByeTogJ3J5JyxcbiAgc2NhbGU6ICdzY2FsZScsXG4gIHNlY3VyaXR5OiAnc2VjdXJpdHknLFxuICBzZWVkOiAnc2VlZCcsXG4gIHNoYXBlcmVuZGVyaW5nOiAnc2hhcGVSZW5kZXJpbmcnLFxuICAnc2hhcGUtcmVuZGVyaW5nJzogJ3NoYXBlUmVuZGVyaW5nJyxcbiAgc2xvcGU6ICdzbG9wZScsXG4gIHNwYWNpbmc6ICdzcGFjaW5nJyxcbiAgc3BlY3VsYXJjb25zdGFudDogJ3NwZWN1bGFyQ29uc3RhbnQnLFxuICBzcGVjdWxhcmV4cG9uZW50OiAnc3BlY3VsYXJFeHBvbmVudCcsXG4gIHNwZWVkOiAnc3BlZWQnLFxuICBzcHJlYWRtZXRob2Q6ICdzcHJlYWRNZXRob2QnLFxuICBzdGFydG9mZnNldDogJ3N0YXJ0T2Zmc2V0JyxcbiAgc3RkZGV2aWF0aW9uOiAnc3RkRGV2aWF0aW9uJyxcbiAgc3RlbWg6ICdzdGVtaCcsXG4gIHN0ZW12OiAnc3RlbXYnLFxuICBzdGl0Y2h0aWxlczogJ3N0aXRjaFRpbGVzJyxcbiAgc3RvcGNvbG9yOiAnc3RvcENvbG9yJyxcbiAgJ3N0b3AtY29sb3InOiAnc3RvcENvbG9yJyxcbiAgc3RvcG9wYWNpdHk6ICdzdG9wT3BhY2l0eScsXG4gICdzdG9wLW9wYWNpdHknOiAnc3RvcE9wYWNpdHknLFxuICBzdHJpa2V0aHJvdWdocG9zaXRpb246ICdzdHJpa2V0aHJvdWdoUG9zaXRpb24nLFxuICAnc3RyaWtldGhyb3VnaC1wb3NpdGlvbic6ICdzdHJpa2V0aHJvdWdoUG9zaXRpb24nLFxuICBzdHJpa2V0aHJvdWdodGhpY2tuZXNzOiAnc3RyaWtldGhyb3VnaFRoaWNrbmVzcycsXG4gICdzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyc6ICdzdHJpa2V0aHJvdWdoVGhpY2tuZXNzJyxcbiAgc3RyaW5nOiAnc3RyaW5nJyxcbiAgc3Ryb2tlOiAnc3Ryb2tlJyxcbiAgc3Ryb2tlZGFzaGFycmF5OiAnc3Ryb2tlRGFzaGFycmF5JyxcbiAgJ3N0cm9rZS1kYXNoYXJyYXknOiAnc3Ryb2tlRGFzaGFycmF5JyxcbiAgc3Ryb2tlZGFzaG9mZnNldDogJ3N0cm9rZURhc2hvZmZzZXQnLFxuICAnc3Ryb2tlLWRhc2hvZmZzZXQnOiAnc3Ryb2tlRGFzaG9mZnNldCcsXG4gIHN0cm9rZWxpbmVjYXA6ICdzdHJva2VMaW5lY2FwJyxcbiAgJ3N0cm9rZS1saW5lY2FwJzogJ3N0cm9rZUxpbmVjYXAnLFxuICBzdHJva2VsaW5lam9pbjogJ3N0cm9rZUxpbmVqb2luJyxcbiAgJ3N0cm9rZS1saW5lam9pbic6ICdzdHJva2VMaW5lam9pbicsXG4gIHN0cm9rZW1pdGVybGltaXQ6ICdzdHJva2VNaXRlcmxpbWl0JyxcbiAgJ3N0cm9rZS1taXRlcmxpbWl0JzogJ3N0cm9rZU1pdGVybGltaXQnLFxuICBzdHJva2V3aWR0aDogJ3N0cm9rZVdpZHRoJyxcbiAgJ3N0cm9rZS13aWR0aCc6ICdzdHJva2VXaWR0aCcsXG4gIHN0cm9rZW9wYWNpdHk6ICdzdHJva2VPcGFjaXR5JyxcbiAgJ3N0cm9rZS1vcGFjaXR5JzogJ3N0cm9rZU9wYWNpdHknLFxuICBzdXBwcmVzc2NvbnRlbnRlZGl0YWJsZXdhcm5pbmc6ICdzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcnLFxuICBzdXBwcmVzc2h5ZHJhdGlvbndhcm5pbmc6ICdzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcnLFxuICBzdXJmYWNlc2NhbGU6ICdzdXJmYWNlU2NhbGUnLFxuICBzeXN0ZW1sYW5ndWFnZTogJ3N5c3RlbUxhbmd1YWdlJyxcbiAgdGFibGV2YWx1ZXM6ICd0YWJsZVZhbHVlcycsXG4gIHRhcmdldHg6ICd0YXJnZXRYJyxcbiAgdGFyZ2V0eTogJ3RhcmdldFknLFxuICB0ZXh0YW5jaG9yOiAndGV4dEFuY2hvcicsXG4gICd0ZXh0LWFuY2hvcic6ICd0ZXh0QW5jaG9yJyxcbiAgdGV4dGRlY29yYXRpb246ICd0ZXh0RGVjb3JhdGlvbicsXG4gICd0ZXh0LWRlY29yYXRpb24nOiAndGV4dERlY29yYXRpb24nLFxuICB0ZXh0bGVuZ3RoOiAndGV4dExlbmd0aCcsXG4gIHRleHRyZW5kZXJpbmc6ICd0ZXh0UmVuZGVyaW5nJyxcbiAgJ3RleHQtcmVuZGVyaW5nJzogJ3RleHRSZW5kZXJpbmcnLFxuICB0bzogJ3RvJyxcbiAgdHJhbnNmb3JtOiAndHJhbnNmb3JtJyxcbiAgdHlwZW9mOiAndHlwZW9mJyxcbiAgdTE6ICd1MScsXG4gIHUyOiAndTInLFxuICB1bmRlcmxpbmVwb3NpdGlvbjogJ3VuZGVybGluZVBvc2l0aW9uJyxcbiAgJ3VuZGVybGluZS1wb3NpdGlvbic6ICd1bmRlcmxpbmVQb3NpdGlvbicsXG4gIHVuZGVybGluZXRoaWNrbmVzczogJ3VuZGVybGluZVRoaWNrbmVzcycsXG4gICd1bmRlcmxpbmUtdGhpY2tuZXNzJzogJ3VuZGVybGluZVRoaWNrbmVzcycsXG4gIHVuaWNvZGU6ICd1bmljb2RlJyxcbiAgdW5pY29kZWJpZGk6ICd1bmljb2RlQmlkaScsXG4gICd1bmljb2RlLWJpZGknOiAndW5pY29kZUJpZGknLFxuICB1bmljb2RlcmFuZ2U6ICd1bmljb2RlUmFuZ2UnLFxuICAndW5pY29kZS1yYW5nZSc6ICd1bmljb2RlUmFuZ2UnLFxuICB1bml0c3BlcmVtOiAndW5pdHNQZXJFbScsXG4gICd1bml0cy1wZXItZW0nOiAndW5pdHNQZXJFbScsXG4gIHVuc2VsZWN0YWJsZTogJ3Vuc2VsZWN0YWJsZScsXG4gIHZhbHBoYWJldGljOiAndkFscGhhYmV0aWMnLFxuICAndi1hbHBoYWJldGljJzogJ3ZBbHBoYWJldGljJyxcbiAgdmFsdWVzOiAndmFsdWVzJyxcbiAgdmVjdG9yZWZmZWN0OiAndmVjdG9yRWZmZWN0JyxcbiAgJ3ZlY3Rvci1lZmZlY3QnOiAndmVjdG9yRWZmZWN0JyxcbiAgdmVyc2lvbjogJ3ZlcnNpb24nLFxuICB2ZXJ0YWR2eTogJ3ZlcnRBZHZZJyxcbiAgJ3ZlcnQtYWR2LXknOiAndmVydEFkdlknLFxuICB2ZXJ0b3JpZ2lueDogJ3ZlcnRPcmlnaW5YJyxcbiAgJ3ZlcnQtb3JpZ2luLXgnOiAndmVydE9yaWdpblgnLFxuICB2ZXJ0b3JpZ2lueTogJ3ZlcnRPcmlnaW5ZJyxcbiAgJ3ZlcnQtb3JpZ2luLXknOiAndmVydE9yaWdpblknLFxuICB2aGFuZ2luZzogJ3ZIYW5naW5nJyxcbiAgJ3YtaGFuZ2luZyc6ICd2SGFuZ2luZycsXG4gIHZpZGVvZ3JhcGhpYzogJ3ZJZGVvZ3JhcGhpYycsXG4gICd2LWlkZW9ncmFwaGljJzogJ3ZJZGVvZ3JhcGhpYycsXG4gIHZpZXdib3g6ICd2aWV3Qm94JyxcbiAgdmlld3RhcmdldDogJ3ZpZXdUYXJnZXQnLFxuICB2aXNpYmlsaXR5OiAndmlzaWJpbGl0eScsXG4gIHZtYXRoZW1hdGljYWw6ICd2TWF0aGVtYXRpY2FsJyxcbiAgJ3YtbWF0aGVtYXRpY2FsJzogJ3ZNYXRoZW1hdGljYWwnLFxuICB2b2NhYjogJ3ZvY2FiJyxcbiAgd2lkdGhzOiAnd2lkdGhzJyxcbiAgd29yZHNwYWNpbmc6ICd3b3JkU3BhY2luZycsXG4gICd3b3JkLXNwYWNpbmcnOiAnd29yZFNwYWNpbmcnLFxuICB3cml0aW5nbW9kZTogJ3dyaXRpbmdNb2RlJyxcbiAgJ3dyaXRpbmctbW9kZSc6ICd3cml0aW5nTW9kZScsXG4gIHgxOiAneDEnLFxuICB4MjogJ3gyJyxcbiAgeDogJ3gnLFxuICB4Y2hhbm5lbHNlbGVjdG9yOiAneENoYW5uZWxTZWxlY3RvcicsXG4gIHhoZWlnaHQ6ICd4SGVpZ2h0JyxcbiAgJ3gtaGVpZ2h0JzogJ3hIZWlnaHQnLFxuICB4bGlua2FjdHVhdGU6ICd4bGlua0FjdHVhdGUnLFxuICAneGxpbms6YWN0dWF0ZSc6ICd4bGlua0FjdHVhdGUnLFxuICB4bGlua2FyY3JvbGU6ICd4bGlua0FyY3JvbGUnLFxuICAneGxpbms6YXJjcm9sZSc6ICd4bGlua0FyY3JvbGUnLFxuICB4bGlua2hyZWY6ICd4bGlua0hyZWYnLFxuICAneGxpbms6aHJlZic6ICd4bGlua0hyZWYnLFxuICB4bGlua3JvbGU6ICd4bGlua1JvbGUnLFxuICAneGxpbms6cm9sZSc6ICd4bGlua1JvbGUnLFxuICB4bGlua3Nob3c6ICd4bGlua1Nob3cnLFxuICAneGxpbms6c2hvdyc6ICd4bGlua1Nob3cnLFxuICB4bGlua3RpdGxlOiAneGxpbmtUaXRsZScsXG4gICd4bGluazp0aXRsZSc6ICd4bGlua1RpdGxlJyxcbiAgeGxpbmt0eXBlOiAneGxpbmtUeXBlJyxcbiAgJ3hsaW5rOnR5cGUnOiAneGxpbmtUeXBlJyxcbiAgeG1sYmFzZTogJ3htbEJhc2UnLFxuICAneG1sOmJhc2UnOiAneG1sQmFzZScsXG4gIHhtbGxhbmc6ICd4bWxMYW5nJyxcbiAgJ3htbDpsYW5nJzogJ3htbExhbmcnLFxuICB4bWxuczogJ3htbG5zJyxcbiAgJ3htbDpzcGFjZSc6ICd4bWxTcGFjZScsXG4gIHhtbG5zeGxpbms6ICd4bWxuc1hsaW5rJyxcbiAgJ3htbG5zOnhsaW5rJzogJ3htbG5zWGxpbmsnLFxuICB4bWxzcGFjZTogJ3htbFNwYWNlJyxcbiAgeTE6ICd5MScsXG4gIHkyOiAneTInLFxuICB5OiAneScsXG4gIHljaGFubmVsc2VsZWN0b3I6ICd5Q2hhbm5lbFNlbGVjdG9yJyxcbiAgejogJ3onLFxuICB6b29tYW5kcGFuOiAnem9vbUFuZFBhbidcbn07XG5cbnZhciB2YWxpZGF0ZVByb3BlcnR5JDEgPSBmdW5jdGlvbiAoKSB7fTtcblxue1xuICB2YXIgd2FybmVkUHJvcGVydGllcyQxID0ge307XG4gIHZhciBFVkVOVF9OQU1FX1JFR0VYID0gL15vbi4vO1xuICB2YXIgSU5WQUxJRF9FVkVOVF9OQU1FX1JFR0VYID0gL15vblteQS1aXS87XG4gIHZhciByQVJJQSQxID0gbmV3IFJlZ0V4cCgnXihhcmlhKS1bJyArIEFUVFJJQlVURV9OQU1FX0NIQVIgKyAnXSokJyk7XG4gIHZhciByQVJJQUNhbWVsJDEgPSBuZXcgUmVnRXhwKCdeKGFyaWEpW0EtWl1bJyArIEFUVFJJQlVURV9OQU1FX0NIQVIgKyAnXSokJyk7XG5cbiAgdmFsaWRhdGVQcm9wZXJ0eSQxID0gZnVuY3Rpb24gKHRhZ05hbWUsIG5hbWUsIHZhbHVlLCBldmVudFJlZ2lzdHJ5KSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwod2FybmVkUHJvcGVydGllcyQxLCBuYW1lKSAmJiB3YXJuZWRQcm9wZXJ0aWVzJDFbbmFtZV0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhciBsb3dlckNhc2VkTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmIChsb3dlckNhc2VkTmFtZSA9PT0gJ29uZm9jdXNpbicgfHwgbG93ZXJDYXNlZE5hbWUgPT09ICdvbmZvY3Vzb3V0Jykge1xuICAgICAgZXJyb3IoJ1JlYWN0IHVzZXMgb25Gb2N1cyBhbmQgb25CbHVyIGluc3RlYWQgb2Ygb25Gb2N1c0luIGFuZCBvbkZvY3VzT3V0LiAnICsgJ0FsbCBSZWFjdCBldmVudHMgYXJlIG5vcm1hbGl6ZWQgdG8gYnViYmxlLCBzbyBvbkZvY3VzSW4gYW5kIG9uRm9jdXNPdXQgJyArICdhcmUgbm90IG5lZWRlZC9zdXBwb3J0ZWQgYnkgUmVhY3QuJyk7XG5cbiAgICAgIHdhcm5lZFByb3BlcnRpZXMkMVtuYW1lXSA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IC8vIFdlIGNhbid0IHJlbHkgb24gdGhlIGV2ZW50IHN5c3RlbSBiZWluZyBpbmplY3RlZCBvbiB0aGUgc2VydmVyLlxuXG5cbiAgICBpZiAoZXZlbnRSZWdpc3RyeSAhPSBudWxsKSB7XG4gICAgICB2YXIgcmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llcyA9IGV2ZW50UmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llcyxcbiAgICAgICAgICBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzID0gZXZlbnRSZWdpc3RyeS5wb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzO1xuXG4gICAgICBpZiAocmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlZ2lzdHJhdGlvbk5hbWUgPSBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KGxvd2VyQ2FzZWROYW1lKSA/IHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXNbbG93ZXJDYXNlZE5hbWVdIDogbnVsbDtcblxuICAgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgIT0gbnVsbCkge1xuICAgICAgICBlcnJvcignSW52YWxpZCBldmVudCBoYW5kbGVyIHByb3BlcnR5IGAlc2AuIERpZCB5b3UgbWVhbiBgJXNgPycsIG5hbWUsIHJlZ2lzdHJhdGlvbk5hbWUpO1xuXG4gICAgICAgIHdhcm5lZFByb3BlcnRpZXMkMVtuYW1lXSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoRVZFTlRfTkFNRV9SRUdFWC50ZXN0KG5hbWUpKSB7XG4gICAgICAgIGVycm9yKCdVbmtub3duIGV2ZW50IGhhbmRsZXIgcHJvcGVydHkgYCVzYC4gSXQgd2lsbCBiZSBpZ25vcmVkLicsIG5hbWUpO1xuXG4gICAgICAgIHdhcm5lZFByb3BlcnRpZXMkMVtuYW1lXSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoRVZFTlRfTkFNRV9SRUdFWC50ZXN0KG5hbWUpKSB7XG4gICAgICAvLyBJZiBubyBldmVudCBwbHVnaW5zIGhhdmUgYmVlbiBpbmplY3RlZCwgd2UgYXJlIGluIGEgc2VydmVyIGVudmlyb25tZW50LlxuICAgICAgLy8gU28gd2UgY2FuJ3QgdGVsbCBpZiB0aGUgZXZlbnQgbmFtZSBpcyBjb3JyZWN0IGZvciBzdXJlLCBidXQgd2UgY2FuIGZpbHRlclxuICAgICAgLy8gb3V0IGtub3duIGJhZCBvbmVzIGxpa2UgYG9uY2xpY2tgLiBXZSBjYW4ndCBzdWdnZXN0IGEgc3BlY2lmaWMgcmVwbGFjZW1lbnQgdGhvdWdoLlxuICAgICAgaWYgKElOVkFMSURfRVZFTlRfTkFNRV9SRUdFWC50ZXN0KG5hbWUpKSB7XG4gICAgICAgIGVycm9yKCdJbnZhbGlkIGV2ZW50IGhhbmRsZXIgcHJvcGVydHkgYCVzYC4gJyArICdSZWFjdCBldmVudHMgdXNlIHRoZSBjYW1lbENhc2UgbmFtaW5nIGNvbnZlbnRpb24sIGZvciBleGFtcGxlIGBvbkNsaWNrYC4nLCBuYW1lKTtcbiAgICAgIH1cblxuICAgICAgd2FybmVkUHJvcGVydGllcyQxW25hbWVdID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gLy8gTGV0IHRoZSBBUklBIGF0dHJpYnV0ZSBob29rIHZhbGlkYXRlIEFSSUEgYXR0cmlidXRlc1xuXG5cbiAgICBpZiAockFSSUEkMS50ZXN0KG5hbWUpIHx8IHJBUklBQ2FtZWwkMS50ZXN0KG5hbWUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAobG93ZXJDYXNlZE5hbWUgPT09ICdpbm5lcmh0bWwnKSB7XG4gICAgICBlcnJvcignRGlyZWN0bHkgc2V0dGluZyBwcm9wZXJ0eSBgaW5uZXJIVE1MYCBpcyBub3QgcGVybWl0dGVkLiAnICsgJ0ZvciBtb3JlIGluZm9ybWF0aW9uLCBsb29rdXAgZG9jdW1lbnRhdGlvbiBvbiBgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLicpO1xuXG4gICAgICB3YXJuZWRQcm9wZXJ0aWVzJDFbbmFtZV0gPSB0cnVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGxvd2VyQ2FzZWROYW1lID09PSAnYXJpYScpIHtcbiAgICAgIGVycm9yKCdUaGUgYGFyaWFgIGF0dHJpYnV0ZSBpcyByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSBpbiBSZWFjdC4gJyArICdQYXNzIGluZGl2aWR1YWwgYGFyaWEtYCBhdHRyaWJ1dGVzIGluc3RlYWQuJyk7XG5cbiAgICAgIHdhcm5lZFByb3BlcnRpZXMkMVtuYW1lXSA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAobG93ZXJDYXNlZE5hbWUgPT09ICdpcycgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBlcnJvcignUmVjZWl2ZWQgYSBgJXNgIGZvciBhIHN0cmluZyBhdHRyaWJ1dGUgYGlzYC4gSWYgdGhpcyBpcyBleHBlY3RlZCwgY2FzdCAnICsgJ3RoZSB2YWx1ZSB0byBhIHN0cmluZy4nLCB0eXBlb2YgdmFsdWUpO1xuXG4gICAgICB3YXJuZWRQcm9wZXJ0aWVzJDFbbmFtZV0gPSB0cnVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgaXNOYU4odmFsdWUpKSB7XG4gICAgICBlcnJvcignUmVjZWl2ZWQgTmFOIGZvciB0aGUgYCVzYCBhdHRyaWJ1dGUuIElmIHRoaXMgaXMgZXhwZWN0ZWQsIGNhc3QgJyArICd0aGUgdmFsdWUgdG8gYSBzdHJpbmcuJywgbmFtZSk7XG5cbiAgICAgIHdhcm5lZFByb3BlcnRpZXMkMVtuYW1lXSA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgcHJvcGVydHlJbmZvID0gZ2V0UHJvcGVydHlJbmZvKG5hbWUpO1xuICAgIHZhciBpc1Jlc2VydmVkID0gcHJvcGVydHlJbmZvICE9PSBudWxsICYmIHByb3BlcnR5SW5mby50eXBlID09PSBSRVNFUlZFRDsgLy8gS25vd24gYXR0cmlidXRlcyBzaG91bGQgbWF0Y2ggdGhlIGNhc2luZyBzcGVjaWZpZWQgaW4gdGhlIHByb3BlcnR5IGNvbmZpZy5cblxuICAgIGlmIChwb3NzaWJsZVN0YW5kYXJkTmFtZXMuaGFzT3duUHJvcGVydHkobG93ZXJDYXNlZE5hbWUpKSB7XG4gICAgICB2YXIgc3RhbmRhcmROYW1lID0gcG9zc2libGVTdGFuZGFyZE5hbWVzW2xvd2VyQ2FzZWROYW1lXTtcblxuICAgICAgaWYgKHN0YW5kYXJkTmFtZSAhPT0gbmFtZSkge1xuICAgICAgICBlcnJvcignSW52YWxpZCBET00gcHJvcGVydHkgYCVzYC4gRGlkIHlvdSBtZWFuIGAlc2A/JywgbmFtZSwgc3RhbmRhcmROYW1lKTtcblxuICAgICAgICB3YXJuZWRQcm9wZXJ0aWVzJDFbbmFtZV0gPSB0cnVlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFpc1Jlc2VydmVkICYmIG5hbWUgIT09IGxvd2VyQ2FzZWROYW1lKSB7XG4gICAgICAvLyBVbmtub3duIGF0dHJpYnV0ZXMgc2hvdWxkIGhhdmUgbG93ZXJjYXNlIGNhc2luZyBzaW5jZSB0aGF0J3MgaG93IHRoZXlcbiAgICAgIC8vIHdpbGwgYmUgY2FzZWQgYW55d2F5IHdpdGggc2VydmVyIHJlbmRlcmluZy5cbiAgICAgIGVycm9yKCdSZWFjdCBkb2VzIG5vdCByZWNvZ25pemUgdGhlIGAlc2AgcHJvcCBvbiBhIERPTSBlbGVtZW50LiBJZiB5b3UgJyArICdpbnRlbnRpb25hbGx5IHdhbnQgaXQgdG8gYXBwZWFyIGluIHRoZSBET00gYXMgYSBjdXN0b20gJyArICdhdHRyaWJ1dGUsIHNwZWxsIGl0IGFzIGxvd2VyY2FzZSBgJXNgIGluc3RlYWQuICcgKyAnSWYgeW91IGFjY2lkZW50YWxseSBwYXNzZWQgaXQgZnJvbSBhIHBhcmVudCBjb21wb25lbnQsIHJlbW92ZSAnICsgJ2l0IGZyb20gdGhlIERPTSBlbGVtZW50LicsIG5hbWUsIGxvd2VyQ2FzZWROYW1lKTtcblxuICAgICAgd2FybmVkUHJvcGVydGllcyQxW25hbWVdID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyAmJiBzaG91bGRSZW1vdmVBdHRyaWJ1dGVXaXRoV2FybmluZyhuYW1lLCB2YWx1ZSwgcHJvcGVydHlJbmZvLCBmYWxzZSkpIHtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBlcnJvcignUmVjZWl2ZWQgYCVzYCBmb3IgYSBub24tYm9vbGVhbiBhdHRyaWJ1dGUgYCVzYC5cXG5cXG4nICsgJ0lmIHlvdSB3YW50IHRvIHdyaXRlIGl0IHRvIHRoZSBET00sIHBhc3MgYSBzdHJpbmcgaW5zdGVhZDogJyArICclcz1cIiVzXCIgb3IgJXM9e3ZhbHVlLnRvU3RyaW5nKCl9LicsIHZhbHVlLCBuYW1lLCBuYW1lLCB2YWx1ZSwgbmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvcignUmVjZWl2ZWQgYCVzYCBmb3IgYSBub24tYm9vbGVhbiBhdHRyaWJ1dGUgYCVzYC5cXG5cXG4nICsgJ0lmIHlvdSB3YW50IHRvIHdyaXRlIGl0IHRvIHRoZSBET00sIHBhc3MgYSBzdHJpbmcgaW5zdGVhZDogJyArICclcz1cIiVzXCIgb3IgJXM9e3ZhbHVlLnRvU3RyaW5nKCl9LlxcblxcbicgKyAnSWYgeW91IHVzZWQgdG8gY29uZGl0aW9uYWxseSBvbWl0IGl0IHdpdGggJXM9e2NvbmRpdGlvbiAmJiB2YWx1ZX0sICcgKyAncGFzcyAlcz17Y29uZGl0aW9uID8gdmFsdWUgOiB1bmRlZmluZWR9IGluc3RlYWQuJywgdmFsdWUsIG5hbWUsIG5hbWUsIHZhbHVlLCBuYW1lLCBuYW1lLCBuYW1lKTtcbiAgICAgIH1cblxuICAgICAgd2FybmVkUHJvcGVydGllcyQxW25hbWVdID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gLy8gTm93IHRoYXQgd2UndmUgdmFsaWRhdGVkIGNhc2luZywgZG8gbm90IHZhbGlkYXRlXG4gICAgLy8gZGF0YSB0eXBlcyBmb3IgcmVzZXJ2ZWQgcHJvcHNcblxuXG4gICAgaWYgKGlzUmVzZXJ2ZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gLy8gV2FybiB3aGVuIGEga25vd24gYXR0cmlidXRlIGlzIGEgYmFkIHR5cGVcblxuXG4gICAgaWYgKHNob3VsZFJlbW92ZUF0dHJpYnV0ZVdpdGhXYXJuaW5nKG5hbWUsIHZhbHVlLCBwcm9wZXJ0eUluZm8sIGZhbHNlKSkge1xuICAgICAgd2FybmVkUHJvcGVydGllcyQxW25hbWVdID0gdHJ1ZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIFdhcm4gd2hlbiBwYXNzaW5nIHRoZSBzdHJpbmdzICdmYWxzZScgb3IgJ3RydWUnIGludG8gYSBib29sZWFuIHByb3BcblxuXG4gICAgaWYgKCh2YWx1ZSA9PT0gJ2ZhbHNlJyB8fCB2YWx1ZSA9PT0gJ3RydWUnKSAmJiBwcm9wZXJ0eUluZm8gIT09IG51bGwgJiYgcHJvcGVydHlJbmZvLnR5cGUgPT09IEJPT0xFQU4pIHtcbiAgICAgIGVycm9yKCdSZWNlaXZlZCB0aGUgc3RyaW5nIGAlc2AgZm9yIHRoZSBib29sZWFuIGF0dHJpYnV0ZSBgJXNgLiAnICsgJyVzICcgKyAnRGlkIHlvdSBtZWFuICVzPXslc30/JywgdmFsdWUsIG5hbWUsIHZhbHVlID09PSAnZmFsc2UnID8gJ1RoZSBicm93c2VyIHdpbGwgaW50ZXJwcmV0IGl0IGFzIGEgdHJ1dGh5IHZhbHVlLicgOiAnQWx0aG91Z2ggdGhpcyB3b3JrcywgaXQgd2lsbCBub3Qgd29yayBhcyBleHBlY3RlZCBpZiB5b3UgcGFzcyB0aGUgc3RyaW5nIFwiZmFsc2VcIi4nLCBuYW1lLCB2YWx1ZSk7XG5cbiAgICAgIHdhcm5lZFByb3BlcnRpZXMkMVtuYW1lXSA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn1cblxudmFyIHdhcm5Vbmtub3duUHJvcGVydGllcyA9IGZ1bmN0aW9uICh0eXBlLCBwcm9wcywgZXZlbnRSZWdpc3RyeSkge1xuICB7XG4gICAgdmFyIHVua25vd25Qcm9wcyA9IFtdO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgICB2YXIgaXNWYWxpZCA9IHZhbGlkYXRlUHJvcGVydHkkMSh0eXBlLCBrZXksIHByb3BzW2tleV0sIGV2ZW50UmVnaXN0cnkpO1xuXG4gICAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgdW5rbm93blByb3BzLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgdW5rbm93blByb3BTdHJpbmcgPSB1bmtub3duUHJvcHMubWFwKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICByZXR1cm4gJ2AnICsgcHJvcCArICdgJztcbiAgICB9KS5qb2luKCcsICcpO1xuXG4gICAgaWYgKHVua25vd25Qcm9wcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGVycm9yKCdJbnZhbGlkIHZhbHVlIGZvciBwcm9wICVzIG9uIDwlcz4gdGFnLiBFaXRoZXIgcmVtb3ZlIGl0IGZyb20gdGhlIGVsZW1lbnQsICcgKyAnb3IgcGFzcyBhIHN0cmluZyBvciBudW1iZXIgdmFsdWUgdG8ga2VlcCBpdCBpbiB0aGUgRE9NLiAnICsgJ0ZvciBkZXRhaWxzLCBzZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL2F0dHJpYnV0ZS1iZWhhdmlvciAnLCB1bmtub3duUHJvcFN0cmluZywgdHlwZSk7XG4gICAgfSBlbHNlIGlmICh1bmtub3duUHJvcHMubGVuZ3RoID4gMSkge1xuICAgICAgZXJyb3IoJ0ludmFsaWQgdmFsdWVzIGZvciBwcm9wcyAlcyBvbiA8JXM+IHRhZy4gRWl0aGVyIHJlbW92ZSB0aGVtIGZyb20gdGhlIGVsZW1lbnQsICcgKyAnb3IgcGFzcyBhIHN0cmluZyBvciBudW1iZXIgdmFsdWUgdG8ga2VlcCB0aGVtIGluIHRoZSBET00uICcgKyAnRm9yIGRldGFpbHMsIHNlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvYXR0cmlidXRlLWJlaGF2aW9yICcsIHVua25vd25Qcm9wU3RyaW5nLCB0eXBlKTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydGllcyQyKHR5cGUsIHByb3BzLCBldmVudFJlZ2lzdHJ5KSB7XG4gIGlmIChpc0N1c3RvbUNvbXBvbmVudCh0eXBlLCBwcm9wcykpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB3YXJuVW5rbm93blByb3BlcnRpZXModHlwZSwgcHJvcHMsIGV2ZW50UmVnaXN0cnkpO1xufVxuXG52YXIgd2FyblZhbGlkU3R5bGUgPSBmdW5jdGlvbiAoKSB7fTtcblxue1xuICAvLyAnbXNUcmFuc2Zvcm0nIGlzIGNvcnJlY3QsIGJ1dCB0aGUgb3RoZXIgcHJlZml4ZXMgc2hvdWxkIGJlIGNhcGl0YWxpemVkXG4gIHZhciBiYWRWZW5kb3JlZFN0eWxlTmFtZVBhdHRlcm4gPSAvXig/OndlYmtpdHxtb3p8bylbQS1aXS87XG4gIHZhciBtc1BhdHRlcm4gPSAvXi1tcy0vO1xuICB2YXIgaHlwaGVuUGF0dGVybiA9IC8tKC4pL2c7IC8vIHN0eWxlIHZhbHVlcyBzaG91bGRuJ3QgY29udGFpbiBhIHNlbWljb2xvblxuXG4gIHZhciBiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4gPSAvO1xccyokLztcbiAgdmFyIHdhcm5lZFN0eWxlTmFtZXMgPSB7fTtcbiAgdmFyIHdhcm5lZFN0eWxlVmFsdWVzID0ge307XG4gIHZhciB3YXJuZWRGb3JOYU5WYWx1ZSA9IGZhbHNlO1xuICB2YXIgd2FybmVkRm9ySW5maW5pdHlWYWx1ZSA9IGZhbHNlO1xuXG4gIHZhciBjYW1lbGl6ZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoaHlwaGVuUGF0dGVybiwgZnVuY3Rpb24gKF8sIGNoYXJhY3Rlcikge1xuICAgICAgcmV0dXJuIGNoYXJhY3Rlci50b1VwcGVyQ2FzZSgpO1xuICAgIH0pO1xuICB9O1xuXG4gIHZhciB3YXJuSHlwaGVuYXRlZFN0eWxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0gPSB0cnVlO1xuXG4gICAgZXJyb3IoJ1Vuc3VwcG9ydGVkIHN0eWxlIHByb3BlcnR5ICVzLiBEaWQgeW91IG1lYW4gJXM/JywgbmFtZSwgLy8gQXMgQW5kaSBTbWl0aCBzdWdnZXN0c1xuICAgIC8vIChodHRwOi8vd3d3LmFuZGlzbWl0aC5jb20vYmxvZy8yMDEyLzAyL21vZGVybml6ci1wcmVmaXhlZC8pLCBhbiBgLW1zYCBwcmVmaXhcbiAgICAvLyBpcyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGBtc2AuXG4gICAgY2FtZWxpemUobmFtZS5yZXBsYWNlKG1zUGF0dGVybiwgJ21zLScpKSk7XG4gIH07XG5cbiAgdmFyIHdhcm5CYWRWZW5kb3JlZFN0eWxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0gPSB0cnVlO1xuXG4gICAgZXJyb3IoJ1Vuc3VwcG9ydGVkIHZlbmRvci1wcmVmaXhlZCBzdHlsZSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFuICVzPycsIG5hbWUsIG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpKTtcbiAgfTtcblxuICB2YXIgd2FyblN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKHdhcm5lZFN0eWxlVmFsdWVzLmhhc093blByb3BlcnR5KHZhbHVlKSAmJiB3YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0gPSB0cnVlO1xuXG4gICAgZXJyb3IoXCJTdHlsZSBwcm9wZXJ0eSB2YWx1ZXMgc2hvdWxkbid0IGNvbnRhaW4gYSBzZW1pY29sb24uIFwiICsgJ1RyeSBcIiVzOiAlc1wiIGluc3RlYWQuJywgbmFtZSwgdmFsdWUucmVwbGFjZShiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4sICcnKSk7XG4gIH07XG5cbiAgdmFyIHdhcm5TdHlsZVZhbHVlSXNOYU4gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgICBpZiAod2FybmVkRm9yTmFOVmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3YXJuZWRGb3JOYU5WYWx1ZSA9IHRydWU7XG5cbiAgICBlcnJvcignYE5hTmAgaXMgYW4gaW52YWxpZCB2YWx1ZSBmb3IgdGhlIGAlc2AgY3NzIHN0eWxlIHByb3BlcnR5LicsIG5hbWUpO1xuICB9O1xuXG4gIHZhciB3YXJuU3R5bGVWYWx1ZUlzSW5maW5pdHkgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgICBpZiAod2FybmVkRm9ySW5maW5pdHlWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdhcm5lZEZvckluZmluaXR5VmFsdWUgPSB0cnVlO1xuXG4gICAgZXJyb3IoJ2BJbmZpbml0eWAgaXMgYW4gaW52YWxpZCB2YWx1ZSBmb3IgdGhlIGAlc2AgY3NzIHN0eWxlIHByb3BlcnR5LicsIG5hbWUpO1xuICB9O1xuXG4gIHdhcm5WYWxpZFN0eWxlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKG5hbWUuaW5kZXhPZignLScpID4gLTEpIHtcbiAgICAgIHdhcm5IeXBoZW5hdGVkU3R5bGVOYW1lKG5hbWUpO1xuICAgIH0gZWxzZSBpZiAoYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuLnRlc3QobmFtZSkpIHtcbiAgICAgIHdhcm5CYWRWZW5kb3JlZFN0eWxlTmFtZShuYW1lKTtcbiAgICB9IGVsc2UgaWYgKGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgd2FyblN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uKG5hbWUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgICB3YXJuU3R5bGVWYWx1ZUlzTmFOKG5hbWUsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzRmluaXRlKHZhbHVlKSkge1xuICAgICAgICB3YXJuU3R5bGVWYWx1ZUlzSW5maW5pdHkobmFtZSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxudmFyIHdhcm5WYWxpZFN0eWxlJDEgPSB3YXJuVmFsaWRTdHlsZTtcblxuLy8gY29kZSBjb3BpZWQgYW5kIG1vZGlmaWVkIGZyb20gZXNjYXBlLWh0bWxcbnZhciBtYXRjaEh0bWxSZWdFeHAgPSAvW1wiJyY8Pl0vO1xuLyoqXG4gKiBFc2NhcGVzIHNwZWNpYWwgY2hhcmFjdGVycyBhbmQgSFRNTCBlbnRpdGllcyBpbiBhIGdpdmVuIGh0bWwgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gc3RyaW5nIEhUTUwgc3RyaW5nIHRvIGVzY2FwZSBmb3IgbGF0ZXIgaW5zZXJ0aW9uXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZXNjYXBlSHRtbChzdHJpbmcpIHtcbiAge1xuICAgIGNoZWNrSHRtbFN0cmluZ0NvZXJjaW9uKHN0cmluZyk7XG4gIH1cblxuICB2YXIgc3RyID0gJycgKyBzdHJpbmc7XG4gIHZhciBtYXRjaCA9IG1hdGNoSHRtbFJlZ0V4cC5leGVjKHN0cik7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICB2YXIgZXNjYXBlO1xuICB2YXIgaHRtbCA9ICcnO1xuICB2YXIgaW5kZXg7XG4gIHZhciBsYXN0SW5kZXggPSAwO1xuXG4gIGZvciAoaW5kZXggPSBtYXRjaC5pbmRleDsgaW5kZXggPCBzdHIubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgc3dpdGNoIChzdHIuY2hhckNvZGVBdChpbmRleCkpIHtcbiAgICAgIGNhc2UgMzQ6XG4gICAgICAgIC8vIFwiXG4gICAgICAgIGVzY2FwZSA9ICcmcXVvdDsnO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAzODpcbiAgICAgICAgLy8gJlxuICAgICAgICBlc2NhcGUgPSAnJmFtcDsnO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAzOTpcbiAgICAgICAgLy8gJ1xuICAgICAgICBlc2NhcGUgPSAnJiN4Mjc7JzsgLy8gbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbDsgdXNlZCB0byBiZSAnJiMzOSdcblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSA2MDpcbiAgICAgICAgLy8gPFxuICAgICAgICBlc2NhcGUgPSAnJmx0Oyc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIDYyOlxuICAgICAgICAvLyA+XG4gICAgICAgIGVzY2FwZSA9ICcmZ3Q7JztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChsYXN0SW5kZXggIT09IGluZGV4KSB7XG4gICAgICBodG1sICs9IHN0ci5zdWJzdHJpbmcobGFzdEluZGV4LCBpbmRleCk7XG4gICAgfVxuXG4gICAgbGFzdEluZGV4ID0gaW5kZXggKyAxO1xuICAgIGh0bWwgKz0gZXNjYXBlO1xuICB9XG5cbiAgcmV0dXJuIGxhc3RJbmRleCAhPT0gaW5kZXggPyBodG1sICsgc3RyLnN1YnN0cmluZyhsYXN0SW5kZXgsIGluZGV4KSA6IGh0bWw7XG59IC8vIGVuZCBjb2RlIGNvcGllZCBhbmQgbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbFxuXG4vKipcbiAqIEVzY2FwZXMgdGV4dCB0byBwcmV2ZW50IHNjcmlwdGluZyBhdHRhY2tzLlxuICpcbiAqIEBwYXJhbSB7Kn0gdGV4dCBUZXh0IHZhbHVlIHRvIGVzY2FwZS5cbiAqIEByZXR1cm4ge3N0cmluZ30gQW4gZXNjYXBlZCBzdHJpbmcuXG4gKi9cblxuXG5mdW5jdGlvbiBlc2NhcGVUZXh0Rm9yQnJvd3Nlcih0ZXh0KSB7XG4gIGlmICh0eXBlb2YgdGV4dCA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGVvZiB0ZXh0ID09PSAnbnVtYmVyJykge1xuICAgIC8vIHRoaXMgc2hvcnRjaXJjdWl0IGhlbHBzIHBlcmYgZm9yIHR5cGVzIHRoYXQgd2Uga25vdyB3aWxsIG5ldmVyIGhhdmVcbiAgICAvLyBzcGVjaWFsIGNoYXJhY3RlcnMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgb2Z0ZW5cbiAgICAvLyBmb3IgbnVtZXJpYyBkb20gaWRzLlxuICAgIHJldHVybiAnJyArIHRleHQ7XG4gIH1cblxuICByZXR1cm4gZXNjYXBlSHRtbCh0ZXh0KTtcbn1cblxudmFyIHVwcGVyY2FzZVBhdHRlcm4gPSAvKFtBLVpdKS9nO1xudmFyIG1zUGF0dGVybiQxID0gL15tcy0vO1xuLyoqXG4gKiBIeXBoZW5hdGVzIGEgY2FtZWxjYXNlZCBDU1MgcHJvcGVydHkgbmFtZSwgZm9yIGV4YW1wbGU6XG4gKlxuICogICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgnYmFja2dyb3VuZENvbG9yJylcbiAqICAgPCBcImJhY2tncm91bmQtY29sb3JcIlxuICogICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgnTW96VHJhbnNpdGlvbicpXG4gKiAgIDwgXCItbW96LXRyYW5zaXRpb25cIlxuICogICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgnbXNUcmFuc2l0aW9uJylcbiAqICAgPCBcIi1tcy10cmFuc2l0aW9uXCJcbiAqXG4gKiBBcyBNb2Rlcm5penIgc3VnZ2VzdHMgKGh0dHA6Ly9tb2Rlcm5penIuY29tL2RvY3MvI3ByZWZpeGVkKSwgYW4gYG1zYCBwcmVmaXhcbiAqIGlzIGNvbnZlcnRlZCB0byBgLW1zLWAuXG4gKi9cblxuZnVuY3Rpb24gaHlwaGVuYXRlU3R5bGVOYW1lKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUucmVwbGFjZSh1cHBlcmNhc2VQYXR0ZXJuLCAnLSQxJykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKG1zUGF0dGVybiQxLCAnLW1zLScpO1xufVxuXG4vLyBhbmQgYW55IG5ld2xpbmUgb3IgdGFiIGFyZSBmaWx0ZXJlZCBvdXQgYXMgaWYgdGhleSdyZSBub3QgcGFydCBvZiB0aGUgVVJMLlxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmwtcGFyc2luZ1xuLy8gVGFiIG9yIG5ld2xpbmUgYXJlIGRlZmluZWQgYXMgXFxyXFxuXFx0OlxuLy8gaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI2FzY2lpLXRhYi1vci1uZXdsaW5lXG4vLyBBIEMwIGNvbnRyb2wgaXMgYSBjb2RlIHBvaW50IGluIHRoZSByYW5nZSBcXHUwMDAwIE5VTEwgdG8gXFx1MDAxRlxuLy8gSU5GT1JNQVRJT04gU0VQQVJBVE9SIE9ORSwgaW5jbHVzaXZlOlxuLy8gaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI2MwLWNvbnRyb2wtb3Itc3BhY2VcblxuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuXG52YXIgaXNKYXZhU2NyaXB0UHJvdG9jb2wgPSAvXltcXHUwMDAwLVxcdTAwMUYgXSpqW1xcclxcblxcdF0qYVtcXHJcXG5cXHRdKnZbXFxyXFxuXFx0XSphW1xcclxcblxcdF0qc1tcXHJcXG5cXHRdKmNbXFxyXFxuXFx0XSpyW1xcclxcblxcdF0qaVtcXHJcXG5cXHRdKnBbXFxyXFxuXFx0XSp0W1xcclxcblxcdF0qXFw6L2k7XG52YXIgZGlkV2FybiA9IGZhbHNlO1xuXG5mdW5jdGlvbiBzYW5pdGl6ZVVSTCh1cmwpIHtcbiAge1xuICAgIGlmICghZGlkV2FybiAmJiBpc0phdmFTY3JpcHRQcm90b2NvbC50ZXN0KHVybCkpIHtcbiAgICAgIGRpZFdhcm4gPSB0cnVlO1xuXG4gICAgICBlcnJvcignQSBmdXR1cmUgdmVyc2lvbiBvZiBSZWFjdCB3aWxsIGJsb2NrIGphdmFzY3JpcHQ6IFVSTHMgYXMgYSBzZWN1cml0eSBwcmVjYXV0aW9uLiAnICsgJ1VzZSBldmVudCBoYW5kbGVycyBpbnN0ZWFkIGlmIHlvdSBjYW4uIElmIHlvdSBuZWVkIHRvIGdlbmVyYXRlIHVuc2FmZSBIVE1MIHRyeSAnICsgJ3VzaW5nIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGluc3RlYWQuIFJlYWN0IHdhcyBwYXNzZWQgJXMuJywgSlNPTi5zdHJpbmdpZnkodXJsKSk7XG4gICAgfVxuICB9XG59XG5cbnZhciBpc0FycmF5SW1wbCA9IEFycmF5LmlzQXJyYXk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZWRlY2xhcmVcblxuZnVuY3Rpb24gaXNBcnJheShhKSB7XG4gIHJldHVybiBpc0FycmF5SW1wbChhKTtcbn1cblxudmFyIHN0YXJ0SW5saW5lU2NyaXB0ID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8c2NyaXB0PicpO1xudmFyIGVuZElubGluZVNjcmlwdCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPC9zY3JpcHQ+Jyk7XG52YXIgc3RhcnRTY3JpcHRTcmMgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzxzY3JpcHQgc3JjPVwiJyk7XG52YXIgc3RhcnRNb2R1bGVTcmMgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzxzY3JpcHQgdHlwZT1cIm1vZHVsZVwiIHNyYz1cIicpO1xudmFyIGVuZEFzeW5jU2NyaXB0ID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIiBhc3luYz1cIlwiPjwvc2NyaXB0PicpOyAvLyBBbGxvd3MgdXMgdG8ga2VlcCB0cmFjayBvZiB3aGF0IHdlJ3ZlIGFscmVhZHkgd3JpdHRlbiBzbyB3ZSBjYW4gcmVmZXIgYmFjayB0byBpdC5cblxuZnVuY3Rpb24gY3JlYXRlUmVzcG9uc2VTdGF0ZShpZGVudGlmaWVyUHJlZml4LCBub25jZSwgYm9vdHN0cmFwU2NyaXB0Q29udGVudCwgYm9vdHN0cmFwU2NyaXB0cywgYm9vdHN0cmFwTW9kdWxlcykge1xuICB2YXIgaWRQcmVmaXggPSBpZGVudGlmaWVyUHJlZml4ID09PSB1bmRlZmluZWQgPyAnJyA6IGlkZW50aWZpZXJQcmVmaXg7XG4gIHZhciBpbmxpbmVTY3JpcHRXaXRoTm9uY2UgPSBub25jZSA9PT0gdW5kZWZpbmVkID8gc3RhcnRJbmxpbmVTY3JpcHQgOiBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzxzY3JpcHQgbm9uY2U9XCInICsgZXNjYXBlVGV4dEZvckJyb3dzZXIobm9uY2UpICsgJ1wiPicpO1xuICB2YXIgYm9vdHN0cmFwQ2h1bmtzID0gW107XG5cbiAgaWYgKGJvb3RzdHJhcFNjcmlwdENvbnRlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgIGJvb3RzdHJhcENodW5rcy5wdXNoKGlubGluZVNjcmlwdFdpdGhOb25jZSwgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3Nlcihib290c3RyYXBTY3JpcHRDb250ZW50KSksIGVuZElubGluZVNjcmlwdCk7XG4gIH1cblxuICBpZiAoYm9vdHN0cmFwU2NyaXB0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib290c3RyYXBTY3JpcHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBib290c3RyYXBDaHVua3MucHVzaChzdGFydFNjcmlwdFNyYywgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3Nlcihib290c3RyYXBTY3JpcHRzW2ldKSksIGVuZEFzeW5jU2NyaXB0KTtcbiAgICB9XG4gIH1cblxuICBpZiAoYm9vdHN0cmFwTW9kdWxlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGJvb3RzdHJhcE1vZHVsZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICBib290c3RyYXBDaHVua3MucHVzaChzdGFydE1vZHVsZVNyYywgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3Nlcihib290c3RyYXBNb2R1bGVzW19pXSkpLCBlbmRBc3luY1NjcmlwdCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBib290c3RyYXBDaHVua3M6IGJvb3RzdHJhcENodW5rcyxcbiAgICBzdGFydElubGluZVNjcmlwdDogaW5saW5lU2NyaXB0V2l0aE5vbmNlLFxuICAgIHBsYWNlaG9sZGVyUHJlZml4OiBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoaWRQcmVmaXggKyAnUDonKSxcbiAgICBzZWdtZW50UHJlZml4OiBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoaWRQcmVmaXggKyAnUzonKSxcbiAgICBib3VuZGFyeVByZWZpeDogaWRQcmVmaXggKyAnQjonLFxuICAgIGlkUHJlZml4OiBpZFByZWZpeCxcbiAgICBuZXh0U3VzcGVuc2VJRDogMCxcbiAgICBzZW50Q29tcGxldGVTZWdtZW50RnVuY3Rpb246IGZhbHNlLFxuICAgIHNlbnRDb21wbGV0ZUJvdW5kYXJ5RnVuY3Rpb246IGZhbHNlLFxuICAgIHNlbnRDbGllbnRSZW5kZXJGdW5jdGlvbjogZmFsc2VcbiAgfTtcbn0gLy8gQ29uc3RhbnRzIGZvciB0aGUgaW5zZXJ0aW9uIG1vZGUgd2UncmUgY3VycmVudGx5IHdyaXRpbmcgaW4uIFdlIGRvbid0IGVuY29kZSBhbGwgSFRNTDUgaW5zZXJ0aW9uXG4vLyBtb2Rlcy4gV2Ugb25seSBpbmNsdWRlIHRoZSB2YXJpYW50cyBhcyB0aGV5IG1hdHRlciBmb3IgdGhlIHNha2Ugb2Ygb3VyIHB1cnBvc2VzLlxuLy8gV2UgZG9uJ3QgYWN0dWFsbHkgcHJvdmlkZSB0aGUgbmFtZXNwYWNlIHRoZXJlZm9yZSB3ZSB1c2UgY29uc3RhbnRzIGluc3RlYWQgb2YgdGhlIHN0cmluZy5cblxudmFyIFJPT1RfSFRNTF9NT0RFID0gMDsgLy8gVXNlZCBmb3IgdGhlIHJvb3QgbW9zdCBlbGVtZW50IHRhZy5cblxudmFyIEhUTUxfTU9ERSA9IDE7XG52YXIgU1ZHX01PREUgPSAyO1xudmFyIE1BVEhNTF9NT0RFID0gMztcbnZhciBIVE1MX1RBQkxFX01PREUgPSA0O1xudmFyIEhUTUxfVEFCTEVfQk9EWV9NT0RFID0gNTtcbnZhciBIVE1MX1RBQkxFX1JPV19NT0RFID0gNjtcbnZhciBIVE1MX0NPTEdST1VQX01PREUgPSA3OyAvLyBXZSBoYXZlIGEgZ3JlYXRlciB0aGFuIEhUTUxfVEFCTEVfTU9ERSBjaGVjayBlbHNld2hlcmUuIElmIHlvdSBhZGQgbW9yZSBjYXNlcyBoZXJlLCBtYWtlIHN1cmUgaXRcbi8vIHN0aWxsIG1ha2VzIHNlbnNlXG5cbmZ1bmN0aW9uIGNyZWF0ZUZvcm1hdENvbnRleHQoaW5zZXJ0aW9uTW9kZSwgc2VsZWN0ZWRWYWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGluc2VydGlvbk1vZGU6IGluc2VydGlvbk1vZGUsXG4gICAgc2VsZWN0ZWRWYWx1ZTogc2VsZWN0ZWRWYWx1ZVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2hpbGRGb3JtYXRDb250ZXh0KHBhcmVudENvbnRleHQsIHR5cGUsIHByb3BzKSB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICByZXR1cm4gY3JlYXRlRm9ybWF0Q29udGV4dChIVE1MX01PREUsIHByb3BzLnZhbHVlICE9IG51bGwgPyBwcm9wcy52YWx1ZSA6IHByb3BzLmRlZmF1bHRWYWx1ZSk7XG5cbiAgICBjYXNlICdzdmcnOlxuICAgICAgcmV0dXJuIGNyZWF0ZUZvcm1hdENvbnRleHQoU1ZHX01PREUsIG51bGwpO1xuXG4gICAgY2FzZSAnbWF0aCc6XG4gICAgICByZXR1cm4gY3JlYXRlRm9ybWF0Q29udGV4dChNQVRITUxfTU9ERSwgbnVsbCk7XG5cbiAgICBjYXNlICdmb3JlaWduT2JqZWN0JzpcbiAgICAgIHJldHVybiBjcmVhdGVGb3JtYXRDb250ZXh0KEhUTUxfTU9ERSwgbnVsbCk7XG4gICAgLy8gVGFibGUgcGFyZW50cyBhcmUgc3BlY2lhbCBpbiB0aGF0IHRoZWlyIGNoaWxkcmVuIGNhbiBvbmx5IGJlIGNyZWF0ZWQgYXQgYWxsIGlmIHRoZXkncmVcbiAgICAvLyB3cmFwcGVkIGluIGEgdGFibGUgcGFyZW50LiBTbyB3ZSBuZWVkIHRvIGVuY29kZSB0aGF0IHdlJ3JlIGVudGVyaW5nIHRoaXMgbW9kZS5cblxuICAgIGNhc2UgJ3RhYmxlJzpcbiAgICAgIHJldHVybiBjcmVhdGVGb3JtYXRDb250ZXh0KEhUTUxfVEFCTEVfTU9ERSwgbnVsbCk7XG5cbiAgICBjYXNlICd0aGVhZCc6XG4gICAgY2FzZSAndGJvZHknOlxuICAgIGNhc2UgJ3Rmb290JzpcbiAgICAgIHJldHVybiBjcmVhdGVGb3JtYXRDb250ZXh0KEhUTUxfVEFCTEVfQk9EWV9NT0RFLCBudWxsKTtcblxuICAgIGNhc2UgJ2NvbGdyb3VwJzpcbiAgICAgIHJldHVybiBjcmVhdGVGb3JtYXRDb250ZXh0KEhUTUxfQ09MR1JPVVBfTU9ERSwgbnVsbCk7XG5cbiAgICBjYXNlICd0cic6XG4gICAgICByZXR1cm4gY3JlYXRlRm9ybWF0Q29udGV4dChIVE1MX1RBQkxFX1JPV19NT0RFLCBudWxsKTtcbiAgfVxuXG4gIGlmIChwYXJlbnRDb250ZXh0Lmluc2VydGlvbk1vZGUgPj0gSFRNTF9UQUJMRV9NT0RFKSB7XG4gICAgLy8gV2hhdGV2ZXIgdGFnIHRoaXMgd2FzLCBpdCB3YXNuJ3QgYSB0YWJsZSBwYXJlbnQgb3Igb3RoZXIgc3BlY2lhbCBwYXJlbnQsIHNvIHdlIG11c3QgaGF2ZVxuICAgIC8vIGVudGVyZWQgcGxhaW4gSFRNTCBhZ2Fpbi5cbiAgICByZXR1cm4gY3JlYXRlRm9ybWF0Q29udGV4dChIVE1MX01PREUsIG51bGwpO1xuICB9XG5cbiAgaWYgKHBhcmVudENvbnRleHQuaW5zZXJ0aW9uTW9kZSA9PT0gUk9PVF9IVE1MX01PREUpIHtcbiAgICAvLyBXZSd2ZSBlbWl0dGVkIHRoZSByb290IGFuZCBpcyBub3cgaW4gcGxhaW4gSFRNTCBtb2RlLlxuICAgIHJldHVybiBjcmVhdGVGb3JtYXRDb250ZXh0KEhUTUxfTU9ERSwgbnVsbCk7XG4gIH1cblxuICByZXR1cm4gcGFyZW50Q29udGV4dDtcbn1cbnZhciBVTklOSVRJQUxJWkVEX1NVU1BFTlNFX0JPVU5EQVJZX0lEID0gbnVsbDtcbmZ1bmN0aW9uIGFzc2lnblN1c3BlbnNlQm91bmRhcnlJRChyZXNwb25zZVN0YXRlKSB7XG4gIHZhciBnZW5lcmF0ZWRJRCA9IHJlc3BvbnNlU3RhdGUubmV4dFN1c3BlbnNlSUQrKztcbiAgcmV0dXJuIHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhyZXNwb25zZVN0YXRlLmJvdW5kYXJ5UHJlZml4ICsgZ2VuZXJhdGVkSUQudG9TdHJpbmcoMTYpKTtcbn1cbmZ1bmN0aW9uIG1ha2VJZChyZXNwb25zZVN0YXRlLCB0cmVlSWQsIGxvY2FsSWQpIHtcbiAgdmFyIGlkUHJlZml4ID0gcmVzcG9uc2VTdGF0ZS5pZFByZWZpeDtcbiAgdmFyIGlkID0gJzonICsgaWRQcmVmaXggKyAnUicgKyB0cmVlSWQ7IC8vIFVubGVzcyB0aGlzIGlzIHRoZSBmaXJzdCBpZCBhdCB0aGlzIGxldmVsLCBhcHBlbmQgYSBudW1iZXIgYXQgdGhlIGVuZFxuICAvLyB0aGF0IHJlcHJlc2VudHMgdGhlIHBvc2l0aW9uIG9mIHRoaXMgdXNlSWQgaG9vayBhbW9uZyBhbGwgdGhlIHVzZUlkXG4gIC8vIGhvb2tzIGZvciB0aGlzIGZpYmVyLlxuXG4gIGlmIChsb2NhbElkID4gMCkge1xuICAgIGlkICs9ICdIJyArIGxvY2FsSWQudG9TdHJpbmcoMzIpO1xuICB9XG5cbiAgcmV0dXJuIGlkICsgJzonO1xufVxuXG5mdW5jdGlvbiBlbmNvZGVIVE1MVGV4dE5vZGUodGV4dCkge1xuICByZXR1cm4gZXNjYXBlVGV4dEZvckJyb3dzZXIodGV4dCk7XG59XG5cbnZhciB0ZXh0U2VwYXJhdG9yID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8IS0tIC0tPicpO1xuZnVuY3Rpb24gcHVzaFRleHRJbnN0YW5jZSh0YXJnZXQsIHRleHQsIHJlc3BvbnNlU3RhdGUpIHtcbiAgaWYgKHRleHQgPT09ICcnKSB7XG4gICAgLy8gRW1wdHkgdGV4dCBkb2Vzbid0IGhhdmUgYSBET00gbm9kZSByZXByZXNlbnRhdGlvbiBhbmQgdGhlIGh5ZHJhdGlvbiBpcyBhd2FyZSBvZiB0aGlzLlxuICAgIHJldHVybjtcbiAgfSAvLyBUT0RPOiBBdm9pZCBhZGRpbmcgYSB0ZXh0IHNlcGFyYXRvciBpbiBjb21tb24gY2FzZXMuXG5cblxuICB0YXJnZXQucHVzaChzdHJpbmdUb0NodW5rKGVuY29kZUhUTUxUZXh0Tm9kZSh0ZXh0KSksIHRleHRTZXBhcmF0b3IpO1xufVxudmFyIHN0eWxlTmFtZUNhY2hlID0gbmV3IE1hcCgpO1xuXG5mdW5jdGlvbiBwcm9jZXNzU3R5bGVOYW1lKHN0eWxlTmFtZSkge1xuICB2YXIgY2h1bmsgPSBzdHlsZU5hbWVDYWNoZS5nZXQoc3R5bGVOYW1lKTtcblxuICBpZiAoY2h1bmsgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBjaHVuaztcbiAgfVxuXG4gIHZhciByZXN1bHQgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoZXNjYXBlVGV4dEZvckJyb3dzZXIoaHlwaGVuYXRlU3R5bGVOYW1lKHN0eWxlTmFtZSkpKTtcbiAgc3R5bGVOYW1lQ2FjaGUuc2V0KHN0eWxlTmFtZSwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxudmFyIHN0eWxlQXR0cmlidXRlU3RhcnQgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJyBzdHlsZT1cIicpO1xudmFyIHN0eWxlQXNzaWduID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc6Jyk7XG52YXIgc3R5bGVTZXBhcmF0b3IgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzsnKTtcblxuZnVuY3Rpb24gcHVzaFN0eWxlKHRhcmdldCwgcmVzcG9uc2VTdGF0ZSwgc3R5bGUpIHtcbiAgaWYgKHR5cGVvZiBzdHlsZSAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBgc3R5bGVgIHByb3AgZXhwZWN0cyBhIG1hcHBpbmcgZnJvbSBzdHlsZSBwcm9wZXJ0aWVzIHRvIHZhbHVlcywgJyArIFwibm90IGEgc3RyaW5nLiBGb3IgZXhhbXBsZSwgc3R5bGU9e3ttYXJnaW5SaWdodDogc3BhY2luZyArICdlbSd9fSB3aGVuIFwiICsgJ3VzaW5nIEpTWC4nKTtcbiAgfVxuXG4gIHZhciBpc0ZpcnN0ID0gdHJ1ZTtcblxuICBmb3IgKHZhciBzdHlsZU5hbWUgaW4gc3R5bGUpIHtcbiAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwoc3R5bGUsIHN0eWxlTmFtZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8gSWYgeW91IHByb3ZpZGUgdW5zYWZlIHVzZXIgZGF0YSBoZXJlIHRoZXkgY2FuIGluamVjdCBhcmJpdHJhcnkgQ1NTXG4gICAgLy8gd2hpY2ggbWF5IGJlIHByb2JsZW1hdGljIChJIGNvdWxkbid0IHJlcHJvIHRoaXMpOlxuICAgIC8vIGh0dHBzOi8vd3d3Lm93YXNwLm9yZy9pbmRleC5waHAvWFNTX0ZpbHRlcl9FdmFzaW9uX0NoZWF0X1NoZWV0XG4gICAgLy8gaHR0cDovL3d3dy50aGVzcGFubmVyLmNvLnVrLzIwMDcvMTEvMjYvdWx0aW1hdGUteHNzLWNzcy1pbmplY3Rpb24vXG4gICAgLy8gVGhpcyBpcyBub3QgYW4gWFNTIGhvbGUgYnV0IGluc3RlYWQgYSBwb3RlbnRpYWwgQ1NTIGluamVjdGlvbiBpc3N1ZVxuICAgIC8vIHdoaWNoIGhhcyBsZWFkIHRvIGEgZ3JlYXRlciBkaXNjdXNzaW9uIGFib3V0IGhvdyB3ZSdyZSBnb2luZyB0b1xuICAgIC8vIHRydXN0IFVSTHMgbW92aW5nIGZvcndhcmQuIFNlZSAjMjExNTkwMVxuXG5cbiAgICB2YXIgc3R5bGVWYWx1ZSA9IHN0eWxlW3N0eWxlTmFtZV07XG5cbiAgICBpZiAoc3R5bGVWYWx1ZSA9PSBudWxsIHx8IHR5cGVvZiBzdHlsZVZhbHVlID09PSAnYm9vbGVhbicgfHwgc3R5bGVWYWx1ZSA9PT0gJycpIHtcbiAgICAgIC8vIFRPRE86IFdlIHVzZWQgdG8gc2V0IGVtcHR5IHN0cmluZyBhcyBhIHN0eWxlIHdpdGggYW4gZW1wdHkgdmFsdWUuIERvZXMgdGhhdCBldmVyIG1ha2Ugc2Vuc2U/XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgbmFtZUNodW5rID0gdm9pZCAwO1xuICAgIHZhciB2YWx1ZUNodW5rID0gdm9pZCAwO1xuICAgIHZhciBpc0N1c3RvbVByb3BlcnR5ID0gc3R5bGVOYW1lLmluZGV4T2YoJy0tJykgPT09IDA7XG5cbiAgICBpZiAoaXNDdXN0b21Qcm9wZXJ0eSkge1xuICAgICAgbmFtZUNodW5rID0gc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3NlcihzdHlsZU5hbWUpKTtcblxuICAgICAge1xuICAgICAgICBjaGVja0NTU1Byb3BlcnR5U3RyaW5nQ29lcmNpb24oc3R5bGVWYWx1ZSwgc3R5bGVOYW1lKTtcbiAgICAgIH1cblxuICAgICAgdmFsdWVDaHVuayA9IHN0cmluZ1RvQ2h1bmsoZXNjYXBlVGV4dEZvckJyb3dzZXIoKCcnICsgc3R5bGVWYWx1ZSkudHJpbSgpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHtcbiAgICAgICAgd2FyblZhbGlkU3R5bGUkMShzdHlsZU5hbWUsIHN0eWxlVmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBuYW1lQ2h1bmsgPSBwcm9jZXNzU3R5bGVOYW1lKHN0eWxlTmFtZSk7XG5cbiAgICAgIGlmICh0eXBlb2Ygc3R5bGVWYWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgaWYgKHN0eWxlVmFsdWUgIT09IDAgJiYgIWhhc093blByb3BlcnR5LmNhbGwoaXNVbml0bGVzc051bWJlciwgc3R5bGVOYW1lKSkge1xuICAgICAgICAgIHZhbHVlQ2h1bmsgPSBzdHJpbmdUb0NodW5rKHN0eWxlVmFsdWUgKyAncHgnKTsgLy8gUHJlc3VtZXMgaW1wbGljaXQgJ3B4JyBzdWZmaXggZm9yIHVuaXRsZXNzIG51bWJlcnNcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZUNodW5rID0gc3RyaW5nVG9DaHVuaygnJyArIHN0eWxlVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB7XG4gICAgICAgICAgY2hlY2tDU1NQcm9wZXJ0eVN0cmluZ0NvZXJjaW9uKHN0eWxlVmFsdWUsIHN0eWxlTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YWx1ZUNodW5rID0gc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3NlcigoJycgKyBzdHlsZVZhbHVlKS50cmltKCkpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNGaXJzdCkge1xuICAgICAgaXNGaXJzdCA9IGZhbHNlOyAvLyBJZiBpdCdzIGZpcnN0LCB3ZSBkb24ndCBuZWVkIGFueSBzZXBhcmF0b3JzIHByZWZpeGVkLlxuXG4gICAgICB0YXJnZXQucHVzaChzdHlsZUF0dHJpYnV0ZVN0YXJ0LCBuYW1lQ2h1bmssIHN0eWxlQXNzaWduLCB2YWx1ZUNodW5rKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0LnB1c2goc3R5bGVTZXBhcmF0b3IsIG5hbWVDaHVuaywgc3R5bGVBc3NpZ24sIHZhbHVlQ2h1bmspO1xuICAgIH1cbiAgfVxuXG4gIGlmICghaXNGaXJzdCkge1xuICAgIHRhcmdldC5wdXNoKGF0dHJpYnV0ZUVuZCk7XG4gIH1cbn1cblxudmFyIGF0dHJpYnV0ZVNlcGFyYXRvciA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnICcpO1xudmFyIGF0dHJpYnV0ZUFzc2lnbiA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPVwiJyk7XG52YXIgYXR0cmlidXRlRW5kID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIicpO1xudmFyIGF0dHJpYnV0ZUVtcHR5U3RyaW5nID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc9XCJcIicpO1xuXG5mdW5jdGlvbiBwdXNoQXR0cmlidXRlKHRhcmdldCwgcmVzcG9uc2VTdGF0ZSwgbmFtZSwgdmFsdWUpIHtcbiAgc3dpdGNoIChuYW1lKSB7XG4gICAgY2FzZSAnc3R5bGUnOlxuICAgICAge1xuICAgICAgICBwdXNoU3R5bGUodGFyZ2V0LCByZXNwb25zZVN0YXRlLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgIGNhc2UgJ2RlZmF1bHRWYWx1ZSc6XG4gICAgY2FzZSAnZGVmYXVsdENoZWNrZWQnOiAvLyBUaGVzZSBzaG91bGRuJ3QgYmUgc2V0IGFzIGF0dHJpYnV0ZXMgb24gZ2VuZXJpYyBIVE1MIGVsZW1lbnRzLlxuXG4gICAgY2FzZSAnaW5uZXJIVE1MJzogLy8gTXVzdCB1c2UgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgaW5zdGVhZC5cblxuICAgIGNhc2UgJ3N1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyc6XG4gICAgY2FzZSAnc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nJzpcbiAgICAgIC8vIElnbm9yZWQuIFRoZXNlIGFyZSBidWlsdC1pbiB0byBSZWFjdCBvbiB0aGUgY2xpZW50LlxuICAgICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCAvLyBzaG91bGRJZ25vcmVBdHRyaWJ1dGVcbiAgLy8gV2UgaGF2ZSBhbHJlYWR5IGZpbHRlcmVkIG91dCBudWxsL3VuZGVmaW5lZCBhbmQgcmVzZXJ2ZWQgd29yZHMuXG4gIG5hbWUubGVuZ3RoID4gMiAmJiAobmFtZVswXSA9PT0gJ28nIHx8IG5hbWVbMF0gPT09ICdPJykgJiYgKG5hbWVbMV0gPT09ICduJyB8fCBuYW1lWzFdID09PSAnTicpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHByb3BlcnR5SW5mbyA9IGdldFByb3BlcnR5SW5mbyhuYW1lKTtcblxuICBpZiAocHJvcGVydHlJbmZvICE9PSBudWxsKSB7XG4gICAgLy8gc2hvdWxkUmVtb3ZlQXR0cmlidXRlXG4gICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgIGNhc2UgJ2Z1bmN0aW9uJzogLy8gJEZsb3dJc3N1ZSBzeW1ib2wgaXMgcGVyZmVjdGx5IHZhbGlkIGhlcmVcblxuICAgICAgY2FzZSAnc3ltYm9sJzpcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgICByZXR1cm47XG5cbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICB7XG4gICAgICAgICAgaWYgKCFwcm9wZXJ0eUluZm8uYWNjZXB0c0Jvb2xlYW5zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZTtcbiAgICB2YXIgYXR0cmlidXRlTmFtZUNodW5rID0gc3RyaW5nVG9DaHVuayhhdHRyaWJ1dGVOYW1lKTsgLy8gVE9ETzogSWYgaXQncyBrbm93biB3ZSBjYW4gY2FjaGUgdGhlIGNodW5rLlxuXG4gICAgc3dpdGNoIChwcm9wZXJ0eUluZm8udHlwZSkge1xuICAgICAgY2FzZSBCT09MRUFOOlxuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICB0YXJnZXQucHVzaChhdHRyaWJ1dGVTZXBhcmF0b3IsIGF0dHJpYnV0ZU5hbWVDaHVuaywgYXR0cmlidXRlRW1wdHlTdHJpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuXG4gICAgICBjYXNlIE9WRVJMT0FERURfQk9PTEVBTjpcbiAgICAgICAgaWYgKHZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgICAgdGFyZ2V0LnB1c2goYXR0cmlidXRlU2VwYXJhdG9yLCBhdHRyaWJ1dGVOYW1lQ2h1bmssIGF0dHJpYnV0ZUVtcHR5U3RyaW5nKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gZmFsc2UpIDsgZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0LnB1c2goYXR0cmlidXRlU2VwYXJhdG9yLCBhdHRyaWJ1dGVOYW1lQ2h1bmssIGF0dHJpYnV0ZUFzc2lnbiwgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3Nlcih2YWx1ZSkpLCBhdHRyaWJ1dGVFbmQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuXG4gICAgICBjYXNlIE5VTUVSSUM6XG4gICAgICAgIGlmICghaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgdGFyZ2V0LnB1c2goYXR0cmlidXRlU2VwYXJhdG9yLCBhdHRyaWJ1dGVOYW1lQ2h1bmssIGF0dHJpYnV0ZUFzc2lnbiwgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3Nlcih2YWx1ZSkpLCBhdHRyaWJ1dGVFbmQpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUE9TSVRJVkVfTlVNRVJJQzpcbiAgICAgICAgaWYgKCFpc05hTih2YWx1ZSkgJiYgdmFsdWUgPj0gMSkge1xuICAgICAgICAgIHRhcmdldC5wdXNoKGF0dHJpYnV0ZVNlcGFyYXRvciwgYXR0cmlidXRlTmFtZUNodW5rLCBhdHRyaWJ1dGVBc3NpZ24sIHN0cmluZ1RvQ2h1bmsoZXNjYXBlVGV4dEZvckJyb3dzZXIodmFsdWUpKSwgYXR0cmlidXRlRW5kKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAocHJvcGVydHlJbmZvLnNhbml0aXplVVJMKSB7XG4gICAgICAgICAge1xuICAgICAgICAgICAgY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbih2YWx1ZSwgYXR0cmlidXRlTmFtZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFsdWUgPSAnJyArIHZhbHVlO1xuICAgICAgICAgIHNhbml0aXplVVJMKHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhcmdldC5wdXNoKGF0dHJpYnV0ZVNlcGFyYXRvciwgYXR0cmlidXRlTmFtZUNodW5rLCBhdHRyaWJ1dGVBc3NpZ24sIHN0cmluZ1RvQ2h1bmsoZXNjYXBlVGV4dEZvckJyb3dzZXIodmFsdWUpKSwgYXR0cmlidXRlRW5kKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNBdHRyaWJ1dGVOYW1lU2FmZShuYW1lKSkge1xuICAgIC8vIHNob3VsZFJlbW92ZUF0dHJpYnV0ZVxuICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICBjYXNlICdmdW5jdGlvbic6IC8vICRGbG93SXNzdWUgc3ltYm9sIGlzIHBlcmZlY3RseSB2YWxpZCBoZXJlXG5cbiAgICAgIGNhc2UgJ3N5bWJvbCc6XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgICAgcmV0dXJuO1xuXG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBwcmVmaXggPSBuYW1lLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCwgNSk7XG5cbiAgICAgICAgICBpZiAocHJlZml4ICE9PSAnZGF0YS0nICYmIHByZWZpeCAhPT0gJ2FyaWEtJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRhcmdldC5wdXNoKGF0dHJpYnV0ZVNlcGFyYXRvciwgc3RyaW5nVG9DaHVuayhuYW1lKSwgYXR0cmlidXRlQXNzaWduLCBzdHJpbmdUb0NodW5rKGVzY2FwZVRleHRGb3JCcm93c2VyKHZhbHVlKSksIGF0dHJpYnV0ZUVuZCk7XG4gIH1cbn1cblxudmFyIGVuZE9mU3RhcnRUYWcgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJz4nKTtcbnZhciBlbmRPZlN0YXJ0VGFnU2VsZkNsb3NpbmcgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJy8+Jyk7XG5cbmZ1bmN0aW9uIHB1c2hJbm5lckhUTUwodGFyZ2V0LCBpbm5lckhUTUwsIGNoaWxkcmVuKSB7XG4gIGlmIChpbm5lckhUTUwgIT0gbnVsbCkge1xuICAgIGlmIChjaGlsZHJlbiAhPSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbiBvbmx5IHNldCBvbmUgb2YgYGNoaWxkcmVuYCBvciBgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgaW5uZXJIVE1MICE9PSAnb2JqZWN0JyB8fCAhKCdfX2h0bWwnIGluIGlubmVySFRNTCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBtdXN0IGJlIGluIHRoZSBmb3JtIGB7X19odG1sOiAuLi59YC4gJyArICdQbGVhc2UgdmlzaXQgaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL2Rhbmdlcm91c2x5LXNldC1pbm5lci1odG1sICcgKyAnZm9yIG1vcmUgaW5mb3JtYXRpb24uJyk7XG4gICAgfVxuXG4gICAgdmFyIGh0bWwgPSBpbm5lckhUTUwuX19odG1sO1xuXG4gICAgaWYgKGh0bWwgIT09IG51bGwgJiYgaHRtbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB7XG4gICAgICAgIGNoZWNrSHRtbFN0cmluZ0NvZXJjaW9uKGh0bWwpO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXQucHVzaChzdHJpbmdUb0NodW5rKCcnICsgaHRtbCkpO1xuICAgIH1cbiAgfVxufSAvLyBUT0RPOiBNb3ZlIHRoZXNlIHRvIFJlc3BvbnNlU3RhdGUgc28gdGhhdCB3ZSB3YXJuIGZvciBldmVyeSByZXF1ZXN0LlxuLy8gSXQgd291bGQgaGVscCBkZWJ1Z2dpbmcgaW4gc3RhdGVmdWwgc2VydmVycyAoZS5nLiBzZXJ2aWNlIHdvcmtlcikuXG5cblxudmFyIGRpZFdhcm5EZWZhdWx0SW5wdXRWYWx1ZSA9IGZhbHNlO1xudmFyIGRpZFdhcm5EZWZhdWx0Q2hlY2tlZCA9IGZhbHNlO1xudmFyIGRpZFdhcm5EZWZhdWx0U2VsZWN0VmFsdWUgPSBmYWxzZTtcbnZhciBkaWRXYXJuRGVmYXVsdFRleHRhcmVhVmFsdWUgPSBmYWxzZTtcbnZhciBkaWRXYXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuID0gZmFsc2U7XG52YXIgZGlkV2FybkludmFsaWRPcHRpb25Jbm5lckhUTUwgPSBmYWxzZTtcbnZhciBkaWRXYXJuU2VsZWN0ZWRTZXRPbk9wdGlvbiA9IGZhbHNlO1xuXG5mdW5jdGlvbiBjaGVja1NlbGVjdFByb3AocHJvcHMsIHByb3BOYW1lKSB7XG4gIHtcbiAgICB2YXIgdmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG5cbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgdmFyIGFycmF5ID0gaXNBcnJheSh2YWx1ZSk7XG5cbiAgICAgIGlmIChwcm9wcy5tdWx0aXBsZSAmJiAhYXJyYXkpIHtcbiAgICAgICAgZXJyb3IoJ1RoZSBgJXNgIHByb3Agc3VwcGxpZWQgdG8gPHNlbGVjdD4gbXVzdCBiZSBhbiBhcnJheSBpZiAnICsgJ2BtdWx0aXBsZWAgaXMgdHJ1ZS4nLCBwcm9wTmFtZSk7XG4gICAgICB9IGVsc2UgaWYgKCFwcm9wcy5tdWx0aXBsZSAmJiBhcnJheSkge1xuICAgICAgICBlcnJvcignVGhlIGAlc2AgcHJvcCBzdXBwbGllZCB0byA8c2VsZWN0PiBtdXN0IGJlIGEgc2NhbGFyICcgKyAndmFsdWUgaWYgYG11bHRpcGxlYCBpcyBmYWxzZS4nLCBwcm9wTmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHB1c2hTdGFydFNlbGVjdCh0YXJnZXQsIHByb3BzLCByZXNwb25zZVN0YXRlKSB7XG4gIHtcbiAgICBjaGVja0NvbnRyb2xsZWRWYWx1ZVByb3BzKCdzZWxlY3QnLCBwcm9wcyk7XG4gICAgY2hlY2tTZWxlY3RQcm9wKHByb3BzLCAndmFsdWUnKTtcbiAgICBjaGVja1NlbGVjdFByb3AocHJvcHMsICdkZWZhdWx0VmFsdWUnKTtcblxuICAgIGlmIChwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuRGVmYXVsdFNlbGVjdFZhbHVlKSB7XG4gICAgICBlcnJvcignU2VsZWN0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBzZWxlY3QgJyArICdlbGVtZW50IGFuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86ICcgKyAnaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL2NvbnRyb2xsZWQtY29tcG9uZW50cycpO1xuXG4gICAgICBkaWRXYXJuRGVmYXVsdFNlbGVjdFZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB0YXJnZXQucHVzaChzdGFydENodW5rRm9yVGFnKCdzZWxlY3QnKSk7XG4gIHZhciBjaGlsZHJlbiA9IG51bGw7XG4gIHZhciBpbm5lckhUTUwgPSBudWxsO1xuXG4gIGZvciAodmFyIHByb3BLZXkgaW4gcHJvcHMpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgcHJvcEtleSkpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wS2V5XTtcblxuICAgICAgaWYgKHByb3BWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHByb3BLZXkpIHtcbiAgICAgICAgY2FzZSAnY2hpbGRyZW4nOlxuICAgICAgICAgIGNoaWxkcmVuID0gcHJvcFZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJzpcbiAgICAgICAgICAvLyBUT0RPOiBUaGlzIGRvZXNuJ3QgcmVhbGx5IG1ha2Ugc2Vuc2UgZm9yIHNlbGVjdCBzaW5jZSBpdCBjYW4ndCB1c2UgdGhlIGNvbnRyb2xsZWRcbiAgICAgICAgICAvLyB2YWx1ZSBpbiB0aGUgaW5uZXJIVE1MLlxuICAgICAgICAgIGlubmVySFRNTCA9IHByb3BWYWx1ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdkZWZhdWx0VmFsdWUnOlxuICAgICAgICBjYXNlICd2YWx1ZSc6XG4gICAgICAgICAgLy8gVGhlc2UgYXJlIHNldCBvbiB0aGUgQ29udGV4dCBpbnN0ZWFkIGFuZCBhcHBsaWVkIHRvIHRoZSBuZXN0ZWQgb3B0aW9ucy5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0LCByZXNwb25zZVN0YXRlLCBwcm9wS2V5LCBwcm9wVmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRhcmdldC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICBwdXNoSW5uZXJIVE1MKHRhcmdldCwgaW5uZXJIVE1MLCBjaGlsZHJlbik7XG4gIHJldHVybiBjaGlsZHJlbjtcbn1cblxuZnVuY3Rpb24gZmxhdHRlbk9wdGlvbkNoaWxkcmVuKGNoaWxkcmVuKSB7XG4gIHZhciBjb250ZW50ID0gJyc7IC8vIEZsYXR0ZW4gY2hpbGRyZW4gYW5kIHdhcm4gaWYgdGhleSBhcmVuJ3Qgc3RyaW5ncyBvciBudW1iZXJzO1xuICAvLyBpbnZhbGlkIHR5cGVzIGFyZSBpZ25vcmVkLlxuXG4gIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIGlmIChjaGlsZCA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29udGVudCArPSBjaGlsZDtcblxuICAgIHtcbiAgICAgIGlmICghZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJlbiAmJiB0eXBlb2YgY2hpbGQgIT09ICdzdHJpbmcnICYmIHR5cGVvZiBjaGlsZCAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJlbiA9IHRydWU7XG5cbiAgICAgICAgZXJyb3IoJ0Nhbm5vdCBpbmZlciB0aGUgb3B0aW9uIHZhbHVlIG9mIGNvbXBsZXggY2hpbGRyZW4uICcgKyAnUGFzcyBhIGB2YWx1ZWAgcHJvcCBvciB1c2UgYSBwbGFpbiBzdHJpbmcgYXMgY2hpbGRyZW4gdG8gPG9wdGlvbj4uJyk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5cbnZhciBzZWxlY3RlZE1hcmtlckF0dHJpYnV0ZSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnIHNlbGVjdGVkPVwiXCInKTtcblxuZnVuY3Rpb24gcHVzaFN0YXJ0T3B0aW9uKHRhcmdldCwgcHJvcHMsIHJlc3BvbnNlU3RhdGUsIGZvcm1hdENvbnRleHQpIHtcbiAgdmFyIHNlbGVjdGVkVmFsdWUgPSBmb3JtYXRDb250ZXh0LnNlbGVjdGVkVmFsdWU7XG4gIHRhcmdldC5wdXNoKHN0YXJ0Q2h1bmtGb3JUYWcoJ29wdGlvbicpKTtcbiAgdmFyIGNoaWxkcmVuID0gbnVsbDtcbiAgdmFyIHZhbHVlID0gbnVsbDtcbiAgdmFyIHNlbGVjdGVkID0gbnVsbDtcbiAgdmFyIGlubmVySFRNTCA9IG51bGw7XG5cbiAgZm9yICh2YXIgcHJvcEtleSBpbiBwcm9wcykge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5KSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuXG4gICAgICBpZiAocHJvcFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAocHJvcEtleSkge1xuICAgICAgICBjYXNlICdjaGlsZHJlbic6XG4gICAgICAgICAgY2hpbGRyZW4gPSBwcm9wVmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnc2VsZWN0ZWQnOlxuICAgICAgICAgIC8vIGlnbm9yZVxuICAgICAgICAgIHNlbGVjdGVkID0gcHJvcFZhbHVlO1xuXG4gICAgICAgICAge1xuICAgICAgICAgICAgLy8gVE9ETzogUmVtb3ZlIHN1cHBvcnQgZm9yIGBzZWxlY3RlZGAgaW4gPG9wdGlvbj4uXG4gICAgICAgICAgICBpZiAoIWRpZFdhcm5TZWxlY3RlZFNldE9uT3B0aW9uKSB7XG4gICAgICAgICAgICAgIGVycm9yKCdVc2UgdGhlIGBkZWZhdWx0VmFsdWVgIG9yIGB2YWx1ZWAgcHJvcHMgb24gPHNlbGVjdD4gaW5zdGVhZCBvZiAnICsgJ3NldHRpbmcgYHNlbGVjdGVkYCBvbiA8b3B0aW9uPi4nKTtcblxuICAgICAgICAgICAgICBkaWRXYXJuU2VsZWN0ZWRTZXRPbk9wdGlvbiA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnOlxuICAgICAgICAgIGlubmVySFRNTCA9IHByb3BWYWx1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lLW5vLWZhbGx0aHJvdWdoXG5cbiAgICAgICAgY2FzZSAndmFsdWUnOlxuICAgICAgICAgIHZhbHVlID0gcHJvcFZhbHVlO1xuICAgICAgICAvLyBXZSBpbnRlbnRpb25hbGx5IGZhbGx0aHJvdWdoIHRvIGFsc28gc2V0IHRoZSBhdHRyaWJ1dGUgb24gdGhlIG5vZGUuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZS1uby1mYWxsdGhyb3VnaFxuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIHJlc3BvbnNlU3RhdGUsIHByb3BLZXksIHByb3BWYWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHNlbGVjdGVkVmFsdWUgIT0gbnVsbCkge1xuICAgIHZhciBzdHJpbmdWYWx1ZTtcblxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAge1xuICAgICAgICBjaGVja0F0dHJpYnV0ZVN0cmluZ0NvZXJjaW9uKHZhbHVlLCAndmFsdWUnKTtcbiAgICAgIH1cblxuICAgICAgc3RyaW5nVmFsdWUgPSAnJyArIHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB7XG4gICAgICAgIGlmIChpbm5lckhUTUwgIT09IG51bGwpIHtcbiAgICAgICAgICBpZiAoIWRpZFdhcm5JbnZhbGlkT3B0aW9uSW5uZXJIVE1MKSB7XG4gICAgICAgICAgICBkaWRXYXJuSW52YWxpZE9wdGlvbklubmVySFRNTCA9IHRydWU7XG5cbiAgICAgICAgICAgIGVycm9yKCdQYXNzIGEgYHZhbHVlYCBwcm9wIGlmIHlvdSBzZXQgZGFuZ2Vyb3VzbHlJbm5lckhUTUwgc28gUmVhY3Qga25vd3MgJyArICd3aGljaCB2YWx1ZSBzaG91bGQgYmUgc2VsZWN0ZWQuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN0cmluZ1ZhbHVlID0gZmxhdHRlbk9wdGlvbkNoaWxkcmVuKGNoaWxkcmVuKTtcbiAgICB9XG5cbiAgICBpZiAoaXNBcnJheShzZWxlY3RlZFZhbHVlKSkge1xuICAgICAgLy8gbXVsdGlwbGVcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0ZWRWYWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICB7XG4gICAgICAgICAgY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbihzZWxlY3RlZFZhbHVlW2ldLCAndmFsdWUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB2ID0gJycgKyBzZWxlY3RlZFZhbHVlW2ldO1xuXG4gICAgICAgIGlmICh2ID09PSBzdHJpbmdWYWx1ZSkge1xuICAgICAgICAgIHRhcmdldC5wdXNoKHNlbGVjdGVkTWFya2VyQXR0cmlidXRlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB7XG4gICAgICAgIGNoZWNrQXR0cmlidXRlU3RyaW5nQ29lcmNpb24oc2VsZWN0ZWRWYWx1ZSwgJ3NlbGVjdC52YWx1ZScpO1xuICAgICAgfVxuXG4gICAgICBpZiAoJycgKyBzZWxlY3RlZFZhbHVlID09PSBzdHJpbmdWYWx1ZSkge1xuICAgICAgICB0YXJnZXQucHVzaChzZWxlY3RlZE1hcmtlckF0dHJpYnV0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKHNlbGVjdGVkKSB7XG4gICAgdGFyZ2V0LnB1c2goc2VsZWN0ZWRNYXJrZXJBdHRyaWJ1dGUpO1xuICB9XG5cbiAgdGFyZ2V0LnB1c2goZW5kT2ZTdGFydFRhZyk7XG4gIHB1c2hJbm5lckhUTUwodGFyZ2V0LCBpbm5lckhUTUwsIGNoaWxkcmVuKTtcbiAgcmV0dXJuIGNoaWxkcmVuO1xufVxuXG5mdW5jdGlvbiBwdXNoSW5wdXQodGFyZ2V0LCBwcm9wcywgcmVzcG9uc2VTdGF0ZSkge1xuICB7XG4gICAgY2hlY2tDb250cm9sbGVkVmFsdWVQcm9wcygnaW5wdXQnLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMuY2hlY2tlZCAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRlZmF1bHRDaGVja2VkICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5EZWZhdWx0Q2hlY2tlZCkge1xuICAgICAgZXJyb3IoJyVzIGNvbnRhaW5zIGFuIGlucHV0IG9mIHR5cGUgJXMgd2l0aCBib3RoIGNoZWNrZWQgYW5kIGRlZmF1bHRDaGVja2VkIHByb3BzLiAnICsgJ0lucHV0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSBjaGVja2VkIHByb3AsIG9yIHRoZSBkZWZhdWx0Q2hlY2tlZCBwcm9wLCBidXQgbm90ICcgKyAnYm90aCkuIERlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGFuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86ICcgKyAnaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL2NvbnRyb2xsZWQtY29tcG9uZW50cycsICdBIGNvbXBvbmVudCcsIHByb3BzLnR5cGUpO1xuXG4gICAgICBkaWRXYXJuRGVmYXVsdENoZWNrZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuRGVmYXVsdElucHV0VmFsdWUpIHtcbiAgICAgIGVycm9yKCclcyBjb250YWlucyBhbiBpbnB1dCBvZiB0eXBlICVzIHdpdGggYm90aCB2YWx1ZSBhbmQgZGVmYXVsdFZhbHVlIHByb3BzLiAnICsgJ0lucHV0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL3JlYWN0anMub3JnL2xpbmsvY29udHJvbGxlZC1jb21wb25lbnRzJywgJ0EgY29tcG9uZW50JywgcHJvcHMudHlwZSk7XG5cbiAgICAgIGRpZFdhcm5EZWZhdWx0SW5wdXRWYWx1ZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgdGFyZ2V0LnB1c2goc3RhcnRDaHVua0ZvclRhZygnaW5wdXQnKSk7XG4gIHZhciB2YWx1ZSA9IG51bGw7XG4gIHZhciBkZWZhdWx0VmFsdWUgPSBudWxsO1xuICB2YXIgY2hlY2tlZCA9IG51bGw7XG4gIHZhciBkZWZhdWx0Q2hlY2tlZCA9IG51bGw7XG5cbiAgZm9yICh2YXIgcHJvcEtleSBpbiBwcm9wcykge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5KSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuXG4gICAgICBpZiAocHJvcFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAocHJvcEtleSkge1xuICAgICAgICBjYXNlICdjaGlsZHJlbic6XG4gICAgICAgIGNhc2UgJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJzpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2lucHV0JyArIFwiIGlzIGEgc2VsZi1jbG9zaW5nIHRhZyBhbmQgbXVzdCBuZWl0aGVyIGhhdmUgYGNoaWxkcmVuYCBub3IgXCIgKyAndXNlIGBkYW5nZXJvdXNseVNldElubmVySFRNTGAuJyk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZS1uby1mYWxsdGhyb3VnaFxuXG4gICAgICAgIGNhc2UgJ2RlZmF1bHRDaGVja2VkJzpcbiAgICAgICAgICBkZWZhdWx0Q2hlY2tlZCA9IHByb3BWYWx1ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdkZWZhdWx0VmFsdWUnOlxuICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHByb3BWYWx1ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdjaGVja2VkJzpcbiAgICAgICAgICBjaGVja2VkID0gcHJvcFZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgICAgICB2YWx1ZSA9IHByb3BWYWx1ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0LCByZXNwb25zZVN0YXRlLCBwcm9wS2V5LCBwcm9wVmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChjaGVja2VkICE9PSBudWxsKSB7XG4gICAgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIHJlc3BvbnNlU3RhdGUsICdjaGVja2VkJywgY2hlY2tlZCk7XG4gIH0gZWxzZSBpZiAoZGVmYXVsdENoZWNrZWQgIT09IG51bGwpIHtcbiAgICBwdXNoQXR0cmlidXRlKHRhcmdldCwgcmVzcG9uc2VTdGF0ZSwgJ2NoZWNrZWQnLCBkZWZhdWx0Q2hlY2tlZCk7XG4gIH1cblxuICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICBwdXNoQXR0cmlidXRlKHRhcmdldCwgcmVzcG9uc2VTdGF0ZSwgJ3ZhbHVlJywgdmFsdWUpO1xuICB9IGVsc2UgaWYgKGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCkge1xuICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0LCByZXNwb25zZVN0YXRlLCAndmFsdWUnLCBkZWZhdWx0VmFsdWUpO1xuICB9XG5cbiAgdGFyZ2V0LnB1c2goZW5kT2ZTdGFydFRhZ1NlbGZDbG9zaW5nKTtcbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIHB1c2hTdGFydFRleHRBcmVhKHRhcmdldCwgcHJvcHMsIHJlc3BvbnNlU3RhdGUpIHtcbiAge1xuICAgIGNoZWNrQ29udHJvbGxlZFZhbHVlUHJvcHMoJ3RleHRhcmVhJywgcHJvcHMpO1xuXG4gICAgaWYgKHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5EZWZhdWx0VGV4dGFyZWFWYWx1ZSkge1xuICAgICAgZXJyb3IoJ1RleHRhcmVhIGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCB0ZXh0YXJlYSAnICsgJ2FuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86ICcgKyAnaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL2NvbnRyb2xsZWQtY29tcG9uZW50cycpO1xuXG4gICAgICBkaWRXYXJuRGVmYXVsdFRleHRhcmVhVmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHRhcmdldC5wdXNoKHN0YXJ0Q2h1bmtGb3JUYWcoJ3RleHRhcmVhJykpO1xuICB2YXIgdmFsdWUgPSBudWxsO1xuICB2YXIgZGVmYXVsdFZhbHVlID0gbnVsbDtcbiAgdmFyIGNoaWxkcmVuID0gbnVsbDtcblxuICBmb3IgKHZhciBwcm9wS2V5IGluIHByb3BzKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkpKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcEtleV07XG5cbiAgICAgIGlmIChwcm9wVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChwcm9wS2V5KSB7XG4gICAgICAgIGNhc2UgJ2NoaWxkcmVuJzpcbiAgICAgICAgICBjaGlsZHJlbiA9IHByb3BWYWx1ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICd2YWx1ZSc6XG4gICAgICAgICAgdmFsdWUgPSBwcm9wVmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZGVmYXVsdFZhbHVlJzpcbiAgICAgICAgICBkZWZhdWx0VmFsdWUgPSBwcm9wVmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBkb2VzIG5vdCBtYWtlIHNlbnNlIG9uIDx0ZXh0YXJlYT4uJyk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZS1uby1mYWxsdGhyb3VnaFxuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIHJlc3BvbnNlU3RhdGUsIHByb3BLZXksIHByb3BWYWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHZhbHVlID09PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCkge1xuICAgIHZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgdGFyZ2V0LnB1c2goZW5kT2ZTdGFydFRhZyk7IC8vIFRPRE8gKHl1bmdzdGVycyk6IFJlbW92ZSBzdXBwb3J0IGZvciBjaGlsZHJlbiBjb250ZW50IGluIDx0ZXh0YXJlYT4uXG5cbiAgaWYgKGNoaWxkcmVuICE9IG51bGwpIHtcbiAgICB7XG4gICAgICBlcnJvcignVXNlIHRoZSBgZGVmYXVsdFZhbHVlYCBvciBgdmFsdWVgIHByb3BzIGluc3RlYWQgb2Ygc2V0dGluZyAnICsgJ2NoaWxkcmVuIG9uIDx0ZXh0YXJlYT4uJyk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSWYgeW91IHN1cHBseSBgZGVmYXVsdFZhbHVlYCBvbiBhIDx0ZXh0YXJlYT4sIGRvIG5vdCBwYXNzIGNoaWxkcmVuLicpO1xuICAgIH1cblxuICAgIGlmIChpc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCc8dGV4dGFyZWE+IGNhbiBvbmx5IGhhdmUgYXQgbW9zdCBvbmUgY2hpbGQuJyk7XG4gICAgICB9IC8vIFRPRE86IHJlbW92ZSB0aGUgY29lcmNpb24gYW5kIHRoZSBERVYgY2hlY2sgYmVsb3cgYmVjYXVzZSBpdCB3aWxsXG4gICAgICAvLyBhbHdheXMgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIGNvZXJjaW9uIHNldmVyYWwgbGluZXMgYmVsb3cgaXQuICMyMjMwOVxuXG5cbiAgICAgIHtcbiAgICAgICAgY2hlY2tIdG1sU3RyaW5nQ29lcmNpb24oY2hpbGRyZW5bMF0pO1xuICAgICAgfVxuXG4gICAgICB2YWx1ZSA9ICcnICsgY2hpbGRyZW5bMF07XG4gICAgfVxuXG4gICAge1xuICAgICAgY2hlY2tIdG1sU3RyaW5nQ29lcmNpb24oY2hpbGRyZW4pO1xuICAgIH1cblxuICAgIHZhbHVlID0gJycgKyBjaGlsZHJlbjtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlWzBdID09PSAnXFxuJykge1xuICAgIC8vIHRleHQvaHRtbCBpZ25vcmVzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlc2UgdGFncyBpZiBpdCdzIGEgbmV3bGluZVxuICAgIC8vIFByZWZlciB0byBicmVhayBhcHBsaWNhdGlvbi94bWwgb3ZlciB0ZXh0L2h0bWwgKGZvciBub3cpIGJ5IGFkZGluZ1xuICAgIC8vIGEgbmV3bGluZSBzcGVjaWZpY2FsbHkgdG8gZ2V0IGVhdGVuIGJ5IHRoZSBwYXJzZXIuIChBbHRlcm5hdGVseSBmb3JcbiAgICAvLyB0ZXh0YXJlYXMsIHJlcGxhY2luZyBcIl5cXG5cIiB3aXRoIFwiXFxyXFxuXCIgZG9lc24ndCBnZXQgZWF0ZW4sIGFuZCB0aGUgZmlyc3RcbiAgICAvLyBcXHIgaXMgbm9ybWFsaXplZCBvdXQgYnkgSFRNTFRleHRBcmVhRWxlbWVudCN2YWx1ZS4pXG4gICAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC1wb2x5Z2xvdC8jbmV3bGluZXMtaW4tdGV4dGFyZWEtYW5kLXByZT5cbiAgICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNlbGVtZW50LXJlc3RyaWN0aW9ucz5cbiAgICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNuZXdsaW5lcz5cbiAgICAvLyBTZWU6IFBhcnNpbmcgb2YgXCJ0ZXh0YXJlYVwiIFwibGlzdGluZ1wiIGFuZCBcInByZVwiIGVsZW1lbnRzXG4gICAgLy8gIGZyb20gPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHk+XG4gICAgdGFyZ2V0LnB1c2gobGVhZGluZ05ld2xpbmUpO1xuICB9IC8vIFRvU3RyaW5nIGFuZCBwdXNoIGRpcmVjdGx5IGluc3RlYWQgb2YgcmVjdXJzZSBvdmVyIGNoaWxkcmVuLlxuICAvLyBXZSBkb24ndCByZWFsbHkgc3VwcG9ydCBjb21wbGV4IGNoaWxkcmVuIGluIHRoZSB2YWx1ZSBhbnl3YXkuXG4gIC8vIFRoaXMgYWxzbyBjdXJyZW50bHkgYXZvaWRzIGEgdHJhaWxpbmcgY29tbWVudCBub2RlIHdoaWNoIGJyZWFrcyB0ZXh0YXJlYS5cblxuXG4gIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgIHtcbiAgICAgIGNoZWNrQXR0cmlidXRlU3RyaW5nQ29lcmNpb24odmFsdWUsICd2YWx1ZScpO1xuICAgIH1cblxuICAgIHRhcmdldC5wdXNoKHN0cmluZ1RvQ2h1bmsoZW5jb2RlSFRNTFRleHROb2RlKCcnICsgdmFsdWUpKSk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gcHVzaFNlbGZDbG9zaW5nKHRhcmdldCwgcHJvcHMsIHRhZywgcmVzcG9uc2VTdGF0ZSkge1xuICB0YXJnZXQucHVzaChzdGFydENodW5rRm9yVGFnKHRhZykpO1xuXG4gIGZvciAodmFyIHByb3BLZXkgaW4gcHJvcHMpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgcHJvcEtleSkpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wS2V5XTtcblxuICAgICAgaWYgKHByb3BWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHByb3BLZXkpIHtcbiAgICAgICAgY2FzZSAnY2hpbGRyZW4nOlxuICAgICAgICBjYXNlICdkYW5nZXJvdXNseVNldElubmVySFRNTCc6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRhZyArIFwiIGlzIGEgc2VsZi1jbG9zaW5nIHRhZyBhbmQgbXVzdCBuZWl0aGVyIGhhdmUgYGNoaWxkcmVuYCBub3IgXCIgKyAndXNlIGBkYW5nZXJvdXNseVNldElubmVySFRNTGAuJyk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZS1uby1mYWxsdGhyb3VnaFxuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIHJlc3BvbnNlU3RhdGUsIHByb3BLZXksIHByb3BWYWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGFyZ2V0LnB1c2goZW5kT2ZTdGFydFRhZ1NlbGZDbG9zaW5nKTtcbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIHB1c2hTdGFydE1lbnVJdGVtKHRhcmdldCwgcHJvcHMsIHJlc3BvbnNlU3RhdGUpIHtcbiAgdGFyZ2V0LnB1c2goc3RhcnRDaHVua0ZvclRhZygnbWVudWl0ZW0nKSk7XG5cbiAgZm9yICh2YXIgcHJvcEtleSBpbiBwcm9wcykge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5KSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuXG4gICAgICBpZiAocHJvcFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAocHJvcEtleSkge1xuICAgICAgICBjYXNlICdjaGlsZHJlbic6XG4gICAgICAgIGNhc2UgJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJzpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21lbnVpdGVtcyBjYW5ub3QgaGF2ZSBgY2hpbGRyZW5gIG5vciBgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLicpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUtbm8tZmFsbHRocm91Z2hcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0LCByZXNwb25zZVN0YXRlLCBwcm9wS2V5LCBwcm9wVmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRhcmdldC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gcHVzaFN0YXJ0R2VuZXJpY0VsZW1lbnQodGFyZ2V0LCBwcm9wcywgdGFnLCByZXNwb25zZVN0YXRlKSB7XG4gIHRhcmdldC5wdXNoKHN0YXJ0Q2h1bmtGb3JUYWcodGFnKSk7XG4gIHZhciBjaGlsZHJlbiA9IG51bGw7XG4gIHZhciBpbm5lckhUTUwgPSBudWxsO1xuXG4gIGZvciAodmFyIHByb3BLZXkgaW4gcHJvcHMpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgcHJvcEtleSkpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wS2V5XTtcblxuICAgICAgaWYgKHByb3BWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHByb3BLZXkpIHtcbiAgICAgICAgY2FzZSAnY2hpbGRyZW4nOlxuICAgICAgICAgIGNoaWxkcmVuID0gcHJvcFZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJzpcbiAgICAgICAgICBpbm5lckhUTUwgPSBwcm9wVmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBwdXNoQXR0cmlidXRlKHRhcmdldCwgcmVzcG9uc2VTdGF0ZSwgcHJvcEtleSwgcHJvcFZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0YXJnZXQucHVzaChlbmRPZlN0YXJ0VGFnKTtcbiAgcHVzaElubmVySFRNTCh0YXJnZXQsIGlubmVySFRNTCwgY2hpbGRyZW4pO1xuXG4gIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gU3BlY2lhbCBjYXNlIGNoaWxkcmVuIGFzIGEgc3RyaW5nIHRvIGF2b2lkIHRoZSB1bm5lY2Vzc2FyeSBjb21tZW50LlxuICAgIC8vIFRPRE86IFJlbW92ZSB0aGlzIHNwZWNpYWwgY2FzZSBhZnRlciB0aGUgZ2VuZXJhbCBvcHRpbWl6YXRpb24gaXMgaW4gcGxhY2UuXG4gICAgdGFyZ2V0LnB1c2goc3RyaW5nVG9DaHVuayhlbmNvZGVIVE1MVGV4dE5vZGUoY2hpbGRyZW4pKSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gY2hpbGRyZW47XG59XG5cbmZ1bmN0aW9uIHB1c2hTdGFydEN1c3RvbUVsZW1lbnQodGFyZ2V0LCBwcm9wcywgdGFnLCByZXNwb25zZVN0YXRlKSB7XG4gIHRhcmdldC5wdXNoKHN0YXJ0Q2h1bmtGb3JUYWcodGFnKSk7XG4gIHZhciBjaGlsZHJlbiA9IG51bGw7XG4gIHZhciBpbm5lckhUTUwgPSBudWxsO1xuXG4gIGZvciAodmFyIHByb3BLZXkgaW4gcHJvcHMpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgcHJvcEtleSkpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wS2V5XTtcblxuICAgICAgaWYgKHByb3BWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHByb3BLZXkpIHtcbiAgICAgICAgY2FzZSAnY2hpbGRyZW4nOlxuICAgICAgICAgIGNoaWxkcmVuID0gcHJvcFZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJzpcbiAgICAgICAgICBpbm5lckhUTUwgPSBwcm9wVmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnc3R5bGUnOlxuICAgICAgICAgIHB1c2hTdHlsZSh0YXJnZXQsIHJlc3BvbnNlU3RhdGUsIHByb3BWYWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nJzpcbiAgICAgICAgY2FzZSAnc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nJzpcbiAgICAgICAgICAvLyBJZ25vcmVkLiBUaGVzZSBhcmUgYnVpbHQtaW4gdG8gUmVhY3Qgb24gdGhlIGNsaWVudC5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGlmIChpc0F0dHJpYnV0ZU5hbWVTYWZlKHByb3BLZXkpICYmIHR5cGVvZiBwcm9wVmFsdWUgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHByb3BWYWx1ZSAhPT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgICAgIHRhcmdldC5wdXNoKGF0dHJpYnV0ZVNlcGFyYXRvciwgc3RyaW5nVG9DaHVuayhwcm9wS2V5KSwgYXR0cmlidXRlQXNzaWduLCBzdHJpbmdUb0NodW5rKGVzY2FwZVRleHRGb3JCcm93c2VyKHByb3BWYWx1ZSkpLCBhdHRyaWJ1dGVFbmQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRhcmdldC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICBwdXNoSW5uZXJIVE1MKHRhcmdldCwgaW5uZXJIVE1MLCBjaGlsZHJlbik7XG4gIHJldHVybiBjaGlsZHJlbjtcbn1cblxudmFyIGxlYWRpbmdOZXdsaW5lID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcXG4nKTtcblxuZnVuY3Rpb24gcHVzaFN0YXJ0UHJlZm9ybWF0dGVkRWxlbWVudCh0YXJnZXQsIHByb3BzLCB0YWcsIHJlc3BvbnNlU3RhdGUpIHtcbiAgdGFyZ2V0LnB1c2goc3RhcnRDaHVua0ZvclRhZyh0YWcpKTtcbiAgdmFyIGNoaWxkcmVuID0gbnVsbDtcbiAgdmFyIGlubmVySFRNTCA9IG51bGw7XG5cbiAgZm9yICh2YXIgcHJvcEtleSBpbiBwcm9wcykge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5KSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuXG4gICAgICBpZiAocHJvcFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAocHJvcEtleSkge1xuICAgICAgICBjYXNlICdjaGlsZHJlbic6XG4gICAgICAgICAgY2hpbGRyZW4gPSBwcm9wVmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnOlxuICAgICAgICAgIGlubmVySFRNTCA9IHByb3BWYWx1ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0LCByZXNwb25zZVN0YXRlLCBwcm9wS2V5LCBwcm9wVmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRhcmdldC5wdXNoKGVuZE9mU3RhcnRUYWcpOyAvLyB0ZXh0L2h0bWwgaWdub3JlcyB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZXNlIHRhZ3MgaWYgaXQncyBhIG5ld2xpbmVcbiAgLy8gUHJlZmVyIHRvIGJyZWFrIGFwcGxpY2F0aW9uL3htbCBvdmVyIHRleHQvaHRtbCAoZm9yIG5vdykgYnkgYWRkaW5nXG4gIC8vIGEgbmV3bGluZSBzcGVjaWZpY2FsbHkgdG8gZ2V0IGVhdGVuIGJ5IHRoZSBwYXJzZXIuIChBbHRlcm5hdGVseSBmb3JcbiAgLy8gdGV4dGFyZWFzLCByZXBsYWNpbmcgXCJeXFxuXCIgd2l0aCBcIlxcclxcblwiIGRvZXNuJ3QgZ2V0IGVhdGVuLCBhbmQgdGhlIGZpcnN0XG4gIC8vIFxcciBpcyBub3JtYWxpemVkIG91dCBieSBIVE1MVGV4dEFyZWFFbGVtZW50I3ZhbHVlLilcbiAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC1wb2x5Z2xvdC8jbmV3bGluZXMtaW4tdGV4dGFyZWEtYW5kLXByZT5cbiAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwjZWxlbWVudC1yZXN0cmljdGlvbnM+XG4gIC8vIFNlZTogPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI25ld2xpbmVzPlxuICAvLyBTZWU6IFBhcnNpbmcgb2YgXCJ0ZXh0YXJlYVwiIFwibGlzdGluZ1wiIGFuZCBcInByZVwiIGVsZW1lbnRzXG4gIC8vICBmcm9tIDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5PlxuICAvLyBUT0RPOiBUaGlzIGRvZXNuJ3QgZGVhbCB3aXRoIHRoZSBjYXNlIHdoZXJlIHRoZSBjaGlsZCBpcyBhbiBhcnJheVxuICAvLyBvciBjb21wb25lbnQgdGhhdCByZXR1cm5zIGEgc3RyaW5nLlxuXG4gIGlmIChpbm5lckhUTUwgIT0gbnVsbCkge1xuICAgIGlmIChjaGlsZHJlbiAhPSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbiBvbmx5IHNldCBvbmUgb2YgYGNoaWxkcmVuYCBvciBgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgaW5uZXJIVE1MICE9PSAnb2JqZWN0JyB8fCAhKCdfX2h0bWwnIGluIGlubmVySFRNTCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBtdXN0IGJlIGluIHRoZSBmb3JtIGB7X19odG1sOiAuLi59YC4gJyArICdQbGVhc2UgdmlzaXQgaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL2Rhbmdlcm91c2x5LXNldC1pbm5lci1odG1sICcgKyAnZm9yIG1vcmUgaW5mb3JtYXRpb24uJyk7XG4gICAgfVxuXG4gICAgdmFyIGh0bWwgPSBpbm5lckhUTUwuX19odG1sO1xuXG4gICAgaWYgKGh0bWwgIT09IG51bGwgJiYgaHRtbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIGh0bWwgPT09ICdzdHJpbmcnICYmIGh0bWwubGVuZ3RoID4gMCAmJiBodG1sWzBdID09PSAnXFxuJykge1xuICAgICAgICB0YXJnZXQucHVzaChsZWFkaW5nTmV3bGluZSwgc3RyaW5nVG9DaHVuayhodG1sKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB7XG4gICAgICAgICAgY2hlY2tIdG1sU3RyaW5nQ29lcmNpb24oaHRtbCk7XG4gICAgICAgIH1cblxuICAgICAgICB0YXJnZXQucHVzaChzdHJpbmdUb0NodW5rKCcnICsgaHRtbCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdzdHJpbmcnICYmIGNoaWxkcmVuWzBdID09PSAnXFxuJykge1xuICAgIHRhcmdldC5wdXNoKGxlYWRpbmdOZXdsaW5lKTtcbiAgfVxuXG4gIHJldHVybiBjaGlsZHJlbjtcbn0gLy8gV2UgYWNjZXB0IGFueSB0YWcgdG8gYmUgcmVuZGVyZWQgYnV0IHNpbmNlIHRoaXMgZ2V0cyBpbmplY3RlZCBpbnRvIGFyYml0cmFyeVxuLy8gSFRNTCwgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCBpdCdzIGEgc2FmZSB0YWcuXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sLyNOVC1OYW1lXG5cblxudmFyIFZBTElEX1RBR19SRUdFWCA9IC9eW2EtekEtWl1bYS16QS1aOl9cXC5cXC1cXGRdKiQvOyAvLyBTaW1wbGlmaWVkIHN1YnNldFxuXG52YXIgdmFsaWRhdGVkVGFnQ2FjaGUgPSBuZXcgTWFwKCk7XG5cbmZ1bmN0aW9uIHN0YXJ0Q2h1bmtGb3JUYWcodGFnKSB7XG4gIHZhciB0YWdTdGFydENodW5rID0gdmFsaWRhdGVkVGFnQ2FjaGUuZ2V0KHRhZyk7XG5cbiAgaWYgKHRhZ1N0YXJ0Q2h1bmsgPT09IHVuZGVmaW5lZCkge1xuICAgIGlmICghVkFMSURfVEFHX1JFR0VYLnRlc3QodGFnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB0YWc6IFwiICsgdGFnKTtcbiAgICB9XG5cbiAgICB0YWdTdGFydENodW5rID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8JyArIHRhZyk7XG4gICAgdmFsaWRhdGVkVGFnQ2FjaGUuc2V0KHRhZywgdGFnU3RhcnRDaHVuayk7XG4gIH1cblxuICByZXR1cm4gdGFnU3RhcnRDaHVuaztcbn1cblxudmFyIERPQ1RZUEUgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzwhRE9DVFlQRSBodG1sPicpO1xuZnVuY3Rpb24gcHVzaFN0YXJ0SW5zdGFuY2UodGFyZ2V0LCB0eXBlLCBwcm9wcywgcmVzcG9uc2VTdGF0ZSwgZm9ybWF0Q29udGV4dCkge1xuICB7XG4gICAgdmFsaWRhdGVQcm9wZXJ0aWVzKHR5cGUsIHByb3BzKTtcbiAgICB2YWxpZGF0ZVByb3BlcnRpZXMkMSh0eXBlLCBwcm9wcyk7XG4gICAgdmFsaWRhdGVQcm9wZXJ0aWVzJDIodHlwZSwgcHJvcHMsIG51bGwpO1xuXG4gICAgaWYgKCFwcm9wcy5zdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgJiYgcHJvcHMuY29udGVudEVkaXRhYmxlICYmIHByb3BzLmNoaWxkcmVuICE9IG51bGwpIHtcbiAgICAgIGVycm9yKCdBIGNvbXBvbmVudCBpcyBgY29udGVudEVkaXRhYmxlYCBhbmQgY29udGFpbnMgYGNoaWxkcmVuYCBtYW5hZ2VkIGJ5ICcgKyAnUmVhY3QuIEl0IGlzIG5vdyB5b3VyIHJlc3BvbnNpYmlsaXR5IHRvIGd1YXJhbnRlZSB0aGF0IG5vbmUgb2YgJyArICd0aG9zZSBub2RlcyBhcmUgdW5leHBlY3RlZGx5IG1vZGlmaWVkIG9yIGR1cGxpY2F0ZWQuIFRoaXMgaXMgJyArICdwcm9iYWJseSBub3QgaW50ZW50aW9uYWwuJyk7XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdENvbnRleHQuaW5zZXJ0aW9uTW9kZSAhPT0gU1ZHX01PREUgJiYgZm9ybWF0Q29udGV4dC5pbnNlcnRpb25Nb2RlICE9PSBNQVRITUxfTU9ERSkge1xuICAgICAgaWYgKHR5cGUuaW5kZXhPZignLScpID09PSAtMSAmJiB0eXBlb2YgcHJvcHMuaXMgIT09ICdzdHJpbmcnICYmIHR5cGUudG9Mb3dlckNhc2UoKSAhPT0gdHlwZSkge1xuICAgICAgICBlcnJvcignPCVzIC8+IGlzIHVzaW5nIGluY29ycmVjdCBjYXNpbmcuICcgKyAnVXNlIFBhc2NhbENhc2UgZm9yIFJlYWN0IGNvbXBvbmVudHMsICcgKyAnb3IgbG93ZXJjYXNlIGZvciBIVE1MIGVsZW1lbnRzLicsIHR5cGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIC8vIFNwZWNpYWwgdGFnc1xuICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICByZXR1cm4gcHVzaFN0YXJ0U2VsZWN0KHRhcmdldCwgcHJvcHMsIHJlc3BvbnNlU3RhdGUpO1xuXG4gICAgY2FzZSAnb3B0aW9uJzpcbiAgICAgIHJldHVybiBwdXNoU3RhcnRPcHRpb24odGFyZ2V0LCBwcm9wcywgcmVzcG9uc2VTdGF0ZSwgZm9ybWF0Q29udGV4dCk7XG5cbiAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICByZXR1cm4gcHVzaFN0YXJ0VGV4dEFyZWEodGFyZ2V0LCBwcm9wcywgcmVzcG9uc2VTdGF0ZSk7XG5cbiAgICBjYXNlICdpbnB1dCc6XG4gICAgICByZXR1cm4gcHVzaElucHV0KHRhcmdldCwgcHJvcHMsIHJlc3BvbnNlU3RhdGUpO1xuXG4gICAgY2FzZSAnbWVudWl0ZW0nOlxuICAgICAgcmV0dXJuIHB1c2hTdGFydE1lbnVJdGVtKHRhcmdldCwgcHJvcHMsIHJlc3BvbnNlU3RhdGUpO1xuICAgIC8vIE5ld2xpbmUgZWF0aW5nIHRhZ3NcblxuICAgIGNhc2UgJ2xpc3RpbmcnOlxuICAgIGNhc2UgJ3ByZSc6XG4gICAgICB7XG4gICAgICAgIHJldHVybiBwdXNoU3RhcnRQcmVmb3JtYXR0ZWRFbGVtZW50KHRhcmdldCwgcHJvcHMsIHR5cGUsIHJlc3BvbnNlU3RhdGUpO1xuICAgICAgfVxuICAgIC8vIE9taXR0ZWQgY2xvc2UgdGFnc1xuXG4gICAgY2FzZSAnYXJlYSc6XG4gICAgY2FzZSAnYmFzZSc6XG4gICAgY2FzZSAnYnInOlxuICAgIGNhc2UgJ2NvbCc6XG4gICAgY2FzZSAnZW1iZWQnOlxuICAgIGNhc2UgJ2hyJzpcbiAgICBjYXNlICdpbWcnOlxuICAgIGNhc2UgJ2tleWdlbic6XG4gICAgY2FzZSAnbGluayc6XG4gICAgY2FzZSAnbWV0YSc6XG4gICAgY2FzZSAncGFyYW0nOlxuICAgIGNhc2UgJ3NvdXJjZSc6XG4gICAgY2FzZSAndHJhY2snOlxuICAgIGNhc2UgJ3dicic6XG4gICAgICB7XG4gICAgICAgIHJldHVybiBwdXNoU2VsZkNsb3NpbmcodGFyZ2V0LCBwcm9wcywgdHlwZSwgcmVzcG9uc2VTdGF0ZSk7XG4gICAgICB9XG4gICAgLy8gVGhlc2UgYXJlIHJlc2VydmVkIFNWRyBhbmQgTWF0aE1MIGVsZW1lbnRzLCB0aGF0IGFyZSBuZXZlciBjdXN0b20gZWxlbWVudHMuXG4gICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9jdXN0b20vI2N1c3RvbS1lbGVtZW50cy1jb3JlLWNvbmNlcHRzXG5cbiAgICBjYXNlICdhbm5vdGF0aW9uLXhtbCc6XG4gICAgY2FzZSAnY29sb3ItcHJvZmlsZSc6XG4gICAgY2FzZSAnZm9udC1mYWNlJzpcbiAgICBjYXNlICdmb250LWZhY2Utc3JjJzpcbiAgICBjYXNlICdmb250LWZhY2UtdXJpJzpcbiAgICBjYXNlICdmb250LWZhY2UtZm9ybWF0JzpcbiAgICBjYXNlICdmb250LWZhY2UtbmFtZSc6XG4gICAgY2FzZSAnbWlzc2luZy1nbHlwaCc6XG4gICAgICB7XG4gICAgICAgIHJldHVybiBwdXNoU3RhcnRHZW5lcmljRWxlbWVudCh0YXJnZXQsIHByb3BzLCB0eXBlLCByZXNwb25zZVN0YXRlKTtcbiAgICAgIH1cblxuICAgIGNhc2UgJ2h0bWwnOlxuICAgICAge1xuICAgICAgICBpZiAoZm9ybWF0Q29udGV4dC5pbnNlcnRpb25Nb2RlID09PSBST09UX0hUTUxfTU9ERSkge1xuICAgICAgICAgIC8vIElmIHdlJ3JlIHJlbmRlcmluZyB0aGUgaHRtbCB0YWcgYW5kIHdlJ3JlIGF0IHRoZSByb290IChpLmUuIG5vdCBpbiBmb3JlaWduT2JqZWN0KVxuICAgICAgICAgIC8vIHRoZW4gd2UgYWxzbyBlbWl0IHRoZSBET0NUWVBFIGFzIHBhcnQgb2YgdGhlIHJvb3QgY29udGVudCBhcyBhIGNvbnZlbmllbmNlIGZvclxuICAgICAgICAgIC8vIHJlbmRlcmluZyB0aGUgd2hvbGUgZG9jdW1lbnQuXG4gICAgICAgICAgdGFyZ2V0LnB1c2goRE9DVFlQRSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHVzaFN0YXJ0R2VuZXJpY0VsZW1lbnQodGFyZ2V0LCBwcm9wcywgdHlwZSwgcmVzcG9uc2VTdGF0ZSk7XG4gICAgICB9XG5cbiAgICBkZWZhdWx0OlxuICAgICAge1xuICAgICAgICBpZiAodHlwZS5pbmRleE9mKCctJykgPT09IC0xICYmIHR5cGVvZiBwcm9wcy5pcyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAvLyBHZW5lcmljIGVsZW1lbnRcbiAgICAgICAgICByZXR1cm4gcHVzaFN0YXJ0R2VuZXJpY0VsZW1lbnQodGFyZ2V0LCBwcm9wcywgdHlwZSwgcmVzcG9uc2VTdGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQ3VzdG9tIGVsZW1lbnRcbiAgICAgICAgICByZXR1cm4gcHVzaFN0YXJ0Q3VzdG9tRWxlbWVudCh0YXJnZXQsIHByb3BzLCB0eXBlLCByZXNwb25zZVN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG59XG52YXIgZW5kVGFnMSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPC8nKTtcbnZhciBlbmRUYWcyID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc+Jyk7XG5mdW5jdGlvbiBwdXNoRW5kSW5zdGFuY2UodGFyZ2V0LCB0eXBlLCBwcm9wcykge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAvLyBPbWl0dGVkIGNsb3NlIHRhZ3NcbiAgICAvLyBUT0RPOiBJbnN0ZWFkIG9mIHJlcGVhdGluZyB0aGlzIHN3aXRjaCB3ZSBjb3VsZCB0cnkgdG8gcGFzcyBhIGZsYWcgZnJvbSBhYm92ZS5cbiAgICAvLyBUaGF0IHdvdWxkIHJlcXVpcmUgcmV0dXJuaW5nIGEgdHVwbGUuIFdoaWNoIG1pZ2h0IGJlIG9rIGlmIGl0IGdldHMgaW5saW5lZC5cbiAgICBjYXNlICdhcmVhJzpcbiAgICBjYXNlICdiYXNlJzpcbiAgICBjYXNlICdicic6XG4gICAgY2FzZSAnY29sJzpcbiAgICBjYXNlICdlbWJlZCc6XG4gICAgY2FzZSAnaHInOlxuICAgIGNhc2UgJ2ltZyc6XG4gICAgY2FzZSAnaW5wdXQnOlxuICAgIGNhc2UgJ2tleWdlbic6XG4gICAgY2FzZSAnbGluayc6XG4gICAgY2FzZSAnbWV0YSc6XG4gICAgY2FzZSAncGFyYW0nOlxuICAgIGNhc2UgJ3NvdXJjZSc6XG4gICAgY2FzZSAndHJhY2snOlxuICAgIGNhc2UgJ3dicic6XG4gICAgICB7XG4gICAgICAgIC8vIE5vIGNsb3NlIHRhZyBuZWVkZWQuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHtcbiAgICAgICAgdGFyZ2V0LnB1c2goZW5kVGFnMSwgc3RyaW5nVG9DaHVuayh0eXBlKSwgZW5kVGFnMik7XG4gICAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIHdyaXRlQ29tcGxldGVkUm9vdChkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZSkge1xuICB2YXIgYm9vdHN0cmFwQ2h1bmtzID0gcmVzcG9uc2VTdGF0ZS5ib290c3RyYXBDaHVua3M7XG4gIHZhciBpID0gMDtcblxuICBmb3IgKDsgaSA8IGJvb3RzdHJhcENodW5rcy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBib290c3RyYXBDaHVua3NbaV0pO1xuICB9XG5cbiAgaWYgKGkgPCBib290c3RyYXBDaHVua3MubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGJvb3RzdHJhcENodW5rc1tpXSk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn0gLy8gU3RydWN0dXJhbCBOb2Rlc1xuLy8gQSBwbGFjZWhvbGRlciBpcyBhIG5vZGUgaW5zaWRlIGEgaGlkZGVuIHBhcnRpYWwgdHJlZSB0aGF0IGNhbiBiZSBmaWxsZWQgaW4gbGF0ZXIsIGJ1dCBiZWZvcmVcbi8vIGRpc3BsYXkuIEl0J3MgbmV2ZXIgdmlzaWJsZSB0byB1c2Vycy4gV2UgdXNlIHRoZSB0ZW1wbGF0ZSB0YWcgYmVjYXVzZSBpdCBjYW4gYmUgdXNlZCBpbiBldmVyeVxuLy8gdHlwZSBvZiBwYXJlbnQuIDxzY3JpcHQ+IHRhZ3MgYWxzbyB3b3JrIGluIGV2ZXJ5IG90aGVyIHRhZyBleGNlcHQgPGNvbGdyb3VwPi5cblxudmFyIHBsYWNlaG9sZGVyMSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPHRlbXBsYXRlIGlkPVwiJyk7XG52YXIgcGxhY2Vob2xkZXIyID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIj48L3RlbXBsYXRlPicpO1xuZnVuY3Rpb24gd3JpdGVQbGFjZWhvbGRlcihkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZSwgaWQpIHtcbiAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgcGxhY2Vob2xkZXIxKTtcbiAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZS5wbGFjZWhvbGRlclByZWZpeCk7XG4gIHZhciBmb3JtYXR0ZWRJRCA9IHN0cmluZ1RvQ2h1bmsoaWQudG9TdHJpbmcoMTYpKTtcbiAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgZm9ybWF0dGVkSUQpO1xuICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgcGxhY2Vob2xkZXIyKTtcbn0gLy8gU3VzcGVuc2UgYm91bmRhcmllcyBhcmUgZW5jb2RlZCBhcyBjb21tZW50cy5cblxudmFyIHN0YXJ0Q29tcGxldGVkU3VzcGVuc2VCb3VuZGFyeSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPCEtLSQtLT4nKTtcbnZhciBzdGFydFBlbmRpbmdTdXNwZW5zZUJvdW5kYXJ5MSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPCEtLSQ/LS0+PHRlbXBsYXRlIGlkPVwiJyk7XG52YXIgc3RhcnRQZW5kaW5nU3VzcGVuc2VCb3VuZGFyeTIgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiPjwvdGVtcGxhdGU+Jyk7XG52YXIgc3RhcnRDbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnkgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzwhLS0kIS0tPicpO1xudmFyIGVuZFN1c3BlbnNlQm91bmRhcnkgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzwhLS0vJC0tPicpO1xuZnVuY3Rpb24gd3JpdGVTdGFydENvbXBsZXRlZFN1c3BlbnNlQm91bmRhcnkoZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUpIHtcbiAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIHN0YXJ0Q29tcGxldGVkU3VzcGVuc2VCb3VuZGFyeSk7XG59XG5mdW5jdGlvbiB3cml0ZVN0YXJ0UGVuZGluZ1N1c3BlbnNlQm91bmRhcnkoZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUsIGlkKSB7XG4gIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0YXJ0UGVuZGluZ1N1c3BlbnNlQm91bmRhcnkxKTtcblxuICBpZiAoaWQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FuIElEIG11c3QgaGF2ZSBiZWVuIGFzc2lnbmVkIGJlZm9yZSB3ZSBjYW4gY29tcGxldGUgdGhlIGJvdW5kYXJ5LicpO1xuICB9XG5cbiAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgaWQpO1xuICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgc3RhcnRQZW5kaW5nU3VzcGVuc2VCb3VuZGFyeTIpO1xufVxuZnVuY3Rpb24gd3JpdGVTdGFydENsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeShkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZSkge1xuICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgc3RhcnRDbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnkpO1xufVxuZnVuY3Rpb24gd3JpdGVFbmRDb21wbGV0ZWRTdXNwZW5zZUJvdW5kYXJ5KGRlc3RpbmF0aW9uLCByZXNwb25zZVN0YXRlKSB7XG4gIHJldHVybiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBlbmRTdXNwZW5zZUJvdW5kYXJ5KTtcbn1cbmZ1bmN0aW9uIHdyaXRlRW5kUGVuZGluZ1N1c3BlbnNlQm91bmRhcnkoZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUpIHtcbiAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGVuZFN1c3BlbnNlQm91bmRhcnkpO1xufVxuZnVuY3Rpb24gd3JpdGVFbmRDbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnkoZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUpIHtcbiAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGVuZFN1c3BlbnNlQm91bmRhcnkpO1xufVxudmFyIHN0YXJ0U2VnbWVudEhUTUwgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzxkaXYgaGlkZGVuIGlkPVwiJyk7XG52YXIgc3RhcnRTZWdtZW50SFRNTDIgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiPicpO1xudmFyIGVuZFNlZ21lbnRIVE1MID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8L2Rpdj4nKTtcbnZhciBzdGFydFNlZ21lbnRTVkcgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzxzdmcgYXJpYS1oaWRkZW49XCJ0cnVlXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIiBpZD1cIicpO1xudmFyIHN0YXJ0U2VnbWVudFNWRzIgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiPicpO1xudmFyIGVuZFNlZ21lbnRTVkcgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzwvc3ZnPicpO1xudmFyIHN0YXJ0U2VnbWVudE1hdGhNTCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPG1hdGggYXJpYS1oaWRkZW49XCJ0cnVlXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIiBpZD1cIicpO1xudmFyIHN0YXJ0U2VnbWVudE1hdGhNTDIgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiPicpO1xudmFyIGVuZFNlZ21lbnRNYXRoTUwgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzwvbWF0aD4nKTtcbnZhciBzdGFydFNlZ21lbnRUYWJsZSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPHRhYmxlIGhpZGRlbiBpZD1cIicpO1xudmFyIHN0YXJ0U2VnbWVudFRhYmxlMiA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCI+Jyk7XG52YXIgZW5kU2VnbWVudFRhYmxlID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8L3RhYmxlPicpO1xudmFyIHN0YXJ0U2VnbWVudFRhYmxlQm9keSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPHRhYmxlIGhpZGRlbj48dGJvZHkgaWQ9XCInKTtcbnZhciBzdGFydFNlZ21lbnRUYWJsZUJvZHkyID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIj4nKTtcbnZhciBlbmRTZWdtZW50VGFibGVCb2R5ID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8L3Rib2R5PjwvdGFibGU+Jyk7XG52YXIgc3RhcnRTZWdtZW50VGFibGVSb3cgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzx0YWJsZSBoaWRkZW4+PHRyIGlkPVwiJyk7XG52YXIgc3RhcnRTZWdtZW50VGFibGVSb3cyID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIj4nKTtcbnZhciBlbmRTZWdtZW50VGFibGVSb3cgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzwvdHI+PC90YWJsZT4nKTtcbnZhciBzdGFydFNlZ21lbnRDb2xHcm91cCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPHRhYmxlIGhpZGRlbj48Y29sZ3JvdXAgaWQ9XCInKTtcbnZhciBzdGFydFNlZ21lbnRDb2xHcm91cDIgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiPicpO1xudmFyIGVuZFNlZ21lbnRDb2xHcm91cCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPC9jb2xncm91cD48L3RhYmxlPicpO1xuZnVuY3Rpb24gd3JpdGVTdGFydFNlZ21lbnQoZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUsIGZvcm1hdENvbnRleHQsIGlkKSB7XG4gIHN3aXRjaCAoZm9ybWF0Q29udGV4dC5pbnNlcnRpb25Nb2RlKSB7XG4gICAgY2FzZSBST09UX0hUTUxfTU9ERTpcbiAgICBjYXNlIEhUTUxfTU9ERTpcbiAgICAgIHtcbiAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgc3RhcnRTZWdtZW50SFRNTCk7XG4gICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUuc2VnbWVudFByZWZpeCk7XG4gICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0cmluZ1RvQ2h1bmsoaWQudG9TdHJpbmcoMTYpKSk7XG4gICAgICAgIHJldHVybiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRIVE1MMik7XG4gICAgICB9XG5cbiAgICBjYXNlIFNWR19NT0RFOlxuICAgICAge1xuICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRTVkcpO1xuICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCByZXNwb25zZVN0YXRlLnNlZ21lbnRQcmVmaXgpO1xuICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBzdHJpbmdUb0NodW5rKGlkLnRvU3RyaW5nKDE2KSkpO1xuICAgICAgICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgc3RhcnRTZWdtZW50U1ZHMik7XG4gICAgICB9XG5cbiAgICBjYXNlIE1BVEhNTF9NT0RFOlxuICAgICAge1xuICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRNYXRoTUwpO1xuICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCByZXNwb25zZVN0YXRlLnNlZ21lbnRQcmVmaXgpO1xuICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBzdHJpbmdUb0NodW5rKGlkLnRvU3RyaW5nKDE2KSkpO1xuICAgICAgICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgc3RhcnRTZWdtZW50TWF0aE1MMik7XG4gICAgICB9XG5cbiAgICBjYXNlIEhUTUxfVEFCTEVfTU9ERTpcbiAgICAgIHtcbiAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgc3RhcnRTZWdtZW50VGFibGUpO1xuICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCByZXNwb25zZVN0YXRlLnNlZ21lbnRQcmVmaXgpO1xuICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBzdHJpbmdUb0NodW5rKGlkLnRvU3RyaW5nKDE2KSkpO1xuICAgICAgICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgc3RhcnRTZWdtZW50VGFibGUyKTtcbiAgICAgIH1cbiAgICAvLyBUT0RPOiBGb3IgdGhlIHJlc3Qgb2YgdGhlc2UsIHRoZXJlIHdpbGwgYmUgZXh0cmEgd3JhcHBlciBub2RlcyB0aGF0IG5ldmVyXG4gICAgLy8gZ2V0IGRlbGV0ZWQgZnJvbSB0aGUgZG9jdW1lbnQuIFdlIG5lZWQgdG8gZGVsZXRlIHRoZSB0YWJsZSB0b28gYXMgcGFydFxuICAgIC8vIG9mIHRoZSBpbmplY3RlZCBzY3JpcHRzLiBUaGV5IGFyZSBpbnZpc2libGUgdGhvdWdoIHNvIGl0J3Mgbm90IHRvbyB0ZXJyaWJsZVxuICAgIC8vIGFuZCBpdCdzIGtpbmQgb2YgYW4gZWRnZSBjYXNlIHRvIHN1c3BlbmQgaW4gYSB0YWJsZS4gVG90YWxseSBzdXBwb3J0ZWQgdGhvdWdoLlxuXG4gICAgY2FzZSBIVE1MX1RBQkxFX0JPRFlfTU9ERTpcbiAgICAgIHtcbiAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgc3RhcnRTZWdtZW50VGFibGVCb2R5KTtcbiAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZS5zZWdtZW50UHJlZml4KTtcbiAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgc3RyaW5nVG9DaHVuayhpZC50b1N0cmluZygxNikpKTtcbiAgICAgICAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIHN0YXJ0U2VnbWVudFRhYmxlQm9keTIpO1xuICAgICAgfVxuXG4gICAgY2FzZSBIVE1MX1RBQkxFX1JPV19NT0RFOlxuICAgICAge1xuICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRUYWJsZVJvdyk7XG4gICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUuc2VnbWVudFByZWZpeCk7XG4gICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0cmluZ1RvQ2h1bmsoaWQudG9TdHJpbmcoMTYpKSk7XG4gICAgICAgIHJldHVybiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRUYWJsZVJvdzIpO1xuICAgICAgfVxuXG4gICAgY2FzZSBIVE1MX0NPTEdST1VQX01PREU6XG4gICAgICB7XG4gICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0YXJ0U2VnbWVudENvbEdyb3VwKTtcbiAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZS5zZWdtZW50UHJlZml4KTtcbiAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgc3RyaW5nVG9DaHVuayhpZC50b1N0cmluZygxNikpKTtcbiAgICAgICAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIHN0YXJ0U2VnbWVudENvbEdyb3VwMik7XG4gICAgICB9XG5cbiAgICBkZWZhdWx0OlxuICAgICAge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gaW5zZXJ0aW9uIG1vZGUuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuJyk7XG4gICAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIHdyaXRlRW5kU2VnbWVudChkZXN0aW5hdGlvbiwgZm9ybWF0Q29udGV4dCkge1xuICBzd2l0Y2ggKGZvcm1hdENvbnRleHQuaW5zZXJ0aW9uTW9kZSkge1xuICAgIGNhc2UgUk9PVF9IVE1MX01PREU6XG4gICAgY2FzZSBIVE1MX01PREU6XG4gICAgICB7XG4gICAgICAgIHJldHVybiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBlbmRTZWdtZW50SFRNTCk7XG4gICAgICB9XG5cbiAgICBjYXNlIFNWR19NT0RFOlxuICAgICAge1xuICAgICAgICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgZW5kU2VnbWVudFNWRyk7XG4gICAgICB9XG5cbiAgICBjYXNlIE1BVEhNTF9NT0RFOlxuICAgICAge1xuICAgICAgICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgZW5kU2VnbWVudE1hdGhNTCk7XG4gICAgICB9XG5cbiAgICBjYXNlIEhUTUxfVEFCTEVfTU9ERTpcbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGVuZFNlZ21lbnRUYWJsZSk7XG4gICAgICB9XG5cbiAgICBjYXNlIEhUTUxfVEFCTEVfQk9EWV9NT0RFOlxuICAgICAge1xuICAgICAgICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgZW5kU2VnbWVudFRhYmxlQm9keSk7XG4gICAgICB9XG5cbiAgICBjYXNlIEhUTUxfVEFCTEVfUk9XX01PREU6XG4gICAgICB7XG4gICAgICAgIHJldHVybiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBlbmRTZWdtZW50VGFibGVSb3cpO1xuICAgICAgfVxuXG4gICAgY2FzZSBIVE1MX0NPTEdST1VQX01PREU6XG4gICAgICB7XG4gICAgICAgIHJldHVybiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBlbmRTZWdtZW50Q29sR3JvdXApO1xuICAgICAgfVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGluc2VydGlvbiBtb2RlLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LicpO1xuICAgICAgfVxuICB9XG59IC8vIEluc3RydWN0aW9uIFNldFxuLy8gVGhlIGZvbGxvd2luZyBjb2RlIGlzIHRoZSBzb3VyY2Ugc2NyaXB0cyB0aGF0IHdlIHRoZW4gbWluaWZ5IGFuZCBpbmxpbmUgYmVsb3csXG4vLyB3aXRoIHJlbmFtZWQgZnVuY3Rpb24gbmFtZXMgdGhhdCB3ZSBob3BlIGRvbid0IGNvbGxpZGU6XG4vLyBjb25zdCBDT01NRU5UX05PREUgPSA4O1xuLy8gY29uc3QgU1VTUEVOU0VfU1RBUlRfREFUQSA9ICckJztcbi8vIGNvbnN0IFNVU1BFTlNFX0VORF9EQVRBID0gJy8kJztcbi8vIGNvbnN0IFNVU1BFTlNFX1BFTkRJTkdfU1RBUlRfREFUQSA9ICckPyc7XG4vLyBjb25zdCBTVVNQRU5TRV9GQUxMQkFDS19TVEFSVF9EQVRBID0gJyQhJztcbi8vXG4vLyBmdW5jdGlvbiBjbGllbnRSZW5kZXJCb3VuZGFyeShzdXNwZW5zZUJvdW5kYXJ5SUQpIHtcbi8vICAgLy8gRmluZCB0aGUgZmFsbGJhY2sncyBmaXJzdCBlbGVtZW50LlxuLy8gICBjb25zdCBzdXNwZW5zZUlkTm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHN1c3BlbnNlQm91bmRhcnlJRCk7XG4vLyAgIGlmICghc3VzcGVuc2VJZE5vZGUpIHtcbi8vICAgICAvLyBUaGUgdXNlciBtdXN0IGhhdmUgYWxyZWFkeSBuYXZpZ2F0ZWQgYXdheSBmcm9tIHRoaXMgdHJlZS5cbi8vICAgICAvLyBFLmcuIGJlY2F1c2UgdGhlIHBhcmVudCB3YXMgaHlkcmF0ZWQuXG4vLyAgICAgcmV0dXJuO1xuLy8gICB9XG4vLyAgIC8vIEZpbmQgdGhlIGJvdW5kYXJ5IGFyb3VuZCB0aGUgZmFsbGJhY2suIFRoaXMgaXMgYWx3YXlzIHRoZSBwcmV2aW91cyBub2RlLlxuLy8gICBjb25zdCBzdXNwZW5zZU5vZGUgPSBzdXNwZW5zZUlkTm9kZS5wcmV2aW91c1NpYmxpbmc7XG4vLyAgIC8vIFRhZyBpdCB0byBiZSBjbGllbnQgcmVuZGVyZWQuXG4vLyAgIHN1c3BlbnNlTm9kZS5kYXRhID0gU1VTUEVOU0VfRkFMTEJBQ0tfU1RBUlRfREFUQTtcbi8vICAgLy8gVGVsbCBSZWFjdCB0byByZXRyeSBpdCBpZiB0aGUgcGFyZW50IGFscmVhZHkgaHlkcmF0ZWQuXG4vLyAgIGlmIChzdXNwZW5zZU5vZGUuX3JlYWN0UmV0cnkpIHtcbi8vICAgICBzdXNwZW5zZU5vZGUuX3JlYWN0UmV0cnkoKTtcbi8vICAgfVxuLy8gfVxuLy9cbi8vIGZ1bmN0aW9uIGNvbXBsZXRlQm91bmRhcnkoc3VzcGVuc2VCb3VuZGFyeUlELCBjb250ZW50SUQpIHtcbi8vICAgLy8gRmluZCB0aGUgZmFsbGJhY2sncyBmaXJzdCBlbGVtZW50LlxuLy8gICBjb25zdCBzdXNwZW5zZUlkTm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHN1c3BlbnNlQm91bmRhcnlJRCk7XG4vLyAgIGNvbnN0IGNvbnRlbnROb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY29udGVudElEKTtcbi8vICAgLy8gV2UnbGwgZGV0YWNoIHRoZSBjb250ZW50IG5vZGUgc28gdGhhdCByZWdhcmRsZXNzIG9mIHdoYXQgaGFwcGVucyBuZXh0IHdlIGRvbid0IGxlYXZlIGluIHRoZSB0cmVlLlxuLy8gICAvLyBUaGlzIG1pZ2h0IGFsc28gaGVscCBieSBub3QgY2F1c2luZyByZWNhbGNpbmcgZWFjaCB0aW1lIHdlIG1vdmUgYSBjaGlsZCBmcm9tIGhlcmUgdG8gdGhlIHRhcmdldC5cbi8vICAgY29udGVudE5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjb250ZW50Tm9kZSk7XG4vLyAgIGlmICghc3VzcGVuc2VJZE5vZGUpIHtcbi8vICAgICAvLyBUaGUgdXNlciBtdXN0IGhhdmUgYWxyZWFkeSBuYXZpZ2F0ZWQgYXdheSBmcm9tIHRoaXMgdHJlZS5cbi8vICAgICAvLyBFLmcuIGJlY2F1c2UgdGhlIHBhcmVudCB3YXMgaHlkcmF0ZWQuIFRoYXQncyBmaW5lIHRoZXJlJ3Mgbm90aGluZyB0byBkb1xuLy8gICAgIC8vIGJ1dCB3ZSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGFscmVhZHkgZGVsZXRlZCB0aGUgY29udGFpbmVyIG5vZGUuXG4vLyAgICAgcmV0dXJuO1xuLy8gICB9XG4vLyAgIC8vIEZpbmQgdGhlIGJvdW5kYXJ5IGFyb3VuZCB0aGUgZmFsbGJhY2suIFRoaXMgaXMgYWx3YXlzIHRoZSBwcmV2aW91cyBub2RlLlxuLy8gICBjb25zdCBzdXNwZW5zZU5vZGUgPSBzdXNwZW5zZUlkTm9kZS5wcmV2aW91c1NpYmxpbmc7XG4vL1xuLy8gICAvLyBDbGVhciBhbGwgdGhlIGV4aXN0aW5nIGNoaWxkcmVuLiBUaGlzIGlzIGNvbXBsaWNhdGVkIGJlY2F1c2Vcbi8vICAgLy8gdGhlcmUgY2FuIGJlIGVtYmVkZGVkIFN1c3BlbnNlIGJvdW5kYXJpZXMgaW4gdGhlIGZhbGxiYWNrLlxuLy8gICAvLyBUaGlzIGlzIHNpbWlsYXIgdG8gY2xlYXJTdXNwZW5zZUJvdW5kYXJ5IGluIFJlYWN0RE9NSG9zdENvbmZpZy5cbi8vICAgLy8gVE9ETzogV2UgY291bGQgYXZvaWQgdGhpcyBpZiB3ZSBuZXZlciBlbWl0dGVkIHN1c3BlbnNlIGJvdW5kYXJpZXMgaW4gZmFsbGJhY2sgdHJlZXMuXG4vLyAgIC8vIFRoZXkgbmV2ZXIgaHlkcmF0ZSBhbnl3YXkuIEhvd2V2ZXIsIGN1cnJlbnRseSB3ZSBzdXBwb3J0IGluY3JlbWVudGFsbHkgbG9hZGluZyB0aGUgZmFsbGJhY2suXG4vLyAgIGNvbnN0IHBhcmVudEluc3RhbmNlID0gc3VzcGVuc2VOb2RlLnBhcmVudE5vZGU7XG4vLyAgIGxldCBub2RlID0gc3VzcGVuc2VOb2RlLm5leHRTaWJsaW5nO1xuLy8gICBsZXQgZGVwdGggPSAwO1xuLy8gICBkbyB7XG4vLyAgICAgaWYgKG5vZGUgJiYgbm9kZS5ub2RlVHlwZSA9PT0gQ09NTUVOVF9OT0RFKSB7XG4vLyAgICAgICBjb25zdCBkYXRhID0gbm9kZS5kYXRhO1xuLy8gICAgICAgaWYgKGRhdGEgPT09IFNVU1BFTlNFX0VORF9EQVRBKSB7XG4vLyAgICAgICAgIGlmIChkZXB0aCA9PT0gMCkge1xuLy8gICAgICAgICAgIGJyZWFrO1xuLy8gICAgICAgICB9IGVsc2Uge1xuLy8gICAgICAgICAgIGRlcHRoLS07XG4vLyAgICAgICAgIH1cbi8vICAgICAgIH0gZWxzZSBpZiAoXG4vLyAgICAgICAgIGRhdGEgPT09IFNVU1BFTlNFX1NUQVJUX0RBVEEgfHxcbi8vICAgICAgICAgZGF0YSA9PT0gU1VTUEVOU0VfUEVORElOR19TVEFSVF9EQVRBIHx8XG4vLyAgICAgICAgIGRhdGEgPT09IFNVU1BFTlNFX0ZBTExCQUNLX1NUQVJUX0RBVEFcbi8vICAgICAgICkge1xuLy8gICAgICAgICBkZXB0aCsrO1xuLy8gICAgICAgfVxuLy8gICAgIH1cbi8vXG4vLyAgICAgY29uc3QgbmV4dE5vZGUgPSBub2RlLm5leHRTaWJsaW5nO1xuLy8gICAgIHBhcmVudEluc3RhbmNlLnJlbW92ZUNoaWxkKG5vZGUpO1xuLy8gICAgIG5vZGUgPSBuZXh0Tm9kZTtcbi8vICAgfSB3aGlsZSAobm9kZSk7XG4vL1xuLy8gICBjb25zdCBlbmRPZkJvdW5kYXJ5ID0gbm9kZTtcbi8vXG4vLyAgIC8vIEluc2VydCBhbGwgdGhlIGNoaWxkcmVuIGZyb20gdGhlIGNvbnRlbnROb2RlIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmQgb2Ygc3VzcGVuc2UgYm91bmRhcnkuXG4vLyAgIHdoaWxlIChjb250ZW50Tm9kZS5maXJzdENoaWxkKSB7XG4vLyAgICAgcGFyZW50SW5zdGFuY2UuaW5zZXJ0QmVmb3JlKGNvbnRlbnROb2RlLmZpcnN0Q2hpbGQsIGVuZE9mQm91bmRhcnkpO1xuLy8gICB9XG4vLyAgIHN1c3BlbnNlTm9kZS5kYXRhID0gU1VTUEVOU0VfU1RBUlRfREFUQTtcbi8vICAgaWYgKHN1c3BlbnNlTm9kZS5fcmVhY3RSZXRyeSkge1xuLy8gICAgIHN1c3BlbnNlTm9kZS5fcmVhY3RSZXRyeSgpO1xuLy8gICB9XG4vLyB9XG4vL1xuLy8gZnVuY3Rpb24gY29tcGxldGVTZWdtZW50KGNvbnRhaW5lcklELCBwbGFjZWhvbGRlcklEKSB7XG4vLyAgIGNvbnN0IHNlZ21lbnRDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250YWluZXJJRCk7XG4vLyAgIGNvbnN0IHBsYWNlaG9sZGVyTm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBsYWNlaG9sZGVySUQpO1xuLy8gICAvLyBXZSBhbHdheXMgZXhwZWN0IGJvdGggbm9kZXMgdG8gZXhpc3QgaGVyZSBiZWNhdXNlLCB3aGlsZSB3ZSBtaWdodFxuLy8gICAvLyBoYXZlIG5hdmlnYXRlZCBhd2F5IGZyb20gdGhlIG1haW4gdHJlZSwgd2Ugc3RpbGwgZXhwZWN0IHRoZSBkZXRhY2hlZFxuLy8gICAvLyB0cmVlIHRvIGV4aXN0LlxuLy8gICBzZWdtZW50Q29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc2VnbWVudENvbnRhaW5lcik7XG4vLyAgIHdoaWxlIChzZWdtZW50Q29udGFpbmVyLmZpcnN0Q2hpbGQpIHtcbi8vICAgICBwbGFjZWhvbGRlck5vZGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoXG4vLyAgICAgICBzZWdtZW50Q29udGFpbmVyLmZpcnN0Q2hpbGQsXG4vLyAgICAgICBwbGFjZWhvbGRlck5vZGUsXG4vLyAgICAgKTtcbi8vICAgfVxuLy8gICBwbGFjZWhvbGRlck5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChwbGFjZWhvbGRlck5vZGUpO1xuLy8gfVxuXG52YXIgY29tcGxldGVTZWdtZW50RnVuY3Rpb24gPSAnZnVuY3Rpb24gJFJTKGEsYil7YT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKTtiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIpO2ZvcihhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSk7YS5maXJzdENoaWxkOyliLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEuZmlyc3RDaGlsZCxiKTtiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYil9JztcbnZhciBjb21wbGV0ZUJvdW5kYXJ5RnVuY3Rpb24gPSAnZnVuY3Rpb24gJFJDKGEsYil7YT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKTtiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGIpO2IucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKTtpZihhKXthPWEucHJldmlvdXNTaWJsaW5nO3ZhciBmPWEucGFyZW50Tm9kZSxjPWEubmV4dFNpYmxpbmcsZT0wO2Rve2lmKGMmJjg9PT1jLm5vZGVUeXBlKXt2YXIgZD1jLmRhdGE7aWYoXCIvJFwiPT09ZClpZigwPT09ZSlicmVhaztlbHNlIGUtLTtlbHNlXCIkXCIhPT1kJiZcIiQ/XCIhPT1kJiZcIiQhXCIhPT1kfHxlKyt9ZD1jLm5leHRTaWJsaW5nO2YucmVtb3ZlQ2hpbGQoYyk7Yz1kfXdoaWxlKGMpO2Zvcig7Yi5maXJzdENoaWxkOylmLmluc2VydEJlZm9yZShiLmZpcnN0Q2hpbGQsYyk7YS5kYXRhPVwiJFwiO2EuX3JlYWN0UmV0cnkmJmEuX3JlYWN0UmV0cnkoKX19JztcbnZhciBjbGllbnRSZW5kZXJGdW5jdGlvbiA9ICdmdW5jdGlvbiAkUlgoYSl7aWYoYT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKSlhPWEucHJldmlvdXNTaWJsaW5nLGEuZGF0YT1cIiQhXCIsYS5fcmVhY3RSZXRyeSYmYS5fcmVhY3RSZXRyeSgpfSc7XG52YXIgY29tcGxldGVTZWdtZW50U2NyaXB0MUZ1bGwgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoY29tcGxldGVTZWdtZW50RnVuY3Rpb24gKyAnOyRSUyhcIicpO1xudmFyIGNvbXBsZXRlU2VnbWVudFNjcmlwdDFQYXJ0aWFsID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCckUlMoXCInKTtcbnZhciBjb21wbGV0ZVNlZ21lbnRTY3JpcHQyID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIixcIicpO1xudmFyIGNvbXBsZXRlU2VnbWVudFNjcmlwdDMgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiKTwvc2NyaXB0PicpO1xuZnVuY3Rpb24gd3JpdGVDb21wbGV0ZWRTZWdtZW50SW5zdHJ1Y3Rpb24oZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUsIGNvbnRlbnRTZWdtZW50SUQpIHtcbiAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZS5zdGFydElubGluZVNjcmlwdCk7XG5cbiAgaWYgKCFyZXNwb25zZVN0YXRlLnNlbnRDb21wbGV0ZVNlZ21lbnRGdW5jdGlvbikge1xuICAgIC8vIFRoZSBmaXJzdCB0aW1lIHdlIHdyaXRlIHRoaXMsIHdlJ2xsIG5lZWQgdG8gaW5jbHVkZSB0aGUgZnVsbCBpbXBsZW1lbnRhdGlvbi5cbiAgICByZXNwb25zZVN0YXRlLnNlbnRDb21wbGV0ZVNlZ21lbnRGdW5jdGlvbiA9IHRydWU7XG4gICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgY29tcGxldGVTZWdtZW50U2NyaXB0MUZ1bGwpO1xuICB9IGVsc2Uge1xuICAgIC8vIEZ1dHVyZSBjYWxscyBjYW4ganVzdCByZXVzZSB0aGUgc2FtZSBmdW5jdGlvbi5cbiAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjb21wbGV0ZVNlZ21lbnRTY3JpcHQxUGFydGlhbCk7XG4gIH1cblxuICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCByZXNwb25zZVN0YXRlLnNlZ21lbnRQcmVmaXgpO1xuICB2YXIgZm9ybWF0dGVkSUQgPSBzdHJpbmdUb0NodW5rKGNvbnRlbnRTZWdtZW50SUQudG9TdHJpbmcoMTYpKTtcbiAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgZm9ybWF0dGVkSUQpO1xuICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjb21wbGV0ZVNlZ21lbnRTY3JpcHQyKTtcbiAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZS5wbGFjZWhvbGRlclByZWZpeCk7XG4gIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGZvcm1hdHRlZElEKTtcbiAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGNvbXBsZXRlU2VnbWVudFNjcmlwdDMpO1xufVxudmFyIGNvbXBsZXRlQm91bmRhcnlTY3JpcHQxRnVsbCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhjb21wbGV0ZUJvdW5kYXJ5RnVuY3Rpb24gKyAnOyRSQyhcIicpO1xudmFyIGNvbXBsZXRlQm91bmRhcnlTY3JpcHQxUGFydGlhbCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnJFJDKFwiJyk7XG52YXIgY29tcGxldGVCb3VuZGFyeVNjcmlwdDIgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiLFwiJyk7XG52YXIgY29tcGxldGVCb3VuZGFyeVNjcmlwdDMgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiKTwvc2NyaXB0PicpO1xuZnVuY3Rpb24gd3JpdGVDb21wbGV0ZWRCb3VuZGFyeUluc3RydWN0aW9uKGRlc3RpbmF0aW9uLCByZXNwb25zZVN0YXRlLCBib3VuZGFyeUlELCBjb250ZW50U2VnbWVudElEKSB7XG4gIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUuc3RhcnRJbmxpbmVTY3JpcHQpO1xuXG4gIGlmICghcmVzcG9uc2VTdGF0ZS5zZW50Q29tcGxldGVCb3VuZGFyeUZ1bmN0aW9uKSB7XG4gICAgLy8gVGhlIGZpcnN0IHRpbWUgd2Ugd3JpdGUgdGhpcywgd2UnbGwgbmVlZCB0byBpbmNsdWRlIHRoZSBmdWxsIGltcGxlbWVudGF0aW9uLlxuICAgIHJlc3BvbnNlU3RhdGUuc2VudENvbXBsZXRlQm91bmRhcnlGdW5jdGlvbiA9IHRydWU7XG4gICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgY29tcGxldGVCb3VuZGFyeVNjcmlwdDFGdWxsKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGdXR1cmUgY2FsbHMgY2FuIGp1c3QgcmV1c2UgdGhlIHNhbWUgZnVuY3Rpb24uXG4gICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgY29tcGxldGVCb3VuZGFyeVNjcmlwdDFQYXJ0aWFsKTtcbiAgfVxuXG4gIGlmIChib3VuZGFyeUlEID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBbiBJRCBtdXN0IGhhdmUgYmVlbiBhc3NpZ25lZCBiZWZvcmUgd2UgY2FuIGNvbXBsZXRlIHRoZSBib3VuZGFyeS4nKTtcbiAgfVxuXG4gIHZhciBmb3JtYXR0ZWRDb250ZW50SUQgPSBzdHJpbmdUb0NodW5rKGNvbnRlbnRTZWdtZW50SUQudG9TdHJpbmcoMTYpKTtcbiAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgYm91bmRhcnlJRCk7XG4gIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGNvbXBsZXRlQm91bmRhcnlTY3JpcHQyKTtcbiAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZS5zZWdtZW50UHJlZml4KTtcbiAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgZm9ybWF0dGVkQ29udGVudElEKTtcbiAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGNvbXBsZXRlQm91bmRhcnlTY3JpcHQzKTtcbn1cbnZhciBjbGllbnRSZW5kZXJTY3JpcHQxRnVsbCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhjbGllbnRSZW5kZXJGdW5jdGlvbiArICc7JFJYKFwiJyk7XG52YXIgY2xpZW50UmVuZGVyU2NyaXB0MVBhcnRpYWwgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJyRSWChcIicpO1xudmFyIGNsaWVudFJlbmRlclNjcmlwdDIgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiKTwvc2NyaXB0PicpO1xuZnVuY3Rpb24gd3JpdGVDbGllbnRSZW5kZXJCb3VuZGFyeUluc3RydWN0aW9uKGRlc3RpbmF0aW9uLCByZXNwb25zZVN0YXRlLCBib3VuZGFyeUlEKSB7XG4gIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUuc3RhcnRJbmxpbmVTY3JpcHQpO1xuXG4gIGlmICghcmVzcG9uc2VTdGF0ZS5zZW50Q2xpZW50UmVuZGVyRnVuY3Rpb24pIHtcbiAgICAvLyBUaGUgZmlyc3QgdGltZSB3ZSB3cml0ZSB0aGlzLCB3ZSdsbCBuZWVkIHRvIGluY2x1ZGUgdGhlIGZ1bGwgaW1wbGVtZW50YXRpb24uXG4gICAgcmVzcG9uc2VTdGF0ZS5zZW50Q2xpZW50UmVuZGVyRnVuY3Rpb24gPSB0cnVlO1xuICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGNsaWVudFJlbmRlclNjcmlwdDFGdWxsKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGdXR1cmUgY2FsbHMgY2FuIGp1c3QgcmV1c2UgdGhlIHNhbWUgZnVuY3Rpb24uXG4gICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgY2xpZW50UmVuZGVyU2NyaXB0MVBhcnRpYWwpO1xuICB9XG5cbiAgaWYgKGJvdW5kYXJ5SUQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FuIElEIG11c3QgaGF2ZSBiZWVuIGFzc2lnbmVkIGJlZm9yZSB3ZSBjYW4gY29tcGxldGUgdGhlIGJvdW5kYXJ5LicpO1xuICB9XG5cbiAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgYm91bmRhcnlJRCk7XG4gIHJldHVybiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBjbGllbnRSZW5kZXJTY3JpcHQyKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUmVzcG9uc2VTdGF0ZSQxKGdlbmVyYXRlU3RhdGljTWFya3VwLCBpZGVudGlmaWVyUHJlZml4KSB7XG4gIHZhciByZXNwb25zZVN0YXRlID0gY3JlYXRlUmVzcG9uc2VTdGF0ZShpZGVudGlmaWVyUHJlZml4LCB1bmRlZmluZWQpO1xuICByZXR1cm4ge1xuICAgIC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggUmVhY3RET01TZXJ2ZXJGb3JtYXRDb25maWdcbiAgICBib290c3RyYXBDaHVua3M6IHJlc3BvbnNlU3RhdGUuYm9vdHN0cmFwQ2h1bmtzLFxuICAgIHN0YXJ0SW5saW5lU2NyaXB0OiByZXNwb25zZVN0YXRlLnN0YXJ0SW5saW5lU2NyaXB0LFxuICAgIHBsYWNlaG9sZGVyUHJlZml4OiByZXNwb25zZVN0YXRlLnBsYWNlaG9sZGVyUHJlZml4LFxuICAgIHNlZ21lbnRQcmVmaXg6IHJlc3BvbnNlU3RhdGUuc2VnbWVudFByZWZpeCxcbiAgICBib3VuZGFyeVByZWZpeDogcmVzcG9uc2VTdGF0ZS5ib3VuZGFyeVByZWZpeCxcbiAgICBpZFByZWZpeDogcmVzcG9uc2VTdGF0ZS5pZFByZWZpeCxcbiAgICBuZXh0U3VzcGVuc2VJRDogcmVzcG9uc2VTdGF0ZS5uZXh0U3VzcGVuc2VJRCxcbiAgICBzZW50Q29tcGxldGVTZWdtZW50RnVuY3Rpb246IHJlc3BvbnNlU3RhdGUuc2VudENvbXBsZXRlU2VnbWVudEZ1bmN0aW9uLFxuICAgIHNlbnRDb21wbGV0ZUJvdW5kYXJ5RnVuY3Rpb246IHJlc3BvbnNlU3RhdGUuc2VudENvbXBsZXRlQm91bmRhcnlGdW5jdGlvbixcbiAgICBzZW50Q2xpZW50UmVuZGVyRnVuY3Rpb246IHJlc3BvbnNlU3RhdGUuc2VudENsaWVudFJlbmRlckZ1bmN0aW9uLFxuICAgIC8vIFRoaXMgaXMgYW4gZXh0cmEgZmllbGQgZm9yIHRoZSBsZWdhY3kgcmVuZGVyZXJcbiAgICBnZW5lcmF0ZVN0YXRpY01hcmt1cDogZ2VuZXJhdGVTdGF0aWNNYXJrdXBcbiAgfTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJvb3RGb3JtYXRDb250ZXh0KCkge1xuICByZXR1cm4ge1xuICAgIGluc2VydGlvbk1vZGU6IEhUTUxfTU9ERSxcbiAgICAvLyBXZSBza2lwIHRoZSByb290IG1vZGUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGVtaXQgdGhlIERPQ1RZUEUgaW4gbGVnYWN5IG1vZGUuXG4gICAgc2VsZWN0ZWRWYWx1ZTogbnVsbFxuICB9O1xufVxuZnVuY3Rpb24gcHVzaFRleHRJbnN0YW5jZSQxKHRhcmdldCwgdGV4dCwgcmVzcG9uc2VTdGF0ZSkge1xuICBpZiAocmVzcG9uc2VTdGF0ZS5nZW5lcmF0ZVN0YXRpY01hcmt1cCkge1xuICAgIHRhcmdldC5wdXNoKHN0cmluZ1RvQ2h1bmsoZXNjYXBlVGV4dEZvckJyb3dzZXIodGV4dCkpKTtcbiAgfSBlbHNlIHtcbiAgICBwdXNoVGV4dEluc3RhbmNlKHRhcmdldCwgdGV4dCk7XG4gIH1cbn1cbmZ1bmN0aW9uIHdyaXRlU3RhcnRDb21wbGV0ZWRTdXNwZW5zZUJvdW5kYXJ5JDEoZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUpIHtcbiAgaWYgKHJlc3BvbnNlU3RhdGUuZ2VuZXJhdGVTdGF0aWNNYXJrdXApIHtcbiAgICAvLyBBIGNvbXBsZXRlZCBib3VuZGFyeSBpcyBkb25lIGFuZCBkb2Vzbid0IG5lZWQgYSByZXByZXNlbnRhdGlvbiBpbiB0aGUgSFRNTFxuICAgIC8vIGlmIHdlJ3JlIG5vdCBnb2luZyB0byBiZSBoeWRyYXRpbmcgaXQuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gd3JpdGVTdGFydENvbXBsZXRlZFN1c3BlbnNlQm91bmRhcnkoZGVzdGluYXRpb24pO1xufVxuZnVuY3Rpb24gd3JpdGVTdGFydENsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeSQxKGRlc3RpbmF0aW9uLCByZXNwb25zZVN0YXRlKSB7XG4gIGlmIChyZXNwb25zZVN0YXRlLmdlbmVyYXRlU3RhdGljTWFya3VwKSB7XG4gICAgLy8gQSBjbGllbnQgcmVuZGVyZWQgYm91bmRhcnkgaXMgZG9uZSBhbmQgZG9lc24ndCBuZWVkIGEgcmVwcmVzZW50YXRpb24gaW4gdGhlIEhUTUxcbiAgICAvLyBzaW5jZSB3ZSdsbCBuZXZlciBoeWRyYXRlIGl0LiBUaGlzIGlzIGFyZ3VhYmx5IGFuIGVycm9yIGluIHN0YXRpYyBnZW5lcmF0aW9uLlxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHdyaXRlU3RhcnRDbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnkoZGVzdGluYXRpb24pO1xufVxuZnVuY3Rpb24gd3JpdGVFbmRDb21wbGV0ZWRTdXNwZW5zZUJvdW5kYXJ5JDEoZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUpIHtcbiAgaWYgKHJlc3BvbnNlU3RhdGUuZ2VuZXJhdGVTdGF0aWNNYXJrdXApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB3cml0ZUVuZENvbXBsZXRlZFN1c3BlbnNlQm91bmRhcnkoZGVzdGluYXRpb24pO1xufVxuZnVuY3Rpb24gd3JpdGVFbmRDbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnkkMShkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZSkge1xuICBpZiAocmVzcG9uc2VTdGF0ZS5nZW5lcmF0ZVN0YXRpY01hcmt1cCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHdyaXRlRW5kQ2xpZW50UmVuZGVyZWRTdXNwZW5zZUJvdW5kYXJ5KGRlc3RpbmF0aW9uKTtcbn1cblxudmFyIGFzc2lnbiA9IE9iamVjdC5hc3NpZ247XG5cbi8vIEFUVEVOVElPTlxuLy8gV2hlbiBhZGRpbmcgbmV3IHN5bWJvbHMgdG8gdGhpcyBmaWxlLFxuLy8gUGxlYXNlIGNvbnNpZGVyIGFsc28gYWRkaW5nIHRvICdyZWFjdC1kZXZ0b29scy1zaGFyZWQvc3JjL2JhY2tlbmQvUmVhY3RTeW1ib2xzJ1xuLy8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50LWxpa2UgdHlwZXMuXG52YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpO1xudmFyIFJFQUNUX1BPUlRBTF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QucG9ydGFsJyk7XG52YXIgUkVBQ1RfRlJBR01FTlRfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmZyYWdtZW50Jyk7XG52YXIgUkVBQ1RfU1RSSUNUX01PREVfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnN0cmljdF9tb2RlJyk7XG52YXIgUkVBQ1RfUFJPRklMRVJfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnByb2ZpbGVyJyk7XG52YXIgUkVBQ1RfUFJPVklERVJfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnByb3ZpZGVyJyk7XG52YXIgUkVBQ1RfQ09OVEVYVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QuY29udGV4dCcpO1xudmFyIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5mb3J3YXJkX3JlZicpO1xudmFyIFJFQUNUX1NVU1BFTlNFX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5zdXNwZW5zZScpO1xudmFyIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnN1c3BlbnNlX2xpc3QnKTtcbnZhciBSRUFDVF9NRU1PX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5tZW1vJyk7XG52YXIgUkVBQ1RfTEFaWV9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QubGF6eScpO1xudmFyIFJFQUNUX1NDT1BFX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5zY29wZScpO1xudmFyIFJFQUNUX0RFQlVHX1RSQUNJTkdfTU9ERV9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QuZGVidWdfdHJhY2VfbW9kZScpO1xudmFyIFJFQUNUX0xFR0FDWV9ISURERU5fVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmxlZ2FjeV9oaWRkZW4nKTtcbnZhciBSRUFDVF9TRVJWRVJfQ09OVEVYVF9ERUZBVUxUX1ZBTFVFX05PVF9MT0FERUQgPSBTeW1ib2wuZm9yKCdyZWFjdC5kZWZhdWx0X3ZhbHVlJyk7XG52YXIgTUFZQkVfSVRFUkFUT1JfU1lNQk9MID0gU3ltYm9sLml0ZXJhdG9yO1xudmFyIEZBVVhfSVRFUkFUT1JfU1lNQk9MID0gJ0BAaXRlcmF0b3InO1xuZnVuY3Rpb24gZ2V0SXRlcmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7XG4gIGlmIChtYXliZUl0ZXJhYmxlID09PSBudWxsIHx8IHR5cGVvZiBtYXliZUl0ZXJhYmxlICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIG1heWJlSXRlcmF0b3IgPSBNQVlCRV9JVEVSQVRPUl9TWU1CT0wgJiYgbWF5YmVJdGVyYWJsZVtNQVlCRV9JVEVSQVRPUl9TWU1CT0xdIHx8IG1heWJlSXRlcmFibGVbRkFVWF9JVEVSQVRPUl9TWU1CT0xdO1xuXG4gIGlmICh0eXBlb2YgbWF5YmVJdGVyYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBtYXliZUl0ZXJhdG9yO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldFdyYXBwZWROYW1lKG91dGVyVHlwZSwgaW5uZXJUeXBlLCB3cmFwcGVyTmFtZSkge1xuICB2YXIgZGlzcGxheU5hbWUgPSBvdXRlclR5cGUuZGlzcGxheU5hbWU7XG5cbiAgaWYgKGRpc3BsYXlOYW1lKSB7XG4gICAgcmV0dXJuIGRpc3BsYXlOYW1lO1xuICB9XG5cbiAgdmFyIGZ1bmN0aW9uTmFtZSA9IGlubmVyVHlwZS5kaXNwbGF5TmFtZSB8fCBpbm5lclR5cGUubmFtZSB8fCAnJztcbiAgcmV0dXJuIGZ1bmN0aW9uTmFtZSAhPT0gJycgPyB3cmFwcGVyTmFtZSArIFwiKFwiICsgZnVuY3Rpb25OYW1lICsgXCIpXCIgOiB3cmFwcGVyTmFtZTtcbn0gLy8gS2VlcCBpbiBzeW5jIHdpdGggcmVhY3QtcmVjb25jaWxlci9nZXRDb21wb25lbnROYW1lRnJvbUZpYmVyXG5cblxuZnVuY3Rpb24gZ2V0Q29udGV4dE5hbWUodHlwZSkge1xuICByZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCAnQ29udGV4dCc7XG59IC8vIE5vdGUgdGhhdCB0aGUgcmVjb25jaWxlciBwYWNrYWdlIHNob3VsZCBnZW5lcmFsbHkgcHJlZmVyIHRvIHVzZSBnZXRDb21wb25lbnROYW1lRnJvbUZpYmVyKCkgaW5zdGVhZC5cblxuXG5mdW5jdGlvbiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSkge1xuICBpZiAodHlwZSA9PSBudWxsKSB7XG4gICAgLy8gSG9zdCByb290LCB0ZXh0IG5vZGUgb3IganVzdCBpbnZhbGlkIHR5cGUuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB7XG4gICAgaWYgKHR5cGVvZiB0eXBlLnRhZyA9PT0gJ251bWJlcicpIHtcbiAgICAgIGVycm9yKCdSZWNlaXZlZCBhbiB1bmV4cGVjdGVkIG9iamVjdCBpbiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoKS4gJyArICdUaGlzIGlzIGxpa2VseSBhIGJ1ZyBpbiBSZWFjdC4gUGxlYXNlIGZpbGUgYW4gaXNzdWUuJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8IG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFJFQUNUX0ZSQUdNRU5UX1RZUEU6XG4gICAgICByZXR1cm4gJ0ZyYWdtZW50JztcblxuICAgIGNhc2UgUkVBQ1RfUE9SVEFMX1RZUEU6XG4gICAgICByZXR1cm4gJ1BvcnRhbCc7XG5cbiAgICBjYXNlIFJFQUNUX1BST0ZJTEVSX1RZUEU6XG4gICAgICByZXR1cm4gJ1Byb2ZpbGVyJztcblxuICAgIGNhc2UgUkVBQ1RfU1RSSUNUX01PREVfVFlQRTpcbiAgICAgIHJldHVybiAnU3RyaWN0TW9kZSc7XG5cbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICByZXR1cm4gJ1N1c3BlbnNlJztcblxuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFOlxuICAgICAgcmV0dXJuICdTdXNwZW5zZUxpc3QnO1xuXG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgc3dpdGNoICh0eXBlLiQkdHlwZW9mKSB7XG4gICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0eXBlO1xuICAgICAgICByZXR1cm4gZ2V0Q29udGV4dE5hbWUoY29udGV4dCkgKyAnLkNvbnN1bWVyJztcblxuICAgICAgY2FzZSBSRUFDVF9QUk9WSURFUl9UWVBFOlxuICAgICAgICB2YXIgcHJvdmlkZXIgPSB0eXBlO1xuICAgICAgICByZXR1cm4gZ2V0Q29udGV4dE5hbWUocHJvdmlkZXIuX2NvbnRleHQpICsgJy5Qcm92aWRlcic7XG5cbiAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgcmV0dXJuIGdldFdyYXBwZWROYW1lKHR5cGUsIHR5cGUucmVuZGVyLCAnRm9yd2FyZFJlZicpO1xuXG4gICAgICBjYXNlIFJFQUNUX01FTU9fVFlQRTpcbiAgICAgICAgdmFyIG91dGVyTmFtZSA9IHR5cGUuZGlzcGxheU5hbWUgfHwgbnVsbDtcblxuICAgICAgICBpZiAob3V0ZXJOYW1lICE9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIG91dGVyTmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZS50eXBlKSB8fCAnTWVtbyc7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGxhenlDb21wb25lbnQgPSB0eXBlO1xuICAgICAgICAgIHZhciBwYXlsb2FkID0gbGF6eUNvbXBvbmVudC5fcGF5bG9hZDtcbiAgICAgICAgICB2YXIgaW5pdCA9IGxhenlDb21wb25lbnQuX2luaXQ7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShpbml0KHBheWxvYWQpKTtcbiAgICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWZhbGx0aHJvdWdoXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8vIEhlbHBlcnMgdG8gcGF0Y2ggY29uc29sZS5sb2dzIHRvIGF2b2lkIGxvZ2dpbmcgZHVyaW5nIHNpZGUtZWZmZWN0IGZyZWVcbi8vIHJlcGxheWluZyBvbiByZW5kZXIgZnVuY3Rpb24uIFRoaXMgY3VycmVudGx5IG9ubHkgcGF0Y2hlcyB0aGUgb2JqZWN0XG4vLyBsYXppbHkgd2hpY2ggd29uJ3QgY292ZXIgaWYgdGhlIGxvZyBmdW5jdGlvbiB3YXMgZXh0cmFjdGVkIGVhZ2VybHkuXG4vLyBXZSBjb3VsZCBhbHNvIGVhZ2VybHkgcGF0Y2ggdGhlIG1ldGhvZC5cbnZhciBkaXNhYmxlZERlcHRoID0gMDtcbnZhciBwcmV2TG9nO1xudmFyIHByZXZJbmZvO1xudmFyIHByZXZXYXJuO1xudmFyIHByZXZFcnJvcjtcbnZhciBwcmV2R3JvdXA7XG52YXIgcHJldkdyb3VwQ29sbGFwc2VkO1xudmFyIHByZXZHcm91cEVuZDtcblxuZnVuY3Rpb24gZGlzYWJsZWRMb2coKSB7fVxuXG5kaXNhYmxlZExvZy5fX3JlYWN0RGlzYWJsZWRMb2cgPSB0cnVlO1xuZnVuY3Rpb24gZGlzYWJsZUxvZ3MoKSB7XG4gIHtcbiAgICBpZiAoZGlzYWJsZWREZXB0aCA9PT0gMCkge1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgcmVhY3QtaW50ZXJuYWwvbm8tcHJvZHVjdGlvbi1sb2dnaW5nICovXG4gICAgICBwcmV2TG9nID0gY29uc29sZS5sb2c7XG4gICAgICBwcmV2SW5mbyA9IGNvbnNvbGUuaW5mbztcbiAgICAgIHByZXZXYXJuID0gY29uc29sZS53YXJuO1xuICAgICAgcHJldkVycm9yID0gY29uc29sZS5lcnJvcjtcbiAgICAgIHByZXZHcm91cCA9IGNvbnNvbGUuZ3JvdXA7XG4gICAgICBwcmV2R3JvdXBDb2xsYXBzZWQgPSBjb25zb2xlLmdyb3VwQ29sbGFwc2VkO1xuICAgICAgcHJldkdyb3VwRW5kID0gY29uc29sZS5ncm91cEVuZDsgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xOTA5OVxuXG4gICAgICB2YXIgcHJvcHMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IGRpc2FibGVkTG9nLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgfTsgLy8gJEZsb3dGaXhNZSBGbG93IHRoaW5rcyBjb25zb2xlIGlzIGltbXV0YWJsZS5cblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoY29uc29sZSwge1xuICAgICAgICBpbmZvOiBwcm9wcyxcbiAgICAgICAgbG9nOiBwcm9wcyxcbiAgICAgICAgd2FybjogcHJvcHMsXG4gICAgICAgIGVycm9yOiBwcm9wcyxcbiAgICAgICAgZ3JvdXA6IHByb3BzLFxuICAgICAgICBncm91cENvbGxhcHNlZDogcHJvcHMsXG4gICAgICAgIGdyb3VwRW5kOiBwcm9wc1xuICAgICAgfSk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgIH1cblxuICAgIGRpc2FibGVkRGVwdGgrKztcbiAgfVxufVxuZnVuY3Rpb24gcmVlbmFibGVMb2dzKCkge1xuICB7XG4gICAgZGlzYWJsZWREZXB0aC0tO1xuXG4gICAgaWYgKGRpc2FibGVkRGVwdGggPT09IDApIHtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgICAgdmFyIHByb3BzID0ge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICB9OyAvLyAkRmxvd0ZpeE1lIEZsb3cgdGhpbmtzIGNvbnNvbGUgaXMgaW1tdXRhYmxlLlxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjb25zb2xlLCB7XG4gICAgICAgIGxvZzogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2TG9nXG4gICAgICAgIH0pLFxuICAgICAgICBpbmZvOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZJbmZvXG4gICAgICAgIH0pLFxuICAgICAgICB3YXJuOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZXYXJuXG4gICAgICAgIH0pLFxuICAgICAgICBlcnJvcjogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2RXJyb3JcbiAgICAgICAgfSksXG4gICAgICAgIGdyb3VwOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZHcm91cFxuICAgICAgICB9KSxcbiAgICAgICAgZ3JvdXBDb2xsYXBzZWQ6IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkdyb3VwQ29sbGFwc2VkXG4gICAgICAgIH0pLFxuICAgICAgICBncm91cEVuZDogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2R3JvdXBFbmRcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgICAgLyogZXNsaW50LWVuYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICB9XG5cbiAgICBpZiAoZGlzYWJsZWREZXB0aCA8IDApIHtcbiAgICAgIGVycm9yKCdkaXNhYmxlZERlcHRoIGZlbGwgYmVsb3cgemVyby4gJyArICdUaGlzIGlzIGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS4nKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIFJlYWN0Q3VycmVudERpc3BhdGNoZXIgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdEN1cnJlbnREaXNwYXRjaGVyO1xudmFyIHByZWZpeDtcbmZ1bmN0aW9uIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKG5hbWUsIHNvdXJjZSwgb3duZXJGbikge1xuICB7XG4gICAgaWYgKHByZWZpeCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBFeHRyYWN0IHRoZSBWTSBzcGVjaWZpYyBwcmVmaXggdXNlZCBieSBlYWNoIGxpbmUuXG4gICAgICB0cnkge1xuICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICB2YXIgbWF0Y2ggPSB4LnN0YWNrLnRyaW0oKS5tYXRjaCgvXFxuKCAqKGF0ICk/KS8pO1xuICAgICAgICBwcmVmaXggPSBtYXRjaCAmJiBtYXRjaFsxXSB8fCAnJztcbiAgICAgIH1cbiAgICB9IC8vIFdlIHVzZSB0aGUgcHJlZml4IHRvIGVuc3VyZSBvdXIgc3RhY2tzIGxpbmUgdXAgd2l0aCBuYXRpdmUgc3RhY2sgZnJhbWVzLlxuXG5cbiAgICByZXR1cm4gJ1xcbicgKyBwcmVmaXggKyBuYW1lO1xuICB9XG59XG52YXIgcmVlbnRyeSA9IGZhbHNlO1xudmFyIGNvbXBvbmVudEZyYW1lQ2FjaGU7XG5cbntcbiAgdmFyIFBvc3NpYmx5V2Vha01hcCA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nID8gV2Vha01hcCA6IE1hcDtcbiAgY29tcG9uZW50RnJhbWVDYWNoZSA9IG5ldyBQb3NzaWJseVdlYWtNYXAoKTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZShmbiwgY29uc3RydWN0KSB7XG4gIC8vIElmIHNvbWV0aGluZyBhc2tlZCBmb3IgYSBzdGFjayBpbnNpZGUgYSBmYWtlIHJlbmRlciwgaXQgc2hvdWxkIGdldCBpZ25vcmVkLlxuICBpZiAoICFmbiB8fCByZWVudHJ5KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAge1xuICAgIHZhciBmcmFtZSA9IGNvbXBvbmVudEZyYW1lQ2FjaGUuZ2V0KGZuKTtcblxuICAgIGlmIChmcmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZnJhbWU7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbnRyb2w7XG4gIHJlZW50cnkgPSB0cnVlO1xuICB2YXIgcHJldmlvdXNQcmVwYXJlU3RhY2tUcmFjZSA9IEVycm9yLnByZXBhcmVTdGFja1RyYWNlOyAvLyAkRmxvd0ZpeE1lIEl0IGRvZXMgYWNjZXB0IHVuZGVmaW5lZC5cblxuICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHVuZGVmaW5lZDtcbiAgdmFyIHByZXZpb3VzRGlzcGF0Y2hlcjtcblxuICB7XG4gICAgcHJldmlvdXNEaXNwYXRjaGVyID0gUmVhY3RDdXJyZW50RGlzcGF0Y2hlci5jdXJyZW50OyAvLyBTZXQgdGhlIGRpc3BhdGNoZXIgaW4gREVWIGJlY2F1c2UgdGhpcyBtaWdodCBiZSBjYWxsIGluIHRoZSByZW5kZXIgZnVuY3Rpb25cbiAgICAvLyBmb3Igd2FybmluZ3MuXG5cbiAgICBSZWFjdEN1cnJlbnREaXNwYXRjaGVyLmN1cnJlbnQgPSBudWxsO1xuICAgIGRpc2FibGVMb2dzKCk7XG4gIH1cblxuICB0cnkge1xuICAgIC8vIFRoaXMgc2hvdWxkIHRocm93LlxuICAgIGlmIChjb25zdHJ1Y3QpIHtcbiAgICAgIC8vIFNvbWV0aGluZyBzaG91bGQgYmUgc2V0dGluZyB0aGUgcHJvcHMgaW4gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAgdmFyIEZha2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICB9OyAvLyAkRmxvd0ZpeE1lXG5cblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZha2UucHJvdG90eXBlLCAncHJvcHMnLCB7XG4gICAgICAgIHNldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIC8vIFdlIHVzZSBhIHRocm93aW5nIHNldHRlciBpbnN0ZWFkIG9mIGZyb3plbiBvciBub24td3JpdGFibGUgcHJvcHNcbiAgICAgICAgICAvLyBiZWNhdXNlIHRoYXQgd29uJ3QgdGhyb3cgaW4gYSBub24tc3RyaWN0IG1vZGUgZnVuY3Rpb24uXG4gICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gJ29iamVjdCcgJiYgUmVmbGVjdC5jb25zdHJ1Y3QpIHtcbiAgICAgICAgLy8gV2UgY29uc3RydWN0IGEgZGlmZmVyZW50IGNvbnRyb2wgZm9yIHRoaXMgY2FzZSB0byBpbmNsdWRlIGFueSBleHRyYVxuICAgICAgICAvLyBmcmFtZXMgYWRkZWQgYnkgdGhlIGNvbnN0cnVjdCBjYWxsLlxuICAgICAgICB0cnkge1xuICAgICAgICAgIFJlZmxlY3QuY29uc3RydWN0KEZha2UsIFtdKTtcbiAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgIGNvbnRyb2wgPSB4O1xuICAgICAgICB9XG5cbiAgICAgICAgUmVmbGVjdC5jb25zdHJ1Y3QoZm4sIFtdLCBGYWtlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgRmFrZS5jYWxsKCk7XG4gICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICBjb250cm9sID0geDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZuLmNhbGwoRmFrZS5wcm90b3R5cGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICBjb250cm9sID0geDtcbiAgICAgIH1cblxuICAgICAgZm4oKTtcbiAgICB9XG4gIH0gY2F0Y2ggKHNhbXBsZSkge1xuICAgIC8vIFRoaXMgaXMgaW5saW5lZCBtYW51YWxseSBiZWNhdXNlIGNsb3N1cmUgZG9lc24ndCBkbyBpdCBmb3IgdXMuXG4gICAgaWYgKHNhbXBsZSAmJiBjb250cm9sICYmIHR5cGVvZiBzYW1wbGUuc3RhY2sgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBUaGlzIGV4dHJhY3RzIHRoZSBmaXJzdCBmcmFtZSBmcm9tIHRoZSBzYW1wbGUgdGhhdCBpc24ndCBhbHNvIGluIHRoZSBjb250cm9sLlxuICAgICAgLy8gU2tpcHBpbmcgb25lIGZyYW1lIHRoYXQgd2UgYXNzdW1lIGlzIHRoZSBmcmFtZSB0aGF0IGNhbGxzIHRoZSB0d28uXG4gICAgICB2YXIgc2FtcGxlTGluZXMgPSBzYW1wbGUuc3RhY2suc3BsaXQoJ1xcbicpO1xuICAgICAgdmFyIGNvbnRyb2xMaW5lcyA9IGNvbnRyb2wuc3RhY2suc3BsaXQoJ1xcbicpO1xuICAgICAgdmFyIHMgPSBzYW1wbGVMaW5lcy5sZW5ndGggLSAxO1xuICAgICAgdmFyIGMgPSBjb250cm9sTGluZXMubGVuZ3RoIC0gMTtcblxuICAgICAgd2hpbGUgKHMgPj0gMSAmJiBjID49IDAgJiYgc2FtcGxlTGluZXNbc10gIT09IGNvbnRyb2xMaW5lc1tjXSkge1xuICAgICAgICAvLyBXZSBleHBlY3QgYXQgbGVhc3Qgb25lIHN0YWNrIGZyYW1lIHRvIGJlIHNoYXJlZC5cbiAgICAgICAgLy8gVHlwaWNhbGx5IHRoaXMgd2lsbCBiZSB0aGUgcm9vdCBtb3N0IG9uZS4gSG93ZXZlciwgc3RhY2sgZnJhbWVzIG1heSBiZVxuICAgICAgICAvLyBjdXQgb2ZmIGR1ZSB0byBtYXhpbXVtIHN0YWNrIGxpbWl0cy4gSW4gdGhpcyBjYXNlLCBvbmUgbWF5YmUgY3V0IG9mZlxuICAgICAgICAvLyBlYXJsaWVyIHRoYW4gdGhlIG90aGVyLiBXZSBhc3N1bWUgdGhhdCB0aGUgc2FtcGxlIGlzIGxvbmdlciBvciB0aGUgc2FtZVxuICAgICAgICAvLyBhbmQgdGhlcmUgZm9yIGN1dCBvZmYgZWFybGllci4gU28gd2Ugc2hvdWxkIGZpbmQgdGhlIHJvb3QgbW9zdCBmcmFtZSBpblxuICAgICAgICAvLyB0aGUgc2FtcGxlIHNvbWV3aGVyZSBpbiB0aGUgY29udHJvbC5cbiAgICAgICAgYy0tO1xuICAgICAgfVxuXG4gICAgICBmb3IgKDsgcyA+PSAxICYmIGMgPj0gMDsgcy0tLCBjLS0pIHtcbiAgICAgICAgLy8gTmV4dCB3ZSBmaW5kIHRoZSBmaXJzdCBvbmUgdGhhdCBpc24ndCB0aGUgc2FtZSB3aGljaCBzaG91bGQgYmUgdGhlXG4gICAgICAgIC8vIGZyYW1lIHRoYXQgY2FsbGVkIG91ciBzYW1wbGUgZnVuY3Rpb24gYW5kIHRoZSBjb250cm9sLlxuICAgICAgICBpZiAoc2FtcGxlTGluZXNbc10gIT09IGNvbnRyb2xMaW5lc1tjXSkge1xuICAgICAgICAgIC8vIEluIFY4LCB0aGUgZmlyc3QgbGluZSBpcyBkZXNjcmliaW5nIHRoZSBtZXNzYWdlIGJ1dCBvdGhlciBWTXMgZG9uJ3QuXG4gICAgICAgICAgLy8gSWYgd2UncmUgYWJvdXQgdG8gcmV0dXJuIHRoZSBmaXJzdCBsaW5lLCBhbmQgdGhlIGNvbnRyb2wgaXMgYWxzbyBvbiB0aGUgc2FtZVxuICAgICAgICAgIC8vIGxpbmUsIHRoYXQncyBhIHByZXR0eSBnb29kIGluZGljYXRvciB0aGF0IG91ciBzYW1wbGUgdGhyZXcgYXQgc2FtZSBsaW5lIGFzXG4gICAgICAgICAgLy8gdGhlIGNvbnRyb2wuIEkuZS4gYmVmb3JlIHdlIGVudGVyZWQgdGhlIHNhbXBsZSBmcmFtZS4gU28gd2UgaWdub3JlIHRoaXMgcmVzdWx0LlxuICAgICAgICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBpZiB5b3UgcGFzc2VkIGEgY2xhc3MgdG8gZnVuY3Rpb24gY29tcG9uZW50LCBvciBub24tZnVuY3Rpb24uXG4gICAgICAgICAgaWYgKHMgIT09IDEgfHwgYyAhPT0gMSkge1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICBzLS07XG4gICAgICAgICAgICAgIGMtLTsgLy8gV2UgbWF5IHN0aWxsIGhhdmUgc2ltaWxhciBpbnRlcm1lZGlhdGUgZnJhbWVzIGZyb20gdGhlIGNvbnN0cnVjdCBjYWxsLlxuICAgICAgICAgICAgICAvLyBUaGUgbmV4dCBvbmUgdGhhdCBpc24ndCB0aGUgc2FtZSBzaG91bGQgYmUgb3VyIG1hdGNoIHRob3VnaC5cblxuICAgICAgICAgICAgICBpZiAoYyA8IDAgfHwgc2FtcGxlTGluZXNbc10gIT09IGNvbnRyb2xMaW5lc1tjXSkge1xuICAgICAgICAgICAgICAgIC8vIFY4IGFkZHMgYSBcIm5ld1wiIHByZWZpeCBmb3IgbmF0aXZlIGNsYXNzZXMuIExldCdzIHJlbW92ZSBpdCB0byBtYWtlIGl0IHByZXR0aWVyLlxuICAgICAgICAgICAgICAgIHZhciBfZnJhbWUgPSAnXFxuJyArIHNhbXBsZUxpbmVzW3NdLnJlcGxhY2UoJyBhdCBuZXcgJywgJyBhdCAnKTsgLy8gSWYgb3VyIGNvbXBvbmVudCBmcmFtZSBpcyBsYWJlbGVkIFwiPGFub255bW91cz5cIlxuICAgICAgICAgICAgICAgIC8vIGJ1dCB3ZSBoYXZlIGEgdXNlci1wcm92aWRlZCBcImRpc3BsYXlOYW1lXCJcbiAgICAgICAgICAgICAgICAvLyBzcGxpY2UgaXQgaW4gdG8gbWFrZSB0aGUgc3RhY2sgbW9yZSByZWFkYWJsZS5cblxuXG4gICAgICAgICAgICAgICAgaWYgKGZuLmRpc3BsYXlOYW1lICYmIF9mcmFtZS5pbmNsdWRlcygnPGFub255bW91cz4nKSkge1xuICAgICAgICAgICAgICAgICAgX2ZyYW1lID0gX2ZyYW1lLnJlcGxhY2UoJzxhbm9ueW1vdXM+JywgZm4uZGlzcGxheU5hbWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50RnJhbWVDYWNoZS5zZXQoZm4sIF9mcmFtZSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSAvLyBSZXR1cm4gdGhlIGxpbmUgd2UgZm91bmQuXG5cblxuICAgICAgICAgICAgICAgIHJldHVybiBfZnJhbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gd2hpbGUgKHMgPj0gMSAmJiBjID49IDApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIHJlZW50cnkgPSBmYWxzZTtcblxuICAgIHtcbiAgICAgIFJlYWN0Q3VycmVudERpc3BhdGNoZXIuY3VycmVudCA9IHByZXZpb3VzRGlzcGF0Y2hlcjtcbiAgICAgIHJlZW5hYmxlTG9ncygpO1xuICAgIH1cblxuICAgIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gcHJldmlvdXNQcmVwYXJlU3RhY2tUcmFjZTtcbiAgfSAvLyBGYWxsYmFjayB0byBqdXN0IHVzaW5nIHRoZSBuYW1lIGlmIHdlIGNvdWxkbid0IG1ha2UgaXQgdGhyb3cuXG5cblxuICB2YXIgbmFtZSA9IGZuID8gZm4uZGlzcGxheU5hbWUgfHwgZm4ubmFtZSA6ICcnO1xuICB2YXIgc3ludGhldGljRnJhbWUgPSBuYW1lID8gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUobmFtZSkgOiAnJztcblxuICB7XG4gICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29tcG9uZW50RnJhbWVDYWNoZS5zZXQoZm4sIHN5bnRoZXRpY0ZyYW1lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3ludGhldGljRnJhbWU7XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJlQ2xhc3NDb21wb25lbnRGcmFtZShjdG9yLCBzb3VyY2UsIG93bmVyRm4pIHtcbiAge1xuICAgIHJldHVybiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKGN0b3IsIHRydWUpO1xuICB9XG59XG5mdW5jdGlvbiBkZXNjcmliZUZ1bmN0aW9uQ29tcG9uZW50RnJhbWUoZm4sIHNvdXJjZSwgb3duZXJGbikge1xuICB7XG4gICAgcmV0dXJuIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUoZm4sIGZhbHNlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzaG91bGRDb25zdHJ1Y3QoQ29tcG9uZW50KSB7XG4gIHZhciBwcm90b3R5cGUgPSBDb21wb25lbnQucHJvdG90eXBlO1xuICByZXR1cm4gISEocHJvdG90eXBlICYmIHByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50KTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKHR5cGUsIHNvdXJjZSwgb3duZXJGbikge1xuXG4gIGlmICh0eXBlID09IG51bGwpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICB7XG4gICAgICByZXR1cm4gZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZSh0eXBlLCBzaG91bGRDb25zdHJ1Y3QodHlwZSkpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUodHlwZSk7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoJ1N1c3BlbnNlJyk7XG5cbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTpcbiAgICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZSgnU3VzcGVuc2VMaXN0Jyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgc3dpdGNoICh0eXBlLiQkdHlwZW9mKSB7XG4gICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgIHJldHVybiBkZXNjcmliZUZ1bmN0aW9uQ29tcG9uZW50RnJhbWUodHlwZS5yZW5kZXIpO1xuXG4gICAgICBjYXNlIFJFQUNUX01FTU9fVFlQRTpcbiAgICAgICAgLy8gTWVtbyBtYXkgY29udGFpbiBhbnkgY29tcG9uZW50IHR5cGUgc28gd2UgcmVjdXJzaXZlbHkgcmVzb2x2ZSBpdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVih0eXBlLnR5cGUsIHNvdXJjZSwgb3duZXJGbik7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGxhenlDb21wb25lbnQgPSB0eXBlO1xuICAgICAgICAgIHZhciBwYXlsb2FkID0gbGF6eUNvbXBvbmVudC5fcGF5bG9hZDtcbiAgICAgICAgICB2YXIgaW5pdCA9IGxhenlDb21wb25lbnQuX2luaXQ7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gTGF6eSBtYXkgY29udGFpbiBhbnkgY29tcG9uZW50IHR5cGUgc28gd2UgcmVjdXJzaXZlbHkgcmVzb2x2ZSBpdC5cbiAgICAgICAgICAgIHJldHVybiBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYoaW5pdChwYXlsb2FkKSwgc291cmNlLCBvd25lckZuKTtcbiAgICAgICAgICB9IGNhdGNoICh4KSB7fVxuICAgICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICcnO1xufVxuXG52YXIgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307XG52YXIgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0RGVidWdDdXJyZW50RnJhbWU7XG5cbmZ1bmN0aW9uIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KGVsZW1lbnQpIHtcbiAge1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICB2YXIgb3duZXIgPSBlbGVtZW50Ll9vd25lcjtcbiAgICAgIHZhciBzdGFjayA9IGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVihlbGVtZW50LnR5cGUsIGVsZW1lbnQuX3NvdXJjZSwgb3duZXIgPyBvd25lci50eXBlIDogbnVsbCk7XG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lLnNldEV4dHJhU3RhY2tGcmFtZShzdGFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIFJlYWN0RGVidWdDdXJyZW50RnJhbWUuc2V0RXh0cmFTdGFja0ZyYW1lKG51bGwpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja1Byb3BUeXBlcyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24sIGNvbXBvbmVudE5hbWUsIGVsZW1lbnQpIHtcbiAge1xuICAgIC8vICRGbG93Rml4TWUgVGhpcyBpcyBva2F5IGJ1dCBGbG93IGRvZXNuJ3Qga25vdyBpdC5cbiAgICB2YXIgaGFzID0gRnVuY3Rpb24uY2FsbC5iaW5kKGhhc093blByb3BlcnR5KTtcblxuICAgIGZvciAodmFyIHR5cGVTcGVjTmFtZSBpbiB0eXBlU3BlY3MpIHtcbiAgICAgIGlmIChoYXModHlwZVNwZWNzLCB0eXBlU3BlY05hbWUpKSB7XG4gICAgICAgIHZhciBlcnJvciQxID0gdm9pZCAwOyAvLyBQcm9wIHR5cGUgdmFsaWRhdGlvbiBtYXkgdGhyb3cuIEluIGNhc2UgdGhleSBkbywgd2UgZG9uJ3Qgd2FudCB0b1xuICAgICAgICAvLyBmYWlsIHRoZSByZW5kZXIgcGhhc2Ugd2hlcmUgaXQgZGlkbid0IGZhaWwgYmVmb3JlLiBTbyB3ZSBsb2cgaXQuXG4gICAgICAgIC8vIEFmdGVyIHRoZXNlIGhhdmUgYmVlbiBjbGVhbmVkIHVwLCB3ZSdsbCBsZXQgdGhlbSB0aHJvdy5cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxuICAgICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS5cbiAgICAgICAgICBpZiAodHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvcHJvZC1lcnJvci1jb2Rlc1xuICAgICAgICAgICAgdmFyIGVyciA9IEVycm9yKChjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycpICsgJzogJyArIGxvY2F0aW9uICsgJyB0eXBlIGAnICsgdHlwZVNwZWNOYW1lICsgJ2AgaXMgaW52YWxpZDsgJyArICdpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UsIGJ1dCByZWNlaXZlZCBgJyArIHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSArICdgLicgKyAnVGhpcyBvZnRlbiBoYXBwZW5zIGJlY2F1c2Ugb2YgdHlwb3Mgc3VjaCBhcyBgUHJvcFR5cGVzLmZ1bmN0aW9uYCBpbnN0ZWFkIG9mIGBQcm9wVHlwZXMuZnVuY2AuJyk7XG4gICAgICAgICAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlcnJvciQxID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnKTtcbiAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICBlcnJvciQxID0gZXg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3IkMSAmJiAhKGVycm9yJDEgaW5zdGFuY2VvZiBFcnJvcikpIHtcbiAgICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChlbGVtZW50KTtcblxuICAgICAgICAgIGVycm9yKCclczogdHlwZSBzcGVjaWZpY2F0aW9uIG9mICVzJyArICcgYCVzYCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgKyAnZnVuY3Rpb24gbXVzdCByZXR1cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJXMuICcgKyAnWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyArICdjcmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlwZSwgYW5kICcgKyAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQpLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgbG9jYXRpb24sIHR5cGVTcGVjTmFtZSwgdHlwZW9mIGVycm9yJDEpO1xuXG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3IkMSBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IkMS5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHtcbiAgICAgICAgICAvLyBPbmx5IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0aGVyZSB0ZW5kcyB0byBiZSBhIGxvdCBvZiB0aGVcbiAgICAgICAgICAvLyBzYW1lIGVycm9yLlxuICAgICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvciQxLm1lc3NhZ2VdID0gdHJ1ZTtcbiAgICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChlbGVtZW50KTtcblxuICAgICAgICAgIGVycm9yKCdGYWlsZWQgJXMgdHlwZTogJXMnLCBsb2NhdGlvbiwgZXJyb3IkMS5tZXNzYWdlKTtcblxuICAgICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciB3YXJuZWRBYm91dE1pc3NpbmdHZXRDaGlsZENvbnRleHQ7XG5cbntcbiAgd2FybmVkQWJvdXRNaXNzaW5nR2V0Q2hpbGRDb250ZXh0ID0ge307XG59XG5cbnZhciBlbXB0eUNvbnRleHRPYmplY3QgPSB7fTtcblxue1xuICBPYmplY3QuZnJlZXplKGVtcHR5Q29udGV4dE9iamVjdCk7XG59XG5cbmZ1bmN0aW9uIGdldE1hc2tlZENvbnRleHQodHlwZSwgdW5tYXNrZWRDb250ZXh0KSB7XG4gIHtcbiAgICB2YXIgY29udGV4dFR5cGVzID0gdHlwZS5jb250ZXh0VHlwZXM7XG5cbiAgICBpZiAoIWNvbnRleHRUeXBlcykge1xuICAgICAgcmV0dXJuIGVtcHR5Q29udGV4dE9iamVjdDtcbiAgICB9XG5cbiAgICB2YXIgY29udGV4dCA9IHt9O1xuXG4gICAgZm9yICh2YXIga2V5IGluIGNvbnRleHRUeXBlcykge1xuICAgICAgY29udGV4dFtrZXldID0gdW5tYXNrZWRDb250ZXh0W2tleV07XG4gICAgfVxuXG4gICAge1xuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSkgfHwgJ1Vua25vd24nO1xuICAgICAgY2hlY2tQcm9wVHlwZXMoY29udGV4dFR5cGVzLCBjb250ZXh0LCAnY29udGV4dCcsIG5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBjb250ZXh0O1xuICB9XG59XG5mdW5jdGlvbiBwcm9jZXNzQ2hpbGRDb250ZXh0KGluc3RhbmNlLCB0eXBlLCBwYXJlbnRDb250ZXh0LCBjaGlsZENvbnRleHRUeXBlcykge1xuICB7XG4gICAgLy8gVE9ETyAoYnZhdWdobikgUmVwbGFjZSB0aGlzIGJlaGF2aW9yIHdpdGggYW4gaW52YXJpYW50KCkgaW4gdGhlIGZ1dHVyZS5cbiAgICAvLyBJdCBoYXMgb25seSBiZWVuIGFkZGVkIGluIEZpYmVyIHRvIG1hdGNoIHRoZSAodW5pbnRlbnRpb25hbCkgYmVoYXZpb3IgaW4gU3RhY2suXG4gICAgaWYgKHR5cGVvZiBpbnN0YW5jZS5nZXRDaGlsZENvbnRleHQgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHtcbiAgICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSkgfHwgJ1Vua25vd24nO1xuXG4gICAgICAgIGlmICghd2FybmVkQWJvdXRNaXNzaW5nR2V0Q2hpbGRDb250ZXh0W2NvbXBvbmVudE5hbWVdKSB7XG4gICAgICAgICAgd2FybmVkQWJvdXRNaXNzaW5nR2V0Q2hpbGRDb250ZXh0W2NvbXBvbmVudE5hbWVdID0gdHJ1ZTtcblxuICAgICAgICAgIGVycm9yKCclcy5jaGlsZENvbnRleHRUeXBlcyBpcyBzcGVjaWZpZWQgYnV0IHRoZXJlIGlzIG5vIGdldENoaWxkQ29udGV4dCgpIG1ldGhvZCAnICsgJ29uIHRoZSBpbnN0YW5jZS4gWW91IGNhbiBlaXRoZXIgZGVmaW5lIGdldENoaWxkQ29udGV4dCgpIG9uICVzIG9yIHJlbW92ZSAnICsgJ2NoaWxkQ29udGV4dFR5cGVzIGZyb20gaXQuJywgY29tcG9uZW50TmFtZSwgY29tcG9uZW50TmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhcmVudENvbnRleHQ7XG4gICAgfVxuXG4gICAgdmFyIGNoaWxkQ29udGV4dCA9IGluc3RhbmNlLmdldENoaWxkQ29udGV4dCgpO1xuXG4gICAgZm9yICh2YXIgY29udGV4dEtleSBpbiBjaGlsZENvbnRleHQpIHtcbiAgICAgIGlmICghKGNvbnRleHRLZXkgaW4gY2hpbGRDb250ZXh0VHlwZXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigoZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHx8ICdVbmtub3duJykgKyBcIi5nZXRDaGlsZENvbnRleHQoKToga2V5IFxcXCJcIiArIGNvbnRleHRLZXkgKyBcIlxcXCIgaXMgbm90IGRlZmluZWQgaW4gY2hpbGRDb250ZXh0VHlwZXMuXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHx8ICdVbmtub3duJztcbiAgICAgIGNoZWNrUHJvcFR5cGVzKGNoaWxkQ29udGV4dFR5cGVzLCBjaGlsZENvbnRleHQsICdjaGlsZCBjb250ZXh0JywgbmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzc2lnbih7fSwgcGFyZW50Q29udGV4dCwgY2hpbGRDb250ZXh0KTtcbiAgfVxufVxuXG52YXIgcmVuZGVyZXJTaWdpbDtcblxue1xuICAvLyBVc2UgdGhpcyB0byBkZXRlY3QgbXVsdGlwbGUgcmVuZGVyZXJzIHVzaW5nIHRoZSBzYW1lIGNvbnRleHRcbiAgcmVuZGVyZXJTaWdpbCA9IHt9O1xufSAvLyBVc2VkIHRvIHN0b3JlIHRoZSBwYXJlbnQgcGF0aCBvZiBhbGwgY29udGV4dCBvdmVycmlkZXMgaW4gYSBzaGFyZWQgbGlua2VkIGxpc3QuXG4vLyBGb3JtaW5nIGEgcmV2ZXJzZSB0cmVlLlxuXG5cbnZhciByb290Q29udGV4dFNuYXBzaG90ID0gbnVsbDsgLy8gV2UgYXNzdW1lIHRoYXQgdGhpcyBydW50aW1lIG93bnMgdGhlIFwiY3VycmVudFwiIGZpZWxkIG9uIGFsbCBSZWFjdENvbnRleHQgaW5zdGFuY2VzLlxuLy8gVGhpcyBnbG9iYWwgKGFjdHVhbGx5IHRocmVhZCBsb2NhbCkgc3RhdGUgcmVwcmVzZW50cyB3aGF0IHN0YXRlIGFsbCB0aG9zZSBcImN1cnJlbnRcIixcbi8vIGZpZWxkcyBhcmUgY3VycmVudGx5IGluLlxuXG52YXIgY3VycmVudEFjdGl2ZVNuYXBzaG90ID0gbnVsbDtcblxuZnVuY3Rpb24gcG9wTm9kZShwcmV2KSB7XG4gIHtcbiAgICBwcmV2LmNvbnRleHQuX2N1cnJlbnRWYWx1ZTIgPSBwcmV2LnBhcmVudFZhbHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHB1c2hOb2RlKG5leHQpIHtcbiAge1xuICAgIG5leHQuY29udGV4dC5fY3VycmVudFZhbHVlMiA9IG5leHQudmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9wVG9OZWFyZXN0Q29tbW9uQW5jZXN0b3IocHJldiwgbmV4dCkge1xuICBpZiAocHJldiA9PT0gbmV4dCkgOyBlbHNlIHtcbiAgICBwb3BOb2RlKHByZXYpO1xuICAgIHZhciBwYXJlbnRQcmV2ID0gcHJldi5wYXJlbnQ7XG4gICAgdmFyIHBhcmVudE5leHQgPSBuZXh0LnBhcmVudDtcblxuICAgIGlmIChwYXJlbnRQcmV2ID09PSBudWxsKSB7XG4gICAgICBpZiAocGFyZW50TmV4dCAhPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBzdGFja3MgbXVzdCByZWFjaCB0aGUgcm9vdCBhdCB0aGUgc2FtZSB0aW1lLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LicpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocGFyZW50TmV4dCA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBzdGFja3MgbXVzdCByZWFjaCB0aGUgcm9vdCBhdCB0aGUgc2FtZSB0aW1lLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LicpO1xuICAgICAgfVxuXG4gICAgICBwb3BUb05lYXJlc3RDb21tb25BbmNlc3RvcihwYXJlbnRQcmV2LCBwYXJlbnROZXh0KTtcbiAgICB9IC8vIE9uIHRoZSB3YXkgYmFjaywgd2UgcHVzaCB0aGUgbmV3IG9uZXMgdGhhdCB3ZXJlbid0IGNvbW1vbi5cblxuXG4gICAgcHVzaE5vZGUobmV4dCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9wQWxsUHJldmlvdXMocHJldikge1xuICBwb3BOb2RlKHByZXYpO1xuICB2YXIgcGFyZW50UHJldiA9IHByZXYucGFyZW50O1xuXG4gIGlmIChwYXJlbnRQcmV2ICE9PSBudWxsKSB7XG4gICAgcG9wQWxsUHJldmlvdXMocGFyZW50UHJldik7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHVzaEFsbE5leHQobmV4dCkge1xuICB2YXIgcGFyZW50TmV4dCA9IG5leHQucGFyZW50O1xuXG4gIGlmIChwYXJlbnROZXh0ICE9PSBudWxsKSB7XG4gICAgcHVzaEFsbE5leHQocGFyZW50TmV4dCk7XG4gIH1cblxuICBwdXNoTm9kZShuZXh0KTtcbn1cblxuZnVuY3Rpb24gcG9wUHJldmlvdXNUb0NvbW1vbkxldmVsKHByZXYsIG5leHQpIHtcbiAgcG9wTm9kZShwcmV2KTtcbiAgdmFyIHBhcmVudFByZXYgPSBwcmV2LnBhcmVudDtcblxuICBpZiAocGFyZW50UHJldiA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRlcHRoIG11c3QgZXF1YWwgYXQgbGVhc3QgYXQgemVybyBiZWZvcmUgcmVhY2hpbmcgdGhlIHJvb3QuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuJyk7XG4gIH1cblxuICBpZiAocGFyZW50UHJldi5kZXB0aCA9PT0gbmV4dC5kZXB0aCkge1xuICAgIC8vIFdlIGZvdW5kIHRoZSBzYW1lIGxldmVsLiBOb3cgd2UganVzdCBuZWVkIHRvIGZpbmQgYSBzaGFyZWQgYW5jZXN0b3IuXG4gICAgcG9wVG9OZWFyZXN0Q29tbW9uQW5jZXN0b3IocGFyZW50UHJldiwgbmV4dCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gV2UgbXVzdCBzdGlsbCBiZSBkZWVwZXIuXG4gICAgcG9wUHJldmlvdXNUb0NvbW1vbkxldmVsKHBhcmVudFByZXYsIG5leHQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBvcE5leHRUb0NvbW1vbkxldmVsKHByZXYsIG5leHQpIHtcbiAgdmFyIHBhcmVudE5leHQgPSBuZXh0LnBhcmVudDtcblxuICBpZiAocGFyZW50TmV4dCA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRlcHRoIG11c3QgZXF1YWwgYXQgbGVhc3QgYXQgemVybyBiZWZvcmUgcmVhY2hpbmcgdGhlIHJvb3QuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuJyk7XG4gIH1cblxuICBpZiAocHJldi5kZXB0aCA9PT0gcGFyZW50TmV4dC5kZXB0aCkge1xuICAgIC8vIFdlIGZvdW5kIHRoZSBzYW1lIGxldmVsLiBOb3cgd2UganVzdCBuZWVkIHRvIGZpbmQgYSBzaGFyZWQgYW5jZXN0b3IuXG4gICAgcG9wVG9OZWFyZXN0Q29tbW9uQW5jZXN0b3IocHJldiwgcGFyZW50TmV4dCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gV2UgbXVzdCBzdGlsbCBiZSBkZWVwZXIuXG4gICAgcG9wTmV4dFRvQ29tbW9uTGV2ZWwocHJldiwgcGFyZW50TmV4dCk7XG4gIH1cblxuICBwdXNoTm9kZShuZXh0KTtcbn0gLy8gUGVyZm9ybSBjb250ZXh0IHN3aXRjaGluZyB0byB0aGUgbmV3IHNuYXBzaG90LlxuLy8gVG8gbWFrZSBpdCBjaGVhcCB0byByZWFkIG1hbnkgY29udGV4dHMsIHdoaWxlIG5vdCBzdXNwZW5kaW5nLCB3ZSBtYWtlIHRoZSBzd2l0Y2ggZWFnZXJseSBieVxuLy8gdXBkYXRpbmcgYWxsIHRoZSBjb250ZXh0J3MgY3VycmVudCB2YWx1ZXMuIFRoYXQgd2F5IHJlYWRzLCBhbHdheXMganVzdCByZWFkIHRoZSBjdXJyZW50IHZhbHVlLlxuLy8gQXQgdGhlIGNvc3Qgb2YgdXBkYXRpbmcgY29udGV4dHMgZXZlbiBpZiB0aGV5J3JlIG5ldmVyIHJlYWQgYnkgdGhpcyBzdWJ0cmVlLlxuXG5cbmZ1bmN0aW9uIHN3aXRjaENvbnRleHQobmV3U25hcHNob3QpIHtcbiAgLy8gVGhlIGJhc2ljIGFsZ29yaXRobSB3ZSBuZWVkIHRvIGRvIGlzIHRvIHBvcCBiYWNrIGFueSBjb250ZXh0cyB0aGF0IGFyZSBubyBsb25nZXIgb24gdGhlIHN0YWNrLlxuICAvLyBXZSBhbHNvIG5lZWQgdG8gdXBkYXRlIGFueSBuZXcgY29udGV4dHMgdGhhdCBhcmUgbm93IG9uIHRoZSBzdGFjayB3aXRoIHRoZSBkZWVwZXN0IHZhbHVlLlxuICAvLyBUaGUgZWFzaWVzdCB3YXkgdG8gdXBkYXRlIG5ldyBjb250ZXh0cyBpcyB0byBqdXN0IHJlYXBwbHkgdGhlbSBpbiByZXZlcnNlIG9yZGVyIGZyb20gdGhlXG4gIC8vIHBlcnNwZWN0aXZlIG9mIHRoZSBiYWNrcG9pbnRlcnMuIFRvIGF2b2lkIGFsbG9jYXRpbmcgYSBsb3Qgd2hlbiBzd2l0Y2hpbmcsIHdlIHVzZSB0aGUgc3RhY2tcbiAgLy8gZm9yIHRoYXQuIFRoZXJlZm9yZSB0aGlzIGFsZ29yaXRobSBpcyByZWN1cnNpdmUuXG4gIC8vIDEpIEZpcnN0IHdlIHBvcCB3aGljaCBldmVyIHNuYXBzaG90IHRyZWUgd2FzIGRlZXBlc3QuIFBvcHBpbmcgb2xkIGNvbnRleHRzIGFzIHdlIGdvLlxuICAvLyAyKSBUaGVuIHdlIGZpbmQgdGhlIG5lYXJlc3QgY29tbW9uIGFuY2VzdG9yIGZyb20gdGhlcmUuIFBvcHBpbmcgb2xkIGNvbnRleHRzIGFzIHdlIGdvLlxuICAvLyAzKSBUaGVuIHdlIHJlYXBwbHkgbmV3IGNvbnRleHRzIG9uIHRoZSB3YXkgYmFjayB1cCB0aGUgc3RhY2suXG4gIHZhciBwcmV2ID0gY3VycmVudEFjdGl2ZVNuYXBzaG90O1xuICB2YXIgbmV4dCA9IG5ld1NuYXBzaG90O1xuXG4gIGlmIChwcmV2ICE9PSBuZXh0KSB7XG4gICAgaWYgKHByZXYgPT09IG51bGwpIHtcbiAgICAgIC8vICRGbG93Rml4TWU6IFRoaXMgaGFzIHRvIGJlIG5vbi1udWxsIHNpbmNlIGl0J3Mgbm90IGVxdWFsIHRvIHByZXYuXG4gICAgICBwdXNoQWxsTmV4dChuZXh0KTtcbiAgICB9IGVsc2UgaWYgKG5leHQgPT09IG51bGwpIHtcbiAgICAgIHBvcEFsbFByZXZpb3VzKHByZXYpO1xuICAgIH0gZWxzZSBpZiAocHJldi5kZXB0aCA9PT0gbmV4dC5kZXB0aCkge1xuICAgICAgcG9wVG9OZWFyZXN0Q29tbW9uQW5jZXN0b3IocHJldiwgbmV4dCk7XG4gICAgfSBlbHNlIGlmIChwcmV2LmRlcHRoID4gbmV4dC5kZXB0aCkge1xuICAgICAgcG9wUHJldmlvdXNUb0NvbW1vbkxldmVsKHByZXYsIG5leHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwb3BOZXh0VG9Db21tb25MZXZlbChwcmV2LCBuZXh0KTtcbiAgICB9XG5cbiAgICBjdXJyZW50QWN0aXZlU25hcHNob3QgPSBuZXh0O1xuICB9XG59XG5mdW5jdGlvbiBwdXNoUHJvdmlkZXIoY29udGV4dCwgbmV4dFZhbHVlKSB7XG4gIHZhciBwcmV2VmFsdWU7XG5cbiAge1xuICAgIHByZXZWYWx1ZSA9IGNvbnRleHQuX2N1cnJlbnRWYWx1ZTI7XG4gICAgY29udGV4dC5fY3VycmVudFZhbHVlMiA9IG5leHRWYWx1ZTtcblxuICAgIHtcbiAgICAgIGlmIChjb250ZXh0Ll9jdXJyZW50UmVuZGVyZXIyICE9PSB1bmRlZmluZWQgJiYgY29udGV4dC5fY3VycmVudFJlbmRlcmVyMiAhPT0gbnVsbCAmJiBjb250ZXh0Ll9jdXJyZW50UmVuZGVyZXIyICE9PSByZW5kZXJlclNpZ2lsKSB7XG4gICAgICAgIGVycm9yKCdEZXRlY3RlZCBtdWx0aXBsZSByZW5kZXJlcnMgY29uY3VycmVudGx5IHJlbmRlcmluZyB0aGUgJyArICdzYW1lIGNvbnRleHQgcHJvdmlkZXIuIFRoaXMgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkLicpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0Ll9jdXJyZW50UmVuZGVyZXIyID0gcmVuZGVyZXJTaWdpbDtcbiAgICB9XG4gIH1cblxuICB2YXIgcHJldk5vZGUgPSBjdXJyZW50QWN0aXZlU25hcHNob3Q7XG4gIHZhciBuZXdOb2RlID0ge1xuICAgIHBhcmVudDogcHJldk5vZGUsXG4gICAgZGVwdGg6IHByZXZOb2RlID09PSBudWxsID8gMCA6IHByZXZOb2RlLmRlcHRoICsgMSxcbiAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgIHBhcmVudFZhbHVlOiBwcmV2VmFsdWUsXG4gICAgdmFsdWU6IG5leHRWYWx1ZVxuICB9O1xuICBjdXJyZW50QWN0aXZlU25hcHNob3QgPSBuZXdOb2RlO1xuICByZXR1cm4gbmV3Tm9kZTtcbn1cbmZ1bmN0aW9uIHBvcFByb3ZpZGVyKGNvbnRleHQpIHtcbiAgdmFyIHByZXZTbmFwc2hvdCA9IGN1cnJlbnRBY3RpdmVTbmFwc2hvdDtcblxuICBpZiAocHJldlNuYXBzaG90ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUcmllZCB0byBwb3AgYSBDb250ZXh0IGF0IHRoZSByb290IG9mIHRoZSBhcHAuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuJyk7XG4gIH1cblxuICB7XG4gICAgaWYgKHByZXZTbmFwc2hvdC5jb250ZXh0ICE9PSBjb250ZXh0KSB7XG4gICAgICBlcnJvcignVGhlIHBhcmVudCBjb250ZXh0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgY29udGV4dC4gVGhpcyBpcyBwcm9iYWJseSBhIGJ1ZyBpbiBSZWFjdC4nKTtcbiAgICB9XG4gIH1cblxuICB7XG4gICAgdmFyIF92YWx1ZSA9IHByZXZTbmFwc2hvdC5wYXJlbnRWYWx1ZTtcblxuICAgIGlmIChfdmFsdWUgPT09IFJFQUNUX1NFUlZFUl9DT05URVhUX0RFRkFVTFRfVkFMVUVfTk9UX0xPQURFRCkge1xuICAgICAgcHJldlNuYXBzaG90LmNvbnRleHQuX2N1cnJlbnRWYWx1ZTIgPSBwcmV2U25hcHNob3QuY29udGV4dC5fZGVmYXVsdFZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmV2U25hcHNob3QuY29udGV4dC5fY3VycmVudFZhbHVlMiA9IF92YWx1ZTtcbiAgICB9XG5cbiAgICB7XG4gICAgICBpZiAoY29udGV4dC5fY3VycmVudFJlbmRlcmVyMiAhPT0gdW5kZWZpbmVkICYmIGNvbnRleHQuX2N1cnJlbnRSZW5kZXJlcjIgIT09IG51bGwgJiYgY29udGV4dC5fY3VycmVudFJlbmRlcmVyMiAhPT0gcmVuZGVyZXJTaWdpbCkge1xuICAgICAgICBlcnJvcignRGV0ZWN0ZWQgbXVsdGlwbGUgcmVuZGVyZXJzIGNvbmN1cnJlbnRseSByZW5kZXJpbmcgdGhlICcgKyAnc2FtZSBjb250ZXh0IHByb3ZpZGVyLiBUaGlzIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZC4nKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5fY3VycmVudFJlbmRlcmVyMiA9IHJlbmRlcmVyU2lnaWw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGN1cnJlbnRBY3RpdmVTbmFwc2hvdCA9IHByZXZTbmFwc2hvdC5wYXJlbnQ7XG59XG5mdW5jdGlvbiBnZXRBY3RpdmVDb250ZXh0KCkge1xuICByZXR1cm4gY3VycmVudEFjdGl2ZVNuYXBzaG90O1xufVxuZnVuY3Rpb24gcmVhZENvbnRleHQoY29udGV4dCkge1xuICB2YXIgdmFsdWUgPSAgY29udGV4dC5fY3VycmVudFZhbHVlMjtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIGBSZWFjdEluc3RhbmNlTWFwYCBtYWludGFpbnMgYSBtYXBwaW5nIGZyb20gYSBwdWJsaWMgZmFjaW5nIHN0YXRlZnVsXG4gKiBpbnN0YW5jZSAoa2V5KSBhbmQgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uICh2YWx1ZSkuIFRoaXMgYWxsb3dzIHB1YmxpY1xuICogbWV0aG9kcyB0byBhY2NlcHQgdGhlIHVzZXIgZmFjaW5nIGluc3RhbmNlIGFzIGFuIGFyZ3VtZW50IGFuZCBtYXAgdGhlbSBiYWNrXG4gKiB0byBpbnRlcm5hbCBtZXRob2RzLlxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIG1vZHVsZSBpcyBjdXJyZW50bHkgc2hhcmVkIGFuZCBhc3N1bWVkIHRvIGJlIHN0YXRlbGVzcy5cbiAqIElmIHRoaXMgYmVjb21lcyBhbiBhY3R1YWwgTWFwLCB0aGF0IHdpbGwgYnJlYWsuXG4gKi9cbmZ1bmN0aW9uIGdldChrZXkpIHtcbiAgcmV0dXJuIGtleS5fcmVhY3RJbnRlcm5hbHM7XG59XG5mdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICBrZXkuX3JlYWN0SW50ZXJuYWxzID0gdmFsdWU7XG59XG5cbnZhciBkaWRXYXJuQWJvdXROb29wVXBkYXRlRm9yQ29tcG9uZW50ID0ge307XG52YXIgZGlkV2FybkFib3V0RGVwcmVjYXRlZFdpbGxNb3VudCA9IHt9O1xudmFyIGRpZFdhcm5BYm91dFVuaW5pdGlhbGl6ZWRTdGF0ZTtcbnZhciBkaWRXYXJuQWJvdXRHZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZVdpdGhvdXREaWRVcGRhdGU7XG52YXIgZGlkV2FybkFib3V0TGVnYWN5TGlmZWN5Y2xlc0FuZERlcml2ZWRTdGF0ZTtcbnZhciBkaWRXYXJuQWJvdXRVbmRlZmluZWREZXJpdmVkU3RhdGU7XG52YXIgd2Fybk9uVW5kZWZpbmVkRGVyaXZlZFN0YXRlO1xudmFyIHdhcm5PbkludmFsaWRDYWxsYmFjaztcbnZhciBkaWRXYXJuQWJvdXREaXJlY3RseUFzc2lnbmluZ1Byb3BzVG9TdGF0ZTtcbnZhciBkaWRXYXJuQWJvdXRDb250ZXh0VHlwZUFuZENvbnRleHRUeXBlcztcbnZhciBkaWRXYXJuQWJvdXRJbnZhbGlkYXRlQ29udGV4dFR5cGU7XG5cbntcbiAgZGlkV2FybkFib3V0VW5pbml0aWFsaXplZFN0YXRlID0gbmV3IFNldCgpO1xuICBkaWRXYXJuQWJvdXRHZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZVdpdGhvdXREaWRVcGRhdGUgPSBuZXcgU2V0KCk7XG4gIGRpZFdhcm5BYm91dExlZ2FjeUxpZmVjeWNsZXNBbmREZXJpdmVkU3RhdGUgPSBuZXcgU2V0KCk7XG4gIGRpZFdhcm5BYm91dERpcmVjdGx5QXNzaWduaW5nUHJvcHNUb1N0YXRlID0gbmV3IFNldCgpO1xuICBkaWRXYXJuQWJvdXRVbmRlZmluZWREZXJpdmVkU3RhdGUgPSBuZXcgU2V0KCk7XG4gIGRpZFdhcm5BYm91dENvbnRleHRUeXBlQW5kQ29udGV4dFR5cGVzID0gbmV3IFNldCgpO1xuICBkaWRXYXJuQWJvdXRJbnZhbGlkYXRlQ29udGV4dFR5cGUgPSBuZXcgU2V0KCk7XG4gIHZhciBkaWRXYXJuT25JbnZhbGlkQ2FsbGJhY2sgPSBuZXcgU2V0KCk7XG5cbiAgd2Fybk9uSW52YWxpZENhbGxiYWNrID0gZnVuY3Rpb24gKGNhbGxiYWNrLCBjYWxsZXJOYW1lKSB7XG4gICAgaWYgKGNhbGxiYWNrID09PSBudWxsIHx8IHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBrZXkgPSBjYWxsZXJOYW1lICsgJ18nICsgY2FsbGJhY2s7XG5cbiAgICBpZiAoIWRpZFdhcm5PbkludmFsaWRDYWxsYmFjay5oYXMoa2V5KSkge1xuICAgICAgZGlkV2Fybk9uSW52YWxpZENhbGxiYWNrLmFkZChrZXkpO1xuXG4gICAgICBlcnJvcignJXMoLi4uKTogRXhwZWN0ZWQgdGhlIGxhc3Qgb3B0aW9uYWwgYGNhbGxiYWNrYCBhcmd1bWVudCB0byBiZSBhICcgKyAnZnVuY3Rpb24uIEluc3RlYWQgcmVjZWl2ZWQ6ICVzLicsIGNhbGxlck5hbWUsIGNhbGxiYWNrKTtcbiAgICB9XG4gIH07XG5cbiAgd2Fybk9uVW5kZWZpbmVkRGVyaXZlZFN0YXRlID0gZnVuY3Rpb24gKHR5cGUsIHBhcnRpYWxTdGF0ZSkge1xuICAgIGlmIChwYXJ0aWFsU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSkgfHwgJ0NvbXBvbmVudCc7XG5cbiAgICAgIGlmICghZGlkV2FybkFib3V0VW5kZWZpbmVkRGVyaXZlZFN0YXRlLmhhcyhjb21wb25lbnROYW1lKSkge1xuICAgICAgICBkaWRXYXJuQWJvdXRVbmRlZmluZWREZXJpdmVkU3RhdGUuYWRkKGNvbXBvbmVudE5hbWUpO1xuXG4gICAgICAgIGVycm9yKCclcy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoKTogQSB2YWxpZCBzdGF0ZSBvYmplY3QgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQuICcgKyAnWW91IGhhdmUgcmV0dXJuZWQgdW5kZWZpbmVkLicsIGNvbXBvbmVudE5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gd2Fybk5vb3AocHVibGljSW5zdGFuY2UsIGNhbGxlck5hbWUpIHtcbiAge1xuICAgIHZhciBfY29uc3RydWN0b3IgPSBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3RvcjtcbiAgICB2YXIgY29tcG9uZW50TmFtZSA9IF9jb25zdHJ1Y3RvciAmJiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoX2NvbnN0cnVjdG9yKSB8fCAnUmVhY3RDbGFzcyc7XG4gICAgdmFyIHdhcm5pbmdLZXkgPSBjb21wb25lbnROYW1lICsgJy4nICsgY2FsbGVyTmFtZTtcblxuICAgIGlmIChkaWRXYXJuQWJvdXROb29wVXBkYXRlRm9yQ29tcG9uZW50W3dhcm5pbmdLZXldKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXJyb3IoJyVzKC4uLik6IENhbiBvbmx5IHVwZGF0ZSBhIG1vdW50aW5nIGNvbXBvbmVudC4gJyArICdUaGlzIHVzdWFsbHkgbWVhbnMgeW91IGNhbGxlZCAlcygpIG91dHNpZGUgY29tcG9uZW50V2lsbE1vdW50KCkgb24gdGhlIHNlcnZlci4gJyArICdUaGlzIGlzIGEgbm8tb3AuXFxuXFxuUGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUsIGNhbGxlck5hbWUsIGNvbXBvbmVudE5hbWUpO1xuXG4gICAgZGlkV2FybkFib3V0Tm9vcFVwZGF0ZUZvckNvbXBvbmVudFt3YXJuaW5nS2V5XSA9IHRydWU7XG4gIH1cbn1cblxudmFyIGNsYXNzQ29tcG9uZW50VXBkYXRlciA9IHtcbiAgaXNNb3VudGVkOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcbiAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAoaW5zdCwgcGF5bG9hZCwgY2FsbGJhY2spIHtcbiAgICB2YXIgaW50ZXJuYWxzID0gZ2V0KGluc3QpO1xuXG4gICAgaWYgKGludGVybmFscy5xdWV1ZSA9PT0gbnVsbCkge1xuICAgICAgd2Fybk5vb3AoaW5zdCwgJ3NldFN0YXRlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGludGVybmFscy5xdWV1ZS5wdXNoKHBheWxvYWQpO1xuXG4gICAgICB7XG4gICAgICAgIGlmIChjYWxsYmFjayAhPT0gdW5kZWZpbmVkICYmIGNhbGxiYWNrICE9PSBudWxsKSB7XG4gICAgICAgICAgd2Fybk9uSW52YWxpZENhbGxiYWNrKGNhbGxiYWNrLCAnc2V0U3RhdGUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKGluc3QsIHBheWxvYWQsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGludGVybmFscyA9IGdldChpbnN0KTtcbiAgICBpbnRlcm5hbHMucmVwbGFjZSA9IHRydWU7XG4gICAgaW50ZXJuYWxzLnF1ZXVlID0gW3BheWxvYWRdO1xuXG4gICAge1xuICAgICAgaWYgKGNhbGxiYWNrICE9PSB1bmRlZmluZWQgJiYgY2FsbGJhY2sgIT09IG51bGwpIHtcbiAgICAgICAgd2Fybk9uSW52YWxpZENhbGxiYWNrKGNhbGxiYWNrLCAnc2V0U3RhdGUnKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGVucXVldWVGb3JjZVVwZGF0ZTogZnVuY3Rpb24gKGluc3QsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGludGVybmFscyA9IGdldChpbnN0KTtcblxuICAgIGlmIChpbnRlcm5hbHMucXVldWUgPT09IG51bGwpIHtcbiAgICAgIHdhcm5Ob29wKGluc3QsICdmb3JjZVVwZGF0ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB7XG4gICAgICAgIGlmIChjYWxsYmFjayAhPT0gdW5kZWZpbmVkICYmIGNhbGxiYWNrICE9PSBudWxsKSB7XG4gICAgICAgICAgd2Fybk9uSW52YWxpZENhbGxiYWNrKGNhbGxiYWNrLCAnc2V0U3RhdGUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gYXBwbHlEZXJpdmVkU3RhdGVGcm9tUHJvcHMoaW5zdGFuY2UsIGN0b3IsIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcywgcHJldlN0YXRlLCBuZXh0UHJvcHMpIHtcbiAgdmFyIHBhcnRpYWxTdGF0ZSA9IGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhuZXh0UHJvcHMsIHByZXZTdGF0ZSk7XG5cbiAge1xuICAgIHdhcm5PblVuZGVmaW5lZERlcml2ZWRTdGF0ZShjdG9yLCBwYXJ0aWFsU3RhdGUpO1xuICB9IC8vIE1lcmdlIHRoZSBwYXJ0aWFsIHN0YXRlIGFuZCB0aGUgcHJldmlvdXMgc3RhdGUuXG5cblxuICB2YXIgbmV3U3RhdGUgPSBwYXJ0aWFsU3RhdGUgPT09IG51bGwgfHwgcGFydGlhbFN0YXRlID09PSB1bmRlZmluZWQgPyBwcmV2U3RhdGUgOiBhc3NpZ24oe30sIHByZXZTdGF0ZSwgcGFydGlhbFN0YXRlKTtcbiAgcmV0dXJuIG5ld1N0YXRlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RDbGFzc0luc3RhbmNlKGN0b3IsIHByb3BzLCBtYXNrZWRMZWdhY3lDb250ZXh0KSB7XG4gIHZhciBjb250ZXh0ID0gZW1wdHlDb250ZXh0T2JqZWN0O1xuICB2YXIgY29udGV4dFR5cGUgPSBjdG9yLmNvbnRleHRUeXBlO1xuXG4gIHtcbiAgICBpZiAoJ2NvbnRleHRUeXBlJyBpbiBjdG9yKSB7XG4gICAgICB2YXIgaXNWYWxpZCA9IC8vIEFsbG93IG51bGwgZm9yIGNvbmRpdGlvbmFsIGRlY2xhcmF0aW9uXG4gICAgICBjb250ZXh0VHlwZSA9PT0gbnVsbCB8fCBjb250ZXh0VHlwZSAhPT0gdW5kZWZpbmVkICYmIGNvbnRleHRUeXBlLiQkdHlwZW9mID09PSBSRUFDVF9DT05URVhUX1RZUEUgJiYgY29udGV4dFR5cGUuX2NvbnRleHQgPT09IHVuZGVmaW5lZDsgLy8gTm90IGEgPENvbnRleHQuQ29uc3VtZXI+XG5cbiAgICAgIGlmICghaXNWYWxpZCAmJiAhZGlkV2FybkFib3V0SW52YWxpZGF0ZUNvbnRleHRUeXBlLmhhcyhjdG9yKSkge1xuICAgICAgICBkaWRXYXJuQWJvdXRJbnZhbGlkYXRlQ29udGV4dFR5cGUuYWRkKGN0b3IpO1xuICAgICAgICB2YXIgYWRkZW5kdW0gPSAnJztcblxuICAgICAgICBpZiAoY29udGV4dFR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFkZGVuZHVtID0gJyBIb3dldmVyLCBpdCBpcyBzZXQgdG8gdW5kZWZpbmVkLiAnICsgJ1RoaXMgY2FuIGJlIGNhdXNlZCBieSBhIHR5cG8gb3IgYnkgbWl4aW5nIHVwIG5hbWVkIGFuZCBkZWZhdWx0IGltcG9ydHMuICcgKyAnVGhpcyBjYW4gYWxzbyBoYXBwZW4gZHVlIHRvIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSwgc28gJyArICd0cnkgbW92aW5nIHRoZSBjcmVhdGVDb250ZXh0KCkgY2FsbCB0byBhIHNlcGFyYXRlIGZpbGUuJztcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY29udGV4dFR5cGUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgYWRkZW5kdW0gPSAnIEhvd2V2ZXIsIGl0IGlzIHNldCB0byBhICcgKyB0eXBlb2YgY29udGV4dFR5cGUgKyAnLic7XG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dFR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX1BST1ZJREVSX1RZUEUpIHtcbiAgICAgICAgICBhZGRlbmR1bSA9ICcgRGlkIHlvdSBhY2NpZGVudGFsbHkgcGFzcyB0aGUgQ29udGV4dC5Qcm92aWRlciBpbnN0ZWFkPyc7XG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dFR5cGUuX2NvbnRleHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgIGFkZGVuZHVtID0gJyBEaWQgeW91IGFjY2lkZW50YWxseSBwYXNzIHRoZSBDb250ZXh0LkNvbnN1bWVyIGluc3RlYWQ/JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRlbmR1bSA9ICcgSG93ZXZlciwgaXQgaXMgc2V0IHRvIGFuIG9iamVjdCB3aXRoIGtleXMgeycgKyBPYmplY3Qua2V5cyhjb250ZXh0VHlwZSkuam9pbignLCAnKSArICd9Lic7XG4gICAgICAgIH1cblxuICAgICAgICBlcnJvcignJXMgZGVmaW5lcyBhbiBpbnZhbGlkIGNvbnRleHRUeXBlLiAnICsgJ2NvbnRleHRUeXBlIHNob3VsZCBwb2ludCB0byB0aGUgQ29udGV4dCBvYmplY3QgcmV0dXJuZWQgYnkgUmVhY3QuY3JlYXRlQ29udGV4dCgpLiVzJywgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGN0b3IpIHx8ICdDb21wb25lbnQnLCBhZGRlbmR1bSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBjb250ZXh0VHlwZSA9PT0gJ29iamVjdCcgJiYgY29udGV4dFR5cGUgIT09IG51bGwpIHtcbiAgICBjb250ZXh0ID0gcmVhZENvbnRleHQoY29udGV4dFR5cGUpO1xuICB9IGVsc2Uge1xuICAgIGNvbnRleHQgPSBtYXNrZWRMZWdhY3lDb250ZXh0O1xuICB9XG5cbiAgdmFyIGluc3RhbmNlID0gbmV3IGN0b3IocHJvcHMsIGNvbnRleHQpO1xuXG4gIHtcbiAgICBpZiAodHlwZW9mIGN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID09PSAnZnVuY3Rpb24nICYmIChpbnN0YW5jZS5zdGF0ZSA9PT0gbnVsbCB8fCBpbnN0YW5jZS5zdGF0ZSA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoY3RvcikgfHwgJ0NvbXBvbmVudCc7XG5cbiAgICAgIGlmICghZGlkV2FybkFib3V0VW5pbml0aWFsaXplZFN0YXRlLmhhcyhjb21wb25lbnROYW1lKSkge1xuICAgICAgICBkaWRXYXJuQWJvdXRVbmluaXRpYWxpemVkU3RhdGUuYWRkKGNvbXBvbmVudE5hbWUpO1xuXG4gICAgICAgIGVycm9yKCdgJXNgIHVzZXMgYGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc2AgYnV0IGl0cyBpbml0aWFsIHN0YXRlIGlzICcgKyAnJXMuIFRoaXMgaXMgbm90IHJlY29tbWVuZGVkLiBJbnN0ZWFkLCBkZWZpbmUgdGhlIGluaXRpYWwgc3RhdGUgYnkgJyArICdhc3NpZ25pbmcgYW4gb2JqZWN0IHRvIGB0aGlzLnN0YXRlYCBpbiB0aGUgY29uc3RydWN0b3Igb2YgYCVzYC4gJyArICdUaGlzIGVuc3VyZXMgdGhhdCBgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzYCBhcmd1bWVudHMgaGF2ZSBhIGNvbnNpc3RlbnQgc2hhcGUuJywgY29tcG9uZW50TmFtZSwgaW5zdGFuY2Uuc3RhdGUgPT09IG51bGwgPyAnbnVsbCcgOiAndW5kZWZpbmVkJywgY29tcG9uZW50TmFtZSk7XG4gICAgICB9XG4gICAgfSAvLyBJZiBuZXcgY29tcG9uZW50IEFQSXMgYXJlIGRlZmluZWQsIFwidW5zYWZlXCIgbGlmZWN5Y2xlcyB3b24ndCBiZSBjYWxsZWQuXG4gICAgLy8gV2FybiBhYm91dCB0aGVzZSBsaWZlY3ljbGVzIGlmIHRoZXkgYXJlIHByZXNlbnQuXG4gICAgLy8gRG9uJ3Qgd2FybiBhYm91dCByZWFjdC1saWZlY3ljbGVzLWNvbXBhdCBwb2x5ZmlsbGVkIG1ldGhvZHMgdGhvdWdoLlxuXG5cbiAgICBpZiAodHlwZW9mIGN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBpbnN0YW5jZS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdmFyIGZvdW5kV2lsbE1vdW50TmFtZSA9IG51bGw7XG4gICAgICB2YXIgZm91bmRXaWxsUmVjZWl2ZVByb3BzTmFtZSA9IG51bGw7XG4gICAgICB2YXIgZm91bmRXaWxsVXBkYXRlTmFtZSA9IG51bGw7XG5cbiAgICAgIGlmICh0eXBlb2YgaW5zdGFuY2UuY29tcG9uZW50V2lsbE1vdW50ID09PSAnZnVuY3Rpb24nICYmIGluc3RhbmNlLmNvbXBvbmVudFdpbGxNb3VudC5fX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nICE9PSB0cnVlKSB7XG4gICAgICAgIGZvdW5kV2lsbE1vdW50TmFtZSA9ICdjb21wb25lbnRXaWxsTW91bnQnO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5zdGFuY2UuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBmb3VuZFdpbGxNb3VudE5hbWUgPSAnVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCc7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgaW5zdGFuY2UuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyA9PT0gJ2Z1bmN0aW9uJyAmJiBpbnN0YW5jZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzLl9fc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmcgIT09IHRydWUpIHtcbiAgICAgICAgZm91bmRXaWxsUmVjZWl2ZVByb3BzTmFtZSA9ICdjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJztcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGluc3RhbmNlLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGZvdW5kV2lsbFJlY2VpdmVQcm9wc05hbWUgPSAnVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMnO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGluc3RhbmNlLmNvbXBvbmVudFdpbGxVcGRhdGUgPT09ICdmdW5jdGlvbicgJiYgaW5zdGFuY2UuY29tcG9uZW50V2lsbFVwZGF0ZS5fX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nICE9PSB0cnVlKSB7XG4gICAgICAgIGZvdW5kV2lsbFVwZGF0ZU5hbWUgPSAnY29tcG9uZW50V2lsbFVwZGF0ZSc7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnN0YW5jZS5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBmb3VuZFdpbGxVcGRhdGVOYW1lID0gJ1VOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJztcbiAgICAgIH1cblxuICAgICAgaWYgKGZvdW5kV2lsbE1vdW50TmFtZSAhPT0gbnVsbCB8fCBmb3VuZFdpbGxSZWNlaXZlUHJvcHNOYW1lICE9PSBudWxsIHx8IGZvdW5kV2lsbFVwZGF0ZU5hbWUgIT09IG51bGwpIHtcbiAgICAgICAgdmFyIF9jb21wb25lbnROYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGN0b3IpIHx8ICdDb21wb25lbnQnO1xuXG4gICAgICAgIHZhciBuZXdBcGlOYW1lID0gdHlwZW9mIGN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID09PSAnZnVuY3Rpb24nID8gJ2dldERlcml2ZWRTdGF0ZUZyb21Qcm9wcygpJyA6ICdnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSgpJztcblxuICAgICAgICBpZiAoIWRpZFdhcm5BYm91dExlZ2FjeUxpZmVjeWNsZXNBbmREZXJpdmVkU3RhdGUuaGFzKF9jb21wb25lbnROYW1lKSkge1xuICAgICAgICAgIGRpZFdhcm5BYm91dExlZ2FjeUxpZmVjeWNsZXNBbmREZXJpdmVkU3RhdGUuYWRkKF9jb21wb25lbnROYW1lKTtcblxuICAgICAgICAgIGVycm9yKCdVbnNhZmUgbGVnYWN5IGxpZmVjeWNsZXMgd2lsbCBub3QgYmUgY2FsbGVkIGZvciBjb21wb25lbnRzIHVzaW5nIG5ldyBjb21wb25lbnQgQVBJcy5cXG5cXG4nICsgJyVzIHVzZXMgJXMgYnV0IGFsc28gY29udGFpbnMgdGhlIGZvbGxvd2luZyBsZWdhY3kgbGlmZWN5Y2xlczolcyVzJXNcXG5cXG4nICsgJ1RoZSBhYm92ZSBsaWZlY3ljbGVzIHNob3VsZCBiZSByZW1vdmVkLiBMZWFybiBtb3JlIGFib3V0IHRoaXMgd2FybmluZyBoZXJlOlxcbicgKyAnaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3Vuc2FmZS1jb21wb25lbnQtbGlmZWN5Y2xlcycsIF9jb21wb25lbnROYW1lLCBuZXdBcGlOYW1lLCBmb3VuZFdpbGxNb3VudE5hbWUgIT09IG51bGwgPyBcIlxcbiAgXCIgKyBmb3VuZFdpbGxNb3VudE5hbWUgOiAnJywgZm91bmRXaWxsUmVjZWl2ZVByb3BzTmFtZSAhPT0gbnVsbCA/IFwiXFxuICBcIiArIGZvdW5kV2lsbFJlY2VpdmVQcm9wc05hbWUgOiAnJywgZm91bmRXaWxsVXBkYXRlTmFtZSAhPT0gbnVsbCA/IFwiXFxuICBcIiArIGZvdW5kV2lsbFVwZGF0ZU5hbWUgOiAnJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbmZ1bmN0aW9uIGNoZWNrQ2xhc3NJbnN0YW5jZShpbnN0YW5jZSwgY3RvciwgbmV3UHJvcHMpIHtcbiAge1xuICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGN0b3IpIHx8ICdDb21wb25lbnQnO1xuICAgIHZhciByZW5kZXJQcmVzZW50ID0gaW5zdGFuY2UucmVuZGVyO1xuXG4gICAgaWYgKCFyZW5kZXJQcmVzZW50KSB7XG4gICAgICBpZiAoY3Rvci5wcm90b3R5cGUgJiYgdHlwZW9mIGN0b3IucHJvdG90eXBlLnJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBlcnJvcignJXMoLi4uKTogTm8gYHJlbmRlcmAgbWV0aG9kIGZvdW5kIG9uIHRoZSByZXR1cm5lZCBjb21wb25lbnQgJyArICdpbnN0YW5jZTogZGlkIHlvdSBhY2NpZGVudGFsbHkgcmV0dXJuIGFuIG9iamVjdCBmcm9tIHRoZSBjb25zdHJ1Y3Rvcj8nLCBuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yKCclcyguLi4pOiBObyBgcmVuZGVyYCBtZXRob2QgZm91bmQgb24gdGhlIHJldHVybmVkIGNvbXBvbmVudCAnICsgJ2luc3RhbmNlOiB5b3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIGRlZmluZSBgcmVuZGVyYC4nLCBuYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5zdGFuY2UuZ2V0SW5pdGlhbFN0YXRlICYmICFpbnN0YW5jZS5nZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNzQXBwcm92ZWQgJiYgIWluc3RhbmNlLnN0YXRlKSB7XG4gICAgICBlcnJvcignZ2V0SW5pdGlhbFN0YXRlIHdhcyBkZWZpbmVkIG9uICVzLCBhIHBsYWluIEphdmFTY3JpcHQgY2xhc3MuICcgKyAnVGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgY2xhc3NlcyBjcmVhdGVkIHVzaW5nIFJlYWN0LmNyZWF0ZUNsYXNzLiAnICsgJ0RpZCB5b3UgbWVhbiB0byBkZWZpbmUgYSBzdGF0ZSBwcm9wZXJ0eSBpbnN0ZWFkPycsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChpbnN0YW5jZS5nZXREZWZhdWx0UHJvcHMgJiYgIWluc3RhbmNlLmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCkge1xuICAgICAgZXJyb3IoJ2dldERlZmF1bHRQcm9wcyB3YXMgZGVmaW5lZCBvbiAlcywgYSBwbGFpbiBKYXZhU2NyaXB0IGNsYXNzLiAnICsgJ1RoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNsYXNzZXMgY3JlYXRlZCB1c2luZyBSZWFjdC5jcmVhdGVDbGFzcy4gJyArICdVc2UgYSBzdGF0aWMgcHJvcGVydHkgdG8gZGVmaW5lIGRlZmF1bHRQcm9wcyBpbnN0ZWFkLicsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChpbnN0YW5jZS5wcm9wVHlwZXMpIHtcbiAgICAgIGVycm9yKCdwcm9wVHlwZXMgd2FzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgb24gJXMuIFVzZSBhIHN0YXRpYyAnICsgJ3Byb3BlcnR5IHRvIGRlZmluZSBwcm9wVHlwZXMgaW5zdGVhZC4nLCBuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoaW5zdGFuY2UuY29udGV4dFR5cGUpIHtcbiAgICAgIGVycm9yKCdjb250ZXh0VHlwZSB3YXMgZGVmaW5lZCBhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBvbiAlcy4gVXNlIGEgc3RhdGljICcgKyAncHJvcGVydHkgdG8gZGVmaW5lIGNvbnRleHRUeXBlIGluc3RlYWQuJywgbmFtZSk7XG4gICAgfVxuXG4gICAge1xuICAgICAgaWYgKGluc3RhbmNlLmNvbnRleHRUeXBlcykge1xuICAgICAgICBlcnJvcignY29udGV4dFR5cGVzIHdhcyBkZWZpbmVkIGFzIGFuIGluc3RhbmNlIHByb3BlcnR5IG9uICVzLiBVc2UgYSBzdGF0aWMgJyArICdwcm9wZXJ0eSB0byBkZWZpbmUgY29udGV4dFR5cGVzIGluc3RlYWQuJywgbmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjdG9yLmNvbnRleHRUeXBlICYmIGN0b3IuY29udGV4dFR5cGVzICYmICFkaWRXYXJuQWJvdXRDb250ZXh0VHlwZUFuZENvbnRleHRUeXBlcy5oYXMoY3RvcikpIHtcbiAgICAgICAgZGlkV2FybkFib3V0Q29udGV4dFR5cGVBbmRDb250ZXh0VHlwZXMuYWRkKGN0b3IpO1xuXG4gICAgICAgIGVycm9yKCclcyBkZWNsYXJlcyBib3RoIGNvbnRleHRUeXBlcyBhbmQgY29udGV4dFR5cGUgc3RhdGljIHByb3BlcnRpZXMuICcgKyAnVGhlIGxlZ2FjeSBjb250ZXh0VHlwZXMgcHJvcGVydHkgd2lsbCBiZSBpZ25vcmVkLicsIG5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgaW5zdGFuY2UuY29tcG9uZW50U2hvdWxkVXBkYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBlcnJvcignJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudFNob3VsZFVwZGF0ZSgpLiBEaWQgeW91IG1lYW4gc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk/ICcgKyAnVGhlIG5hbWUgaXMgcGhyYXNlZCBhcyBhIHF1ZXN0aW9uIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzICcgKyAnZXhwZWN0ZWQgdG8gcmV0dXJuIGEgdmFsdWUuJywgbmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKGN0b3IucHJvdG90eXBlICYmIGN0b3IucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50ICYmIHR5cGVvZiBpbnN0YW5jZS5zaG91bGRDb21wb25lbnRVcGRhdGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBlcnJvcignJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCBzaG91bGRDb21wb25lbnRVcGRhdGUoKS4gJyArICdzaG91bGRDb21wb25lbnRVcGRhdGUgc2hvdWxkIG5vdCBiZSB1c2VkIHdoZW4gZXh0ZW5kaW5nIFJlYWN0LlB1cmVDb21wb25lbnQuICcgKyAnUGxlYXNlIGV4dGVuZCBSZWFjdC5Db21wb25lbnQgaWYgc2hvdWxkQ29tcG9uZW50VXBkYXRlIGlzIHVzZWQuJywgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGN0b3IpIHx8ICdBIHB1cmUgY29tcG9uZW50Jyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpbnN0YW5jZS5jb21wb25lbnREaWRVbm1vdW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBlcnJvcignJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudERpZFVubW91bnQoKS4gQnV0IHRoZXJlIGlzIG5vIHN1Y2ggbGlmZWN5Y2xlIG1ldGhvZC4gJyArICdEaWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFVubW91bnQoKT8nLCBuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGluc3RhbmNlLmNvbXBvbmVudERpZFJlY2VpdmVQcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZXJyb3IoJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnREaWRSZWNlaXZlUHJvcHMoKS4gQnV0IHRoZXJlIGlzIG5vIHN1Y2ggbGlmZWN5Y2xlIG1ldGhvZC4gJyArICdJZiB5b3UgbWVhbnQgdG8gdXBkYXRlIHRoZSBzdGF0ZSBpbiByZXNwb25zZSB0byBjaGFuZ2luZyBwcm9wcywgJyArICd1c2UgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpLiBJZiB5b3UgbWVhbnQgdG8gZmV0Y2ggZGF0YSBvciAnICsgJ3J1biBzaWRlLWVmZmVjdHMgb3IgbXV0YXRpb25zIGFmdGVyIFJlYWN0IGhhcyB1cGRhdGVkIHRoZSBVSSwgdXNlIGNvbXBvbmVudERpZFVwZGF0ZSgpLicsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgaW5zdGFuY2UuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZXJyb3IoJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/JywgbmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpbnN0YW5jZS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZXJyb3IoJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdVTlNBRkVfY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcygpLiBEaWQgeW91IG1lYW4gVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoKT8nLCBuYW1lKTtcbiAgICB9XG5cbiAgICB2YXIgaGFzTXV0YXRlZFByb3BzID0gaW5zdGFuY2UucHJvcHMgIT09IG5ld1Byb3BzO1xuXG4gICAgaWYgKGluc3RhbmNlLnByb3BzICE9PSB1bmRlZmluZWQgJiYgaGFzTXV0YXRlZFByb3BzKSB7XG4gICAgICBlcnJvcignJXMoLi4uKTogV2hlbiBjYWxsaW5nIHN1cGVyKCkgaW4gYCVzYCwgbWFrZSBzdXJlIHRvIHBhc3MgJyArIFwidXAgdGhlIHNhbWUgcHJvcHMgdGhhdCB5b3VyIGNvbXBvbmVudCdzIGNvbnN0cnVjdG9yIHdhcyBwYXNzZWQuXCIsIG5hbWUsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChpbnN0YW5jZS5kZWZhdWx0UHJvcHMpIHtcbiAgICAgIGVycm9yKCdTZXR0aW5nIGRlZmF1bHRQcm9wcyBhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBvbiAlcyBpcyBub3Qgc3VwcG9ydGVkIGFuZCB3aWxsIGJlIGlnbm9yZWQuJyArICcgSW5zdGVhZCwgZGVmaW5lIGRlZmF1bHRQcm9wcyBhcyBhIHN0YXRpYyBwcm9wZXJ0eSBvbiAlcy4nLCBuYW1lLCBuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGluc3RhbmNlLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0YW5jZS5jb21wb25lbnREaWRVcGRhdGUgIT09ICdmdW5jdGlvbicgJiYgIWRpZFdhcm5BYm91dEdldFNuYXBzaG90QmVmb3JlVXBkYXRlV2l0aG91dERpZFVwZGF0ZS5oYXMoY3RvcikpIHtcbiAgICAgIGRpZFdhcm5BYm91dEdldFNuYXBzaG90QmVmb3JlVXBkYXRlV2l0aG91dERpZFVwZGF0ZS5hZGQoY3Rvcik7XG5cbiAgICAgIGVycm9yKCclczogZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoKSBzaG91bGQgYmUgdXNlZCB3aXRoIGNvbXBvbmVudERpZFVwZGF0ZSgpLiAnICsgJ1RoaXMgY29tcG9uZW50IGRlZmluZXMgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoKSBvbmx5LicsIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShjdG9yKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpbnN0YW5jZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGVycm9yKCclczogZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKCkgaXMgZGVmaW5lZCBhcyBhbiBpbnN0YW5jZSBtZXRob2QgJyArICdhbmQgd2lsbCBiZSBpZ25vcmVkLiBJbnN0ZWFkLCBkZWNsYXJlIGl0IGFzIGEgc3RhdGljIG1ldGhvZC4nLCBuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGluc3RhbmNlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZXJyb3IoJyVzOiBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoKSBpcyBkZWZpbmVkIGFzIGFuIGluc3RhbmNlIG1ldGhvZCAnICsgJ2FuZCB3aWxsIGJlIGlnbm9yZWQuIEluc3RlYWQsIGRlY2xhcmUgaXQgYXMgYSBzdGF0aWMgbWV0aG9kLicsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY3Rvci5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZXJyb3IoJyVzOiBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSgpIGlzIGRlZmluZWQgYXMgYSBzdGF0aWMgbWV0aG9kICcgKyAnYW5kIHdpbGwgYmUgaWdub3JlZC4gSW5zdGVhZCwgZGVjbGFyZSBpdCBhcyBhbiBpbnN0YW5jZSBtZXRob2QuJywgbmFtZSk7XG4gICAgfVxuXG4gICAgdmFyIF9zdGF0ZSA9IGluc3RhbmNlLnN0YXRlO1xuXG4gICAgaWYgKF9zdGF0ZSAmJiAodHlwZW9mIF9zdGF0ZSAhPT0gJ29iamVjdCcgfHwgaXNBcnJheShfc3RhdGUpKSkge1xuICAgICAgZXJyb3IoJyVzLnN0YXRlOiBtdXN0IGJlIHNldCB0byBhbiBvYmplY3Qgb3IgbnVsbCcsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgaW5zdGFuY2UuZ2V0Q2hpbGRDb250ZXh0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBjdG9yLmNoaWxkQ29udGV4dFR5cGVzICE9PSAnb2JqZWN0Jykge1xuICAgICAgZXJyb3IoJyVzLmdldENoaWxkQ29udGV4dCgpOiBjaGlsZENvbnRleHRUeXBlcyBtdXN0IGJlIGRlZmluZWQgaW4gb3JkZXIgdG8gJyArICd1c2UgZ2V0Q2hpbGRDb250ZXh0KCkuJywgbmFtZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGxDb21wb25lbnRXaWxsTW91bnQodHlwZSwgaW5zdGFuY2UpIHtcbiAgdmFyIG9sZFN0YXRlID0gaW5zdGFuY2Uuc3RhdGU7XG5cbiAgaWYgKHR5cGVvZiBpbnN0YW5jZS5jb21wb25lbnRXaWxsTW91bnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICB7XG4gICAgICBpZiAoIGluc3RhbmNlLmNvbXBvbmVudFdpbGxNb3VudC5fX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nICE9PSB0cnVlKSB7XG4gICAgICAgIHZhciBjb21wb25lbnROYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHx8ICdVbmtub3duJztcblxuICAgICAgICBpZiAoIWRpZFdhcm5BYm91dERlcHJlY2F0ZWRXaWxsTW91bnRbY29tcG9uZW50TmFtZV0pIHtcbiAgICAgICAgICB3YXJuKCAvLyBrZWVwIHRoaXMgd2FybmluZyBpbiBzeW5jIHdpdGggUmVhY3RTdHJpY3RNb2RlV2FybmluZy5qc1xuICAgICAgICAgICdjb21wb25lbnRXaWxsTW91bnQgaGFzIGJlZW4gcmVuYW1lZCwgYW5kIGlzIG5vdCByZWNvbW1lbmRlZCBmb3IgdXNlLiAnICsgJ1NlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvdW5zYWZlLWNvbXBvbmVudC1saWZlY3ljbGVzIGZvciBkZXRhaWxzLlxcblxcbicgKyAnKiBNb3ZlIGNvZGUgZnJvbSBjb21wb25lbnRXaWxsTW91bnQgdG8gY29tcG9uZW50RGlkTW91bnQgKHByZWZlcnJlZCBpbiBtb3N0IGNhc2VzKSAnICsgJ29yIHRoZSBjb25zdHJ1Y3Rvci5cXG4nICsgJ1xcblBsZWFzZSB1cGRhdGUgdGhlIGZvbGxvd2luZyBjb21wb25lbnRzOiAlcycsIGNvbXBvbmVudE5hbWUpO1xuXG4gICAgICAgICAgZGlkV2FybkFib3V0RGVwcmVjYXRlZFdpbGxNb3VudFtjb21wb25lbnROYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbnN0YW5jZS5jb21wb25lbnRXaWxsTW91bnQoKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgaW5zdGFuY2UuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGluc3RhbmNlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKTtcbiAgfVxuXG4gIGlmIChvbGRTdGF0ZSAhPT0gaW5zdGFuY2Uuc3RhdGUpIHtcbiAgICB7XG4gICAgICBlcnJvcignJXMuY29tcG9uZW50V2lsbE1vdW50KCk6IEFzc2lnbmluZyBkaXJlY3RseSB0byB0aGlzLnN0YXRlIGlzICcgKyBcImRlcHJlY2F0ZWQgKGV4Y2VwdCBpbnNpZGUgYSBjb21wb25lbnQncyBcIiArICdjb25zdHJ1Y3RvcikuIFVzZSBzZXRTdGF0ZSBpbnN0ZWFkLicsIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCAnQ29tcG9uZW50Jyk7XG4gICAgfVxuXG4gICAgY2xhc3NDb21wb25lbnRVcGRhdGVyLmVucXVldWVSZXBsYWNlU3RhdGUoaW5zdGFuY2UsIGluc3RhbmNlLnN0YXRlLCBudWxsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzVXBkYXRlUXVldWUoaW50ZXJuYWxJbnN0YW5jZSwgaW5zdCwgcHJvcHMsIG1hc2tlZExlZ2FjeUNvbnRleHQpIHtcbiAgaWYgKGludGVybmFsSW5zdGFuY2UucXVldWUgIT09IG51bGwgJiYgaW50ZXJuYWxJbnN0YW5jZS5xdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgdmFyIG9sZFF1ZXVlID0gaW50ZXJuYWxJbnN0YW5jZS5xdWV1ZTtcbiAgICB2YXIgb2xkUmVwbGFjZSA9IGludGVybmFsSW5zdGFuY2UucmVwbGFjZTtcbiAgICBpbnRlcm5hbEluc3RhbmNlLnF1ZXVlID0gbnVsbDtcbiAgICBpbnRlcm5hbEluc3RhbmNlLnJlcGxhY2UgPSBmYWxzZTtcblxuICAgIGlmIChvbGRSZXBsYWNlICYmIG9sZFF1ZXVlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaW5zdC5zdGF0ZSA9IG9sZFF1ZXVlWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbmV4dFN0YXRlID0gb2xkUmVwbGFjZSA/IG9sZFF1ZXVlWzBdIDogaW5zdC5zdGF0ZTtcbiAgICAgIHZhciBkb250TXV0YXRlID0gdHJ1ZTtcblxuICAgICAgZm9yICh2YXIgaSA9IG9sZFJlcGxhY2UgPyAxIDogMDsgaSA8IG9sZFF1ZXVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwYXJ0aWFsID0gb2xkUXVldWVbaV07XG4gICAgICAgIHZhciBwYXJ0aWFsU3RhdGUgPSB0eXBlb2YgcGFydGlhbCA9PT0gJ2Z1bmN0aW9uJyA/IHBhcnRpYWwuY2FsbChpbnN0LCBuZXh0U3RhdGUsIHByb3BzLCBtYXNrZWRMZWdhY3lDb250ZXh0KSA6IHBhcnRpYWw7XG5cbiAgICAgICAgaWYgKHBhcnRpYWxTdGF0ZSAhPSBudWxsKSB7XG4gICAgICAgICAgaWYgKGRvbnRNdXRhdGUpIHtcbiAgICAgICAgICAgIGRvbnRNdXRhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIG5leHRTdGF0ZSA9IGFzc2lnbih7fSwgbmV4dFN0YXRlLCBwYXJ0aWFsU3RhdGUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhc3NpZ24obmV4dFN0YXRlLCBwYXJ0aWFsU3RhdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpbnN0LnN0YXRlID0gbmV4dFN0YXRlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpbnRlcm5hbEluc3RhbmNlLnF1ZXVlID0gbnVsbDtcbiAgfVxufSAvLyBJbnZva2VzIHRoZSBtb3VudCBsaWZlLWN5Y2xlcyBvbiBhIHByZXZpb3VzbHkgbmV2ZXIgcmVuZGVyZWQgaW5zdGFuY2UuXG5cblxuZnVuY3Rpb24gbW91bnRDbGFzc0luc3RhbmNlKGluc3RhbmNlLCBjdG9yLCBuZXdQcm9wcywgbWFza2VkTGVnYWN5Q29udGV4dCkge1xuICB7XG4gICAgY2hlY2tDbGFzc0luc3RhbmNlKGluc3RhbmNlLCBjdG9yLCBuZXdQcm9wcyk7XG4gIH1cblxuICB2YXIgaW5pdGlhbFN0YXRlID0gaW5zdGFuY2Uuc3RhdGUgIT09IHVuZGVmaW5lZCA/IGluc3RhbmNlLnN0YXRlIDogbnVsbDtcbiAgaW5zdGFuY2UudXBkYXRlciA9IGNsYXNzQ29tcG9uZW50VXBkYXRlcjtcbiAgaW5zdGFuY2UucHJvcHMgPSBuZXdQcm9wcztcbiAgaW5zdGFuY2Uuc3RhdGUgPSBpbml0aWFsU3RhdGU7IC8vIFdlIGRvbid0IGJvdGhlciBpbml0aWFsaXppbmcgdGhlIHJlZnMgb2JqZWN0IG9uIHRoZSBzZXJ2ZXIsIHNpbmNlIHdlJ3JlIG5vdCBnb2luZyB0byByZXNvbHZlIHRoZW0gYW55d2F5LlxuICAvLyBUaGUgaW50ZXJuYWwgaW5zdGFuY2Ugd2lsbCBiZSB1c2VkIHRvIG1hbmFnZSB1cGRhdGVzIHRoYXQgaGFwcGVuIGR1cmluZyB0aGlzIG1vdW50LlxuXG4gIHZhciBpbnRlcm5hbEluc3RhbmNlID0ge1xuICAgIHF1ZXVlOiBbXSxcbiAgICByZXBsYWNlOiBmYWxzZVxuICB9O1xuICBzZXQoaW5zdGFuY2UsIGludGVybmFsSW5zdGFuY2UpO1xuICB2YXIgY29udGV4dFR5cGUgPSBjdG9yLmNvbnRleHRUeXBlO1xuXG4gIGlmICh0eXBlb2YgY29udGV4dFR5cGUgPT09ICdvYmplY3QnICYmIGNvbnRleHRUeXBlICE9PSBudWxsKSB7XG4gICAgaW5zdGFuY2UuY29udGV4dCA9IHJlYWRDb250ZXh0KGNvbnRleHRUeXBlKTtcbiAgfSBlbHNlIHtcbiAgICBpbnN0YW5jZS5jb250ZXh0ID0gbWFza2VkTGVnYWN5Q29udGV4dDtcbiAgfVxuXG4gIHtcbiAgICBpZiAoaW5zdGFuY2Uuc3RhdGUgPT09IG5ld1Byb3BzKSB7XG4gICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShjdG9yKSB8fCAnQ29tcG9uZW50JztcblxuICAgICAgaWYgKCFkaWRXYXJuQWJvdXREaXJlY3RseUFzc2lnbmluZ1Byb3BzVG9TdGF0ZS5oYXMoY29tcG9uZW50TmFtZSkpIHtcbiAgICAgICAgZGlkV2FybkFib3V0RGlyZWN0bHlBc3NpZ25pbmdQcm9wc1RvU3RhdGUuYWRkKGNvbXBvbmVudE5hbWUpO1xuXG4gICAgICAgIGVycm9yKCclczogSXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIGFzc2lnbiBwcm9wcyBkaXJlY3RseSB0byBzdGF0ZSAnICsgXCJiZWNhdXNlIHVwZGF0ZXMgdG8gcHJvcHMgd29uJ3QgYmUgcmVmbGVjdGVkIGluIHN0YXRlLiBcIiArICdJbiBtb3N0IGNhc2VzLCBpdCBpcyBiZXR0ZXIgdG8gdXNlIHByb3BzIGRpcmVjdGx5LicsIGNvbXBvbmVudE5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPSBjdG9yLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcztcblxuICBpZiAodHlwZW9mIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGluc3RhbmNlLnN0YXRlID0gYXBwbHlEZXJpdmVkU3RhdGVGcm9tUHJvcHMoaW5zdGFuY2UsIGN0b3IsIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcywgaW5pdGlhbFN0YXRlLCBuZXdQcm9wcyk7XG4gIH0gLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCByZWFjdC1saWZlY3ljbGVzLWNvbXBhdCBwb2x5ZmlsbGVkIGNvbXBvbmVudHMsXG4gIC8vIFVuc2FmZSBsaWZlY3ljbGVzIHNob3VsZCBub3QgYmUgaW52b2tlZCBmb3IgY29tcG9uZW50cyB1c2luZyB0aGUgbmV3IEFQSXMuXG5cblxuICBpZiAodHlwZW9mIGN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0YW5jZS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSAhPT0gJ2Z1bmN0aW9uJyAmJiAodHlwZW9mIGluc3RhbmNlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIGluc3RhbmNlLmNvbXBvbmVudFdpbGxNb3VudCA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICBjYWxsQ29tcG9uZW50V2lsbE1vdW50KGN0b3IsIGluc3RhbmNlKTsgLy8gSWYgd2UgaGFkIGFkZGl0aW9uYWwgc3RhdGUgdXBkYXRlcyBkdXJpbmcgdGhpcyBsaWZlLWN5Y2xlLCBsZXQnc1xuICAgIC8vIHByb2Nlc3MgdGhlbSBub3cuXG5cbiAgICBwcm9jZXNzVXBkYXRlUXVldWUoaW50ZXJuYWxJbnN0YW5jZSwgaW5zdGFuY2UsIG5ld1Byb3BzLCBtYXNrZWRMZWdhY3lDb250ZXh0KTtcbiAgfVxufVxuXG4vLyBJZHMgYXJlIGJhc2UgMzIgc3RyaW5ncyB3aG9zZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gY29ycmVzcG9uZHMgdG8gdGhlXG4vLyBwb3NpdGlvbiBvZiBhIG5vZGUgaW4gYSB0cmVlLlxuLy8gRXZlcnkgdGltZSB0aGUgdHJlZSBmb3JrcyBpbnRvIG11bHRpcGxlIGNoaWxkcmVuLCB3ZSBhZGQgYWRkaXRpb25hbCBiaXRzIHRvXG4vLyB0aGUgbGVmdCBvZiB0aGUgc2VxdWVuY2UgdGhhdCByZXByZXNlbnQgdGhlIHBvc2l0aW9uIG9mIHRoZSBjaGlsZCB3aXRoaW4gdGhlXG4vLyBjdXJyZW50IGxldmVsIG9mIGNoaWxkcmVuLlxuLy9cbi8vICAgICAgMDAxMDEgICAgICAgMDAwMTAwMDEwMTEwMTAxMDFcbi8vICAgICAg4pWw4pSA4pSs4pSA4pWvICAgICAgIOKVsOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKVr1xuLy8gICBGb3JrIDUgb2YgMjAgICAgICAgUGFyZW50IGlkXG4vL1xuLy8gVGhlIGxlYWRpbmcgMHMgYXJlIGltcG9ydGFudC4gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHlvdSBvbmx5IG5lZWQgMyBiaXRzIHRvXG4vLyByZXByZXNlbnQgc2xvdCA1LiBIb3dldmVyLCB5b3UgbmVlZCA1IGJpdHMgdG8gcmVwcmVzZW50IGFsbCB0aGUgZm9ya3MgYXRcbi8vIHRoZSBjdXJyZW50IGxldmVsLCBzbyB3ZSBtdXN0IGFjY291bnQgZm9yIHRoZSBlbXB0eSBiaXRzIGF0IHRoZSBlbmQuXG4vL1xuLy8gRm9yIHRoaXMgc2FtZSByZWFzb24sIHNsb3RzIGFyZSAxLWluZGV4ZWQgaW5zdGVhZCBvZiAwLWluZGV4ZWQuIE90aGVyd2lzZSxcbi8vIHRoZSB6ZXJvdGggaWQgYXQgYSBsZXZlbCB3b3VsZCBiZSBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGl0cyBwYXJlbnQuXG4vL1xuLy8gSWYgYSBub2RlIGhhcyBvbmx5IG9uZSBjaGlsZCwgYW5kIGRvZXMgbm90IG1hdGVyaWFsaXplIGFuIGlkIChpLmUuIGRvZXMgbm90XG4vLyBjb250YWluIGEgdXNlSWQgaG9vayksIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBhbGxvY2F0ZSBhbnkgc3BhY2UgaW4gdGhlXG4vLyBzZXF1ZW5jZS4gSXQncyB0cmVhdGVkIGFzIGEgdHJhbnNwYXJlbnQgaW5kaXJlY3Rpb24uIEZvciBleGFtcGxlLCB0aGVzZSB0d29cbi8vIHRyZWVzIHByb2R1Y2UgdGhlIHNhbWUgaWRzOlxuLy9cbi8vIDw+ICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuLy8gICA8SW5kaXJlY3Rpb24+ICAgICAgICAgICAgICAgPEEgLz5cbi8vICAgICA8QSAvPiAgICAgICAgICAgICAgICAgICAgIDxCIC8+XG4vLyAgIDwvSW5kaXJlY3Rpb24+ICAgICAgICAgICAgPC8+XG4vLyAgIDxCIC8+XG4vLyA8Lz5cbi8vXG4vLyBIb3dldmVyLCB3ZSBjYW5ub3Qgc2tpcCBhbnkgbm9kZSB0aGF0IG1hdGVyaWFsaXplcyBhbiBpZC4gT3RoZXJ3aXNlLCBhIHBhcmVudFxuLy8gaWQgdGhhdCBkb2VzIG5vdCBmb3JrIHdvdWxkIGJlIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gaXRzIGNoaWxkIGlkLiBGb3Jcbi8vIGV4YW1wbGUsIHRoaXMgdHJlZSBkb2VzIG5vdCBmb3JrLCBidXQgdGhlIHBhcmVudCBhbmQgY2hpbGQgbXVzdCBoYXZlXG4vLyBkaWZmZXJlbnQgaWRzLlxuLy9cbi8vIDxQYXJlbnQ+XG4vLyAgIDxDaGlsZCAvPlxuLy8gPC9QYXJlbnQ+XG4vL1xuLy8gVG8gaGFuZGxlIHRoaXMgc2NlbmFyaW8sIGV2ZXJ5IHRpbWUgd2UgbWF0ZXJpYWxpemUgYW4gaWQsIHdlIGFsbG9jYXRlIGFcbi8vIG5ldyBsZXZlbCB3aXRoIGEgc2luZ2xlIHNsb3QuIFlvdSBjYW4gdGhpbmsgb2YgdGhpcyBhcyBhIGZvcmsgd2l0aCBvbmx5IG9uZVxuLy8gcHJvbmcsIG9yIGFuIGFycmF5IG9mIGNoaWxkcmVuIHdpdGggbGVuZ3RoIDEuXG4vL1xuLy8gSXQncyBwb3NzaWJsZSBmb3IgdGhlIHNpemUgb2YgdGhlIHNlcXVlbmNlIHRvIGV4Y2VlZCAzMiBiaXRzLCB0aGUgbWF4XG4vLyBzaXplIGZvciBiaXR3aXNlIG9wZXJhdGlvbnMuIFdoZW4gdGhpcyBoYXBwZW5zLCB3ZSBtYWtlIG1vcmUgcm9vbSBieVxuLy8gY29udmVydGluZyB0aGUgcmlnaHQgcGFydCBvZiB0aGUgaWQgdG8gYSBzdHJpbmcgYW5kIHN0b3JpbmcgaXQgaW4gYW4gb3ZlcmZsb3dcbi8vIHZhcmlhYmxlLiBXZSB1c2UgYSBiYXNlIDMyIHN0cmluZyByZXByZXNlbnRhdGlvbiwgYmVjYXVzZSAzMiBpcyB0aGUgbGFyZ2VzdFxuLy8gcG93ZXIgb2YgMiB0aGF0IGlzIHN1cHBvcnRlZCBieSB0b1N0cmluZygpLiBXZSB3YW50IHRoZSBiYXNlIHRvIGJlIGxhcmdlIHNvXG4vLyB0aGF0IHRoZSByZXN1bHRpbmcgaWRzIGFyZSBjb21wYWN0LCBhbmQgd2Ugd2FudCB0aGUgYmFzZSB0byBiZSBhIHBvd2VyIG9mIDJcbi8vIGJlY2F1c2UgZXZlcnkgbG9nMihiYXNlKSBiaXRzIGNvcnJlc3BvbmRzIHRvIGEgc2luZ2xlIGNoYXJhY3RlciwgaS5lLiBldmVyeVxuLy8gbG9nMigzMikgPSA1IGJpdHMuIFRoYXQgbWVhbnMgd2UgY2FuIGxvcCBiaXRzIG9mZiB0aGUgZW5kIDUgYXQgYSB0aW1lIHdpdGhvdXRcbi8vIGFmZmVjdGluZyB0aGUgZmluYWwgcmVzdWx0LlxudmFyIGVtcHR5VHJlZUNvbnRleHQgPSB7XG4gIGlkOiAxLFxuICBvdmVyZmxvdzogJydcbn07XG5mdW5jdGlvbiBnZXRUcmVlSWQoY29udGV4dCkge1xuICB2YXIgb3ZlcmZsb3cgPSBjb250ZXh0Lm92ZXJmbG93O1xuICB2YXIgaWRXaXRoTGVhZGluZ0JpdCA9IGNvbnRleHQuaWQ7XG4gIHZhciBpZCA9IGlkV2l0aExlYWRpbmdCaXQgJiB+Z2V0TGVhZGluZ0JpdChpZFdpdGhMZWFkaW5nQml0KTtcbiAgcmV0dXJuIGlkLnRvU3RyaW5nKDMyKSArIG92ZXJmbG93O1xufVxuZnVuY3Rpb24gcHVzaFRyZWVDb250ZXh0KGJhc2VDb250ZXh0LCB0b3RhbENoaWxkcmVuLCBpbmRleCkge1xuICB2YXIgYmFzZUlkV2l0aExlYWRpbmdCaXQgPSBiYXNlQ29udGV4dC5pZDtcbiAgdmFyIGJhc2VPdmVyZmxvdyA9IGJhc2VDb250ZXh0Lm92ZXJmbG93OyAvLyBUaGUgbGVmdG1vc3QgMSBtYXJrcyB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZSwgbm9uLWluY2x1c2l2ZS4gSXQncyBub3QgcGFydFxuICAvLyBvZiB0aGUgaWQ7IHdlIHVzZSBpdCB0byBhY2NvdW50IGZvciBsZWFkaW5nIDBzLlxuXG4gIHZhciBiYXNlTGVuZ3RoID0gZ2V0Qml0TGVuZ3RoKGJhc2VJZFdpdGhMZWFkaW5nQml0KSAtIDE7XG4gIHZhciBiYXNlSWQgPSBiYXNlSWRXaXRoTGVhZGluZ0JpdCAmIH4oMSA8PCBiYXNlTGVuZ3RoKTtcbiAgdmFyIHNsb3QgPSBpbmRleCArIDE7XG4gIHZhciBsZW5ndGggPSBnZXRCaXRMZW5ndGgodG90YWxDaGlsZHJlbikgKyBiYXNlTGVuZ3RoOyAvLyAzMCBpcyB0aGUgbWF4IGxlbmd0aCB3ZSBjYW4gc3RvcmUgd2l0aG91dCBvdmVyZmxvd2luZywgdGFraW5nIGludG9cbiAgLy8gY29uc2lkZXJhdGlvbiB0aGUgbGVhZGluZyAxIHdlIHVzZSB0byBtYXJrIHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlLlxuXG4gIGlmIChsZW5ndGggPiAzMCkge1xuICAgIC8vIFdlIG92ZXJmbG93ZWQgdGhlIGJpdHdpc2Utc2FmZSByYW5nZS4gRmFsbCBiYWNrIHRvIHNsb3dlciBhbGdvcml0aG0uXG4gICAgLy8gVGhpcyBicmFuY2ggYXNzdW1lcyB0aGUgbGVuZ3RoIG9mIHRoZSBiYXNlIGlkIGlzIGdyZWF0ZXIgdGhhbiA1OyBpdCB3b24ndFxuICAgIC8vIHdvcmsgZm9yIHNtYWxsZXIgaWRzLCBiZWNhdXNlIHlvdSBuZWVkIDUgYml0cyBwZXIgY2hhcmFjdGVyLlxuICAgIC8vXG4gICAgLy8gV2UgZW5jb2RlIHRoZSBpZCBpbiBtdWx0aXBsZSBzdGVwczogZmlyc3QgdGhlIGJhc2UgaWQsIHRoZW4gdGhlXG4gICAgLy8gcmVtYWluaW5nIGRpZ2l0cy5cbiAgICAvL1xuICAgIC8vIEVhY2ggNSBiaXQgc2VxdWVuY2UgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgYmFzZSAzMiBjaGFyYWN0ZXIuIFNvIGZvclxuICAgIC8vIGV4YW1wbGUsIGlmIHRoZSBjdXJyZW50IGlkIGlzIDIzIGJpdHMgbG9uZywgd2UgY2FuIGNvbnZlcnQgMjAgb2YgdGhvc2VcbiAgICAvLyBiaXRzIGludG8gYSBzdHJpbmcgb2YgNCBjaGFyYWN0ZXJzLCB3aXRoIDMgYml0cyBsZWZ0IG92ZXIuXG4gICAgLy9cbiAgICAvLyBGaXJzdCBjYWxjdWxhdGUgaG93IG1hbnkgYml0cyBpbiB0aGUgYmFzZSBpZCByZXByZXNlbnQgYSBjb21wbGV0ZVxuICAgIC8vIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMuXG4gICAgdmFyIG51bWJlck9mT3ZlcmZsb3dCaXRzID0gYmFzZUxlbmd0aCAtIGJhc2VMZW5ndGggJSA1OyAvLyBUaGVuIGNyZWF0ZSBhIGJpdG1hc2sgdGhhdCBzZWxlY3RzIG9ubHkgdGhvc2UgYml0cy5cblxuICAgIHZhciBuZXdPdmVyZmxvd0JpdHMgPSAoMSA8PCBudW1iZXJPZk92ZXJmbG93Qml0cykgLSAxOyAvLyBTZWxlY3QgdGhlIGJpdHMsIGFuZCBjb252ZXJ0IHRoZW0gdG8gYSBiYXNlIDMyIHN0cmluZy5cblxuICAgIHZhciBuZXdPdmVyZmxvdyA9IChiYXNlSWQgJiBuZXdPdmVyZmxvd0JpdHMpLnRvU3RyaW5nKDMyKTsgLy8gTm93IHdlIGNhbiByZW1vdmUgdGhvc2UgYml0cyBmcm9tIHRoZSBiYXNlIGlkLlxuXG4gICAgdmFyIHJlc3RPZkJhc2VJZCA9IGJhc2VJZCA+PiBudW1iZXJPZk92ZXJmbG93Qml0cztcbiAgICB2YXIgcmVzdE9mQmFzZUxlbmd0aCA9IGJhc2VMZW5ndGggLSBudW1iZXJPZk92ZXJmbG93Qml0czsgLy8gRmluYWxseSwgZW5jb2RlIHRoZSByZXN0IG9mIHRoZSBiaXRzIHVzaW5nIHRoZSBub3JtYWwgYWxnb3JpdGhtLiBCZWNhdXNlXG4gICAgLy8gd2UgbWFkZSBtb3JlIHJvb20sIHRoaXMgdGltZSBpdCB3b24ndCBvdmVyZmxvdy5cblxuICAgIHZhciByZXN0T2ZMZW5ndGggPSBnZXRCaXRMZW5ndGgodG90YWxDaGlsZHJlbikgKyByZXN0T2ZCYXNlTGVuZ3RoO1xuICAgIHZhciByZXN0T2ZOZXdCaXRzID0gc2xvdCA8PCByZXN0T2ZCYXNlTGVuZ3RoO1xuICAgIHZhciBpZCA9IHJlc3RPZk5ld0JpdHMgfCByZXN0T2ZCYXNlSWQ7XG4gICAgdmFyIG92ZXJmbG93ID0gbmV3T3ZlcmZsb3cgKyBiYXNlT3ZlcmZsb3c7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiAxIDw8IHJlc3RPZkxlbmd0aCB8IGlkLFxuICAgICAgb3ZlcmZsb3c6IG92ZXJmbG93XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICAvLyBOb3JtYWwgcGF0aFxuICAgIHZhciBuZXdCaXRzID0gc2xvdCA8PCBiYXNlTGVuZ3RoO1xuXG4gICAgdmFyIF9pZCA9IG5ld0JpdHMgfCBiYXNlSWQ7XG5cbiAgICB2YXIgX292ZXJmbG93ID0gYmFzZU92ZXJmbG93O1xuICAgIHJldHVybiB7XG4gICAgICBpZDogMSA8PCBsZW5ndGggfCBfaWQsXG4gICAgICBvdmVyZmxvdzogX292ZXJmbG93XG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRCaXRMZW5ndGgobnVtYmVyKSB7XG4gIHJldHVybiAzMiAtIGNsejMyKG51bWJlcik7XG59XG5cbmZ1bmN0aW9uIGdldExlYWRpbmdCaXQoaWQpIHtcbiAgcmV0dXJuIDEgPDwgZ2V0Qml0TGVuZ3RoKGlkKSAtIDE7XG59IC8vIFRPRE86IE1hdGguY2x6MzIgaXMgc3VwcG9ydGVkIGluIE5vZGUgMTIrLiBNYXliZSB3ZSBjYW4gZHJvcCB0aGUgZmFsbGJhY2suXG5cblxudmFyIGNsejMyID0gTWF0aC5jbHozMiA/IE1hdGguY2x6MzIgOiBjbHozMkZhbGxiYWNrOyAvLyBDb3VudCBsZWFkaW5nIHplcm9zLlxuLy8gQmFzZWQgb246XG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9NYXRoL2NsejMyXG5cbnZhciBsb2cgPSBNYXRoLmxvZztcbnZhciBMTjIgPSBNYXRoLkxOMjtcblxuZnVuY3Rpb24gY2x6MzJGYWxsYmFjayh4KSB7XG4gIHZhciBhc1VpbnQgPSB4ID4+PiAwO1xuXG4gIGlmIChhc1VpbnQgPT09IDApIHtcbiAgICByZXR1cm4gMzI7XG4gIH1cblxuICByZXR1cm4gMzEgLSAobG9nKGFzVWludCkgLyBMTjIgfCAwKSB8IDA7XG59XG5cbi8qKlxuICogaW5saW5lZCBPYmplY3QuaXMgcG9seWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1bWVycyBzaGlwIHRoZWlyIG93blxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzXG4gKi9cbmZ1bmN0aW9uIGlzKHgsIHkpIHtcbiAgcmV0dXJuIHggPT09IHkgJiYgKHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5KSB8fCB4ICE9PSB4ICYmIHkgIT09IHkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgO1xufVxuXG52YXIgb2JqZWN0SXMgPSB0eXBlb2YgT2JqZWN0LmlzID09PSAnZnVuY3Rpb24nID8gT2JqZWN0LmlzIDogaXM7XG5cbnZhciBjdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQgPSBudWxsO1xudmFyIGN1cnJlbnRseVJlbmRlcmluZ1Rhc2sgPSBudWxsO1xudmFyIGZpcnN0V29ya0luUHJvZ3Jlc3NIb29rID0gbnVsbDtcbnZhciB3b3JrSW5Qcm9ncmVzc0hvb2sgPSBudWxsOyAvLyBXaGV0aGVyIHRoZSB3b3JrLWluLXByb2dyZXNzIGhvb2sgaXMgYSByZS1yZW5kZXJlZCBob29rXG5cbnZhciBpc1JlUmVuZGVyID0gZmFsc2U7IC8vIFdoZXRoZXIgYW4gdXBkYXRlIHdhcyBzY2hlZHVsZWQgZHVyaW5nIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHJlbmRlciBwYXNzLlxuXG52YXIgZGlkU2NoZWR1bGVSZW5kZXJQaGFzZVVwZGF0ZSA9IGZhbHNlOyAvLyBDb3VudHMgdGhlIG51bWJlciBvZiB1c2VJZCBob29rcyBpbiB0aGlzIGNvbXBvbmVudFxuXG52YXIgbG9jYWxJZENvdW50ZXIgPSAwOyAvLyBMYXppbHkgY3JlYXRlZCBtYXAgb2YgcmVuZGVyLXBoYXNlIHVwZGF0ZXNcblxudmFyIHJlbmRlclBoYXNlVXBkYXRlcyA9IG51bGw7IC8vIENvdW50ZXIgdG8gcHJldmVudCBpbmZpbml0ZSBsb29wcy5cblxudmFyIG51bWJlck9mUmVSZW5kZXJzID0gMDtcbnZhciBSRV9SRU5ERVJfTElNSVQgPSAyNTtcbnZhciBpc0luSG9va1VzZXJDb2RlSW5EZXYgPSBmYWxzZTsgLy8gSW4gREVWLCB0aGlzIGlzIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHByaW1pdGl2ZSBob29rXG5cbnZhciBjdXJyZW50SG9va05hbWVJbkRldjtcblxuZnVuY3Rpb24gcmVzb2x2ZUN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCgpIHtcbiAgaWYgKGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBob29rIGNhbGwuIEhvb2tzIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNpZGUgb2YgdGhlIGJvZHkgb2YgYSBmdW5jdGlvbiBjb21wb25lbnQuIFRoaXMgY291bGQgaGFwcGVuIGZvcicgKyAnIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJlYXNvbnM6XFxuJyArICcxLiBZb3UgbWlnaHQgaGF2ZSBtaXNtYXRjaGluZyB2ZXJzaW9ucyBvZiBSZWFjdCBhbmQgdGhlIHJlbmRlcmVyIChzdWNoIGFzIFJlYWN0IERPTSlcXG4nICsgJzIuIFlvdSBtaWdodCBiZSBicmVha2luZyB0aGUgUnVsZXMgb2YgSG9va3NcXG4nICsgJzMuIFlvdSBtaWdodCBoYXZlIG1vcmUgdGhhbiBvbmUgY29weSBvZiBSZWFjdCBpbiB0aGUgc2FtZSBhcHBcXG4nICsgJ1NlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvaW52YWxpZC1ob29rLWNhbGwgZm9yIHRpcHMgYWJvdXQgaG93IHRvIGRlYnVnIGFuZCBmaXggdGhpcyBwcm9ibGVtLicpO1xuICB9XG5cbiAge1xuICAgIGlmIChpc0luSG9va1VzZXJDb2RlSW5EZXYpIHtcbiAgICAgIGVycm9yKCdEbyBub3QgY2FsbCBIb29rcyBpbnNpZGUgdXNlRWZmZWN0KC4uLiksIHVzZU1lbW8oLi4uKSwgb3Igb3RoZXIgYnVpbHQtaW4gSG9va3MuICcgKyAnWW91IGNhbiBvbmx5IGNhbGwgSG9va3MgYXQgdGhlIHRvcCBsZXZlbCBvZiB5b3VyIFJlYWN0IGZ1bmN0aW9uLiAnICsgJ0ZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgJyArICdodHRwczovL3JlYWN0anMub3JnL2xpbmsvcnVsZXMtb2YtaG9va3MnKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50O1xufVxuXG5mdW5jdGlvbiBhcmVIb29rSW5wdXRzRXF1YWwobmV4dERlcHMsIHByZXZEZXBzKSB7XG4gIGlmIChwcmV2RGVwcyA9PT0gbnVsbCkge1xuICAgIHtcbiAgICAgIGVycm9yKCclcyByZWNlaXZlZCBhIGZpbmFsIGFyZ3VtZW50IGR1cmluZyB0aGlzIHJlbmRlciwgYnV0IG5vdCBkdXJpbmcgJyArICd0aGUgcHJldmlvdXMgcmVuZGVyLiBFdmVuIHRob3VnaCB0aGUgZmluYWwgYXJndW1lbnQgaXMgb3B0aW9uYWwsICcgKyAnaXRzIHR5cGUgY2Fubm90IGNoYW5nZSBiZXR3ZWVuIHJlbmRlcnMuJywgY3VycmVudEhvb2tOYW1lSW5EZXYpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHtcbiAgICAvLyBEb24ndCBib3RoZXIgY29tcGFyaW5nIGxlbmd0aHMgaW4gcHJvZCBiZWNhdXNlIHRoZXNlIGFycmF5cyBzaG91bGQgYmVcbiAgICAvLyBwYXNzZWQgaW5saW5lLlxuICAgIGlmIChuZXh0RGVwcy5sZW5ndGggIT09IHByZXZEZXBzLmxlbmd0aCkge1xuICAgICAgZXJyb3IoJ1RoZSBmaW5hbCBhcmd1bWVudCBwYXNzZWQgdG8gJXMgY2hhbmdlZCBzaXplIGJldHdlZW4gcmVuZGVycy4gVGhlICcgKyAnb3JkZXIgYW5kIHNpemUgb2YgdGhpcyBhcnJheSBtdXN0IHJlbWFpbiBjb25zdGFudC5cXG5cXG4nICsgJ1ByZXZpb3VzOiAlc1xcbicgKyAnSW5jb21pbmc6ICVzJywgY3VycmVudEhvb2tOYW1lSW5EZXYsIFwiW1wiICsgbmV4dERlcHMuam9pbignLCAnKSArIFwiXVwiLCBcIltcIiArIHByZXZEZXBzLmpvaW4oJywgJykgKyBcIl1cIik7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmV2RGVwcy5sZW5ndGggJiYgaSA8IG5leHREZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKG9iamVjdElzKG5leHREZXBzW2ldLCBwcmV2RGVwc1tpXSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVIb29rKCkge1xuICBpZiAobnVtYmVyT2ZSZVJlbmRlcnMgPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZW5kZXJlZCBtb3JlIGhvb2tzIHRoYW4gZHVyaW5nIHRoZSBwcmV2aW91cyByZW5kZXInKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVtb2l6ZWRTdGF0ZTogbnVsbCxcbiAgICBxdWV1ZTogbnVsbCxcbiAgICBuZXh0OiBudWxsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVdvcmtJblByb2dyZXNzSG9vaygpIHtcbiAgaWYgKHdvcmtJblByb2dyZXNzSG9vayA9PT0gbnVsbCkge1xuICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IGhvb2sgaW4gdGhlIGxpc3RcbiAgICBpZiAoZmlyc3RXb3JrSW5Qcm9ncmVzc0hvb2sgPT09IG51bGwpIHtcbiAgICAgIGlzUmVSZW5kZXIgPSBmYWxzZTtcbiAgICAgIGZpcnN0V29ya0luUHJvZ3Jlc3NIb29rID0gd29ya0luUHJvZ3Jlc3NIb29rID0gY3JlYXRlSG9vaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGVyZSdzIGFscmVhZHkgYSB3b3JrLWluLXByb2dyZXNzLiBSZXVzZSBpdC5cbiAgICAgIGlzUmVSZW5kZXIgPSB0cnVlO1xuICAgICAgd29ya0luUHJvZ3Jlc3NIb29rID0gZmlyc3RXb3JrSW5Qcm9ncmVzc0hvb2s7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh3b3JrSW5Qcm9ncmVzc0hvb2submV4dCA9PT0gbnVsbCkge1xuICAgICAgaXNSZVJlbmRlciA9IGZhbHNlOyAvLyBBcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdFxuXG4gICAgICB3b3JrSW5Qcm9ncmVzc0hvb2sgPSB3b3JrSW5Qcm9ncmVzc0hvb2submV4dCA9IGNyZWF0ZUhvb2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhlcmUncyBhbHJlYWR5IGEgd29yay1pbi1wcm9ncmVzcy4gUmV1c2UgaXQuXG4gICAgICBpc1JlUmVuZGVyID0gdHJ1ZTtcbiAgICAgIHdvcmtJblByb2dyZXNzSG9vayA9IHdvcmtJblByb2dyZXNzSG9vay5uZXh0O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB3b3JrSW5Qcm9ncmVzc0hvb2s7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVUb1VzZUhvb2tzKHRhc2ssIGNvbXBvbmVudElkZW50aXR5KSB7XG4gIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCA9IGNvbXBvbmVudElkZW50aXR5O1xuICBjdXJyZW50bHlSZW5kZXJpbmdUYXNrID0gdGFzaztcblxuICB7XG4gICAgaXNJbkhvb2tVc2VyQ29kZUluRGV2ID0gZmFsc2U7XG4gIH0gLy8gVGhlIGZvbGxvd2luZyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gcmVzZXRcbiAgLy8gZGlkU2NoZWR1bGVSZW5kZXJQaGFzZVVwZGF0ZSA9IGZhbHNlO1xuICAvLyBsb2NhbElkQ291bnRlciA9IDA7XG4gIC8vIGZpcnN0V29ya0luUHJvZ3Jlc3NIb29rID0gbnVsbDtcbiAgLy8gbnVtYmVyT2ZSZVJlbmRlcnMgPSAwO1xuICAvLyByZW5kZXJQaGFzZVVwZGF0ZXMgPSBudWxsO1xuICAvLyB3b3JrSW5Qcm9ncmVzc0hvb2sgPSBudWxsO1xuXG5cbiAgbG9jYWxJZENvdW50ZXIgPSAwO1xufVxuZnVuY3Rpb24gZmluaXNoSG9va3MoQ29tcG9uZW50LCBwcm9wcywgY2hpbGRyZW4sIHJlZk9yQ29udGV4dCkge1xuICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIGFmdGVyIGV2ZXJ5IGZ1bmN0aW9uIGNvbXBvbmVudCB0byBwcmV2ZW50IGhvb2tzIGZyb21cbiAgLy8gYmVpbmcgdXNlZCBpbiBjbGFzc2VzLlxuICB3aGlsZSAoZGlkU2NoZWR1bGVSZW5kZXJQaGFzZVVwZGF0ZSkge1xuICAgIC8vIFVwZGF0ZXMgd2VyZSBzY2hlZHVsZWQgZHVyaW5nIHRoZSByZW5kZXIgcGhhc2UuIFRoZXkgYXJlIHN0b3JlZCBpblxuICAgIC8vIHRoZSBgcmVuZGVyUGhhc2VVcGRhdGVzYCBtYXAuIENhbGwgdGhlIGNvbXBvbmVudCBhZ2FpbiwgcmV1c2luZyB0aGVcbiAgICAvLyB3b3JrLWluLXByb2dyZXNzIGhvb2tzIGFuZCBhcHBseWluZyB0aGUgYWRkaXRpb25hbCB1cGRhdGVzIG9uIHRvcC4gS2VlcFxuICAgIC8vIHJlc3RhcnRpbmcgdW50aWwgbm8gbW9yZSB1cGRhdGVzIGFyZSBzY2hlZHVsZWQuXG4gICAgZGlkU2NoZWR1bGVSZW5kZXJQaGFzZVVwZGF0ZSA9IGZhbHNlO1xuICAgIGxvY2FsSWRDb3VudGVyID0gMDtcbiAgICBudW1iZXJPZlJlUmVuZGVycyArPSAxOyAvLyBTdGFydCBvdmVyIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgbGlzdFxuXG4gICAgd29ya0luUHJvZ3Jlc3NIb29rID0gbnVsbDtcbiAgICBjaGlsZHJlbiA9IENvbXBvbmVudChwcm9wcywgcmVmT3JDb250ZXh0KTtcbiAgfVxuXG4gIHJlc2V0SG9va3NTdGF0ZSgpO1xuICByZXR1cm4gY2hpbGRyZW47XG59XG5mdW5jdGlvbiBjaGVja0RpZFJlbmRlcklkSG9vaygpIHtcbiAgLy8gVGhpcyBzaG91bGQgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIGV2ZXJ5IGZpbmlzaEhvb2tzIGNhbGwuXG4gIC8vIENvbmNlcHR1YWxseSwgaXQncyBwYXJ0IG9mIHRoZSByZXR1cm4gdmFsdWUgb2YgZmluaXNoSG9va3M7IGl0J3Mgb25seSBhXG4gIC8vIHNlcGFyYXRlIGZ1bmN0aW9uIHRvIGF2b2lkIHVzaW5nIGFuIGFycmF5IHR1cGxlLlxuICB2YXIgZGlkUmVuZGVySWRIb29rID0gbG9jYWxJZENvdW50ZXIgIT09IDA7XG4gIHJldHVybiBkaWRSZW5kZXJJZEhvb2s7XG59IC8vIFJlc2V0IHRoZSBpbnRlcm5hbCBob29rcyBzdGF0ZSBpZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgcmVuZGVyaW5nIGEgY29tcG9uZW50XG5cbmZ1bmN0aW9uIHJlc2V0SG9va3NTdGF0ZSgpIHtcbiAge1xuICAgIGlzSW5Ib29rVXNlckNvZGVJbkRldiA9IGZhbHNlO1xuICB9XG5cbiAgY3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50ID0gbnVsbDtcbiAgY3VycmVudGx5UmVuZGVyaW5nVGFzayA9IG51bGw7XG4gIGRpZFNjaGVkdWxlUmVuZGVyUGhhc2VVcGRhdGUgPSBmYWxzZTtcbiAgZmlyc3RXb3JrSW5Qcm9ncmVzc0hvb2sgPSBudWxsO1xuICBudW1iZXJPZlJlUmVuZGVycyA9IDA7XG4gIHJlbmRlclBoYXNlVXBkYXRlcyA9IG51bGw7XG4gIHdvcmtJblByb2dyZXNzSG9vayA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIHJlYWRDb250ZXh0JDEoY29udGV4dCkge1xuICB7XG4gICAgaWYgKGlzSW5Ib29rVXNlckNvZGVJbkRldikge1xuICAgICAgZXJyb3IoJ0NvbnRleHQgY2FuIG9ubHkgYmUgcmVhZCB3aGlsZSBSZWFjdCBpcyByZW5kZXJpbmcuICcgKyAnSW4gY2xhc3NlcywgeW91IGNhbiByZWFkIGl0IGluIHRoZSByZW5kZXIgbWV0aG9kIG9yIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcy4gJyArICdJbiBmdW5jdGlvbiBjb21wb25lbnRzLCB5b3UgY2FuIHJlYWQgaXQgZGlyZWN0bHkgaW4gdGhlIGZ1bmN0aW9uIGJvZHksIGJ1dCBub3QgJyArICdpbnNpZGUgSG9va3MgbGlrZSB1c2VSZWR1Y2VyKCkgb3IgdXNlTWVtbygpLicpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWFkQ29udGV4dChjb250ZXh0KTtcbn1cblxuZnVuY3Rpb24gdXNlQ29udGV4dChjb250ZXh0KSB7XG4gIHtcbiAgICBjdXJyZW50SG9va05hbWVJbkRldiA9ICd1c2VDb250ZXh0JztcbiAgfVxuXG4gIHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgcmV0dXJuIHJlYWRDb250ZXh0KGNvbnRleHQpO1xufVxuXG5mdW5jdGlvbiBiYXNpY1N0YXRlUmVkdWNlcihzdGF0ZSwgYWN0aW9uKSB7XG4gIC8vICRGbG93Rml4TWU6IEZsb3cgZG9lc24ndCBsaWtlIG1peGVkIHR5cGVzXG4gIHJldHVybiB0eXBlb2YgYWN0aW9uID09PSAnZnVuY3Rpb24nID8gYWN0aW9uKHN0YXRlKSA6IGFjdGlvbjtcbn1cblxuZnVuY3Rpb24gdXNlU3RhdGUoaW5pdGlhbFN0YXRlKSB7XG4gIHtcbiAgICBjdXJyZW50SG9va05hbWVJbkRldiA9ICd1c2VTdGF0ZSc7XG4gIH1cblxuICByZXR1cm4gdXNlUmVkdWNlcihiYXNpY1N0YXRlUmVkdWNlciwgLy8gdXNlUmVkdWNlciBoYXMgYSBzcGVjaWFsIGNhc2UgdG8gc3VwcG9ydCBsYXp5IHVzZVN0YXRlIGluaXRpYWxpemVyc1xuICBpbml0aWFsU3RhdGUpO1xufVxuZnVuY3Rpb24gdXNlUmVkdWNlcihyZWR1Y2VyLCBpbml0aWFsQXJnLCBpbml0KSB7XG4gIHtcbiAgICBpZiAocmVkdWNlciAhPT0gYmFzaWNTdGF0ZVJlZHVjZXIpIHtcbiAgICAgIGN1cnJlbnRIb29rTmFtZUluRGV2ID0gJ3VzZVJlZHVjZXInO1xuICAgIH1cbiAgfVxuXG4gIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCA9IHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgd29ya0luUHJvZ3Jlc3NIb29rID0gY3JlYXRlV29ya0luUHJvZ3Jlc3NIb29rKCk7XG5cbiAgaWYgKGlzUmVSZW5kZXIpIHtcbiAgICAvLyBUaGlzIGlzIGEgcmUtcmVuZGVyLiBBcHBseSB0aGUgbmV3IHJlbmRlciBwaGFzZSB1cGRhdGVzIHRvIHRoZSBwcmV2aW91c1xuICAgIC8vIGN1cnJlbnQgaG9vay5cbiAgICB2YXIgcXVldWUgPSB3b3JrSW5Qcm9ncmVzc0hvb2sucXVldWU7XG4gICAgdmFyIGRpc3BhdGNoID0gcXVldWUuZGlzcGF0Y2g7XG5cbiAgICBpZiAocmVuZGVyUGhhc2VVcGRhdGVzICE9PSBudWxsKSB7XG4gICAgICAvLyBSZW5kZXIgcGhhc2UgdXBkYXRlcyBhcmUgc3RvcmVkIGluIGEgbWFwIG9mIHF1ZXVlIC0+IGxpbmtlZCBsaXN0XG4gICAgICB2YXIgZmlyc3RSZW5kZXJQaGFzZVVwZGF0ZSA9IHJlbmRlclBoYXNlVXBkYXRlcy5nZXQocXVldWUpO1xuXG4gICAgICBpZiAoZmlyc3RSZW5kZXJQaGFzZVVwZGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlbmRlclBoYXNlVXBkYXRlcy5kZWxldGUocXVldWUpO1xuICAgICAgICB2YXIgbmV3U3RhdGUgPSB3b3JrSW5Qcm9ncmVzc0hvb2subWVtb2l6ZWRTdGF0ZTtcbiAgICAgICAgdmFyIHVwZGF0ZSA9IGZpcnN0UmVuZGVyUGhhc2VVcGRhdGU7XG5cbiAgICAgICAgZG8ge1xuICAgICAgICAgIC8vIFByb2Nlc3MgdGhpcyByZW5kZXIgcGhhc2UgdXBkYXRlLiBXZSBkb24ndCBoYXZlIHRvIGNoZWNrIHRoZVxuICAgICAgICAgIC8vIHByaW9yaXR5IGJlY2F1c2UgaXQgd2lsbCBhbHdheXMgYmUgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnRcbiAgICAgICAgICAvLyByZW5kZXIncy5cbiAgICAgICAgICB2YXIgYWN0aW9uID0gdXBkYXRlLmFjdGlvbjtcblxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlzSW5Ib29rVXNlckNvZGVJbkRldiA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV3U3RhdGUgPSByZWR1Y2VyKG5ld1N0YXRlLCBhY3Rpb24pO1xuXG4gICAgICAgICAge1xuICAgICAgICAgICAgaXNJbkhvb2tVc2VyQ29kZUluRGV2ID0gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdXBkYXRlID0gdXBkYXRlLm5leHQ7XG4gICAgICAgIH0gd2hpbGUgKHVwZGF0ZSAhPT0gbnVsbCk7XG5cbiAgICAgICAgd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGUgPSBuZXdTdGF0ZTtcbiAgICAgICAgcmV0dXJuIFtuZXdTdGF0ZSwgZGlzcGF0Y2hdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBbd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGUsIGRpc3BhdGNoXTtcbiAgfSBlbHNlIHtcbiAgICB7XG4gICAgICBpc0luSG9va1VzZXJDb2RlSW5EZXYgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBpbml0aWFsU3RhdGU7XG5cbiAgICBpZiAocmVkdWNlciA9PT0gYmFzaWNTdGF0ZVJlZHVjZXIpIHtcbiAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgYHVzZVN0YXRlYC5cbiAgICAgIGluaXRpYWxTdGF0ZSA9IHR5cGVvZiBpbml0aWFsQXJnID09PSAnZnVuY3Rpb24nID8gaW5pdGlhbEFyZygpIDogaW5pdGlhbEFyZztcbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdGlhbFN0YXRlID0gaW5pdCAhPT0gdW5kZWZpbmVkID8gaW5pdChpbml0aWFsQXJnKSA6IGluaXRpYWxBcmc7XG4gICAgfVxuXG4gICAge1xuICAgICAgaXNJbkhvb2tVc2VyQ29kZUluRGV2ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGUgPSBpbml0aWFsU3RhdGU7XG5cbiAgICB2YXIgX3F1ZXVlID0gd29ya0luUHJvZ3Jlc3NIb29rLnF1ZXVlID0ge1xuICAgICAgbGFzdDogbnVsbCxcbiAgICAgIGRpc3BhdGNoOiBudWxsXG4gICAgfTtcblxuICAgIHZhciBfZGlzcGF0Y2ggPSBfcXVldWUuZGlzcGF0Y2ggPSBkaXNwYXRjaEFjdGlvbi5iaW5kKG51bGwsIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCwgX3F1ZXVlKTtcblxuICAgIHJldHVybiBbd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGUsIF9kaXNwYXRjaF07XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlTWVtbyhuZXh0Q3JlYXRlLCBkZXBzKSB7XG4gIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCA9IHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgd29ya0luUHJvZ3Jlc3NIb29rID0gY3JlYXRlV29ya0luUHJvZ3Jlc3NIb29rKCk7XG4gIHZhciBuZXh0RGVwcyA9IGRlcHMgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBkZXBzO1xuXG4gIGlmICh3b3JrSW5Qcm9ncmVzc0hvb2sgIT09IG51bGwpIHtcbiAgICB2YXIgcHJldlN0YXRlID0gd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGU7XG5cbiAgICBpZiAocHJldlN0YXRlICE9PSBudWxsKSB7XG4gICAgICBpZiAobmV4dERlcHMgIT09IG51bGwpIHtcbiAgICAgICAgdmFyIHByZXZEZXBzID0gcHJldlN0YXRlWzFdO1xuXG4gICAgICAgIGlmIChhcmVIb29rSW5wdXRzRXF1YWwobmV4dERlcHMsIHByZXZEZXBzKSkge1xuICAgICAgICAgIHJldHVybiBwcmV2U3RhdGVbMF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB7XG4gICAgaXNJbkhvb2tVc2VyQ29kZUluRGV2ID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBuZXh0VmFsdWUgPSBuZXh0Q3JlYXRlKCk7XG5cbiAge1xuICAgIGlzSW5Ib29rVXNlckNvZGVJbkRldiA9IGZhbHNlO1xuICB9XG5cbiAgd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGUgPSBbbmV4dFZhbHVlLCBuZXh0RGVwc107XG4gIHJldHVybiBuZXh0VmFsdWU7XG59XG5cbmZ1bmN0aW9uIHVzZVJlZihpbml0aWFsVmFsdWUpIHtcbiAgY3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50ID0gcmVzb2x2ZUN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCgpO1xuICB3b3JrSW5Qcm9ncmVzc0hvb2sgPSBjcmVhdGVXb3JrSW5Qcm9ncmVzc0hvb2soKTtcbiAgdmFyIHByZXZpb3VzUmVmID0gd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGU7XG5cbiAgaWYgKHByZXZpb3VzUmVmID09PSBudWxsKSB7XG4gICAgdmFyIHJlZiA9IHtcbiAgICAgIGN1cnJlbnQ6IGluaXRpYWxWYWx1ZVxuICAgIH07XG5cbiAgICB7XG4gICAgICBPYmplY3Quc2VhbChyZWYpO1xuICAgIH1cblxuICAgIHdvcmtJblByb2dyZXNzSG9vay5tZW1vaXplZFN0YXRlID0gcmVmO1xuICAgIHJldHVybiByZWY7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHByZXZpb3VzUmVmO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVzZUxheW91dEVmZmVjdChjcmVhdGUsIGlucHV0cykge1xuICB7XG4gICAgY3VycmVudEhvb2tOYW1lSW5EZXYgPSAndXNlTGF5b3V0RWZmZWN0JztcblxuICAgIGVycm9yKCd1c2VMYXlvdXRFZmZlY3QgZG9lcyBub3RoaW5nIG9uIHRoZSBzZXJ2ZXIsIGJlY2F1c2UgaXRzIGVmZmVjdCBjYW5ub3QgJyArIFwiYmUgZW5jb2RlZCBpbnRvIHRoZSBzZXJ2ZXIgcmVuZGVyZXIncyBvdXRwdXQgZm9ybWF0LiBUaGlzIHdpbGwgbGVhZCBcIiArICd0byBhIG1pc21hdGNoIGJldHdlZW4gdGhlIGluaXRpYWwsIG5vbi1oeWRyYXRlZCBVSSBhbmQgdGhlIGludGVuZGVkICcgKyAnVUkuIFRvIGF2b2lkIHRoaXMsIHVzZUxheW91dEVmZmVjdCBzaG91bGQgb25seSBiZSB1c2VkIGluICcgKyAnY29tcG9uZW50cyB0aGF0IHJlbmRlciBleGNsdXNpdmVseSBvbiB0aGUgY2xpZW50LiAnICsgJ1NlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvdXNlbGF5b3V0ZWZmZWN0LXNzciBmb3IgY29tbW9uIGZpeGVzLicpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoQWN0aW9uKGNvbXBvbmVudElkZW50aXR5LCBxdWV1ZSwgYWN0aW9uKSB7XG4gIGlmIChudW1iZXJPZlJlUmVuZGVycyA+PSBSRV9SRU5ERVJfTElNSVQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RvbyBtYW55IHJlLXJlbmRlcnMuIFJlYWN0IGxpbWl0cyB0aGUgbnVtYmVyIG9mIHJlbmRlcnMgdG8gcHJldmVudCAnICsgJ2FuIGluZmluaXRlIGxvb3AuJyk7XG4gIH1cblxuICBpZiAoY29tcG9uZW50SWRlbnRpdHkgPT09IGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCkge1xuICAgIC8vIFRoaXMgaXMgYSByZW5kZXIgcGhhc2UgdXBkYXRlLiBTdGFzaCBpdCBpbiBhIGxhemlseS1jcmVhdGVkIG1hcCBvZlxuICAgIC8vIHF1ZXVlIC0+IGxpbmtlZCBsaXN0IG9mIHVwZGF0ZXMuIEFmdGVyIHRoaXMgcmVuZGVyIHBhc3MsIHdlJ2xsIHJlc3RhcnRcbiAgICAvLyBhbmQgYXBwbHkgdGhlIHN0YXNoZWQgdXBkYXRlcyBvbiB0b3Agb2YgdGhlIHdvcmstaW4tcHJvZ3Jlc3MgaG9vay5cbiAgICBkaWRTY2hlZHVsZVJlbmRlclBoYXNlVXBkYXRlID0gdHJ1ZTtcbiAgICB2YXIgdXBkYXRlID0ge1xuICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICBuZXh0OiBudWxsXG4gICAgfTtcblxuICAgIGlmIChyZW5kZXJQaGFzZVVwZGF0ZXMgPT09IG51bGwpIHtcbiAgICAgIHJlbmRlclBoYXNlVXBkYXRlcyA9IG5ldyBNYXAoKTtcbiAgICB9XG5cbiAgICB2YXIgZmlyc3RSZW5kZXJQaGFzZVVwZGF0ZSA9IHJlbmRlclBoYXNlVXBkYXRlcy5nZXQocXVldWUpO1xuXG4gICAgaWYgKGZpcnN0UmVuZGVyUGhhc2VVcGRhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVuZGVyUGhhc2VVcGRhdGVzLnNldChxdWV1ZSwgdXBkYXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQXBwZW5kIHRoZSB1cGRhdGUgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC5cbiAgICAgIHZhciBsYXN0UmVuZGVyUGhhc2VVcGRhdGUgPSBmaXJzdFJlbmRlclBoYXNlVXBkYXRlO1xuXG4gICAgICB3aGlsZSAobGFzdFJlbmRlclBoYXNlVXBkYXRlLm5leHQgIT09IG51bGwpIHtcbiAgICAgICAgbGFzdFJlbmRlclBoYXNlVXBkYXRlID0gbGFzdFJlbmRlclBoYXNlVXBkYXRlLm5leHQ7XG4gICAgICB9XG5cbiAgICAgIGxhc3RSZW5kZXJQaGFzZVVwZGF0ZS5uZXh0ID0gdXBkYXRlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VDYWxsYmFjayhjYWxsYmFjaywgZGVwcykge1xuICByZXR1cm4gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrO1xuICB9LCBkZXBzKTtcbn0gLy8gVE9ETyBEZWNpZGUgb24gaG93IHRvIGltcGxlbWVudCB0aGlzIGhvb2sgZm9yIHNlcnZlciByZW5kZXJpbmcuXG4vLyBJZiBhIG11dGF0aW9uIG9jY3VycyBkdXJpbmcgcmVuZGVyLCBjb25zaWRlciB0cmlnZ2VyaW5nIGEgU3VzcGVuc2UgYm91bmRhcnlcbi8vIGFuZCBmYWxsaW5nIGJhY2sgdG8gY2xpZW50IHJlbmRlcmluZy5cblxuZnVuY3Rpb24gdXNlTXV0YWJsZVNvdXJjZShzb3VyY2UsIGdldFNuYXBzaG90LCBzdWJzY3JpYmUpIHtcbiAgcmVzb2x2ZUN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCgpO1xuICByZXR1cm4gZ2V0U25hcHNob3Qoc291cmNlLl9zb3VyY2UpO1xufVxuXG5mdW5jdGlvbiB1c2VTeW5jRXh0ZXJuYWxTdG9yZShzdWJzY3JpYmUsIGdldFNuYXBzaG90LCBnZXRTZXJ2ZXJTbmFwc2hvdCkge1xuICBpZiAoZ2V0U2VydmVyU25hcHNob3QgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBnZXRTZXJ2ZXJTbmFwc2hvdCwgd2hpY2ggaXMgcmVxdWlyZWQgZm9yICcgKyAnc2VydmVyLXJlbmRlcmVkIGNvbnRlbnQuIFdpbGwgcmV2ZXJ0IHRvIGNsaWVudCByZW5kZXJpbmcuJyk7XG4gIH1cblxuICByZXR1cm4gZ2V0U2VydmVyU25hcHNob3QoKTtcbn1cblxuZnVuY3Rpb24gdXNlRGVmZXJyZWRWYWx1ZSh2YWx1ZSkge1xuICByZXNvbHZlQ3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50KCk7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gdW5zdXBwb3J0ZWRTdGFydFRyYW5zaXRpb24oKSB7XG4gIHRocm93IG5ldyBFcnJvcignc3RhcnRUcmFuc2l0aW9uIGNhbm5vdCBiZSBjYWxsZWQgZHVyaW5nIHNlcnZlciByZW5kZXJpbmcuJyk7XG59XG5cbmZ1bmN0aW9uIHVzZVRyYW5zaXRpb24oKSB7XG4gIHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgcmV0dXJuIFtmYWxzZSwgdW5zdXBwb3J0ZWRTdGFydFRyYW5zaXRpb25dO1xufVxuXG5mdW5jdGlvbiB1c2VJZCgpIHtcbiAgdmFyIHRhc2sgPSBjdXJyZW50bHlSZW5kZXJpbmdUYXNrO1xuICB2YXIgdHJlZUlkID0gZ2V0VHJlZUlkKHRhc2sudHJlZUNvbnRleHQpO1xuICB2YXIgcmVzcG9uc2VTdGF0ZSA9IGN1cnJlbnRSZXNwb25zZVN0YXRlO1xuXG4gIGlmIChyZXNwb25zZVN0YXRlID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGhvb2sgY2FsbC4gSG9va3MgY2FuIG9ubHkgYmUgY2FsbGVkIGluc2lkZSBvZiB0aGUgYm9keSBvZiBhIGZ1bmN0aW9uIGNvbXBvbmVudC4nKTtcbiAgfVxuXG4gIHZhciBsb2NhbElkID0gbG9jYWxJZENvdW50ZXIrKztcbiAgcmV0dXJuIG1ha2VJZChyZXNwb25zZVN0YXRlLCB0cmVlSWQsIGxvY2FsSWQpO1xufVxuXG5mdW5jdGlvbiBub29wKCkge31cblxudmFyIERpc3BhdGNoZXIgPSB7XG4gIHJlYWRDb250ZXh0OiByZWFkQ29udGV4dCQxLFxuICB1c2VDb250ZXh0OiB1c2VDb250ZXh0LFxuICB1c2VNZW1vOiB1c2VNZW1vLFxuICB1c2VSZWR1Y2VyOiB1c2VSZWR1Y2VyLFxuICB1c2VSZWY6IHVzZVJlZixcbiAgdXNlU3RhdGU6IHVzZVN0YXRlLFxuICB1c2VJbnNlcnRpb25FZmZlY3Q6IG5vb3AsXG4gIHVzZUxheW91dEVmZmVjdDogdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VDYWxsYmFjazogdXNlQ2FsbGJhY2ssXG4gIC8vIHVzZUltcGVyYXRpdmVIYW5kbGUgaXMgbm90IHJ1biBpbiB0aGUgc2VydmVyIGVudmlyb25tZW50XG4gIHVzZUltcGVyYXRpdmVIYW5kbGU6IG5vb3AsXG4gIC8vIEVmZmVjdHMgYXJlIG5vdCBydW4gaW4gdGhlIHNlcnZlciBlbnZpcm9ubWVudC5cbiAgdXNlRWZmZWN0OiBub29wLFxuICAvLyBEZWJ1Z2dpbmcgZWZmZWN0XG4gIHVzZURlYnVnVmFsdWU6IG5vb3AsXG4gIHVzZURlZmVycmVkVmFsdWU6IHVzZURlZmVycmVkVmFsdWUsXG4gIHVzZVRyYW5zaXRpb246IHVzZVRyYW5zaXRpb24sXG4gIHVzZUlkOiB1c2VJZCxcbiAgLy8gU3Vic2NyaXB0aW9ucyBhcmUgbm90IHNldHVwIGluIGEgc2VydmVyIGVudmlyb25tZW50LlxuICB1c2VNdXRhYmxlU291cmNlOiB1c2VNdXRhYmxlU291cmNlLFxuICB1c2VTeW5jRXh0ZXJuYWxTdG9yZTogdXNlU3luY0V4dGVybmFsU3RvcmVcbn07XG5cbnZhciBjdXJyZW50UmVzcG9uc2VTdGF0ZSA9IG51bGw7XG5mdW5jdGlvbiBzZXRDdXJyZW50UmVzcG9uc2VTdGF0ZShyZXNwb25zZVN0YXRlKSB7XG4gIGN1cnJlbnRSZXNwb25zZVN0YXRlID0gcmVzcG9uc2VTdGF0ZTtcbn1cblxuZnVuY3Rpb24gZ2V0U3RhY2tCeUNvbXBvbmVudFN0YWNrTm9kZShjb21wb25lbnRTdGFjaykge1xuICB0cnkge1xuICAgIHZhciBpbmZvID0gJyc7XG4gICAgdmFyIG5vZGUgPSBjb21wb25lbnRTdGFjaztcblxuICAgIGRvIHtcbiAgICAgIHN3aXRjaCAobm9kZS50YWcpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIGluZm8gKz0gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUobm9kZS50eXBlLCBudWxsLCBudWxsKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaW5mbyArPSBkZXNjcmliZUZ1bmN0aW9uQ29tcG9uZW50RnJhbWUobm9kZS50eXBlLCBudWxsLCBudWxsKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaW5mbyArPSBkZXNjcmliZUNsYXNzQ29tcG9uZW50RnJhbWUobm9kZS50eXBlLCBudWxsLCBudWxsKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgbm9kZSA9IG5vZGUucGFyZW50O1xuICAgIH0gd2hpbGUgKG5vZGUpO1xuXG4gICAgcmV0dXJuIGluZm87XG4gIH0gY2F0Y2ggKHgpIHtcbiAgICByZXR1cm4gJ1xcbkVycm9yIGdlbmVyYXRpbmcgc3RhY2s6ICcgKyB4Lm1lc3NhZ2UgKyAnXFxuJyArIHguc3RhY2s7XG4gIH1cbn1cblxudmFyIFJlYWN0Q3VycmVudERpc3BhdGNoZXIkMSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0Q3VycmVudERpc3BhdGNoZXI7XG52YXIgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSQxID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZTtcbnZhciBQRU5ESU5HID0gMDtcbnZhciBDT01QTEVURUQgPSAxO1xudmFyIEZMVVNIRUQgPSAyO1xudmFyIEFCT1JURUQgPSAzO1xudmFyIEVSUk9SRUQgPSA0O1xudmFyIE9QRU4gPSAwO1xudmFyIENMT1NJTkcgPSAxO1xudmFyIENMT1NFRCA9IDI7XG4vLyBUaGlzIGlzIGEgZGVmYXVsdCBoZXVyaXN0aWMgZm9yIGhvdyB0byBzcGxpdCB1cCB0aGUgSFRNTCBjb250ZW50IGludG8gcHJvZ3Jlc3NpdmVcbi8vIGxvYWRpbmcuIE91ciBnb2FsIGlzIHRvIGJlIGFibGUgdG8gZGlzcGxheSBhZGRpdGlvbmFsIG5ldyBjb250ZW50IGFib3V0IGV2ZXJ5IDUwMG1zLlxuLy8gRmFzdGVyIHRoYW4gdGhhdCBpcyB1bm5lY2Vzc2FyeSBhbmQgc2hvdWxkIGJlIHRocm90dGxlZCBvbiB0aGUgY2xpZW50LiBJdCBhbHNvXG4vLyBhZGRzIHVubmVjZXNzYXJ5IG92ZXJoZWFkIHRvIGRvIG1vcmUgc3BsaXRzLiBXZSBkb24ndCBrbm93IGlmIGl0J3MgYSBoaWdoZXIgb3IgbG93ZXJcbi8vIGVuZCBkZXZpY2UgYnV0IGhpZ2hlciBlbmQgc3VmZmVyIGxlc3MgZnJvbSB0aGUgb3ZlcmhlYWQgdGhhbiBsb3dlciBlbmQgZG9lcyBmcm9tXG4vLyBub3QgZ2V0dGluZyBzbWFsbCBlbm91Z2ggcGllY2VzLiBXZSBlcnJvciBvbiB0aGUgc2lkZSBvZiBsb3cgZW5kLlxuLy8gV2UgYmFzZSB0aGlzIG9uIGxvdyBlbmQgM0cgc3BlZWRzIHdoaWNoIGlzIGFib3V0IDUwMGtiaXRzIHBlciBzZWNvbmQuIFdlIGFzc3VtZVxuLy8gdGhhdCB0aGVyZSBjYW4gYmUgYSByZWFzb25hYmxlIGRyb3Agb2ZmIGZyb20gbWF4IGJhbmR3aWR0aCB3aGljaCBsZWF2ZXMgeW91IHdpdGhcbi8vIGFzIGxpdHRsZSBhcyA4MCUuIFdlIGNhbiByZWNlaXZlIGhhbGYgb2YgdGhhdCBlYWNoIDUwMG1zIC0gYXQgYmVzdC4gSW4gcHJhY3RpY2UsXG4vLyBhIGxpdHRsZSBiYW5kd2lkdGggaXMgbG9zdCB0byBwcm9jZXNzaW5nIGFuZCBjb250ZW50aW9uIC0gZS5nLiBDU1MgYW5kIGltYWdlcyB0aGF0XG4vLyBhcmUgZG93bmxvYWRlZCBhbG9uZyB3aXRoIHRoZSBtYWluIGNvbnRlbnQuIFNvIHdlIGVzdGltYXRlIGFib3V0IGhhbGYgb2YgdGhhdCB0byBiZVxuLy8gdGhlIGxvd2VyIGVuZCB0aHJvdWdocHV0LiBJbiBvdGhlciB3b3Jkcywgd2UgZXhwZWN0IHRoYXQgeW91IGNhbiBhdCBsZWFzdCBzaG93XG4vLyBhYm91dCAxMi41a2Igb2YgY29udGVudCBwZXIgNTAwbXMuIE5vdCBjb3VudGluZyBzdGFydGluZyBsYXRlbmN5IGZvciB0aGUgZmlyc3Rcbi8vIHBhaW50LlxuLy8gNTAwICogMTAyNCAvIDggKiAuOCAqIDAuNSAvIDJcbnZhciBERUZBVUxUX1BST0dSRVNTSVZFX0NIVU5LX1NJWkUgPSAxMjgwMDtcblxuZnVuY3Rpb24gZGVmYXVsdEVycm9ySGFuZGxlcihlcnJvcikge1xuICBjb25zb2xlWydlcnJvciddKGVycm9yKTsgLy8gRG9uJ3QgdHJhbnNmb3JtIHRvIG91ciB3cmFwcGVyXG59XG5cbmZ1bmN0aW9uIG5vb3AkMSgpIHt9XG5cbmZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3QoY2hpbGRyZW4sIHJlc3BvbnNlU3RhdGUsIHJvb3RGb3JtYXRDb250ZXh0LCBwcm9ncmVzc2l2ZUNodW5rU2l6ZSwgb25FcnJvciwgb25BbGxSZWFkeSwgb25TaGVsbFJlYWR5LCBvblNoZWxsRXJyb3IsIG9uRmF0YWxFcnJvcikge1xuICB2YXIgcGluZ2VkVGFza3MgPSBbXTtcbiAgdmFyIGFib3J0U2V0ID0gbmV3IFNldCgpO1xuICB2YXIgcmVxdWVzdCA9IHtcbiAgICBkZXN0aW5hdGlvbjogbnVsbCxcbiAgICByZXNwb25zZVN0YXRlOiByZXNwb25zZVN0YXRlLFxuICAgIHByb2dyZXNzaXZlQ2h1bmtTaXplOiBwcm9ncmVzc2l2ZUNodW5rU2l6ZSA9PT0gdW5kZWZpbmVkID8gREVGQVVMVF9QUk9HUkVTU0lWRV9DSFVOS19TSVpFIDogcHJvZ3Jlc3NpdmVDaHVua1NpemUsXG4gICAgc3RhdHVzOiBPUEVOLFxuICAgIGZhdGFsRXJyb3I6IG51bGwsXG4gICAgbmV4dFNlZ21lbnRJZDogMCxcbiAgICBhbGxQZW5kaW5nVGFza3M6IDAsXG4gICAgcGVuZGluZ1Jvb3RUYXNrczogMCxcbiAgICBjb21wbGV0ZWRSb290U2VnbWVudDogbnVsbCxcbiAgICBhYm9ydGFibGVUYXNrczogYWJvcnRTZXQsXG4gICAgcGluZ2VkVGFza3M6IHBpbmdlZFRhc2tzLFxuICAgIGNsaWVudFJlbmRlcmVkQm91bmRhcmllczogW10sXG4gICAgY29tcGxldGVkQm91bmRhcmllczogW10sXG4gICAgcGFydGlhbEJvdW5kYXJpZXM6IFtdLFxuICAgIG9uRXJyb3I6IG9uRXJyb3IgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRFcnJvckhhbmRsZXIgOiBvbkVycm9yLFxuICAgIG9uQWxsUmVhZHk6IG9uQWxsUmVhZHkgPT09IHVuZGVmaW5lZCA/IG5vb3AkMSA6IG9uQWxsUmVhZHksXG4gICAgb25TaGVsbFJlYWR5OiBvblNoZWxsUmVhZHkgPT09IHVuZGVmaW5lZCA/IG5vb3AkMSA6IG9uU2hlbGxSZWFkeSxcbiAgICBvblNoZWxsRXJyb3I6IG9uU2hlbGxFcnJvciA9PT0gdW5kZWZpbmVkID8gbm9vcCQxIDogb25TaGVsbEVycm9yLFxuICAgIG9uRmF0YWxFcnJvcjogb25GYXRhbEVycm9yID09PSB1bmRlZmluZWQgPyBub29wJDEgOiBvbkZhdGFsRXJyb3JcbiAgfTsgLy8gVGhpcyBzZWdtZW50IHJlcHJlc2VudHMgdGhlIHJvb3QgZmFsbGJhY2suXG5cbiAgdmFyIHJvb3RTZWdtZW50ID0gY3JlYXRlUGVuZGluZ1NlZ21lbnQocmVxdWVzdCwgMCwgbnVsbCwgcm9vdEZvcm1hdENvbnRleHQpOyAvLyBUaGVyZSBpcyBubyBwYXJlbnQgc28gY29uY2VwdHVhbGx5LCB3ZSdyZSB1bmJsb2NrZWQgdG8gZmx1c2ggdGhpcyBzZWdtZW50LlxuXG4gIHJvb3RTZWdtZW50LnBhcmVudEZsdXNoZWQgPSB0cnVlO1xuICB2YXIgcm9vdFRhc2sgPSBjcmVhdGVUYXNrKHJlcXVlc3QsIGNoaWxkcmVuLCBudWxsLCByb290U2VnbWVudCwgYWJvcnRTZXQsIGVtcHR5Q29udGV4dE9iamVjdCwgcm9vdENvbnRleHRTbmFwc2hvdCwgZW1wdHlUcmVlQ29udGV4dCk7XG4gIHBpbmdlZFRhc2tzLnB1c2gocm9vdFRhc2spO1xuICByZXR1cm4gcmVxdWVzdDtcbn1cblxuZnVuY3Rpb24gcGluZ1Rhc2socmVxdWVzdCwgdGFzaykge1xuICB2YXIgcGluZ2VkVGFza3MgPSByZXF1ZXN0LnBpbmdlZFRhc2tzO1xuICBwaW5nZWRUYXNrcy5wdXNoKHRhc2spO1xuXG4gIGlmIChwaW5nZWRUYXNrcy5sZW5ndGggPT09IDEpIHtcbiAgICBzY2hlZHVsZVdvcmsoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHBlcmZvcm1Xb3JrKHJlcXVlc3QpO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN1c3BlbnNlQm91bmRhcnkocmVxdWVzdCwgZmFsbGJhY2tBYm9ydGFibGVUYXNrcykge1xuICByZXR1cm4ge1xuICAgIGlkOiBVTklOSVRJQUxJWkVEX1NVU1BFTlNFX0JPVU5EQVJZX0lELFxuICAgIHJvb3RTZWdtZW50SUQ6IC0xLFxuICAgIHBhcmVudEZsdXNoZWQ6IGZhbHNlLFxuICAgIHBlbmRpbmdUYXNrczogMCxcbiAgICBmb3JjZUNsaWVudFJlbmRlcjogZmFsc2UsXG4gICAgY29tcGxldGVkU2VnbWVudHM6IFtdLFxuICAgIGJ5dGVTaXplOiAwLFxuICAgIGZhbGxiYWNrQWJvcnRhYmxlVGFza3M6IGZhbGxiYWNrQWJvcnRhYmxlVGFza3NcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVGFzayhyZXF1ZXN0LCBub2RlLCBibG9ja2VkQm91bmRhcnksIGJsb2NrZWRTZWdtZW50LCBhYm9ydFNldCwgbGVnYWN5Q29udGV4dCwgY29udGV4dCwgdHJlZUNvbnRleHQpIHtcbiAgcmVxdWVzdC5hbGxQZW5kaW5nVGFza3MrKztcblxuICBpZiAoYmxvY2tlZEJvdW5kYXJ5ID09PSBudWxsKSB7XG4gICAgcmVxdWVzdC5wZW5kaW5nUm9vdFRhc2tzKys7XG4gIH0gZWxzZSB7XG4gICAgYmxvY2tlZEJvdW5kYXJ5LnBlbmRpbmdUYXNrcysrO1xuICB9XG5cbiAgdmFyIHRhc2sgPSB7XG4gICAgbm9kZTogbm9kZSxcbiAgICBwaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gcGluZ1Rhc2socmVxdWVzdCwgdGFzayk7XG4gICAgfSxcbiAgICBibG9ja2VkQm91bmRhcnk6IGJsb2NrZWRCb3VuZGFyeSxcbiAgICBibG9ja2VkU2VnbWVudDogYmxvY2tlZFNlZ21lbnQsXG4gICAgYWJvcnRTZXQ6IGFib3J0U2V0LFxuICAgIGxlZ2FjeUNvbnRleHQ6IGxlZ2FjeUNvbnRleHQsXG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICB0cmVlQ29udGV4dDogdHJlZUNvbnRleHRcbiAgfTtcblxuICB7XG4gICAgdGFzay5jb21wb25lbnRTdGFjayA9IG51bGw7XG4gIH1cblxuICBhYm9ydFNldC5hZGQodGFzayk7XG4gIHJldHVybiB0YXNrO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVQZW5kaW5nU2VnbWVudChyZXF1ZXN0LCBpbmRleCwgYm91bmRhcnksIGZvcm1hdENvbnRleHQpIHtcbiAgcmV0dXJuIHtcbiAgICBzdGF0dXM6IFBFTkRJTkcsXG4gICAgaWQ6IC0xLFxuICAgIC8vIGxhemlseSBhc3NpZ25lZCBsYXRlclxuICAgIGluZGV4OiBpbmRleCxcbiAgICBwYXJlbnRGbHVzaGVkOiBmYWxzZSxcbiAgICBjaHVua3M6IFtdLFxuICAgIGNoaWxkcmVuOiBbXSxcbiAgICBmb3JtYXRDb250ZXh0OiBmb3JtYXRDb250ZXh0LFxuICAgIGJvdW5kYXJ5OiBib3VuZGFyeVxuICB9O1xufSAvLyBERVYtb25seSBnbG9iYWwgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2tcblxuXG52YXIgY3VycmVudFRhc2tJbkRFViA9IG51bGw7XG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRTdGFja0luREVWKCkge1xuICB7XG4gICAgaWYgKGN1cnJlbnRUYXNrSW5ERVYgPT09IG51bGwgfHwgY3VycmVudFRhc2tJbkRFVi5jb21wb25lbnRTdGFjayA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRTdGFja0J5Q29tcG9uZW50U3RhY2tOb2RlKGN1cnJlbnRUYXNrSW5ERVYuY29tcG9uZW50U3RhY2spO1xuICB9XG59XG5cbmZ1bmN0aW9uIHB1c2hCdWlsdEluQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrLCB0eXBlKSB7XG4gIHtcbiAgICB0YXNrLmNvbXBvbmVudFN0YWNrID0ge1xuICAgICAgdGFnOiAwLFxuICAgICAgcGFyZW50OiB0YXNrLmNvbXBvbmVudFN0YWNrLFxuICAgICAgdHlwZTogdHlwZVxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gcHVzaEZ1bmN0aW9uQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrLCB0eXBlKSB7XG4gIHtcbiAgICB0YXNrLmNvbXBvbmVudFN0YWNrID0ge1xuICAgICAgdGFnOiAxLFxuICAgICAgcGFyZW50OiB0YXNrLmNvbXBvbmVudFN0YWNrLFxuICAgICAgdHlwZTogdHlwZVxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gcHVzaENsYXNzQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrLCB0eXBlKSB7XG4gIHtcbiAgICB0YXNrLmNvbXBvbmVudFN0YWNrID0ge1xuICAgICAgdGFnOiAyLFxuICAgICAgcGFyZW50OiB0YXNrLmNvbXBvbmVudFN0YWNrLFxuICAgICAgdHlwZTogdHlwZVxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9wQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrKSB7XG4gIHtcbiAgICBpZiAodGFzay5jb21wb25lbnRTdGFjayA9PT0gbnVsbCkge1xuICAgICAgZXJyb3IoJ1VuZXhwZWN0ZWRseSBwb3BwZWQgdG9vIG1hbnkgc3RhY2sgZnJhbWVzLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXNrLmNvbXBvbmVudFN0YWNrID0gdGFzay5jb21wb25lbnRTdGFjay5wYXJlbnQ7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGxvZ1JlY292ZXJhYmxlRXJyb3IocmVxdWVzdCwgZXJyb3IpIHtcbiAgLy8gSWYgdGhpcyBjYWxsYmFjayBlcnJvcnMsIHdlIGludGVudGlvbmFsbHkgbGV0IHRoYXQgZXJyb3IgYnViYmxlIHVwIHRvIGJlY29tZSBhIGZhdGFsIGVycm9yXG4gIC8vIHNvIHRoYXQgc29tZW9uZSBmaXhlcyB0aGUgZXJyb3IgcmVwb3J0aW5nIGluc3RlYWQgb2YgaGlkaW5nIGl0LlxuICB2YXIgb25FcnJvciA9IHJlcXVlc3Qub25FcnJvcjtcbiAgb25FcnJvcihlcnJvcik7XG59XG5cbmZ1bmN0aW9uIGZhdGFsRXJyb3IocmVxdWVzdCwgZXJyb3IpIHtcbiAgLy8gVGhpcyBpcyBjYWxsZWQgb3V0c2lkZSBlcnJvciBoYW5kbGluZyBjb2RlIHN1Y2ggYXMgaWYgdGhlIHJvb3QgZXJyb3JzIG91dHNpZGVcbiAgLy8gYSBzdXNwZW5zZSBib3VuZGFyeSBvciBpZiB0aGUgcm9vdCBzdXNwZW5zZSBib3VuZGFyeSdzIGZhbGxiYWNrIGVycm9ycy5cbiAgLy8gSXQncyBhbHNvIGNhbGxlZCBpZiBSZWFjdCBpdHNlbGYgb3IgaXRzIGhvc3QgY29uZmlncyBlcnJvcnMuXG4gIHZhciBvblNoZWxsRXJyb3IgPSByZXF1ZXN0Lm9uU2hlbGxFcnJvcjtcbiAgb25TaGVsbEVycm9yKGVycm9yKTtcbiAgdmFyIG9uRmF0YWxFcnJvciA9IHJlcXVlc3Qub25GYXRhbEVycm9yO1xuICBvbkZhdGFsRXJyb3IoZXJyb3IpO1xuXG4gIGlmIChyZXF1ZXN0LmRlc3RpbmF0aW9uICE9PSBudWxsKSB7XG4gICAgcmVxdWVzdC5zdGF0dXMgPSBDTE9TRUQ7XG4gICAgY2xvc2VXaXRoRXJyb3IocmVxdWVzdC5kZXN0aW5hdGlvbiwgZXJyb3IpO1xuICB9IGVsc2Uge1xuICAgIHJlcXVlc3Quc3RhdHVzID0gQ0xPU0lORztcbiAgICByZXF1ZXN0LmZhdGFsRXJyb3IgPSBlcnJvcjtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJTdXNwZW5zZUJvdW5kYXJ5KHJlcXVlc3QsIHRhc2ssIHByb3BzKSB7XG4gIHB1c2hCdWlsdEluQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrLCAnU3VzcGVuc2UnKTtcbiAgdmFyIHBhcmVudEJvdW5kYXJ5ID0gdGFzay5ibG9ja2VkQm91bmRhcnk7XG4gIHZhciBwYXJlbnRTZWdtZW50ID0gdGFzay5ibG9ja2VkU2VnbWVudDsgLy8gRWFjaCB0aW1lIHdlIGVudGVyIGEgc3VzcGVuc2UgYm91bmRhcnksIHdlIHNwbGl0IG91dCBpbnRvIGEgbmV3IHNlZ21lbnQgZm9yXG4gIC8vIHRoZSBmYWxsYmFjayBzbyB0aGF0IHdlIGNhbiBsYXRlciByZXBsYWNlIHRoYXQgc2VnbWVudCB3aXRoIHRoZSBjb250ZW50LlxuICAvLyBUaGlzIGFsc28gbGV0cyB1cyBzcGxpdCBvdXQgdGhlIG1haW4gY29udGVudCBldmVuIGlmIGl0IGRvZXNuJ3Qgc3VzcGVuZCxcbiAgLy8gaW4gY2FzZSBpdCBlbmRzIHVwIGdlbmVyYXRpbmcgYSBsYXJnZSBzdWJ0cmVlIG9mIGNvbnRlbnQuXG5cbiAgdmFyIGZhbGxiYWNrID0gcHJvcHMuZmFsbGJhY2s7XG4gIHZhciBjb250ZW50ID0gcHJvcHMuY2hpbGRyZW47XG4gIHZhciBmYWxsYmFja0Fib3J0U2V0ID0gbmV3IFNldCgpO1xuICB2YXIgbmV3Qm91bmRhcnkgPSBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5KHJlcXVlc3QsIGZhbGxiYWNrQWJvcnRTZXQpO1xuICB2YXIgaW5zZXJ0aW9uSW5kZXggPSBwYXJlbnRTZWdtZW50LmNodW5rcy5sZW5ndGg7IC8vIFRoZSBjaGlsZHJlbiBvZiB0aGUgYm91bmRhcnkgc2VnbWVudCBpcyBhY3R1YWxseSB0aGUgZmFsbGJhY2suXG5cbiAgdmFyIGJvdW5kYXJ5U2VnbWVudCA9IGNyZWF0ZVBlbmRpbmdTZWdtZW50KHJlcXVlc3QsIGluc2VydGlvbkluZGV4LCBuZXdCb3VuZGFyeSwgcGFyZW50U2VnbWVudC5mb3JtYXRDb250ZXh0KTtcbiAgcGFyZW50U2VnbWVudC5jaGlsZHJlbi5wdXNoKGJvdW5kYXJ5U2VnbWVudCk7IC8vIFRoaXMgc2VnbWVudCBpcyB0aGUgYWN0dWFsIGNoaWxkIGNvbnRlbnQuIFdlIGNhbiBzdGFydCByZW5kZXJpbmcgdGhhdCBpbW1lZGlhdGVseS5cblxuICB2YXIgY29udGVudFJvb3RTZWdtZW50ID0gY3JlYXRlUGVuZGluZ1NlZ21lbnQocmVxdWVzdCwgMCwgbnVsbCwgcGFyZW50U2VnbWVudC5mb3JtYXRDb250ZXh0KTsgLy8gV2UgbWFyayB0aGUgcm9vdCBzZWdtZW50IGFzIGhhdmluZyBpdHMgcGFyZW50IGZsdXNoZWQuIEl0J3Mgbm90IHJlYWxseSBmbHVzaGVkIGJ1dCB0aGVyZSBpc1xuICAvLyBubyBwYXJlbnQgc2VnbWVudCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gd2FpdCBvbi5cblxuICBjb250ZW50Um9vdFNlZ21lbnQucGFyZW50Rmx1c2hlZCA9IHRydWU7IC8vIEN1cnJlbnRseSB0aGlzIGlzIHJ1bm5pbmcgc3luY2hyb25vdXNseS4gV2UgY291bGQgaW5zdGVhZCBzY2hlZHVsZSB0aGlzIHRvIHBpbmdlZFRhc2tzLlxuICAvLyBJIHN1c3BlY3QgdGhhdCB0aGVyZSBtaWdodCBiZSBzb21lIGVmZmljaWVuY3kgYmVuZWZpdHMgZnJvbSBub3QgY3JlYXRpbmcgdGhlIHN1c3BlbmRlZCB0YXNrXG4gIC8vIGFuZCBpbnN0ZWFkIGp1c3QgdXNpbmcgdGhlIHN0YWNrIGlmIHBvc3NpYmxlLlxuICAvLyBUT0RPOiBDYWxsIHRoaXMgZGlyZWN0bHkgaW5zdGVhZCBvZiBtZXNzaW5nIHdpdGggc2F2aW5nIGFuZCByZXN0b3JpbmcgY29udGV4dHMuXG4gIC8vIFdlIGNhbiByZXVzZSB0aGUgY3VycmVudCBjb250ZXh0IGFuZCB0YXNrIHRvIHJlbmRlciB0aGUgY29udGVudCBpbW1lZGlhdGVseSB3aXRob3V0XG4gIC8vIGNvbnRleHQgc3dpdGNoaW5nLiBXZSBqdXN0IG5lZWQgdG8gdGVtcG9yYXJpbHkgc3dpdGNoIHdoaWNoIGJvdW5kYXJ5IGFuZCB3aGljaCBzZWdtZW50XG4gIC8vIHdlJ3JlIHdyaXRpbmcgdG8uIElmIHNvbWV0aGluZyBzdXNwZW5kcywgaXQnbGwgc3Bhd24gbmV3IHN1c3BlbmRlZCB0YXNrIHdpdGggdGhhdCBjb250ZXh0LlxuXG4gIHRhc2suYmxvY2tlZEJvdW5kYXJ5ID0gbmV3Qm91bmRhcnk7XG4gIHRhc2suYmxvY2tlZFNlZ21lbnQgPSBjb250ZW50Um9vdFNlZ21lbnQ7XG5cbiAgdHJ5IHtcbiAgICAvLyBXZSB1c2UgdGhlIHNhZmUgZm9ybSBiZWNhdXNlIHdlIGRvbid0IGhhbmRsZSBzdXNwZW5kaW5nIGhlcmUuIE9ubHkgZXJyb3IgaGFuZGxpbmcuXG4gICAgcmVuZGVyTm9kZShyZXF1ZXN0LCB0YXNrLCBjb250ZW50KTtcbiAgICBjb250ZW50Um9vdFNlZ21lbnQuc3RhdHVzID0gQ09NUExFVEVEO1xuICAgIHF1ZXVlQ29tcGxldGVkU2VnbWVudChuZXdCb3VuZGFyeSwgY29udGVudFJvb3RTZWdtZW50KTtcblxuICAgIGlmIChuZXdCb3VuZGFyeS5wZW5kaW5nVGFza3MgPT09IDApIHtcbiAgICAgIC8vIFRoaXMgbXVzdCBoYXZlIGJlZW4gdGhlIGxhc3Qgc2VnbWVudCB3ZSB3ZXJlIHdhaXRpbmcgb24uIFRoaXMgYm91bmRhcnkgaXMgbm93IGNvbXBsZXRlLlxuICAgICAgLy8gVGhlcmVmb3JlIHdlIHdvbid0IG5lZWQgdGhlIGZhbGxiYWNrLiBXZSBlYXJseSByZXR1cm4gc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGNyZWF0ZVxuICAgICAgLy8gdGhlIGZhbGxiYWNrLlxuICAgICAgcG9wQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29udGVudFJvb3RTZWdtZW50LnN0YXR1cyA9IEVSUk9SRUQ7XG4gICAgbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0LCBlcnJvcik7XG4gICAgbmV3Qm91bmRhcnkuZm9yY2VDbGllbnRSZW5kZXIgPSB0cnVlOyAvLyBXZSBkb24ndCBuZWVkIHRvIGRlY3JlbWVudCBhbnkgdGFzayBudW1iZXJzIGJlY2F1c2Ugd2UgZGlkbid0IHNwYXduIGFueSBuZXcgdGFzay5cbiAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHNjaGVkdWxlIGFueSB0YXNrIGJlY2F1c2Ugd2Uga25vdyB0aGUgcGFyZW50IGhhcyB3cml0dGVuIHlldC5cbiAgICAvLyBXZSBkbyBuZWVkIHRvIGZhbGx0aHJvdWdoIHRvIGNyZWF0ZSB0aGUgZmFsbGJhY2sgdGhvdWdoLlxuICB9IGZpbmFsbHkge1xuICAgIHRhc2suYmxvY2tlZEJvdW5kYXJ5ID0gcGFyZW50Qm91bmRhcnk7XG4gICAgdGFzay5ibG9ja2VkU2VnbWVudCA9IHBhcmVudFNlZ21lbnQ7XG4gIH0gLy8gV2UgY3JlYXRlIHN1c3BlbmRlZCB0YXNrIGZvciB0aGUgZmFsbGJhY2sgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGFjdHVhbGx5IHdvcmtcbiAgLy8gb24gaXQgeWV0IGluIGNhc2Ugd2UgZmluaXNoIHRoZSBtYWluIGNvbnRlbnQsIHNvIHdlIHF1ZXVlIGZvciBsYXRlci5cblxuXG4gIHZhciBzdXNwZW5kZWRGYWxsYmFja1Rhc2sgPSBjcmVhdGVUYXNrKHJlcXVlc3QsIGZhbGxiYWNrLCBwYXJlbnRCb3VuZGFyeSwgYm91bmRhcnlTZWdtZW50LCBmYWxsYmFja0Fib3J0U2V0LCB0YXNrLmxlZ2FjeUNvbnRleHQsIHRhc2suY29udGV4dCwgdGFzay50cmVlQ29udGV4dCk7XG5cbiAge1xuICAgIHN1c3BlbmRlZEZhbGxiYWNrVGFzay5jb21wb25lbnRTdGFjayA9IHRhc2suY29tcG9uZW50U3RhY2s7XG4gIH0gLy8gVE9ETzogVGhpcyBzaG91bGQgYmUgcXVldWVkIGF0IGEgc2VwYXJhdGUgbG93ZXIgcHJpb3JpdHkgcXVldWUgc28gdGhhdCB3ZSBvbmx5IHdvcmtcbiAgLy8gb24gcHJlcGFyaW5nIGZhbGxiYWNrcyBpZiB3ZSBkb24ndCBoYXZlIGFueSBtb3JlIG1haW4gY29udGVudCB0byB0YXNrIG9uLlxuXG5cbiAgcmVxdWVzdC5waW5nZWRUYXNrcy5wdXNoKHN1c3BlbmRlZEZhbGxiYWNrVGFzayk7XG4gIHBvcENvbXBvbmVudFN0YWNrSW5ERVYodGFzayk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckhvc3RFbGVtZW50KHJlcXVlc3QsIHRhc2ssIHR5cGUsIHByb3BzKSB7XG4gIHB1c2hCdWlsdEluQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrLCB0eXBlKTtcbiAgdmFyIHNlZ21lbnQgPSB0YXNrLmJsb2NrZWRTZWdtZW50O1xuICB2YXIgY2hpbGRyZW4gPSBwdXNoU3RhcnRJbnN0YW5jZShzZWdtZW50LmNodW5rcywgdHlwZSwgcHJvcHMsIHJlcXVlc3QucmVzcG9uc2VTdGF0ZSwgc2VnbWVudC5mb3JtYXRDb250ZXh0KTtcbiAgdmFyIHByZXZDb250ZXh0ID0gc2VnbWVudC5mb3JtYXRDb250ZXh0O1xuICBzZWdtZW50LmZvcm1hdENvbnRleHQgPSBnZXRDaGlsZEZvcm1hdENvbnRleHQocHJldkNvbnRleHQsIHR5cGUsIHByb3BzKTsgLy8gV2UgdXNlIHRoZSBub24tZGVzdHJ1Y3RpdmUgZm9ybSBiZWNhdXNlIGlmIHNvbWV0aGluZyBzdXNwZW5kcywgd2Ugc3RpbGxcbiAgLy8gbmVlZCB0byBwb3AgYmFjayB1cCBhbmQgZmluaXNoIHRoaXMgc3VidHJlZSBvZiBIVE1MLlxuXG4gIHJlbmRlck5vZGUocmVxdWVzdCwgdGFzaywgY2hpbGRyZW4pOyAvLyBXZSBleHBlY3QgdGhhdCBlcnJvcnMgd2lsbCBmYXRhbCB0aGUgd2hvbGUgdGFzayBhbmQgdGhhdCB3ZSBkb24ndCBuZWVkXG4gIC8vIHRoZSBjb3JyZWN0IGNvbnRleHQuIFRoZXJlZm9yZSB0aGlzIGlzIG5vdCBpbiBhIGZpbmFsbHkuXG5cbiAgc2VnbWVudC5mb3JtYXRDb250ZXh0ID0gcHJldkNvbnRleHQ7XG4gIHB1c2hFbmRJbnN0YW5jZShzZWdtZW50LmNodW5rcywgdHlwZSk7XG4gIHBvcENvbXBvbmVudFN0YWNrSW5ERVYodGFzayk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZENvbnN0cnVjdCQxKENvbXBvbmVudCkge1xuICByZXR1cm4gQ29tcG9uZW50LnByb3RvdHlwZSAmJiBDb21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ7XG59XG5cbmZ1bmN0aW9uIHJlbmRlcldpdGhIb29rcyhyZXF1ZXN0LCB0YXNrLCBDb21wb25lbnQsIHByb3BzLCBzZWNvbmRBcmcpIHtcbiAgdmFyIGNvbXBvbmVudElkZW50aXR5ID0ge307XG4gIHByZXBhcmVUb1VzZUhvb2tzKHRhc2ssIGNvbXBvbmVudElkZW50aXR5KTtcbiAgdmFyIHJlc3VsdCA9IENvbXBvbmVudChwcm9wcywgc2Vjb25kQXJnKTtcbiAgcmV0dXJuIGZpbmlzaEhvb2tzKENvbXBvbmVudCwgcHJvcHMsIHJlc3VsdCwgc2Vjb25kQXJnKTtcbn1cblxuZnVuY3Rpb24gZmluaXNoQ2xhc3NDb21wb25lbnQocmVxdWVzdCwgdGFzaywgaW5zdGFuY2UsIENvbXBvbmVudCwgcHJvcHMpIHtcbiAgdmFyIG5leHRDaGlsZHJlbiA9IGluc3RhbmNlLnJlbmRlcigpO1xuXG4gIHtcbiAgICBpZiAoaW5zdGFuY2UucHJvcHMgIT09IHByb3BzKSB7XG4gICAgICBpZiAoIWRpZFdhcm5BYm91dFJlYXNzaWduaW5nUHJvcHMpIHtcbiAgICAgICAgZXJyb3IoJ0l0IGxvb2tzIGxpa2UgJXMgaXMgcmVhc3NpZ25pbmcgaXRzIG93biBgdGhpcy5wcm9wc2Agd2hpbGUgcmVuZGVyaW5nLiAnICsgJ1RoaXMgaXMgbm90IHN1cHBvcnRlZCBhbmQgY2FuIGxlYWQgdG8gY29uZnVzaW5nIGJ1Z3MuJywgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKENvbXBvbmVudCkgfHwgJ2EgY29tcG9uZW50Jyk7XG4gICAgICB9XG5cbiAgICAgIGRpZFdhcm5BYm91dFJlYXNzaWduaW5nUHJvcHMgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHtcbiAgICB2YXIgY2hpbGRDb250ZXh0VHlwZXMgPSBDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXM7XG5cbiAgICBpZiAoY2hpbGRDb250ZXh0VHlwZXMgIT09IG51bGwgJiYgY2hpbGRDb250ZXh0VHlwZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIHByZXZpb3VzQ29udGV4dCA9IHRhc2subGVnYWN5Q29udGV4dDtcbiAgICAgIHZhciBtZXJnZWRDb250ZXh0ID0gcHJvY2Vzc0NoaWxkQ29udGV4dChpbnN0YW5jZSwgQ29tcG9uZW50LCBwcmV2aW91c0NvbnRleHQsIGNoaWxkQ29udGV4dFR5cGVzKTtcbiAgICAgIHRhc2subGVnYWN5Q29udGV4dCA9IG1lcmdlZENvbnRleHQ7XG4gICAgICByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgbmV4dENoaWxkcmVuKTtcbiAgICAgIHRhc2subGVnYWN5Q29udGV4dCA9IHByZXZpb3VzQ29udGV4dDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgbmV4dENoaWxkcmVuKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyQ2xhc3NDb21wb25lbnQocmVxdWVzdCwgdGFzaywgQ29tcG9uZW50LCBwcm9wcykge1xuICBwdXNoQ2xhc3NDb21wb25lbnRTdGFja0luREVWKHRhc2ssIENvbXBvbmVudCk7XG4gIHZhciBtYXNrZWRDb250ZXh0ID0gIGdldE1hc2tlZENvbnRleHQoQ29tcG9uZW50LCB0YXNrLmxlZ2FjeUNvbnRleHQpIDtcbiAgdmFyIGluc3RhbmNlID0gY29uc3RydWN0Q2xhc3NJbnN0YW5jZShDb21wb25lbnQsIHByb3BzLCBtYXNrZWRDb250ZXh0KTtcbiAgbW91bnRDbGFzc0luc3RhbmNlKGluc3RhbmNlLCBDb21wb25lbnQsIHByb3BzLCBtYXNrZWRDb250ZXh0KTtcbiAgZmluaXNoQ2xhc3NDb21wb25lbnQocmVxdWVzdCwgdGFzaywgaW5zdGFuY2UsIENvbXBvbmVudCwgcHJvcHMpO1xuICBwb3BDb21wb25lbnRTdGFja0luREVWKHRhc2spO1xufVxuXG52YXIgZGlkV2FybkFib3V0QmFkQ2xhc3MgPSB7fTtcbnZhciBkaWRXYXJuQWJvdXRNb2R1bGVQYXR0ZXJuQ29tcG9uZW50ID0ge307XG52YXIgZGlkV2FybkFib3V0Q29udGV4dFR5cGVPbkZ1bmN0aW9uQ29tcG9uZW50ID0ge307XG52YXIgZGlkV2FybkFib3V0R2V0RGVyaXZlZFN0YXRlT25GdW5jdGlvbkNvbXBvbmVudCA9IHt9O1xudmFyIGRpZFdhcm5BYm91dFJlYXNzaWduaW5nUHJvcHMgPSBmYWxzZTtcbnZhciBkaWRXYXJuQWJvdXRHZW5lcmF0b3JzID0gZmFsc2U7XG52YXIgZGlkV2FybkFib3V0TWFwcyA9IGZhbHNlO1xudmFyIGhhc1dhcm5lZEFib3V0VXNpbmdDb250ZXh0QXNDb25zdW1lciA9IGZhbHNlOyAvLyBUaGlzIHdvdWxkIHR5cGljYWxseSBiZSBhIGZ1bmN0aW9uIGNvbXBvbmVudCBidXQgd2Ugc3RpbGwgc3VwcG9ydCBtb2R1bGUgcGF0dGVyblxuLy8gY29tcG9uZW50cyBmb3Igc29tZSByZWFzb24uXG5cbmZ1bmN0aW9uIHJlbmRlckluZGV0ZXJtaW5hdGVDb21wb25lbnQocmVxdWVzdCwgdGFzaywgQ29tcG9uZW50LCBwcm9wcykge1xuICB2YXIgbGVnYWN5Q29udGV4dDtcblxuICB7XG4gICAgbGVnYWN5Q29udGV4dCA9IGdldE1hc2tlZENvbnRleHQoQ29tcG9uZW50LCB0YXNrLmxlZ2FjeUNvbnRleHQpO1xuICB9XG5cbiAgcHVzaEZ1bmN0aW9uQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrLCBDb21wb25lbnQpO1xuXG4gIHtcbiAgICBpZiAoQ29tcG9uZW50LnByb3RvdHlwZSAmJiB0eXBlb2YgQ29tcG9uZW50LnByb3RvdHlwZS5yZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHZhciBjb21wb25lbnROYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKENvbXBvbmVudCkgfHwgJ1Vua25vd24nO1xuXG4gICAgICBpZiAoIWRpZFdhcm5BYm91dEJhZENsYXNzW2NvbXBvbmVudE5hbWVdKSB7XG4gICAgICAgIGVycm9yKFwiVGhlIDwlcyAvPiBjb21wb25lbnQgYXBwZWFycyB0byBoYXZlIGEgcmVuZGVyIG1ldGhvZCwgYnV0IGRvZXNuJ3QgZXh0ZW5kIFJlYWN0LkNvbXBvbmVudC4gXCIgKyAnVGhpcyBpcyBsaWtlbHkgdG8gY2F1c2UgZXJyb3JzLiBDaGFuZ2UgJXMgdG8gZXh0ZW5kIFJlYWN0LkNvbXBvbmVudCBpbnN0ZWFkLicsIGNvbXBvbmVudE5hbWUsIGNvbXBvbmVudE5hbWUpO1xuXG4gICAgICAgIGRpZFdhcm5BYm91dEJhZENsYXNzW2NvbXBvbmVudE5hbWVdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgdmFsdWUgPSByZW5kZXJXaXRoSG9va3MocmVxdWVzdCwgdGFzaywgQ29tcG9uZW50LCBwcm9wcywgbGVnYWN5Q29udGV4dCk7XG4gIHZhciBoYXNJZCA9IGNoZWNrRGlkUmVuZGVySWRIb29rKCk7XG5cbiAge1xuICAgIC8vIFN1cHBvcnQgZm9yIG1vZHVsZSBjb21wb25lbnRzIGlzIGRlcHJlY2F0ZWQgYW5kIGlzIHJlbW92ZWQgYmVoaW5kIGEgZmxhZy5cbiAgICAvLyBXaGV0aGVyIG9yIG5vdCBpdCB3b3VsZCBjcmFzaCBsYXRlciwgd2Ugd2FudCB0byBzaG93IGEgZ29vZCBtZXNzYWdlIGluIERFViBmaXJzdC5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUucmVuZGVyID09PSAnZnVuY3Rpb24nICYmIHZhbHVlLiQkdHlwZW9mID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBfY29tcG9uZW50TmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShDb21wb25lbnQpIHx8ICdVbmtub3duJztcblxuICAgICAgaWYgKCFkaWRXYXJuQWJvdXRNb2R1bGVQYXR0ZXJuQ29tcG9uZW50W19jb21wb25lbnROYW1lXSkge1xuICAgICAgICBlcnJvcignVGhlIDwlcyAvPiBjb21wb25lbnQgYXBwZWFycyB0byBiZSBhIGZ1bmN0aW9uIGNvbXBvbmVudCB0aGF0IHJldHVybnMgYSBjbGFzcyBpbnN0YW5jZS4gJyArICdDaGFuZ2UgJXMgdG8gYSBjbGFzcyB0aGF0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IGluc3RlYWQuICcgKyBcIklmIHlvdSBjYW4ndCB1c2UgYSBjbGFzcyB0cnkgYXNzaWduaW5nIHRoZSBwcm90b3R5cGUgb24gdGhlIGZ1bmN0aW9uIGFzIGEgd29ya2Fyb3VuZC4gXCIgKyBcImAlcy5wcm90b3R5cGUgPSBSZWFjdC5Db21wb25lbnQucHJvdG90eXBlYC4gRG9uJ3QgdXNlIGFuIGFycm93IGZ1bmN0aW9uIHNpbmNlIGl0IFwiICsgJ2Nhbm5vdCBiZSBjYWxsZWQgd2l0aCBgbmV3YCBieSBSZWFjdC4nLCBfY29tcG9uZW50TmFtZSwgX2NvbXBvbmVudE5hbWUsIF9jb21wb25lbnROYW1lKTtcblxuICAgICAgICBkaWRXYXJuQWJvdXRNb2R1bGVQYXR0ZXJuQ29tcG9uZW50W19jb21wb25lbnROYW1lXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCAvLyBSdW4gdGhlc2UgY2hlY2tzIGluIHByb2R1Y3Rpb24gb25seSBpZiB0aGUgZmxhZyBpcyBvZmYuXG4gIC8vIEV2ZW50dWFsbHkgd2UnbGwgZGVsZXRlIHRoaXMgYnJhbmNoIGFsdG9nZXRoZXIuXG4gICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZS5yZW5kZXIgPT09ICdmdW5jdGlvbicgJiYgdmFsdWUuJCR0eXBlb2YgPT09IHVuZGVmaW5lZCkge1xuICAgIHtcbiAgICAgIHZhciBfY29tcG9uZW50TmFtZTIgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoQ29tcG9uZW50KSB8fCAnVW5rbm93bic7XG5cbiAgICAgIGlmICghZGlkV2FybkFib3V0TW9kdWxlUGF0dGVybkNvbXBvbmVudFtfY29tcG9uZW50TmFtZTJdKSB7XG4gICAgICAgIGVycm9yKCdUaGUgPCVzIC8+IGNvbXBvbmVudCBhcHBlYXJzIHRvIGJlIGEgZnVuY3Rpb24gY29tcG9uZW50IHRoYXQgcmV0dXJucyBhIGNsYXNzIGluc3RhbmNlLiAnICsgJ0NoYW5nZSAlcyB0byBhIGNsYXNzIHRoYXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgaW5zdGVhZC4gJyArIFwiSWYgeW91IGNhbid0IHVzZSBhIGNsYXNzIHRyeSBhc3NpZ25pbmcgdGhlIHByb3RvdHlwZSBvbiB0aGUgZnVuY3Rpb24gYXMgYSB3b3JrYXJvdW5kLiBcIiArIFwiYCVzLnByb3RvdHlwZSA9IFJlYWN0LkNvbXBvbmVudC5wcm90b3R5cGVgLiBEb24ndCB1c2UgYW4gYXJyb3cgZnVuY3Rpb24gc2luY2UgaXQgXCIgKyAnY2Fubm90IGJlIGNhbGxlZCB3aXRoIGBuZXdgIGJ5IFJlYWN0LicsIF9jb21wb25lbnROYW1lMiwgX2NvbXBvbmVudE5hbWUyLCBfY29tcG9uZW50TmFtZTIpO1xuXG4gICAgICAgIGRpZFdhcm5BYm91dE1vZHVsZVBhdHRlcm5Db21wb25lbnRbX2NvbXBvbmVudE5hbWUyXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbW91bnRDbGFzc0luc3RhbmNlKHZhbHVlLCBDb21wb25lbnQsIHByb3BzLCBsZWdhY3lDb250ZXh0KTtcbiAgICBmaW5pc2hDbGFzc0NvbXBvbmVudChyZXF1ZXN0LCB0YXNrLCB2YWx1ZSwgQ29tcG9uZW50LCBwcm9wcyk7XG4gIH0gZWxzZSB7XG5cbiAgICB7XG4gICAgICB2YWxpZGF0ZUZ1bmN0aW9uQ29tcG9uZW50SW5EZXYoQ29tcG9uZW50KTtcbiAgICB9IC8vIFdlJ3JlIG5vdyBzdWNjZXNzZnVsbHkgcGFzdCB0aGlzIHRhc2ssIGFuZCB3ZSBkb24ndCBoYXZlIHRvIHBvcCBiYWNrIHRvXG4gICAgLy8gdGhlIHByZXZpb3VzIHRhc2sgZXZlcnkgYWdhaW4sIHNvIHdlIGNhbiB1c2UgdGhlIGRlc3RydWN0aXZlIHJlY3Vyc2l2ZSBmb3JtLlxuXG5cbiAgICBpZiAoaGFzSWQpIHtcbiAgICAgIC8vIFRoaXMgY29tcG9uZW50IG1hdGVyaWFsaXplZCBhbiBpZC4gV2UgdHJlYXQgdGhpcyBhcyBpdHMgb3duIGxldmVsLCB3aXRoXG4gICAgICAvLyBhIHNpbmdsZSBcImNoaWxkXCIgc2xvdC5cbiAgICAgIHZhciBwcmV2VHJlZUNvbnRleHQgPSB0YXNrLnRyZWVDb250ZXh0O1xuICAgICAgdmFyIHRvdGFsQ2hpbGRyZW4gPSAxO1xuICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgIHRhc2sudHJlZUNvbnRleHQgPSBwdXNoVHJlZUNvbnRleHQocHJldlRyZWVDb250ZXh0LCB0b3RhbENoaWxkcmVuLCBpbmRleCk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJlbmRlck5vZGVEZXN0cnVjdGl2ZShyZXF1ZXN0LCB0YXNrLCB2YWx1ZSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0YXNrLnRyZWVDb250ZXh0ID0gcHJldlRyZWVDb250ZXh0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHBvcENvbXBvbmVudFN0YWNrSW5ERVYodGFzayk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRnVuY3Rpb25Db21wb25lbnRJbkRldihDb21wb25lbnQpIHtcbiAge1xuICAgIGlmIChDb21wb25lbnQpIHtcbiAgICAgIGlmIChDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMpIHtcbiAgICAgICAgZXJyb3IoJyVzKC4uLik6IGNoaWxkQ29udGV4dFR5cGVzIGNhbm5vdCBiZSBkZWZpbmVkIG9uIGEgZnVuY3Rpb24gY29tcG9uZW50LicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBDb21wb25lbnQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB2YXIgX2NvbXBvbmVudE5hbWUzID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKENvbXBvbmVudCkgfHwgJ1Vua25vd24nO1xuXG4gICAgICBpZiAoIWRpZFdhcm5BYm91dEdldERlcml2ZWRTdGF0ZU9uRnVuY3Rpb25Db21wb25lbnRbX2NvbXBvbmVudE5hbWUzXSkge1xuICAgICAgICBlcnJvcignJXM6IEZ1bmN0aW9uIGNvbXBvbmVudHMgZG8gbm90IHN1cHBvcnQgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLicsIF9jb21wb25lbnROYW1lMyk7XG5cbiAgICAgICAgZGlkV2FybkFib3V0R2V0RGVyaXZlZFN0YXRlT25GdW5jdGlvbkNvbXBvbmVudFtfY29tcG9uZW50TmFtZTNdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIENvbXBvbmVudC5jb250ZXh0VHlwZSA9PT0gJ29iamVjdCcgJiYgQ29tcG9uZW50LmNvbnRleHRUeXBlICE9PSBudWxsKSB7XG4gICAgICB2YXIgX2NvbXBvbmVudE5hbWU0ID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKENvbXBvbmVudCkgfHwgJ1Vua25vd24nO1xuXG4gICAgICBpZiAoIWRpZFdhcm5BYm91dENvbnRleHRUeXBlT25GdW5jdGlvbkNvbXBvbmVudFtfY29tcG9uZW50TmFtZTRdKSB7XG4gICAgICAgIGVycm9yKCclczogRnVuY3Rpb24gY29tcG9uZW50cyBkbyBub3Qgc3VwcG9ydCBjb250ZXh0VHlwZS4nLCBfY29tcG9uZW50TmFtZTQpO1xuXG4gICAgICAgIGRpZFdhcm5BYm91dENvbnRleHRUeXBlT25GdW5jdGlvbkNvbXBvbmVudFtfY29tcG9uZW50TmFtZTRdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZURlZmF1bHRQcm9wcyhDb21wb25lbnQsIGJhc2VQcm9wcykge1xuICBpZiAoQ29tcG9uZW50ICYmIENvbXBvbmVudC5kZWZhdWx0UHJvcHMpIHtcbiAgICAvLyBSZXNvbHZlIGRlZmF1bHQgcHJvcHMuIFRha2VuIGZyb20gUmVhY3RFbGVtZW50XG4gICAgdmFyIHByb3BzID0gYXNzaWduKHt9LCBiYXNlUHJvcHMpO1xuICAgIHZhciBkZWZhdWx0UHJvcHMgPSBDb21wb25lbnQuZGVmYXVsdFByb3BzO1xuXG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gZGVmYXVsdFByb3BzKSB7XG4gICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHM7XG4gIH1cblxuICByZXR1cm4gYmFzZVByb3BzO1xufVxuXG5mdW5jdGlvbiByZW5kZXJGb3J3YXJkUmVmKHJlcXVlc3QsIHRhc2ssIHR5cGUsIHByb3BzLCByZWYpIHtcbiAgcHVzaEZ1bmN0aW9uQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrLCB0eXBlLnJlbmRlcik7XG4gIHZhciBjaGlsZHJlbiA9IHJlbmRlcldpdGhIb29rcyhyZXF1ZXN0LCB0YXNrLCB0eXBlLnJlbmRlciwgcHJvcHMsIHJlZik7XG4gIHZhciBoYXNJZCA9IGNoZWNrRGlkUmVuZGVySWRIb29rKCk7XG5cbiAgaWYgKGhhc0lkKSB7XG4gICAgLy8gVGhpcyBjb21wb25lbnQgbWF0ZXJpYWxpemVkIGFuIGlkLiBXZSB0cmVhdCB0aGlzIGFzIGl0cyBvd24gbGV2ZWwsIHdpdGhcbiAgICAvLyBhIHNpbmdsZSBcImNoaWxkXCIgc2xvdC5cbiAgICB2YXIgcHJldlRyZWVDb250ZXh0ID0gdGFzay50cmVlQ29udGV4dDtcbiAgICB2YXIgdG90YWxDaGlsZHJlbiA9IDE7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB0YXNrLnRyZWVDb250ZXh0ID0gcHVzaFRyZWVDb250ZXh0KHByZXZUcmVlQ29udGV4dCwgdG90YWxDaGlsZHJlbiwgaW5kZXgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlbmRlck5vZGVEZXN0cnVjdGl2ZShyZXF1ZXN0LCB0YXNrLCBjaGlsZHJlbik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRhc2sudHJlZUNvbnRleHQgPSBwcmV2VHJlZUNvbnRleHQ7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJlbmRlck5vZGVEZXN0cnVjdGl2ZShyZXF1ZXN0LCB0YXNrLCBjaGlsZHJlbik7XG4gIH1cblxuICBwb3BDb21wb25lbnRTdGFja0luREVWKHRhc2spO1xufVxuXG5mdW5jdGlvbiByZW5kZXJNZW1vKHJlcXVlc3QsIHRhc2ssIHR5cGUsIHByb3BzLCByZWYpIHtcbiAgdmFyIGlubmVyVHlwZSA9IHR5cGUudHlwZTtcbiAgdmFyIHJlc29sdmVkUHJvcHMgPSByZXNvbHZlRGVmYXVsdFByb3BzKGlubmVyVHlwZSwgcHJvcHMpO1xuICByZW5kZXJFbGVtZW50KHJlcXVlc3QsIHRhc2ssIGlubmVyVHlwZSwgcmVzb2x2ZWRQcm9wcywgcmVmKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyQ29udGV4dENvbnN1bWVyKHJlcXVlc3QsIHRhc2ssIGNvbnRleHQsIHByb3BzKSB7XG4gIC8vIFRoZSBsb2dpYyBiZWxvdyBmb3IgQ29udGV4dCBkaWZmZXJzIGRlcGVuZGluZyBvbiBQUk9EIG9yIERFViBtb2RlLiBJblxuICAvLyBERVYgbW9kZSwgd2UgY3JlYXRlIGEgc2VwYXJhdGUgb2JqZWN0IGZvciBDb250ZXh0LkNvbnN1bWVyIHRoYXQgYWN0c1xuICAvLyBsaWtlIGEgcHJveHkgdG8gQ29udGV4dC4gVGhpcyBwcm94eSBvYmplY3QgYWRkcyB1bm5lY2Vzc2FyeSBjb2RlIGluIFBST0RcbiAgLy8gc28gd2UgdXNlIHRoZSBvbGQgYmVoYXZpb3VyIChDb250ZXh0LkNvbnN1bWVyIHJlZmVyZW5jZXMgQ29udGV4dCkgdG9cbiAgLy8gcmVkdWNlIHNpemUgYW5kIG92ZXJoZWFkLiBUaGUgc2VwYXJhdGUgb2JqZWN0IHJlZmVyZW5jZXMgY29udGV4dCB2aWFcbiAgLy8gYSBwcm9wZXJ0eSBjYWxsZWQgXCJfY29udGV4dFwiLCB3aGljaCBhbHNvIGdpdmVzIHVzIHRoZSBhYmlsaXR5IHRvIGNoZWNrXG4gIC8vIGluIERFViBtb2RlIGlmIHRoaXMgcHJvcGVydHkgZXhpc3RzIG9yIG5vdCBhbmQgd2FybiBpZiBpdCBkb2VzIG5vdC5cbiAge1xuICAgIGlmIChjb250ZXh0Ll9jb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFRoaXMgbWF5IGJlIGJlY2F1c2UgaXQncyBhIENvbnRleHQgKHJhdGhlciB0aGFuIGEgQ29uc3VtZXIpLlxuICAgICAgLy8gT3IgaXQgbWF5IGJlIGJlY2F1c2UgaXQncyBvbGRlciBSZWFjdCB3aGVyZSB0aGV5J3JlIHRoZSBzYW1lIHRoaW5nLlxuICAgICAgLy8gV2Ugb25seSB3YW50IHRvIHdhcm4gaWYgd2UncmUgc3VyZSBpdCdzIGEgbmV3IFJlYWN0LlxuICAgICAgaWYgKGNvbnRleHQgIT09IGNvbnRleHQuQ29uc3VtZXIpIHtcbiAgICAgICAgaWYgKCFoYXNXYXJuZWRBYm91dFVzaW5nQ29udGV4dEFzQ29uc3VtZXIpIHtcbiAgICAgICAgICBoYXNXYXJuZWRBYm91dFVzaW5nQ29udGV4dEFzQ29uc3VtZXIgPSB0cnVlO1xuXG4gICAgICAgICAgZXJyb3IoJ1JlbmRlcmluZyA8Q29udGV4dD4gZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluICcgKyAnYSBmdXR1cmUgbWFqb3IgcmVsZWFzZS4gRGlkIHlvdSBtZWFuIHRvIHJlbmRlciA8Q29udGV4dC5Db25zdW1lcj4gaW5zdGVhZD8nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0ID0gY29udGV4dC5fY29udGV4dDtcbiAgICB9XG4gIH1cblxuICB2YXIgcmVuZGVyID0gcHJvcHMuY2hpbGRyZW47XG5cbiAge1xuICAgIGlmICh0eXBlb2YgcmVuZGVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBlcnJvcignQSBjb250ZXh0IGNvbnN1bWVyIHdhcyByZW5kZXJlZCB3aXRoIG11bHRpcGxlIGNoaWxkcmVuLCBvciBhIGNoaWxkICcgKyBcInRoYXQgaXNuJ3QgYSBmdW5jdGlvbi4gQSBjb250ZXh0IGNvbnN1bWVyIGV4cGVjdHMgYSBzaW5nbGUgY2hpbGQgXCIgKyAndGhhdCBpcyBhIGZ1bmN0aW9uLiBJZiB5b3UgZGlkIHBhc3MgYSBmdW5jdGlvbiwgbWFrZSBzdXJlIHRoZXJlICcgKyAnaXMgbm8gdHJhaWxpbmcgb3IgbGVhZGluZyB3aGl0ZXNwYWNlIGFyb3VuZCBpdC4nKTtcbiAgICB9XG4gIH1cblxuICB2YXIgbmV3VmFsdWUgPSByZWFkQ29udGV4dChjb250ZXh0KTtcbiAgdmFyIG5ld0NoaWxkcmVuID0gcmVuZGVyKG5ld1ZhbHVlKTtcbiAgcmVuZGVyTm9kZURlc3RydWN0aXZlKHJlcXVlc3QsIHRhc2ssIG5ld0NoaWxkcmVuKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyQ29udGV4dFByb3ZpZGVyKHJlcXVlc3QsIHRhc2ssIHR5cGUsIHByb3BzKSB7XG4gIHZhciBjb250ZXh0ID0gdHlwZS5fY29udGV4dDtcbiAgdmFyIHZhbHVlID0gcHJvcHMudmFsdWU7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuO1xuICB2YXIgcHJldlNuYXBzaG90O1xuXG4gIHtcbiAgICBwcmV2U25hcHNob3QgPSB0YXNrLmNvbnRleHQ7XG4gIH1cblxuICB0YXNrLmNvbnRleHQgPSBwdXNoUHJvdmlkZXIoY29udGV4dCwgdmFsdWUpO1xuICByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgY2hpbGRyZW4pO1xuICB0YXNrLmNvbnRleHQgPSBwb3BQcm92aWRlcihjb250ZXh0KTtcblxuICB7XG4gICAgaWYgKHByZXZTbmFwc2hvdCAhPT0gdGFzay5jb250ZXh0KSB7XG4gICAgICBlcnJvcignUG9wcGluZyB0aGUgY29udGV4dCBwcm92aWRlciBkaWQgbm90IHJldHVybiBiYWNrIHRvIHRoZSBvcmlnaW5hbCBzbmFwc2hvdC4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC4nKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVuZGVyTGF6eUNvbXBvbmVudChyZXF1ZXN0LCB0YXNrLCBsYXp5Q29tcG9uZW50LCBwcm9wcywgcmVmKSB7XG4gIHB1c2hCdWlsdEluQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrLCAnTGF6eScpO1xuICB2YXIgcGF5bG9hZCA9IGxhenlDb21wb25lbnQuX3BheWxvYWQ7XG4gIHZhciBpbml0ID0gbGF6eUNvbXBvbmVudC5faW5pdDtcbiAgdmFyIENvbXBvbmVudCA9IGluaXQocGF5bG9hZCk7XG4gIHZhciByZXNvbHZlZFByb3BzID0gcmVzb2x2ZURlZmF1bHRQcm9wcyhDb21wb25lbnQsIHByb3BzKTtcbiAgcmVuZGVyRWxlbWVudChyZXF1ZXN0LCB0YXNrLCBDb21wb25lbnQsIHJlc29sdmVkUHJvcHMsIHJlZik7XG4gIHBvcENvbXBvbmVudFN0YWNrSW5ERVYodGFzayk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckVsZW1lbnQocmVxdWVzdCwgdGFzaywgdHlwZSwgcHJvcHMsIHJlZikge1xuICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoc2hvdWxkQ29uc3RydWN0JDEodHlwZSkpIHtcbiAgICAgIHJlbmRlckNsYXNzQ29tcG9uZW50KHJlcXVlc3QsIHRhc2ssIHR5cGUsIHByb3BzKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVuZGVySW5kZXRlcm1pbmF0ZUNvbXBvbmVudChyZXF1ZXN0LCB0YXNrLCB0eXBlLCBwcm9wcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykge1xuICAgIHJlbmRlckhvc3RFbGVtZW50KHJlcXVlc3QsIHRhc2ssIHR5cGUsIHByb3BzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAvLyBUT0RPOiBMZWdhY3lIaWRkZW4gYWN0cyB0aGUgc2FtZSBhcyBhIGZyYWdtZW50LiBUaGlzIG9ubHkgd29ya3NcbiAgICAvLyBiZWNhdXNlIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCBldmVyeSBpbnN0YW5jZSBvZiBMZWdhY3lIaWRkZW4gaXNcbiAgICAvLyBhY2NvbXBhbmllZCBieSBhIGhvc3QgY29tcG9uZW50IHdyYXBwZXIuIEluIHRoZSBoaWRkZW4gbW9kZSwgdGhlIGhvc3RcbiAgICAvLyBjb21wb25lbnQgaXMgZ2l2ZW4gYSBgaGlkZGVuYCBhdHRyaWJ1dGUsIHdoaWNoIGVuc3VyZXMgdGhhdCB0aGVcbiAgICAvLyBpbml0aWFsIEhUTUwgaXMgbm90IHZpc2libGUuIFRvIHN1cHBvcnQgdGhlIHVzZSBvZiBMZWdhY3lIaWRkZW4gYXMgYVxuICAgIC8vIHRydWUgZnJhZ21lbnQsIHdpdGhvdXQgYW4gZXh0cmEgRE9NIG5vZGUsIHdlIHdvdWxkIGhhdmUgdG8gaGlkZSB0aGVcbiAgICAvLyBpbml0aWFsIEhUTUwgaW4gc29tZSBvdGhlciB3YXkuXG4gICAgLy8gVE9ETzogQWRkIFJFQUNUX09GRlNDUkVFTl9UWVBFIGhlcmUgdG9vIHdpdGggdGhlIHNhbWUgY2FwYWJpbGl0eS5cbiAgICBjYXNlIFJFQUNUX0xFR0FDWV9ISURERU5fVFlQRTpcbiAgICBjYXNlIFJFQUNUX0RFQlVHX1RSQUNJTkdfTU9ERV9UWVBFOlxuICAgIGNhc2UgUkVBQ1RfU1RSSUNUX01PREVfVFlQRTpcbiAgICBjYXNlIFJFQUNUX1BST0ZJTEVSX1RZUEU6XG4gICAgY2FzZSBSRUFDVF9GUkFHTUVOVF9UWVBFOlxuICAgICAge1xuICAgICAgICByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgcHJvcHMuY2hpbGRyZW4pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTpcbiAgICAgIHtcbiAgICAgICAgcHVzaEJ1aWx0SW5Db21wb25lbnRTdGFja0luREVWKHRhc2ssICdTdXNwZW5zZUxpc3QnKTsgLy8gVE9ETzogU3VzcGVuc2VMaXN0IHNob3VsZCBjb250cm9sIHRoZSBib3VuZGFyaWVzLlxuXG4gICAgICAgIHJlbmRlck5vZGVEZXN0cnVjdGl2ZShyZXF1ZXN0LCB0YXNrLCBwcm9wcy5jaGlsZHJlbik7XG4gICAgICAgIHBvcENvbXBvbmVudFN0YWNrSW5ERVYodGFzayk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgIGNhc2UgUkVBQ1RfU0NPUEVfVFlQRTpcbiAgICAgIHtcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlYWN0RE9NU2VydmVyIGRvZXMgbm90IHlldCBzdXBwb3J0IHNjb3BlIGNvbXBvbmVudHMuJyk7XG4gICAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lLW5vLWZhbGx0aHJvdWdoXG5cbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICB7XG4gICAgICAgIHtcbiAgICAgICAgICByZW5kZXJTdXNwZW5zZUJvdW5kYXJ5KHJlcXVlc3QsIHRhc2ssIHByb3BzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gbnVsbCkge1xuICAgIHN3aXRjaCAodHlwZS4kJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgcmVuZGVyRm9yd2FyZFJlZihyZXF1ZXN0LCB0YXNrLCB0eXBlLCBwcm9wcywgcmVmKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgIHtcbiAgICAgICAgICByZW5kZXJNZW1vKHJlcXVlc3QsIHRhc2ssIHR5cGUsIHByb3BzLCByZWYpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFJFQUNUX1BST1ZJREVSX1RZUEU6XG4gICAgICAgIHtcbiAgICAgICAgICByZW5kZXJDb250ZXh0UHJvdmlkZXIocmVxdWVzdCwgdGFzaywgdHlwZSwgcHJvcHMpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAge1xuICAgICAgICAgIHJlbmRlckNvbnRleHRDb25zdW1lcihyZXF1ZXN0LCB0YXNrLCB0eXBlLCBwcm9wcyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgcmVuZGVyTGF6eUNvbXBvbmVudChyZXF1ZXN0LCB0YXNrLCB0eXBlLCBwcm9wcyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIGluZm8gPSAnJztcblxuICB7XG4gICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyh0eXBlKS5sZW5ndGggPT09IDApIHtcbiAgICAgIGluZm8gKz0gJyBZb3UgbGlrZWx5IGZvcmdvdCB0byBleHBvcnQgeW91ciBjb21wb25lbnQgZnJvbSB0aGUgZmlsZSAnICsgXCJpdCdzIGRlZmluZWQgaW4sIG9yIHlvdSBtaWdodCBoYXZlIG1peGVkIHVwIGRlZmF1bHQgYW5kIFwiICsgJ25hbWVkIGltcG9ydHMuJztcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ0VsZW1lbnQgdHlwZSBpcyBpbnZhbGlkOiBleHBlY3RlZCBhIHN0cmluZyAoZm9yIGJ1aWx0LWluICcgKyAnY29tcG9uZW50cykgb3IgYSBjbGFzcy9mdW5jdGlvbiAoZm9yIGNvbXBvc2l0ZSBjb21wb25lbnRzKSAnICsgKFwiYnV0IGdvdDogXCIgKyAodHlwZSA9PSBudWxsID8gdHlwZSA6IHR5cGVvZiB0eXBlKSArIFwiLlwiICsgaW5mbykpO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUl0ZXJhYmxlKGl0ZXJhYmxlLCBpdGVyYXRvckZuKSB7XG4gIHtcbiAgICAvLyBXZSBkb24ndCBzdXBwb3J0IHJlbmRlcmluZyBHZW5lcmF0b3JzIGJlY2F1c2UgaXQncyBhIG11dGF0aW9uLlxuICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzEyOTk1XG4gICAgaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgLy8gJEZsb3dGaXhNZSBGbG93IGRvZXNuJ3Qga25vdyBhYm91dCB0b1N0cmluZ1RhZ1xuICAgIGl0ZXJhYmxlW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09ICdHZW5lcmF0b3InKSB7XG4gICAgICBpZiAoIWRpZFdhcm5BYm91dEdlbmVyYXRvcnMpIHtcbiAgICAgICAgZXJyb3IoJ1VzaW5nIEdlbmVyYXRvcnMgYXMgY2hpbGRyZW4gaXMgdW5zdXBwb3J0ZWQgYW5kIHdpbGwgbGlrZWx5IHlpZWxkICcgKyAndW5leHBlY3RlZCByZXN1bHRzIGJlY2F1c2UgZW51bWVyYXRpbmcgYSBnZW5lcmF0b3IgbXV0YXRlcyBpdC4gJyArICdZb3UgbWF5IGNvbnZlcnQgaXQgdG8gYW4gYXJyYXkgd2l0aCBgQXJyYXkuZnJvbSgpYCBvciB0aGUgJyArICdgWy4uLnNwcmVhZF1gIG9wZXJhdG9yIGJlZm9yZSByZW5kZXJpbmcuIEtlZXAgaW4gbWluZCAnICsgJ3lvdSBtaWdodCBuZWVkIHRvIHBvbHlmaWxsIHRoZXNlIGZlYXR1cmVzIGZvciBvbGRlciBicm93c2Vycy4nKTtcbiAgICAgIH1cblxuICAgICAgZGlkV2FybkFib3V0R2VuZXJhdG9ycyA9IHRydWU7XG4gICAgfSAvLyBXYXJuIGFib3V0IHVzaW5nIE1hcHMgYXMgY2hpbGRyZW5cblxuXG4gICAgaWYgKGl0ZXJhYmxlLmVudHJpZXMgPT09IGl0ZXJhdG9yRm4pIHtcbiAgICAgIGlmICghZGlkV2FybkFib3V0TWFwcykge1xuICAgICAgICBlcnJvcignVXNpbmcgTWFwcyBhcyBjaGlsZHJlbiBpcyBub3Qgc3VwcG9ydGVkLiAnICsgJ1VzZSBhbiBhcnJheSBvZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJyk7XG4gICAgICB9XG5cbiAgICAgIGRpZFdhcm5BYm91dE1hcHMgPSB0cnVlO1xuICAgIH1cbiAgfVxufSAvLyBUaGlzIGZ1bmN0aW9uIGJ5IGl0IHNlbGYgcmVuZGVycyBhIG5vZGUgYW5kIGNvbnN1bWVzIHRoZSB0YXNrIGJ5IG11dGF0aW5nIGl0XG4vLyB0byB1cGRhdGUgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIHN0YXRlLlxuXG5cbmZ1bmN0aW9uIHJlbmRlck5vZGVEZXN0cnVjdGl2ZShyZXF1ZXN0LCB0YXNrLCBub2RlKSB7XG4gIC8vIFN0YXNoIHRoZSBub2RlIHdlJ3JlIHdvcmtpbmcgb24uIFdlJ2xsIHBpY2sgdXAgZnJvbSB0aGlzIHRhc2sgaW4gY2FzZVxuICAvLyBzb21ldGhpbmcgc3VzcGVuZHMuXG4gIHRhc2subm9kZSA9IG5vZGU7IC8vIEhhbmRsZSBvYmplY3QgdHlwZXNcblxuICBpZiAodHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIG5vZGUgIT09IG51bGwpIHtcbiAgICBzd2l0Y2ggKG5vZGUuJCR0eXBlb2YpIHtcbiAgICAgIGNhc2UgUkVBQ1RfRUxFTUVOVF9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGVsZW1lbnQgPSBub2RlO1xuICAgICAgICAgIHZhciB0eXBlID0gZWxlbWVudC50eXBlO1xuICAgICAgICAgIHZhciBwcm9wcyA9IGVsZW1lbnQucHJvcHM7XG4gICAgICAgICAgdmFyIHJlZiA9IGVsZW1lbnQucmVmO1xuICAgICAgICAgIHJlbmRlckVsZW1lbnQocmVxdWVzdCwgdGFzaywgdHlwZSwgcHJvcHMsIHJlZik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgUkVBQ1RfUE9SVEFMX1RZUEU6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUG9ydGFscyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlciByZW5kZXJlci4gJyArICdSZW5kZXIgdGhlbSBjb25kaXRpb25hbGx5IHNvIHRoYXQgdGhleSBvbmx5IGFwcGVhciBvbiB0aGUgY2xpZW50IHJlbmRlci4nKTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZS1uby1mYWxsdGhyb3VnaFxuXG4gICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAge1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhciBsYXp5Tm9kZSA9IG5vZGU7XG4gICAgICAgICAgICB2YXIgcGF5bG9hZCA9IGxhenlOb2RlLl9wYXlsb2FkO1xuICAgICAgICAgICAgdmFyIGluaXQgPSBsYXp5Tm9kZS5faW5pdDtcbiAgICAgICAgICAgIHZhciByZXNvbHZlZE5vZGUgPSBpbml0KHBheWxvYWQpO1xuICAgICAgICAgICAgcmVuZGVyTm9kZURlc3RydWN0aXZlKHJlcXVlc3QsIHRhc2ssIHJlc29sdmVkTm9kZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzQXJyYXkobm9kZSkpIHtcbiAgICAgIHJlbmRlckNoaWxkcmVuQXJyYXkocmVxdWVzdCwgdGFzaywgbm9kZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG5vZGUpO1xuXG4gICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICAgIHtcbiAgICAgICAgdmFsaWRhdGVJdGVyYWJsZShub2RlLCBpdGVyYXRvckZuKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG5vZGUpO1xuXG4gICAgICBpZiAoaXRlcmF0b3IpIHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byBrbm93IGhvdyBtYW55IHRvdGFsIGNoaWxkcmVuIGFyZSBpbiB0aGlzIHNldCwgc28gdGhhdCB3ZVxuICAgICAgICAvLyBjYW4gYWxsb2NhdGUgZW5vdWdoIGlkIHNsb3RzIHRvIGFjb21tb2RhdGUgdGhlbS4gU28gd2UgbXVzdCBleGhhdXN0XG4gICAgICAgIC8vIHRoZSBpdGVyYXRvciBiZWZvcmUgd2Ugc3RhcnQgcmVjdXJzaXZlbHkgcmVuZGVyaW5nIHRoZSBjaGlsZHJlbi5cbiAgICAgICAgLy8gVE9ETzogVGhpcyBpcyBub3QgZ3JlYXQgYnV0IEkgdGhpbmsgaXQncyBpbmhlcmVudCB0byB0aGUgaWRcbiAgICAgICAgLy8gZ2VuZXJhdGlvbiBhbGdvcml0aG0uXG4gICAgICAgIHZhciBzdGVwID0gaXRlcmF0b3IubmV4dCgpOyAvLyBJZiB0aGVyZSBhcmUgbm90IGVudHJpZXMsIHdlIG5lZWQgdG8gcHVzaCBhbiBlbXB0eSBzbyB3ZSBzdGFydCBieSBjaGVja2luZyB0aGF0LlxuXG4gICAgICAgIGlmICghc3RlcC5kb25lKSB7XG4gICAgICAgICAgdmFyIGNoaWxkcmVuID0gW107XG5cbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBjaGlsZHJlbi5wdXNoKHN0ZXAudmFsdWUpO1xuICAgICAgICAgICAgc3RlcCA9IGl0ZXJhdG9yLm5leHQoKTtcbiAgICAgICAgICB9IHdoaWxlICghc3RlcC5kb25lKTtcblxuICAgICAgICAgIHJlbmRlckNoaWxkcmVuQXJyYXkocmVxdWVzdCwgdGFzaywgY2hpbGRyZW4pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY2hpbGRTdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobm9kZSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiBcIiArIChjaGlsZFN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVjdC5rZXlzKG5vZGUpLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZFN0cmluZykgKyBcIikuIFwiICsgJ0lmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJyYXkgJyArICdpbnN0ZWFkLicpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBub2RlID09PSAnc3RyaW5nJykge1xuICAgIHB1c2hUZXh0SW5zdGFuY2UkMSh0YXNrLmJsb2NrZWRTZWdtZW50LmNodW5rcywgbm9kZSwgcmVxdWVzdC5yZXNwb25zZVN0YXRlKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAodHlwZW9mIG5vZGUgPT09ICdudW1iZXInKSB7XG4gICAgcHVzaFRleHRJbnN0YW5jZSQxKHRhc2suYmxvY2tlZFNlZ21lbnQuY2h1bmtzLCAnJyArIG5vZGUsIHJlcXVlc3QucmVzcG9uc2VTdGF0ZSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAge1xuICAgIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZXJyb3IoJ0Z1bmN0aW9ucyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQuIFRoaXMgbWF5IGhhcHBlbiBpZiAnICsgJ3lvdSByZXR1cm4gYSBDb21wb25lbnQgaW5zdGVhZCBvZiA8Q29tcG9uZW50IC8+IGZyb20gcmVuZGVyLiAnICsgJ09yIG1heWJlIHlvdSBtZWFudCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gcmF0aGVyIHRoYW4gcmV0dXJuIGl0LicpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJDaGlsZHJlbkFycmF5KHJlcXVlc3QsIHRhc2ssIGNoaWxkcmVuKSB7XG4gIHZhciB0b3RhbENoaWxkcmVuID0gY2hpbGRyZW4ubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdG90YWxDaGlsZHJlbjsgaSsrKSB7XG4gICAgdmFyIHByZXZUcmVlQ29udGV4dCA9IHRhc2sudHJlZUNvbnRleHQ7XG4gICAgdGFzay50cmVlQ29udGV4dCA9IHB1c2hUcmVlQ29udGV4dChwcmV2VHJlZUNvbnRleHQsIHRvdGFsQ2hpbGRyZW4sIGkpO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gdXNlIHRoZSBub24tZGVzdHJ1Y3RpdmUgZm9ybSBzbyB0aGF0IHdlIGNhbiBzYWZlbHkgcG9wIGJhY2tcbiAgICAgIC8vIHVwIGFuZCByZW5kZXIgdGhlIHNpYmxpbmcgaWYgc29tZXRoaW5nIHN1c3BlbmRzLlxuICAgICAgcmVuZGVyTm9kZShyZXF1ZXN0LCB0YXNrLCBjaGlsZHJlbltpXSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRhc2sudHJlZUNvbnRleHQgPSBwcmV2VHJlZUNvbnRleHQ7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNwYXduTmV3U3VzcGVuZGVkVGFzayhyZXF1ZXN0LCB0YXNrLCB4KSB7XG4gIC8vIFNvbWV0aGluZyBzdXNwZW5kZWQsIHdlJ2xsIG5lZWQgdG8gY3JlYXRlIGEgbmV3IHNlZ21lbnQgYW5kIHJlc29sdmUgaXQgbGF0ZXIuXG4gIHZhciBzZWdtZW50ID0gdGFzay5ibG9ja2VkU2VnbWVudDtcbiAgdmFyIGluc2VydGlvbkluZGV4ID0gc2VnbWVudC5jaHVua3MubGVuZ3RoO1xuICB2YXIgbmV3U2VnbWVudCA9IGNyZWF0ZVBlbmRpbmdTZWdtZW50KHJlcXVlc3QsIGluc2VydGlvbkluZGV4LCBudWxsLCBzZWdtZW50LmZvcm1hdENvbnRleHQpO1xuICBzZWdtZW50LmNoaWxkcmVuLnB1c2gobmV3U2VnbWVudCk7XG4gIHZhciBuZXdUYXNrID0gY3JlYXRlVGFzayhyZXF1ZXN0LCB0YXNrLm5vZGUsIHRhc2suYmxvY2tlZEJvdW5kYXJ5LCBuZXdTZWdtZW50LCB0YXNrLmFib3J0U2V0LCB0YXNrLmxlZ2FjeUNvbnRleHQsIHRhc2suY29udGV4dCwgdGFzay50cmVlQ29udGV4dCk7XG5cbiAge1xuICAgIGlmICh0YXNrLmNvbXBvbmVudFN0YWNrICE9PSBudWxsKSB7XG4gICAgICAvLyBXZSBwb3Agb25lIHRhc2sgb2ZmIHRoZSBzdGFjayBiZWNhdXNlIHRoZSBub2RlIHRoYXQgc3VzcGVuZGVkIHdpbGwgYmUgdHJpZWQgYWdhaW4sXG4gICAgICAvLyB3aGljaCB3aWxsIGFkZCBpdCBiYWNrIG9udG8gdGhlIHN0YWNrLlxuICAgICAgbmV3VGFzay5jb21wb25lbnRTdGFjayA9IHRhc2suY29tcG9uZW50U3RhY2sucGFyZW50O1xuICAgIH1cbiAgfVxuXG4gIHZhciBwaW5nID0gbmV3VGFzay5waW5nO1xuICB4LnRoZW4ocGluZywgcGluZyk7XG59IC8vIFRoaXMgaXMgYSBub24tZGVzdHJ1Y3RpdmUgZm9ybSBvZiByZW5kZXJpbmcgYSBub2RlLiBJZiBpdCBzdXNwZW5kcyBpdCBzcGF3bnNcbi8vIGEgbmV3IHRhc2sgYW5kIHJlc3RvcmVzIHRoZSBjb250ZXh0IG9mIHRoaXMgdGFzayB0byB3aGF0IGl0IHdhcyBiZWZvcmUuXG5cblxuZnVuY3Rpb24gcmVuZGVyTm9kZShyZXF1ZXN0LCB0YXNrLCBub2RlKSB7XG4gIC8vIFRPRE86IFN0b3JlIHNlZ21lbnQuY2hpbGRyZW4ubGVuZ3RoIGhlcmUgYW5kIHJlc2V0IGl0IGluIGNhc2Ugc29tZXRoaW5nXG4gIC8vIHN1c3BlbmRlZCBwYXJ0aWFsbHkgdGhyb3VnaCB3cml0aW5nIHNvbWV0aGluZy5cbiAgLy8gU25hcHNob3QgdGhlIGN1cnJlbnQgY29udGV4dCBpbiBjYXNlIHNvbWV0aGluZyB0aHJvd3MgdG8gaW50ZXJydXB0IHRoZVxuICAvLyBwcm9jZXNzLlxuICB2YXIgcHJldmlvdXNGb3JtYXRDb250ZXh0ID0gdGFzay5ibG9ja2VkU2VnbWVudC5mb3JtYXRDb250ZXh0O1xuICB2YXIgcHJldmlvdXNMZWdhY3lDb250ZXh0ID0gdGFzay5sZWdhY3lDb250ZXh0O1xuICB2YXIgcHJldmlvdXNDb250ZXh0ID0gdGFzay5jb250ZXh0O1xuICB2YXIgcHJldmlvdXNDb21wb25lbnRTdGFjayA9IG51bGw7XG5cbiAge1xuICAgIHByZXZpb3VzQ29tcG9uZW50U3RhY2sgPSB0YXNrLmNvbXBvbmVudFN0YWNrO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gcmVuZGVyTm9kZURlc3RydWN0aXZlKHJlcXVlc3QsIHRhc2ssIG5vZGUpO1xuICB9IGNhdGNoICh4KSB7XG4gICAgcmVzZXRIb29rc1N0YXRlKCk7XG5cbiAgICBpZiAodHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGwgJiYgdHlwZW9mIHgudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgc3Bhd25OZXdTdXNwZW5kZWRUYXNrKHJlcXVlc3QsIHRhc2ssIHgpOyAvLyBSZXN0b3JlIHRoZSBjb250ZXh0LiBXZSBhc3N1bWUgdGhhdCB0aGlzIHdpbGwgYmUgcmVzdG9yZWQgYnkgdGhlIGlubmVyXG4gICAgICAvLyBmdW5jdGlvbnMgaW4gY2FzZSBub3RoaW5nIHRocm93cyBzbyB3ZSBkb24ndCB1c2UgXCJmaW5hbGx5XCIgaGVyZS5cblxuICAgICAgdGFzay5ibG9ja2VkU2VnbWVudC5mb3JtYXRDb250ZXh0ID0gcHJldmlvdXNGb3JtYXRDb250ZXh0O1xuICAgICAgdGFzay5sZWdhY3lDb250ZXh0ID0gcHJldmlvdXNMZWdhY3lDb250ZXh0O1xuICAgICAgdGFzay5jb250ZXh0ID0gcHJldmlvdXNDb250ZXh0OyAvLyBSZXN0b3JlIGFsbCBhY3RpdmUgUmVhY3RDb250ZXh0cyB0byB3aGF0IHRoZXkgd2VyZSBiZWZvcmUuXG5cbiAgICAgIHN3aXRjaENvbnRleHQocHJldmlvdXNDb250ZXh0KTtcblxuICAgICAge1xuICAgICAgICB0YXNrLmNvbXBvbmVudFN0YWNrID0gcHJldmlvdXNDb21wb25lbnRTdGFjaztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXN0b3JlIHRoZSBjb250ZXh0LiBXZSBhc3N1bWUgdGhhdCB0aGlzIHdpbGwgYmUgcmVzdG9yZWQgYnkgdGhlIGlubmVyXG4gICAgICAvLyBmdW5jdGlvbnMgaW4gY2FzZSBub3RoaW5nIHRocm93cyBzbyB3ZSBkb24ndCB1c2UgXCJmaW5hbGx5XCIgaGVyZS5cbiAgICAgIHRhc2suYmxvY2tlZFNlZ21lbnQuZm9ybWF0Q29udGV4dCA9IHByZXZpb3VzRm9ybWF0Q29udGV4dDtcbiAgICAgIHRhc2subGVnYWN5Q29udGV4dCA9IHByZXZpb3VzTGVnYWN5Q29udGV4dDtcbiAgICAgIHRhc2suY29udGV4dCA9IHByZXZpb3VzQ29udGV4dDsgLy8gUmVzdG9yZSBhbGwgYWN0aXZlIFJlYWN0Q29udGV4dHMgdG8gd2hhdCB0aGV5IHdlcmUgYmVmb3JlLlxuXG4gICAgICBzd2l0Y2hDb250ZXh0KHByZXZpb3VzQ29udGV4dCk7XG5cbiAgICAgIHtcbiAgICAgICAgdGFzay5jb21wb25lbnRTdGFjayA9IHByZXZpb3VzQ29tcG9uZW50U3RhY2s7XG4gICAgICB9IC8vIFdlIGFzc3VtZSB0aGF0IHdlIGRvbid0IG5lZWQgdGhlIGNvcnJlY3QgY29udGV4dC5cbiAgICAgIC8vIExldCdzIHRlcm1pbmF0ZSB0aGUgcmVzdCBvZiB0aGUgdHJlZSBhbmQgZG9uJ3QgcmVuZGVyIGFueSBzaWJsaW5ncy5cblxuXG4gICAgICB0aHJvdyB4O1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBlcnJvcmVkVGFzayhyZXF1ZXN0LCBib3VuZGFyeSwgc2VnbWVudCwgZXJyb3IpIHtcbiAgLy8gUmVwb3J0IHRoZSBlcnJvciB0byBhIGdsb2JhbCBoYW5kbGVyLlxuICBsb2dSZWNvdmVyYWJsZUVycm9yKHJlcXVlc3QsIGVycm9yKTtcblxuICBpZiAoYm91bmRhcnkgPT09IG51bGwpIHtcbiAgICBmYXRhbEVycm9yKHJlcXVlc3QsIGVycm9yKTtcbiAgfSBlbHNlIHtcbiAgICBib3VuZGFyeS5wZW5kaW5nVGFza3MtLTtcblxuICAgIGlmICghYm91bmRhcnkuZm9yY2VDbGllbnRSZW5kZXIpIHtcbiAgICAgIGJvdW5kYXJ5LmZvcmNlQ2xpZW50UmVuZGVyID0gdHJ1ZTsgLy8gUmVnYXJkbGVzcyBvZiB3aGF0IGhhcHBlbnMgbmV4dCwgdGhpcyBib3VuZGFyeSB3b24ndCBiZSBkaXNwbGF5ZWQsXG4gICAgICAvLyBzbyB3ZSBjYW4gZmx1c2ggaXQsIGlmIHRoZSBwYXJlbnQgYWxyZWFkeSBmbHVzaGVkLlxuXG4gICAgICBpZiAoYm91bmRhcnkucGFyZW50Rmx1c2hlZCkge1xuICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGEgcHJlZmVyZW5jZSB3aGVyZSBpbiB0aGUgcXVldWUgdGhpcyBnb2VzIHNpbmNlIGl0J3MgbGlrZWx5XG4gICAgICAgIC8vIHRvIGVycm9yIG9uIHRoZSBjbGllbnQgYW55d2F5LiBIb3dldmVyLCBpbnRlbnRpb25hbGx5IGNsaWVudC1yZW5kZXJlZFxuICAgICAgICAvLyBib3VuZGFyaWVzIHNob3VsZCBiZSBmbHVzaGVkIGVhcmxpZXIgc28gdGhhdCB0aGV5IGNhbiBzdGFydCBvbiB0aGUgY2xpZW50LlxuICAgICAgICAvLyBXZSByZXVzZSB0aGUgc2FtZSBxdWV1ZSBmb3IgZXJyb3JzLlxuICAgICAgICByZXF1ZXN0LmNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5wdXNoKGJvdW5kYXJ5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXF1ZXN0LmFsbFBlbmRpbmdUYXNrcy0tO1xuXG4gIGlmIChyZXF1ZXN0LmFsbFBlbmRpbmdUYXNrcyA9PT0gMCkge1xuICAgIHZhciBvbkFsbFJlYWR5ID0gcmVxdWVzdC5vbkFsbFJlYWR5O1xuICAgIG9uQWxsUmVhZHkoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhYm9ydFRhc2tTb2Z0KHRhc2spIHtcbiAgLy8gVGhpcyBhYm9ydHMgdGFzayB3aXRob3V0IGFib3J0aW5nIHRoZSBwYXJlbnQgYm91bmRhcnkgdGhhdCBpdCBibG9ja3MuXG4gIC8vIEl0J3MgdXNlZCBmb3Igd2hlbiB3ZSBkaWRuJ3QgbmVlZCB0aGlzIHRhc2sgdG8gY29tcGxldGUgdGhlIHRyZWUuXG4gIC8vIElmIHRhc2sgd2FzIG5lZWRlZCwgdGhlbiBpdCBzaG91bGQgdXNlIGFib3J0VGFzayBpbnN0ZWFkLlxuICB2YXIgcmVxdWVzdCA9IHRoaXM7XG4gIHZhciBib3VuZGFyeSA9IHRhc2suYmxvY2tlZEJvdW5kYXJ5O1xuICB2YXIgc2VnbWVudCA9IHRhc2suYmxvY2tlZFNlZ21lbnQ7XG4gIHNlZ21lbnQuc3RhdHVzID0gQUJPUlRFRDtcbiAgZmluaXNoZWRUYXNrKHJlcXVlc3QsIGJvdW5kYXJ5LCBzZWdtZW50KTtcbn1cblxuZnVuY3Rpb24gYWJvcnRUYXNrKHRhc2spIHtcbiAgLy8gVGhpcyBhYm9ydHMgdGhlIHRhc2sgYW5kIGFib3J0cyB0aGUgcGFyZW50IHRoYXQgaXQgYmxvY2tzLCBwdXR0aW5nIGl0IGludG9cbiAgLy8gY2xpZW50IHJlbmRlcmVkIG1vZGUuXG4gIHZhciByZXF1ZXN0ID0gdGhpcztcbiAgdmFyIGJvdW5kYXJ5ID0gdGFzay5ibG9ja2VkQm91bmRhcnk7XG4gIHZhciBzZWdtZW50ID0gdGFzay5ibG9ja2VkU2VnbWVudDtcbiAgc2VnbWVudC5zdGF0dXMgPSBBQk9SVEVEO1xuXG4gIGlmIChib3VuZGFyeSA9PT0gbnVsbCkge1xuICAgIHJlcXVlc3QuYWxsUGVuZGluZ1Rhc2tzLS07IC8vIFdlIGRpZG4ndCBjb21wbGV0ZSB0aGUgcm9vdCBzbyB3ZSBoYXZlIG5vdGhpbmcgdG8gc2hvdy4gV2UgY2FuIGNsb3NlXG4gICAgLy8gdGhlIHJlcXVlc3Q7XG5cbiAgICBpZiAocmVxdWVzdC5zdGF0dXMgIT09IENMT1NFRCkge1xuICAgICAgcmVxdWVzdC5zdGF0dXMgPSBDTE9TRUQ7XG5cbiAgICAgIGlmIChyZXF1ZXN0LmRlc3RpbmF0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIGNsb3NlKHJlcXVlc3QuZGVzdGluYXRpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBib3VuZGFyeS5wZW5kaW5nVGFza3MtLTtcblxuICAgIGlmICghYm91bmRhcnkuZm9yY2VDbGllbnRSZW5kZXIpIHtcbiAgICAgIGJvdW5kYXJ5LmZvcmNlQ2xpZW50UmVuZGVyID0gdHJ1ZTtcblxuICAgICAgaWYgKGJvdW5kYXJ5LnBhcmVudEZsdXNoZWQpIHtcbiAgICAgICAgcmVxdWVzdC5jbGllbnRSZW5kZXJlZEJvdW5kYXJpZXMucHVzaChib3VuZGFyeSk7XG4gICAgICB9XG4gICAgfSAvLyBJZiB0aGlzIGJvdW5kYXJ5IHdhcyBzdGlsbCBwZW5kaW5nIHRoZW4gd2UgaGF2ZW4ndCBhbHJlYWR5IGNhbmNlbGxlZCBpdHMgZmFsbGJhY2tzLlxuICAgIC8vIFdlJ2xsIG5lZWQgdG8gYWJvcnQgdGhlIGZhbGxiYWNrcywgd2hpY2ggd2lsbCBhbHNvIGVycm9yIHRoYXQgcGFyZW50IGJvdW5kYXJ5LlxuXG5cbiAgICBib3VuZGFyeS5mYWxsYmFja0Fib3J0YWJsZVRhc2tzLmZvckVhY2goYWJvcnRUYXNrLCByZXF1ZXN0KTtcbiAgICBib3VuZGFyeS5mYWxsYmFja0Fib3J0YWJsZVRhc2tzLmNsZWFyKCk7XG4gICAgcmVxdWVzdC5hbGxQZW5kaW5nVGFza3MtLTtcblxuICAgIGlmIChyZXF1ZXN0LmFsbFBlbmRpbmdUYXNrcyA9PT0gMCkge1xuICAgICAgdmFyIG9uQWxsUmVhZHkgPSByZXF1ZXN0Lm9uQWxsUmVhZHk7XG4gICAgICBvbkFsbFJlYWR5KCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHF1ZXVlQ29tcGxldGVkU2VnbWVudChib3VuZGFyeSwgc2VnbWVudCkge1xuICBpZiAoc2VnbWVudC5jaHVua3MubGVuZ3RoID09PSAwICYmIHNlZ21lbnQuY2hpbGRyZW4ubGVuZ3RoID09PSAxICYmIHNlZ21lbnQuY2hpbGRyZW5bMF0uYm91bmRhcnkgPT09IG51bGwpIHtcbiAgICAvLyBUaGlzIGlzIGFuIGVtcHR5IHNlZ21lbnQuIFRoZXJlJ3Mgbm90aGluZyB0byB3cml0ZSwgc28gd2UgY2FuIGluc3RlYWQgdHJhbnNmZXIgdGhlIElEXG4gICAgLy8gdG8gdGhlIGNoaWxkLiBUaGF0IHdheSBhbnkgZXhpc3RpbmcgcmVmZXJlbmNlcyBwb2ludCB0byB0aGUgY2hpbGQuXG4gICAgdmFyIGNoaWxkU2VnbWVudCA9IHNlZ21lbnQuY2hpbGRyZW5bMF07XG4gICAgY2hpbGRTZWdtZW50LmlkID0gc2VnbWVudC5pZDtcbiAgICBjaGlsZFNlZ21lbnQucGFyZW50Rmx1c2hlZCA9IHRydWU7XG5cbiAgICBpZiAoY2hpbGRTZWdtZW50LnN0YXR1cyA9PT0gQ09NUExFVEVEKSB7XG4gICAgICBxdWV1ZUNvbXBsZXRlZFNlZ21lbnQoYm91bmRhcnksIGNoaWxkU2VnbWVudCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBjb21wbGV0ZWRTZWdtZW50cyA9IGJvdW5kYXJ5LmNvbXBsZXRlZFNlZ21lbnRzO1xuICAgIGNvbXBsZXRlZFNlZ21lbnRzLnB1c2goc2VnbWVudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluaXNoZWRUYXNrKHJlcXVlc3QsIGJvdW5kYXJ5LCBzZWdtZW50KSB7XG4gIGlmIChib3VuZGFyeSA9PT0gbnVsbCkge1xuICAgIGlmIChzZWdtZW50LnBhcmVudEZsdXNoZWQpIHtcbiAgICAgIGlmIChyZXF1ZXN0LmNvbXBsZXRlZFJvb3RTZWdtZW50ICE9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlcmUgY2FuIG9ubHkgYmUgb25lIHJvb3Qgc2VnbWVudC4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC4nKTtcbiAgICAgIH1cblxuICAgICAgcmVxdWVzdC5jb21wbGV0ZWRSb290U2VnbWVudCA9IHNlZ21lbnQ7XG4gICAgfVxuXG4gICAgcmVxdWVzdC5wZW5kaW5nUm9vdFRhc2tzLS07XG5cbiAgICBpZiAocmVxdWVzdC5wZW5kaW5nUm9vdFRhc2tzID09PSAwKSB7XG4gICAgICAvLyBXZSBoYXZlIGNvbXBsZXRlZCB0aGUgc2hlbGwgc28gdGhlIHNoZWxsIGNhbid0IGVycm9yIGFueW1vcmUuXG4gICAgICByZXF1ZXN0Lm9uU2hlbGxFcnJvciA9IG5vb3AkMTtcbiAgICAgIHZhciBvblNoZWxsUmVhZHkgPSByZXF1ZXN0Lm9uU2hlbGxSZWFkeTtcbiAgICAgIG9uU2hlbGxSZWFkeSgpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBib3VuZGFyeS5wZW5kaW5nVGFza3MtLTtcblxuICAgIGlmIChib3VuZGFyeS5mb3JjZUNsaWVudFJlbmRlcikgOyBlbHNlIGlmIChib3VuZGFyeS5wZW5kaW5nVGFza3MgPT09IDApIHtcbiAgICAgIC8vIFRoaXMgbXVzdCBoYXZlIGJlZW4gdGhlIGxhc3Qgc2VnbWVudCB3ZSB3ZXJlIHdhaXRpbmcgb24uIFRoaXMgYm91bmRhcnkgaXMgbm93IGNvbXBsZXRlLlxuICAgICAgaWYgKHNlZ21lbnQucGFyZW50Rmx1c2hlZCkge1xuICAgICAgICAvLyBPdXIgcGFyZW50IHNlZ21lbnQgYWxyZWFkeSBmbHVzaGVkLCBzbyB3ZSBuZWVkIHRvIHNjaGVkdWxlIHRoaXMgc2VnbWVudCB0byBiZSBlbWl0dGVkLlxuICAgICAgICAvLyBJZiBpdCBpcyBhIHNlZ21lbnQgdGhhdCB3YXMgYWJvcnRlZCwgd2UnbGwgd3JpdGUgb3RoZXIgY29udGVudCBpbnN0ZWFkIHNvIHdlIGRvbid0IG5lZWRcbiAgICAgICAgLy8gdG8gZW1pdCBpdC5cbiAgICAgICAgaWYgKHNlZ21lbnQuc3RhdHVzID09PSBDT01QTEVURUQpIHtcbiAgICAgICAgICBxdWV1ZUNvbXBsZXRlZFNlZ21lbnQoYm91bmRhcnksIHNlZ21lbnQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChib3VuZGFyeS5wYXJlbnRGbHVzaGVkKSB7XG4gICAgICAgIC8vIFRoZSBzZWdtZW50IG1pZ2h0IGJlIHBhcnQgb2YgYSBzZWdtZW50IHRoYXQgZGlkbid0IGZsdXNoIHlldCwgYnV0IGlmIHRoZSBib3VuZGFyeSdzXG4gICAgICAgIC8vIHBhcmVudCBmbHVzaGVkLCB3ZSBuZWVkIHRvIHNjaGVkdWxlIHRoZSBib3VuZGFyeSB0byBiZSBlbWl0dGVkLlxuICAgICAgICByZXF1ZXN0LmNvbXBsZXRlZEJvdW5kYXJpZXMucHVzaChib3VuZGFyeSk7XG4gICAgICB9IC8vIFdlIGNhbiBub3cgY2FuY2VsIGFueSBwZW5kaW5nIHRhc2sgb24gdGhlIGZhbGxiYWNrIHNpbmNlIHdlIHdvbid0IG5lZWQgdG8gc2hvdyBpdCBhbnltb3JlLlxuICAgICAgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIgd2UgcmVhZCB0aGUgcGFyZW50Rmx1c2hlZCBmbGFncyBiZWNhdXNlIGFib3J0aW5nIGNhbiBmaW5pc2hcbiAgICAgIC8vIHdvcmsgd2hpY2ggY2FuIHRyaWdnZXIgdXNlciBjb2RlLCB3aGljaCBjYW4gc3RhcnQgZmx1c2hpbmcsIHdoaWNoIGNhbiBjaGFuZ2UgdGhvc2UgZmxhZ3MuXG5cblxuICAgICAgYm91bmRhcnkuZmFsbGJhY2tBYm9ydGFibGVUYXNrcy5mb3JFYWNoKGFib3J0VGFza1NvZnQsIHJlcXVlc3QpO1xuICAgICAgYm91bmRhcnkuZmFsbGJhY2tBYm9ydGFibGVUYXNrcy5jbGVhcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoc2VnbWVudC5wYXJlbnRGbHVzaGVkKSB7XG4gICAgICAgIC8vIE91ciBwYXJlbnQgYWxyZWFkeSBmbHVzaGVkLCBzbyB3ZSBuZWVkIHRvIHNjaGVkdWxlIHRoaXMgc2VnbWVudCB0byBiZSBlbWl0dGVkLlxuICAgICAgICAvLyBJZiBpdCBpcyBhIHNlZ21lbnQgdGhhdCB3YXMgYWJvcnRlZCwgd2UnbGwgd3JpdGUgb3RoZXIgY29udGVudCBpbnN0ZWFkIHNvIHdlIGRvbid0IG5lZWRcbiAgICAgICAgLy8gdG8gZW1pdCBpdC5cbiAgICAgICAgaWYgKHNlZ21lbnQuc3RhdHVzID09PSBDT01QTEVURUQpIHtcbiAgICAgICAgICBxdWV1ZUNvbXBsZXRlZFNlZ21lbnQoYm91bmRhcnksIHNlZ21lbnQpO1xuICAgICAgICAgIHZhciBjb21wbGV0ZWRTZWdtZW50cyA9IGJvdW5kYXJ5LmNvbXBsZXRlZFNlZ21lbnRzO1xuXG4gICAgICAgICAgaWYgKGNvbXBsZXRlZFNlZ21lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgdGltZSBzaW5jZSB3ZSBsYXN0IGZsdXNoZWQgdGhhdCB3ZSBjb21wbGV0ZWQgYW55dGhpbmcuXG4gICAgICAgICAgICAvLyBXZSBjYW4gc2NoZWR1bGUgdGhpcyBib3VuZGFyeSB0byBlbWl0IGl0cyBwYXJ0aWFsbHkgY29tcGxldGVkIHNlZ21lbnRzIGVhcmx5XG4gICAgICAgICAgICAvLyBpbiBjYXNlIHRoZSBwYXJlbnQgaGFzIGFscmVhZHkgYmVlbiBmbHVzaGVkLlxuICAgICAgICAgICAgaWYgKGJvdW5kYXJ5LnBhcmVudEZsdXNoZWQpIHtcbiAgICAgICAgICAgICAgcmVxdWVzdC5wYXJ0aWFsQm91bmRhcmllcy5wdXNoKGJvdW5kYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXF1ZXN0LmFsbFBlbmRpbmdUYXNrcy0tO1xuXG4gIGlmIChyZXF1ZXN0LmFsbFBlbmRpbmdUYXNrcyA9PT0gMCkge1xuICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgY2FsbGVkIGF0IHRoZSB2ZXJ5IGVuZCBzbyB0aGF0IHdlIGNhbiBzeW5jaHJvbm91c2x5IHdyaXRlIHRoZSByZXN1bHRcbiAgICAvLyBpbiB0aGUgY2FsbGJhY2sgaWYgbmVlZGVkLlxuICAgIHZhciBvbkFsbFJlYWR5ID0gcmVxdWVzdC5vbkFsbFJlYWR5O1xuICAgIG9uQWxsUmVhZHkoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXRyeVRhc2socmVxdWVzdCwgdGFzaykge1xuICB2YXIgc2VnbWVudCA9IHRhc2suYmxvY2tlZFNlZ21lbnQ7XG5cbiAgaWYgKHNlZ21lbnQuc3RhdHVzICE9PSBQRU5ESU5HKSB7XG4gICAgLy8gV2UgY29tcGxldGVkIHRoaXMgYnkgb3RoZXIgbWVhbnMgYmVmb3JlIHdlIGhhZCBhIGNoYW5jZSB0byByZXRyeSBpdC5cbiAgICByZXR1cm47XG4gIH0gLy8gV2UgcmVzdG9yZSB0aGUgY29udGV4dCB0byB3aGF0IGl0IHdhcyB3aGVuIHdlIHN1c3BlbmRlZC5cbiAgLy8gV2UgZG9uJ3QgcmVzdG9yZSBpdCBhZnRlciB3ZSBsZWF2ZSBiZWNhdXNlIGl0J3MgbGlrZWx5IHRoYXQgd2UnbGwgZW5kIHVwXG4gIC8vIG5lZWRpbmcgYSB2ZXJ5IHNpbWlsYXIgY29udGV4dCBzb29uIGFnYWluLlxuXG5cbiAgc3dpdGNoQ29udGV4dCh0YXNrLmNvbnRleHQpO1xuICB2YXIgcHJldlRhc2tJbkRFViA9IG51bGw7XG5cbiAge1xuICAgIHByZXZUYXNrSW5ERVYgPSBjdXJyZW50VGFza0luREVWO1xuICAgIGN1cnJlbnRUYXNrSW5ERVYgPSB0YXNrO1xuICB9XG5cbiAgdHJ5IHtcbiAgICAvLyBXZSBjYWxsIHRoZSBkZXN0cnVjdGl2ZSBmb3JtIHRoYXQgbXV0YXRlcyB0aGlzIHRhc2suIFRoYXQgd2F5IGlmIHNvbWV0aGluZ1xuICAgIC8vIHN1c3BlbmRzIGFnYWluLCB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgdGFzayBpbnN0ZWFkIG9mIHNwYXduaW5nIGEgbmV3IG9uZS5cbiAgICByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgdGFzay5ub2RlKTtcbiAgICB0YXNrLmFib3J0U2V0LmRlbGV0ZSh0YXNrKTtcbiAgICBzZWdtZW50LnN0YXR1cyA9IENPTVBMRVRFRDtcbiAgICBmaW5pc2hlZFRhc2socmVxdWVzdCwgdGFzay5ibG9ja2VkQm91bmRhcnksIHNlZ21lbnQpO1xuICB9IGNhdGNoICh4KSB7XG4gICAgcmVzZXRIb29rc1N0YXRlKCk7XG5cbiAgICBpZiAodHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGwgJiYgdHlwZW9mIHgudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gU29tZXRoaW5nIHN1c3BlbmRlZCBhZ2FpbiwgbGV0J3MgcGljayBpdCBiYWNrIHVwIGxhdGVyLlxuICAgICAgdmFyIHBpbmcgPSB0YXNrLnBpbmc7XG4gICAgICB4LnRoZW4ocGluZywgcGluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhc2suYWJvcnRTZXQuZGVsZXRlKHRhc2spO1xuICAgICAgc2VnbWVudC5zdGF0dXMgPSBFUlJPUkVEO1xuICAgICAgZXJyb3JlZFRhc2socmVxdWVzdCwgdGFzay5ibG9ja2VkQm91bmRhcnksIHNlZ21lbnQsIHgpO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICB7XG4gICAgICBjdXJyZW50VGFza0luREVWID0gcHJldlRhc2tJbkRFVjtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcGVyZm9ybVdvcmsocmVxdWVzdCkge1xuICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IENMT1NFRCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBwcmV2Q29udGV4dCA9IGdldEFjdGl2ZUNvbnRleHQoKTtcbiAgdmFyIHByZXZEaXNwYXRjaGVyID0gUmVhY3RDdXJyZW50RGlzcGF0Y2hlciQxLmN1cnJlbnQ7XG4gIFJlYWN0Q3VycmVudERpc3BhdGNoZXIkMS5jdXJyZW50ID0gRGlzcGF0Y2hlcjtcbiAgdmFyIHByZXZHZXRDdXJyZW50U3RhY2tJbXBsO1xuXG4gIHtcbiAgICBwcmV2R2V0Q3VycmVudFN0YWNrSW1wbCA9IFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMS5nZXRDdXJyZW50U3RhY2s7XG4gICAgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSQxLmdldEN1cnJlbnRTdGFjayA9IGdldEN1cnJlbnRTdGFja0luREVWO1xuICB9XG5cbiAgdmFyIHByZXZSZXNwb25zZVN0YXRlID0gY3VycmVudFJlc3BvbnNlU3RhdGU7XG4gIHNldEN1cnJlbnRSZXNwb25zZVN0YXRlKHJlcXVlc3QucmVzcG9uc2VTdGF0ZSk7XG5cbiAgdHJ5IHtcbiAgICB2YXIgcGluZ2VkVGFza3MgPSByZXF1ZXN0LnBpbmdlZFRhc2tzO1xuICAgIHZhciBpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IHBpbmdlZFRhc2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdGFzayA9IHBpbmdlZFRhc2tzW2ldO1xuICAgICAgcmV0cnlUYXNrKHJlcXVlc3QsIHRhc2spO1xuICAgIH1cblxuICAgIHBpbmdlZFRhc2tzLnNwbGljZSgwLCBpKTtcblxuICAgIGlmIChyZXF1ZXN0LmRlc3RpbmF0aW9uICE9PSBudWxsKSB7XG4gICAgICBmbHVzaENvbXBsZXRlZFF1ZXVlcyhyZXF1ZXN0LCByZXF1ZXN0LmRlc3RpbmF0aW9uKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0LCBlcnJvcik7XG4gICAgZmF0YWxFcnJvcihyZXF1ZXN0LCBlcnJvcik7XG4gIH0gZmluYWxseSB7XG4gICAgc2V0Q3VycmVudFJlc3BvbnNlU3RhdGUocHJldlJlc3BvbnNlU3RhdGUpO1xuICAgIFJlYWN0Q3VycmVudERpc3BhdGNoZXIkMS5jdXJyZW50ID0gcHJldkRpc3BhdGNoZXI7XG5cbiAgICB7XG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lJDEuZ2V0Q3VycmVudFN0YWNrID0gcHJldkdldEN1cnJlbnRTdGFja0ltcGw7XG4gICAgfVxuXG4gICAgaWYgKHByZXZEaXNwYXRjaGVyID09PSBEaXNwYXRjaGVyKSB7XG4gICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgd2Ugd2VyZSBpbiBhIHJlZW50cmFudCB3b3JrIGxvb3AuIFRoaXMgY291bGQgaGFwcGVuXG4gICAgICAvLyBpbiBhIHJlbmRlcmVyIHRoYXQgc3VwcG9ydHMgc3luY2hyb25vdXMgd29yayBsaWtlIHJlbmRlclRvU3RyaW5nLFxuICAgICAgLy8gd2hlbiBpdCdzIGNhbGxlZCBmcm9tIHdpdGhpbiBhbm90aGVyIHJlbmRlcmVyLlxuICAgICAgLy8gTm9ybWFsbHkgd2UgZG9uJ3QgYm90aGVyIHN3aXRjaGluZyB0aGUgY29udGV4dHMgdG8gdGhlaXIgcm9vdC9kZWZhdWx0XG4gICAgICAvLyB2YWx1ZXMgd2hlbiBsZWF2aW5nIGJlY2F1c2Ugd2UnbGwgbGlrZWx5IG5lZWQgdGhlIHNhbWUgb3Igc2ltaWxhclxuICAgICAgLy8gY29udGV4dCBhZ2Fpbi4gSG93ZXZlciwgd2hlbiB3ZSdyZSBpbnNpZGUgYSBzeW5jaHJvbm91cyBsb29wIGxpa2UgdGhpc1xuICAgICAgLy8gd2UnbGwgdG8gcmVzdG9yZSB0aGUgY29udGV4dCB0byB3aGF0IGl0IHdhcyBiZWZvcmUgcmV0dXJuaW5nLlxuICAgICAgc3dpdGNoQ29udGV4dChwcmV2Q29udGV4dCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZsdXNoU3VidHJlZShyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgc2VnbWVudCkge1xuICBzZWdtZW50LnBhcmVudEZsdXNoZWQgPSB0cnVlO1xuXG4gIHN3aXRjaCAoc2VnbWVudC5zdGF0dXMpIHtcbiAgICBjYXNlIFBFTkRJTkc6XG4gICAgICB7XG4gICAgICAgIC8vIFdlJ3JlIGVtaXR0aW5nIGEgcGxhY2Vob2xkZXIgZm9yIHRoaXMgc2VnbWVudCB0byBiZSBmaWxsZWQgaW4gbGF0ZXIuXG4gICAgICAgIC8vIFRoZXJlZm9yZSB3ZSdsbCBuZWVkIHRvIGFzc2lnbiBpdCBhbiBJRCAtIHRvIHJlZmVyIHRvIGl0IGJ5LlxuICAgICAgICB2YXIgc2VnbWVudElEID0gc2VnbWVudC5pZCA9IHJlcXVlc3QubmV4dFNlZ21lbnRJZCsrO1xuICAgICAgICByZXR1cm4gd3JpdGVQbGFjZWhvbGRlcihkZXN0aW5hdGlvbiwgcmVxdWVzdC5yZXNwb25zZVN0YXRlLCBzZWdtZW50SUQpO1xuICAgICAgfVxuXG4gICAgY2FzZSBDT01QTEVURUQ6XG4gICAgICB7XG4gICAgICAgIHNlZ21lbnQuc3RhdHVzID0gRkxVU0hFRDtcbiAgICAgICAgdmFyIHIgPSB0cnVlO1xuICAgICAgICB2YXIgY2h1bmtzID0gc2VnbWVudC5jaHVua3M7XG4gICAgICAgIHZhciBjaHVua0lkeCA9IDA7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHNlZ21lbnQuY2hpbGRyZW47XG5cbiAgICAgICAgZm9yICh2YXIgY2hpbGRJZHggPSAwOyBjaGlsZElkeCA8IGNoaWxkcmVuLmxlbmd0aDsgY2hpbGRJZHgrKykge1xuICAgICAgICAgIHZhciBuZXh0Q2hpbGQgPSBjaGlsZHJlbltjaGlsZElkeF07IC8vIFdyaXRlIGFsbCB0aGUgY2h1bmtzIHVwIHVudGlsIHRoZSBuZXh0IGNoaWxkLlxuXG4gICAgICAgICAgZm9yICg7IGNodW5rSWR4IDwgbmV4dENoaWxkLmluZGV4OyBjaHVua0lkeCsrKSB7XG4gICAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjaHVua3NbY2h1bmtJZHhdKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByID0gZmx1c2hTZWdtZW50KHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBuZXh0Q2hpbGQpO1xuICAgICAgICB9IC8vIEZpbmFsbHkganVzdCB3cml0ZSBhbGwgdGhlIHJlbWFpbmluZyBjaHVua3NcblxuXG4gICAgICAgIGZvciAoOyBjaHVua0lkeCA8IGNodW5rcy5sZW5ndGggLSAxOyBjaHVua0lkeCsrKSB7XG4gICAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgY2h1bmtzW2NodW5rSWR4XSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2h1bmtJZHggPCBjaHVua3MubGVuZ3RoKSB7XG4gICAgICAgICAgciA9IHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGNodW5rc1tjaHVua0lkeF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB9XG5cbiAgICBkZWZhdWx0OlxuICAgICAge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fib3J0ZWQsIGVycm9yZWQgb3IgYWxyZWFkeSBmbHVzaGVkIGJvdW5kYXJpZXMgc2hvdWxkIG5vdCBiZSBmbHVzaGVkIGFnYWluLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LicpO1xuICAgICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZsdXNoU2VnbWVudChyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgc2VnbWVudCkge1xuICB2YXIgYm91bmRhcnkgPSBzZWdtZW50LmJvdW5kYXJ5O1xuXG4gIGlmIChib3VuZGFyeSA9PT0gbnVsbCkge1xuICAgIC8vIE5vdCBhIHN1c3BlbnNlIGJvdW5kYXJ5LlxuICAgIHJldHVybiBmbHVzaFN1YnRyZWUocmVxdWVzdCwgZGVzdGluYXRpb24sIHNlZ21lbnQpO1xuICB9XG5cbiAgYm91bmRhcnkucGFyZW50Rmx1c2hlZCA9IHRydWU7IC8vIFRoaXMgc2VnbWVudCBpcyBhIFN1c3BlbnNlIGJvdW5kYXJ5LiBXZSBuZWVkIHRvIGRlY2lkZSB3aGV0aGVyIHRvXG4gIC8vIGVtaXQgdGhlIGNvbnRlbnQgb3IgdGhlIGZhbGxiYWNrIG5vdy5cblxuICBpZiAoYm91bmRhcnkuZm9yY2VDbGllbnRSZW5kZXIpIHtcbiAgICAvLyBFbWl0IGEgY2xpZW50IHJlbmRlcmVkIHN1c3BlbnNlIGJvdW5kYXJ5IHdyYXBwZXIuXG4gICAgLy8gV2UgbmV2ZXIgcXVldWUgdGhlIGlubmVyIGJvdW5kYXJ5IHNvIHdlJ2xsIG5ldmVyIGVtaXQgaXRzIGNvbnRlbnQgb3IgcGFydGlhbCBzZWdtZW50cy5cbiAgICB3cml0ZVN0YXJ0Q2xpZW50UmVuZGVyZWRTdXNwZW5zZUJvdW5kYXJ5JDEoZGVzdGluYXRpb24sIHJlcXVlc3QucmVzcG9uc2VTdGF0ZSk7IC8vIEZsdXNoIHRoZSBmYWxsYmFjay5cblxuICAgIGZsdXNoU3VidHJlZShyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgc2VnbWVudCk7XG4gICAgcmV0dXJuIHdyaXRlRW5kQ2xpZW50UmVuZGVyZWRTdXNwZW5zZUJvdW5kYXJ5JDEoZGVzdGluYXRpb24sIHJlcXVlc3QucmVzcG9uc2VTdGF0ZSk7XG4gIH0gZWxzZSBpZiAoYm91bmRhcnkucGVuZGluZ1Rhc2tzID4gMCkge1xuICAgIC8vIFRoaXMgYm91bmRhcnkgaXMgc3RpbGwgbG9hZGluZy4gRW1pdCBhIHBlbmRpbmcgc3VzcGVuc2UgYm91bmRhcnkgd3JhcHBlci5cbiAgICAvLyBBc3NpZ24gYW4gSUQgdG8gcmVmZXIgdG8gdGhlIGZ1dHVyZSBjb250ZW50IGJ5LlxuICAgIGJvdW5kYXJ5LnJvb3RTZWdtZW50SUQgPSByZXF1ZXN0Lm5leHRTZWdtZW50SWQrKztcblxuICAgIGlmIChib3VuZGFyeS5jb21wbGV0ZWRTZWdtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBJZiB0aGlzIGlzIGF0IGxlYXN0IHBhcnRpYWxseSBjb21wbGV0ZSwgd2UgY2FuIHF1ZXVlIGl0IHRvIGJlIHBhcnRpYWxseSBlbWl0dGVkIGVhcmx5LlxuICAgICAgcmVxdWVzdC5wYXJ0aWFsQm91bmRhcmllcy5wdXNoKGJvdW5kYXJ5KTtcbiAgICB9IC8vLyBUaGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlIHNob3VsZCBoYXZlIHJlZmVyZW5jZWQgdGhpcyBJRC5cblxuXG4gICAgdmFyIGlkID0gYm91bmRhcnkuaWQgPSBhc3NpZ25TdXNwZW5zZUJvdW5kYXJ5SUQocmVxdWVzdC5yZXNwb25zZVN0YXRlKTtcbiAgICB3cml0ZVN0YXJ0UGVuZGluZ1N1c3BlbnNlQm91bmRhcnkoZGVzdGluYXRpb24sIHJlcXVlc3QucmVzcG9uc2VTdGF0ZSwgaWQpOyAvLyBGbHVzaCB0aGUgZmFsbGJhY2suXG5cbiAgICBmbHVzaFN1YnRyZWUocmVxdWVzdCwgZGVzdGluYXRpb24sIHNlZ21lbnQpO1xuICAgIHJldHVybiB3cml0ZUVuZFBlbmRpbmdTdXNwZW5zZUJvdW5kYXJ5KGRlc3RpbmF0aW9uLCByZXF1ZXN0LnJlc3BvbnNlU3RhdGUpO1xuICB9IGVsc2UgaWYgKGJvdW5kYXJ5LmJ5dGVTaXplID4gcmVxdWVzdC5wcm9ncmVzc2l2ZUNodW5rU2l6ZSkge1xuICAgIC8vIFRoaXMgYm91bmRhcnkgaXMgbGFyZ2UgYW5kIHdpbGwgYmUgZW1pdHRlZCBzZXBhcmF0ZWx5IHNvIHRoYXQgd2UgY2FuIHByb2dyZXNzaXZlbHkgc2hvd1xuICAgIC8vIG90aGVyIGNvbnRlbnQuIFdlIGFkZCBpdCB0byB0aGUgcXVldWUgZHVyaW5nIHRoZSBmbHVzaCBiZWNhdXNlIHdlIGhhdmUgdG8gZW5zdXJlIHRoYXRcbiAgICAvLyB0aGUgcGFyZW50IGZsdXNoZXMgZmlyc3Qgc28gdGhhdCB0aGVyZSdzIHNvbWV0aGluZyB0byBpbmplY3QgaXQgaW50by5cbiAgICAvLyBXZSBhbHNvIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgaXQncyBlbWl0dGVkIGludG8gdGhlIHF1ZXVlIGluIGEgZGV0ZXJtaW5pc3RpYyBzbG90LlxuICAgIC8vIEkuZS4gd2UgY2FuJ3QgaW5zZXJ0IGl0IGhlcmUgd2hlbiBpdCBjb21wbGV0ZXMuXG4gICAgLy8gQXNzaWduIGFuIElEIHRvIHJlZmVyIHRvIHRoZSBmdXR1cmUgY29udGVudCBieS5cbiAgICBib3VuZGFyeS5yb290U2VnbWVudElEID0gcmVxdWVzdC5uZXh0U2VnbWVudElkKys7XG4gICAgcmVxdWVzdC5jb21wbGV0ZWRCb3VuZGFyaWVzLnB1c2goYm91bmRhcnkpOyAvLyBFbWl0IGEgcGVuZGluZyByZW5kZXJlZCBzdXNwZW5zZSBib3VuZGFyeSB3cmFwcGVyLlxuXG4gICAgd3JpdGVTdGFydFBlbmRpbmdTdXNwZW5zZUJvdW5kYXJ5KGRlc3RpbmF0aW9uLCByZXF1ZXN0LnJlc3BvbnNlU3RhdGUsIGJvdW5kYXJ5LmlkKTsgLy8gRmx1c2ggdGhlIGZhbGxiYWNrLlxuXG4gICAgZmx1c2hTdWJ0cmVlKHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBzZWdtZW50KTtcbiAgICByZXR1cm4gd3JpdGVFbmRQZW5kaW5nU3VzcGVuc2VCb3VuZGFyeShkZXN0aW5hdGlvbiwgcmVxdWVzdC5yZXNwb25zZVN0YXRlKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBXZSBjYW4gaW5saW5lIHRoaXMgYm91bmRhcnkncyBjb250ZW50IGFzIGEgY29tcGxldGUgYm91bmRhcnkuXG4gICAgd3JpdGVTdGFydENvbXBsZXRlZFN1c3BlbnNlQm91bmRhcnkkMShkZXN0aW5hdGlvbiwgcmVxdWVzdC5yZXNwb25zZVN0YXRlKTtcbiAgICB2YXIgY29tcGxldGVkU2VnbWVudHMgPSBib3VuZGFyeS5jb21wbGV0ZWRTZWdtZW50cztcblxuICAgIGlmIChjb21wbGV0ZWRTZWdtZW50cy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQSBwcmV2aW91c2x5IHVudmlzaXRlZCBib3VuZGFyeSBtdXN0IGhhdmUgZXhhY3RseSBvbmUgcm9vdCBzZWdtZW50LiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LicpO1xuICAgIH1cblxuICAgIHZhciBjb250ZW50U2VnbWVudCA9IGNvbXBsZXRlZFNlZ21lbnRzWzBdO1xuICAgIGZsdXNoU2VnbWVudChyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgY29udGVudFNlZ21lbnQpO1xuICAgIHJldHVybiB3cml0ZUVuZENvbXBsZXRlZFN1c3BlbnNlQm91bmRhcnkkMShkZXN0aW5hdGlvbiwgcmVxdWVzdC5yZXNwb25zZVN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmbHVzaENsaWVudFJlbmRlcmVkQm91bmRhcnkocmVxdWVzdCwgZGVzdGluYXRpb24sIGJvdW5kYXJ5KSB7XG4gIHJldHVybiB3cml0ZUNsaWVudFJlbmRlckJvdW5kYXJ5SW5zdHJ1Y3Rpb24oZGVzdGluYXRpb24sIHJlcXVlc3QucmVzcG9uc2VTdGF0ZSwgYm91bmRhcnkuaWQpO1xufVxuXG5mdW5jdGlvbiBmbHVzaFNlZ21lbnRDb250YWluZXIocmVxdWVzdCwgZGVzdGluYXRpb24sIHNlZ21lbnQpIHtcbiAgd3JpdGVTdGFydFNlZ21lbnQoZGVzdGluYXRpb24sIHJlcXVlc3QucmVzcG9uc2VTdGF0ZSwgc2VnbWVudC5mb3JtYXRDb250ZXh0LCBzZWdtZW50LmlkKTtcbiAgZmx1c2hTZWdtZW50KHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBzZWdtZW50KTtcbiAgcmV0dXJuIHdyaXRlRW5kU2VnbWVudChkZXN0aW5hdGlvbiwgc2VnbWVudC5mb3JtYXRDb250ZXh0KTtcbn1cblxuZnVuY3Rpb24gZmx1c2hDb21wbGV0ZWRCb3VuZGFyeShyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgYm91bmRhcnkpIHtcbiAgdmFyIGNvbXBsZXRlZFNlZ21lbnRzID0gYm91bmRhcnkuY29tcGxldGVkU2VnbWVudHM7XG4gIHZhciBpID0gMDtcblxuICBmb3IgKDsgaSA8IGNvbXBsZXRlZFNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNlZ21lbnQgPSBjb21wbGV0ZWRTZWdtZW50c1tpXTtcbiAgICBmbHVzaFBhcnRpYWxseUNvbXBsZXRlZFNlZ21lbnQocmVxdWVzdCwgZGVzdGluYXRpb24sIGJvdW5kYXJ5LCBzZWdtZW50KTtcbiAgfVxuXG4gIGNvbXBsZXRlZFNlZ21lbnRzLmxlbmd0aCA9IDA7XG4gIHJldHVybiB3cml0ZUNvbXBsZXRlZEJvdW5kYXJ5SW5zdHJ1Y3Rpb24oZGVzdGluYXRpb24sIHJlcXVlc3QucmVzcG9uc2VTdGF0ZSwgYm91bmRhcnkuaWQsIGJvdW5kYXJ5LnJvb3RTZWdtZW50SUQpO1xufVxuXG5mdW5jdGlvbiBmbHVzaFBhcnRpYWxCb3VuZGFyeShyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgYm91bmRhcnkpIHtcbiAgdmFyIGNvbXBsZXRlZFNlZ21lbnRzID0gYm91bmRhcnkuY29tcGxldGVkU2VnbWVudHM7XG4gIHZhciBpID0gMDtcblxuICBmb3IgKDsgaSA8IGNvbXBsZXRlZFNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNlZ21lbnQgPSBjb21wbGV0ZWRTZWdtZW50c1tpXTtcblxuICAgIGlmICghZmx1c2hQYXJ0aWFsbHlDb21wbGV0ZWRTZWdtZW50KHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBib3VuZGFyeSwgc2VnbWVudCkpIHtcbiAgICAgIGkrKztcbiAgICAgIGNvbXBsZXRlZFNlZ21lbnRzLnNwbGljZSgwLCBpKTsgLy8gT25seSB3cml0ZSBhcyBtdWNoIGFzIHRoZSBidWZmZXIgd2FudHMuIFNvbWV0aGluZyBoaWdoZXIgcHJpb3JpdHlcbiAgICAgIC8vIG1pZ2h0IHdhbnQgdG8gd3JpdGUgbGF0ZXIuXG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjb21wbGV0ZWRTZWdtZW50cy5zcGxpY2UoMCwgaSk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBmbHVzaFBhcnRpYWxseUNvbXBsZXRlZFNlZ21lbnQocmVxdWVzdCwgZGVzdGluYXRpb24sIGJvdW5kYXJ5LCBzZWdtZW50KSB7XG4gIGlmIChzZWdtZW50LnN0YXR1cyA9PT0gRkxVU0hFRCkge1xuICAgIC8vIFdlJ3ZlIGFscmVhZHkgZmx1c2hlZCB0aGlzIGlubGluZS5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhciBzZWdtZW50SUQgPSBzZWdtZW50LmlkO1xuXG4gIGlmIChzZWdtZW50SUQgPT09IC0xKSB7XG4gICAgLy8gVGhpcyBzZWdtZW50IHdhc24ndCBwcmV2aW91c2x5IHJlZmVycmVkIHRvLiBUaGlzIGhhcHBlbnMgYXQgdGhlIHJvb3Qgb2ZcbiAgICAvLyBhIGJvdW5kYXJ5LiBXZSBtYWtlIGtpbmQgb2YgYSBsZWFwIGhlcmUgYW5kIGFzc3VtZSB0aGlzIGlzIHRoZSByb290LlxuICAgIHZhciByb290U2VnbWVudElEID0gc2VnbWVudC5pZCA9IGJvdW5kYXJ5LnJvb3RTZWdtZW50SUQ7XG5cbiAgICBpZiAocm9vdFNlZ21lbnRJRCA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQSByb290IHNlZ21lbnQgSUQgbXVzdCBoYXZlIGJlZW4gYXNzaWduZWQgYnkgbm93LiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LicpO1xuICAgIH1cblxuICAgIHJldHVybiBmbHVzaFNlZ21lbnRDb250YWluZXIocmVxdWVzdCwgZGVzdGluYXRpb24sIHNlZ21lbnQpO1xuICB9IGVsc2Uge1xuICAgIGZsdXNoU2VnbWVudENvbnRhaW5lcihyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgc2VnbWVudCk7XG4gICAgcmV0dXJuIHdyaXRlQ29tcGxldGVkU2VnbWVudEluc3RydWN0aW9uKGRlc3RpbmF0aW9uLCByZXF1ZXN0LnJlc3BvbnNlU3RhdGUsIHNlZ21lbnRJRCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmx1c2hDb21wbGV0ZWRRdWV1ZXMocmVxdWVzdCwgZGVzdGluYXRpb24pIHtcblxuICB0cnkge1xuICAgIC8vIFRoZSBzdHJ1Y3R1cmUgb2YgdGhpcyBpcyB0byBnbyB0aHJvdWdoIGVhY2ggcXVldWUgb25lIGJ5IG9uZSBhbmQgd3JpdGVcbiAgICAvLyB1bnRpbCB0aGUgc2luayB0ZWxscyB1cyB0byBzdG9wLiBXaGVuIHdlIHNob3VsZCBzdG9wLCB3ZSBzdGlsbCBmaW5pc2ggd3JpdGluZ1xuICAgIC8vIHRoYXQgaXRlbSBmdWxseSBhbmQgdGhlbiB5aWVsZC4gQXQgdGhhdCBwb2ludCB3ZSByZW1vdmUgdGhlIGFscmVhZHkgY29tcGxldGVkXG4gICAgLy8gaXRlbXMgdXAgdW50aWwgdGhlIHBvaW50IHdlIGNvbXBsZXRlZCB0aGVtLlxuICAgIC8vIFRPRE86IEVtaXQgcHJlbG9hZGluZy5cbiAgICAvLyBUT0RPOiBJdCdzIGtpbmQgb2YgdW5mb3J0dW5hdGUgdG8ga2VlcCBjaGVja2luZyB0aGlzIGFycmF5IGFmdGVyIHdlJ3ZlIGFscmVhZHlcbiAgICAvLyBlbWl0dGVkIHRoZSByb290LlxuICAgIHZhciBjb21wbGV0ZWRSb290U2VnbWVudCA9IHJlcXVlc3QuY29tcGxldGVkUm9vdFNlZ21lbnQ7XG5cbiAgICBpZiAoY29tcGxldGVkUm9vdFNlZ21lbnQgIT09IG51bGwgJiYgcmVxdWVzdC5wZW5kaW5nUm9vdFRhc2tzID09PSAwKSB7XG4gICAgICBmbHVzaFNlZ21lbnQocmVxdWVzdCwgZGVzdGluYXRpb24sIGNvbXBsZXRlZFJvb3RTZWdtZW50KTtcbiAgICAgIHJlcXVlc3QuY29tcGxldGVkUm9vdFNlZ21lbnQgPSBudWxsO1xuICAgICAgd3JpdGVDb21wbGV0ZWRSb290KGRlc3RpbmF0aW9uLCByZXF1ZXN0LnJlc3BvbnNlU3RhdGUpO1xuICAgIH0gLy8gV2UgZW1pdCBjbGllbnQgcmVuZGVyaW5nIGluc3RydWN0aW9ucyBmb3IgYWxyZWFkeSBlbWl0dGVkIGJvdW5kYXJpZXMgZmlyc3QuXG4gICAgLy8gVGhpcyBpcyBzbyB0aGF0IHdlIGNhbiBzaWduYWwgdG8gdGhlIGNsaWVudCB0byBzdGFydCBjbGllbnQgcmVuZGVyaW5nIHRoZW0gYXNcbiAgICAvLyBzb29uIGFzIHBvc3NpYmxlLlxuXG5cbiAgICB2YXIgY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzID0gcmVxdWVzdC5jbGllbnRSZW5kZXJlZEJvdW5kYXJpZXM7XG4gICAgdmFyIGk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYm91bmRhcnkgPSBjbGllbnRSZW5kZXJlZEJvdW5kYXJpZXNbaV07XG5cbiAgICAgIGlmICghZmx1c2hDbGllbnRSZW5kZXJlZEJvdW5kYXJ5KHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBib3VuZGFyeSkpIHtcbiAgICAgICAgcmVxdWVzdC5kZXN0aW5hdGlvbiA9IG51bGw7XG4gICAgICAgIGkrKztcbiAgICAgICAgY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzLnNwbGljZSgwLCBpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5zcGxpY2UoMCwgaSk7IC8vIE5leHQgd2UgZW1pdCBhbnkgY29tcGxldGUgYm91bmRhcmllcy4gSXQncyBiZXR0ZXIgdG8gZmF2b3IgYm91bmRhcmllc1xuICAgIC8vIHRoYXQgYXJlIGNvbXBsZXRlbHkgZG9uZSBzaW5jZSB3ZSBjYW4gYWN0dWFsbHkgc2hvdyB0aGVtLCB0aGFuIGl0IGlzIHRvIGVtaXRcbiAgICAvLyBhbnkgaW5kaXZpZHVhbCBzZWdtZW50cyBmcm9tIGEgcGFydGlhbGx5IGNvbXBsZXRlIGJvdW5kYXJ5LlxuXG4gICAgdmFyIGNvbXBsZXRlZEJvdW5kYXJpZXMgPSByZXF1ZXN0LmNvbXBsZXRlZEJvdW5kYXJpZXM7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgY29tcGxldGVkQm91bmRhcmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIF9ib3VuZGFyeSA9IGNvbXBsZXRlZEJvdW5kYXJpZXNbaV07XG5cbiAgICAgIGlmICghZmx1c2hDb21wbGV0ZWRCb3VuZGFyeShyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgX2JvdW5kYXJ5KSkge1xuICAgICAgICByZXF1ZXN0LmRlc3RpbmF0aW9uID0gbnVsbDtcbiAgICAgICAgaSsrO1xuICAgICAgICBjb21wbGV0ZWRCb3VuZGFyaWVzLnNwbGljZSgwLCBpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBsZXRlZEJvdW5kYXJpZXMuc3BsaWNlKDAsIGkpOyAvLyBBbGxvdyBhbnl0aGluZyB3cml0dGVuIHNvIGZhciB0byBmbHVzaCB0byB0aGUgdW5kZXJseWluZyBzaW5rIGJlZm9yZVxuICAgIC8vIHdlIGNvbnRpbnVlIHdpdGggbG93ZXIgcHJpb3JpdGllcy5cblxuICAgIGNvbXBsZXRlV3JpdGluZyhkZXN0aW5hdGlvbik7XG4gICAgYmVnaW5Xcml0aW5nKGRlc3RpbmF0aW9uKTsgLy8gVE9ETzogSGVyZSB3ZSdsbCBlbWl0IGRhdGEgdXNlZCBieSBoeWRyYXRpb24uXG4gICAgLy8gTmV4dCB3ZSBlbWl0IGFueSBzZWdtZW50cyBvZiBhbnkgYm91bmRhcmllcyB0aGF0IGFyZSBwYXJ0aWFsbHkgY29tcGxldGVcbiAgICAvLyBidXQgbm90IGRlZXBseSBjb21wbGV0ZS5cblxuICAgIHZhciBwYXJ0aWFsQm91bmRhcmllcyA9IHJlcXVlc3QucGFydGlhbEJvdW5kYXJpZXM7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgcGFydGlhbEJvdW5kYXJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBfYm91bmRhcnkyID0gcGFydGlhbEJvdW5kYXJpZXNbaV07XG5cbiAgICAgIGlmICghZmx1c2hQYXJ0aWFsQm91bmRhcnkocmVxdWVzdCwgZGVzdGluYXRpb24sIF9ib3VuZGFyeTIpKSB7XG4gICAgICAgIHJlcXVlc3QuZGVzdGluYXRpb24gPSBudWxsO1xuICAgICAgICBpKys7XG4gICAgICAgIHBhcnRpYWxCb3VuZGFyaWVzLnNwbGljZSgwLCBpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHBhcnRpYWxCb3VuZGFyaWVzLnNwbGljZSgwLCBpKTsgLy8gTmV4dCB3ZSBjaGVjayB0aGUgY29tcGxldGVkIGJvdW5kYXJpZXMgYWdhaW4uIFRoaXMgbWF5IGhhdmUgaGFkXG4gICAgLy8gYm91bmRhcmllcyBhZGRlZCB0byBpdCBpbiBjYXNlIHRoZXkgd2VyZSB0b28gbGFyZ2VkIHRvIGJlIGlubGluZWQuXG4gICAgLy8gTmV3IG9uZXMgbWlnaHQgYmUgYWRkZWQgaW4gdGhpcyBsb29wLlxuXG4gICAgdmFyIGxhcmdlQm91bmRhcmllcyA9IHJlcXVlc3QuY29tcGxldGVkQm91bmRhcmllcztcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsYXJnZUJvdW5kYXJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBfYm91bmRhcnkzID0gbGFyZ2VCb3VuZGFyaWVzW2ldO1xuXG4gICAgICBpZiAoIWZsdXNoQ29tcGxldGVkQm91bmRhcnkocmVxdWVzdCwgZGVzdGluYXRpb24sIF9ib3VuZGFyeTMpKSB7XG4gICAgICAgIHJlcXVlc3QuZGVzdGluYXRpb24gPSBudWxsO1xuICAgICAgICBpKys7XG4gICAgICAgIGxhcmdlQm91bmRhcmllcy5zcGxpY2UoMCwgaSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsYXJnZUJvdW5kYXJpZXMuc3BsaWNlKDAsIGkpO1xuICB9IGZpbmFsbHkge1xuXG4gICAgaWYgKHJlcXVlc3QuYWxsUGVuZGluZ1Rhc2tzID09PSAwICYmIHJlcXVlc3QucGluZ2VkVGFza3MubGVuZ3RoID09PSAwICYmIHJlcXVlc3QuY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzLmxlbmd0aCA9PT0gMCAmJiByZXF1ZXN0LmNvbXBsZXRlZEJvdW5kYXJpZXMubGVuZ3RoID09PSAwIC8vIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgYW55IHBhcnRpYWxseSBjb21wbGV0ZWQgc2VnbWVudHMgYmVjYXVzZVxuICAgIC8vIGVpdGhlciB0aGV5IGhhdmUgcGVuZGluZyB0YXNrIG9yIHRoZXkncmUgY29tcGxldGUuXG4gICAgKSB7XG4gICAgICAgIHtcbiAgICAgICAgICBpZiAocmVxdWVzdC5hYm9ydGFibGVUYXNrcy5zaXplICE9PSAwKSB7XG4gICAgICAgICAgICBlcnJvcignVGhlcmUgd2FzIHN0aWxsIGFib3J0YWJsZSB0YXNrIGF0IHRoZSByb290IHdoZW4gd2UgY2xvc2VkLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBXZSdyZSBkb25lLlxuXG5cbiAgICAgICAgY2xvc2UoZGVzdGluYXRpb24pO1xuICAgICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHN0YXJ0V29yayhyZXF1ZXN0KSB7XG4gIHNjaGVkdWxlV29yayhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHBlcmZvcm1Xb3JrKHJlcXVlc3QpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHN0YXJ0Rmxvd2luZyhyZXF1ZXN0LCBkZXN0aW5hdGlvbikge1xuICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IENMT1NJTkcpIHtcbiAgICByZXF1ZXN0LnN0YXR1cyA9IENMT1NFRDtcbiAgICBjbG9zZVdpdGhFcnJvcihkZXN0aW5hdGlvbiwgcmVxdWVzdC5mYXRhbEVycm9yKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IENMT1NFRCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChyZXF1ZXN0LmRlc3RpbmF0aW9uICE9PSBudWxsKSB7XG4gICAgLy8gV2UncmUgYWxyZWFkeSBmbG93aW5nLlxuICAgIHJldHVybjtcbiAgfVxuXG4gIHJlcXVlc3QuZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbjtcblxuICB0cnkge1xuICAgIGZsdXNoQ29tcGxldGVkUXVldWVzKHJlcXVlc3QsIGRlc3RpbmF0aW9uKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2dSZWNvdmVyYWJsZUVycm9yKHJlcXVlc3QsIGVycm9yKTtcbiAgICBmYXRhbEVycm9yKHJlcXVlc3QsIGVycm9yKTtcbiAgfVxufSAvLyBUaGlzIGlzIGNhbGxlZCB0byBlYXJseSB0ZXJtaW5hdGUgYSByZXF1ZXN0LiBJdCBwdXRzIGFsbCBwZW5kaW5nIGJvdW5kYXJpZXMgaW4gY2xpZW50IHJlbmRlcmVkIHN0YXRlLlxuXG5mdW5jdGlvbiBhYm9ydChyZXF1ZXN0KSB7XG4gIHRyeSB7XG4gICAgdmFyIGFib3J0YWJsZVRhc2tzID0gcmVxdWVzdC5hYm9ydGFibGVUYXNrcztcbiAgICBhYm9ydGFibGVUYXNrcy5mb3JFYWNoKGFib3J0VGFzaywgcmVxdWVzdCk7XG4gICAgYWJvcnRhYmxlVGFza3MuY2xlYXIoKTtcblxuICAgIGlmIChyZXF1ZXN0LmRlc3RpbmF0aW9uICE9PSBudWxsKSB7XG4gICAgICBmbHVzaENvbXBsZXRlZFF1ZXVlcyhyZXF1ZXN0LCByZXF1ZXN0LmRlc3RpbmF0aW9uKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0LCBlcnJvcik7XG4gICAgZmF0YWxFcnJvcihyZXF1ZXN0LCBlcnJvcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gb25FcnJvcigpIHsvLyBOb24tZmF0YWwgZXJyb3JzIGFyZSBpZ25vcmVkLlxufVxuXG5mdW5jdGlvbiByZW5kZXJUb1N0cmluZ0ltcGwoY2hpbGRyZW4sIG9wdGlvbnMsIGdlbmVyYXRlU3RhdGljTWFya3VwKSB7XG4gIHZhciBkaWRGYXRhbCA9IGZhbHNlO1xuICB2YXIgZmF0YWxFcnJvciA9IG51bGw7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgdmFyIGRlc3RpbmF0aW9uID0ge1xuICAgIHB1c2g6IGZ1bmN0aW9uIChjaHVuaykge1xuICAgICAgaWYgKGNodW5rICE9PSBudWxsKSB7XG4gICAgICAgIHJlc3VsdCArPSBjaHVuaztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBkZXN0cm95OiBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGRpZEZhdGFsID0gdHJ1ZTtcbiAgICAgIGZhdGFsRXJyb3IgPSBlcnJvcjtcbiAgICB9XG4gIH07XG4gIHZhciByZWFkeVRvU3RyZWFtID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gb25TaGVsbFJlYWR5KCkge1xuICAgIHJlYWR5VG9TdHJlYW0gPSB0cnVlO1xuICB9XG5cbiAgdmFyIHJlcXVlc3QgPSBjcmVhdGVSZXF1ZXN0KGNoaWxkcmVuLCBjcmVhdGVSZXNwb25zZVN0YXRlJDEoZ2VuZXJhdGVTdGF0aWNNYXJrdXAsIG9wdGlvbnMgPyBvcHRpb25zLmlkZW50aWZpZXJQcmVmaXggOiB1bmRlZmluZWQpLCBjcmVhdGVSb290Rm9ybWF0Q29udGV4dCgpLCBJbmZpbml0eSwgb25FcnJvciwgdW5kZWZpbmVkLCBvblNoZWxsUmVhZHksIHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgc3RhcnRXb3JrKHJlcXVlc3QpOyAvLyBJZiBhbnl0aGluZyBzdXNwZW5kZWQgYW5kIGlzIHN0aWxsIHBlbmRpbmcsIHdlJ2xsIGFib3J0IGl0IGJlZm9yZSB3cml0aW5nLlxuICAvLyBUaGF0IHdheSB3ZSB3cml0ZSBvbmx5IGNsaWVudC1yZW5kZXJlZCBib3VuZGFyaWVzIGZyb20gdGhlIHN0YXJ0LlxuXG4gIGFib3J0KHJlcXVlc3QpO1xuICBzdGFydEZsb3dpbmcocmVxdWVzdCwgZGVzdGluYXRpb24pO1xuXG4gIGlmIChkaWRGYXRhbCkge1xuICAgIHRocm93IGZhdGFsRXJyb3I7XG4gIH1cblxuICBpZiAoIXJlYWR5VG9TdHJlYW0pIHtcbiAgICAvLyBOb3RlOiBUaGlzIGVycm9yIG1lc3NhZ2UgaXMgdGhlIG9uZSB3ZSB1c2Ugb24gdGhlIGNsaWVudC4gSXQgZG9lc24ndFxuICAgIC8vIHJlYWxseSBtYWtlIHNlbnNlIGhlcmUuIEJ1dCB0aGlzIGlzIHRoZSBsZWdhY3kgc2VydmVyIHJlbmRlcmVyLCBhbnl3YXkuXG4gICAgLy8gV2UncmUgZ29pbmcgdG8gZGVsZXRlIGl0IHNvb24uXG4gICAgdGhyb3cgbmV3IEVycm9yKCdBIGNvbXBvbmVudCBzdXNwZW5kZWQgd2hpbGUgcmVzcG9uZGluZyB0byBzeW5jaHJvbm91cyBpbnB1dC4gVGhpcyAnICsgJ3dpbGwgY2F1c2UgdGhlIFVJIHRvIGJlIHJlcGxhY2VkIHdpdGggYSBsb2FkaW5nIGluZGljYXRvci4gVG8gZml4LCAnICsgJ3VwZGF0ZXMgdGhhdCBzdXNwZW5kIHNob3VsZCBiZSB3cmFwcGVkIHdpdGggc3RhcnRUcmFuc2l0aW9uLicpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gcmVuZGVyVG9TdHJpbmcoY2hpbGRyZW4sIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHJlbmRlclRvU3RyaW5nSW1wbChjaGlsZHJlbiwgb3B0aW9ucywgZmFsc2UpO1xufVxuXG5mdW5jdGlvbiByZW5kZXJUb1N0YXRpY01hcmt1cChjaGlsZHJlbiwgb3B0aW9ucykge1xuICByZXR1cm4gcmVuZGVyVG9TdHJpbmdJbXBsKGNoaWxkcmVuLCBvcHRpb25zLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyVG9Ob2RlU3RyZWFtKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ1JlYWN0RE9NU2VydmVyLnJlbmRlclRvTm9kZVN0cmVhbSgpOiBUaGUgc3RyZWFtaW5nIEFQSSBpcyBub3QgYXZhaWxhYmxlICcgKyAnaW4gdGhlIGJyb3dzZXIuIFVzZSBSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0cmluZygpIGluc3RlYWQuJyk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlclRvU3RhdGljTm9kZVN0cmVhbSgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0YXRpY05vZGVTdHJlYW0oKTogVGhlIHN0cmVhbWluZyBBUEkgaXMgbm90IGF2YWlsYWJsZSAnICsgJ2luIHRoZSBicm93c2VyLiBVc2UgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdGF0aWNNYXJrdXAoKSBpbnN0ZWFkLicpO1xufVxuXG5leHBvcnRzLnJlbmRlclRvTm9kZVN0cmVhbSA9IHJlbmRlclRvTm9kZVN0cmVhbTtcbmV4cG9ydHMucmVuZGVyVG9TdGF0aWNNYXJrdXAgPSByZW5kZXJUb1N0YXRpY01hcmt1cDtcbmV4cG9ydHMucmVuZGVyVG9TdGF0aWNOb2RlU3RyZWFtID0gcmVuZGVyVG9TdGF0aWNOb2RlU3RyZWFtO1xuZXhwb3J0cy5yZW5kZXJUb1N0cmluZyA9IHJlbmRlclRvU3RyaW5nO1xuZXhwb3J0cy52ZXJzaW9uID0gUmVhY3RWZXJzaW9uO1xuICB9KSgpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js\n");
 
/***/ }),
 
/***/ "./node_modules/react-dom/cjs/react-dom-server.browser.development.js":
/*!****************************************************************************!*\
  !*** ./node_modules/react-dom/cjs/react-dom-server.browser.development.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
 
"use strict";
eval("/**\n * @license React\n * react-dom-server.browser.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n  (function() {\n'use strict';\n\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar ReactVersion = '18.0.0-fc46dba67-20220329';\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n\nfunction warn(format) {\n  {\n    {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      printWarning('warn', format, args);\n    }\n  }\n}\nfunction error(format) {\n  {\n    {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\nfunction scheduleWork(callback) {\n  callback();\n}\nvar VIEW_SIZE = 512;\nvar currentView = null;\nvar writtenBytes = 0;\nfunction beginWriting(destination) {\n  currentView = new Uint8Array(VIEW_SIZE);\n  writtenBytes = 0;\n}\nfunction writeChunk(destination, chunk) {\n  if (chunk.length === 0) {\n    return;\n  }\n\n  if (chunk.length > VIEW_SIZE) {\n    // this chunk may overflow a single view which implies it was not\n    // one that is cached by the streaming renderer. We will enqueu\n    // it directly and expect it is not re-used\n    if (writtenBytes > 0) {\n      destination.enqueue(new Uint8Array(currentView.buffer, 0, writtenBytes));\n      currentView = new Uint8Array(VIEW_SIZE);\n      writtenBytes = 0;\n    }\n\n    destination.enqueue(chunk);\n    return;\n  }\n\n  var bytesToWrite = chunk;\n  var allowableBytes = currentView.length - writtenBytes;\n\n  if (allowableBytes < bytesToWrite.length) {\n    // this chunk would overflow the current view. We enqueue a full view\n    // and start a new view with the remaining chunk\n    if (allowableBytes === 0) {\n      // the current view is already full, send it\n      destination.enqueue(currentView);\n    } else {\n      // fill up the current view and apply the remaining chunk bytes\n      // to a new view.\n      currentView.set(bytesToWrite.subarray(0, allowableBytes), writtenBytes); // writtenBytes += allowableBytes; // this can be skipped because we are going to immediately reset the view\n\n      destination.enqueue(currentView);\n      bytesToWrite = bytesToWrite.subarray(allowableBytes);\n    }\n\n    currentView = new Uint8Array(VIEW_SIZE);\n    writtenBytes = 0;\n  }\n\n  currentView.set(bytesToWrite, writtenBytes);\n  writtenBytes += bytesToWrite.length;\n}\nfunction writeChunkAndReturn(destination, chunk) {\n  writeChunk(destination, chunk); // in web streams there is no backpressure so we can alwas write more\n\n  return true;\n}\nfunction completeWriting(destination) {\n  if (currentView && writtenBytes > 0) {\n    destination.enqueue(new Uint8Array(currentView.buffer, 0, writtenBytes));\n    currentView = null;\n    writtenBytes = 0;\n  }\n}\nfunction close(destination) {\n  destination.close();\n}\nvar textEncoder = new TextEncoder();\nfunction stringToChunk(content) {\n  return textEncoder.encode(content);\n}\nfunction stringToPrecomputedChunk(content) {\n  return textEncoder.encode(content);\n}\nfunction closeWithError(destination, error) {\n  if (typeof destination.error === 'function') {\n    // $FlowFixMe: This is an Error object or the destination accepts other types.\n    destination.error(error);\n  } else {\n    // Earlier implementations doesn't support this method. In that environment you're\n    // supposed to throw from a promise returned but we don't return a promise in our\n    // approach. We could fork this implementation but this is environment is an edge\n    // case to begin with. It's even less common to run this in an older environment.\n    // Even then, this is not where errors are supposed to happen and they get reported\n    // to a global callback in addition to this anyway. So it's fine just to close this.\n    destination.close();\n  }\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n  {\n    // toStringTag is needed for namespaced types like Temporal.Instant\n    var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n    var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n    return type;\n  }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n  {\n    try {\n      testStringCoercion(value);\n      return false;\n    } catch (e) {\n      return true;\n    }\n  }\n}\n\nfunction testStringCoercion(value) {\n  // If you ended up here by following an exception call stack, here's what's\n  // happened: you supplied an object or symbol value to React (as a prop, key,\n  // DOM attribute, CSS property, string ref, etc.) and when React tried to\n  // coerce it to a string using `'' + value`, an exception was thrown.\n  //\n  // The most common types that will cause this exception are `Symbol` instances\n  // and Temporal objects like `Temporal.Instant`. But any object that has a\n  // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n  // exception. (Library authors do this to prevent users from using built-in\n  // numeric operators like `+` or comparison operators like `>=` because custom\n  // methods are needed to perform accurate arithmetic or comparison.)\n  //\n  // To fix the problem, coerce this object or symbol value to a string before\n  // passing it to React. The most reliable way is usually `String(value)`.\n  //\n  // To find which value is throwing, check the browser or debugger console.\n  // Before this exception was thrown, there should be `console.error` output\n  // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n  // problem and how that type was used: key, atrribute, input value prop, etc.\n  // In most cases, this console output also shows the component and its\n  // ancestor components where the exception happened.\n  //\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\n\nfunction checkAttributeStringCoercion(value, attributeName) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided `%s` attribute is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', attributeName, typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkCSSPropertyStringCoercion(value, propName) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided `%s` CSS property is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', propName, typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkHtmlStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided HTML markup uses a value of unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n// A reserved attribute.\n// It is handled by React separately and shouldn't be written to the DOM.\nvar RESERVED = 0; // A simple string attribute.\n// Attributes that aren't in the filter are presumed to have this type.\n\nvar STRING = 1; // A string attribute that accepts booleans in React. In HTML, these are called\n// \"enumerated\" attributes with \"true\" and \"false\" as possible values.\n// When true, it should be set to a \"true\" string.\n// When false, it should be set to a \"false\" string.\n\nvar BOOLEANISH_STRING = 2; // A real boolean attribute.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n\nvar BOOLEAN = 3; // An attribute that can be used as a flag as well as with a value.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n// For any other value, should be present with that value.\n\nvar OVERLOADED_BOOLEAN = 4; // An attribute that must be numeric or parse as a numeric.\n// When falsy, it should be removed.\n\nvar NUMERIC = 5; // An attribute that must be positive numeric or parse as a positive numeric.\n// When falsy, it should be removed.\n\nvar POSITIVE_NUMERIC = 6;\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = \":A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n/* eslint-enable max-len */\n\nvar ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + \"\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n  if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) {\n    return true;\n  }\n\n  if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) {\n    return false;\n  }\n\n  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n    validatedAttributeNameCache[attributeName] = true;\n    return true;\n  }\n\n  illegalAttributeNameCache[attributeName] = true;\n\n  {\n    error('Invalid attribute name: `%s`', attributeName);\n  }\n\n  return false;\n}\nfunction shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag) {\n  if (propertyInfo !== null && propertyInfo.type === RESERVED) {\n    return false;\n  }\n\n  switch (typeof value) {\n    case 'function': // $FlowIssue symbol is perfectly valid here\n\n    case 'symbol':\n      // eslint-disable-line\n      return true;\n\n    case 'boolean':\n      {\n        if (isCustomComponentTag) {\n          return false;\n        }\n\n        if (propertyInfo !== null) {\n          return !propertyInfo.acceptsBooleans;\n        } else {\n          var prefix = name.toLowerCase().slice(0, 5);\n          return prefix !== 'data-' && prefix !== 'aria-';\n        }\n      }\n\n    default:\n      return false;\n  }\n}\nfunction getPropertyInfo(name) {\n  return properties.hasOwnProperty(name) ? properties[name] : null;\n}\n\nfunction PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL, removeEmptyString) {\n  this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN;\n  this.attributeName = attributeName;\n  this.attributeNamespace = attributeNamespace;\n  this.mustUseProperty = mustUseProperty;\n  this.propertyName = name;\n  this.type = type;\n  this.sanitizeURL = sanitizeURL;\n  this.removeEmptyString = removeEmptyString;\n} // When adding attributes to this list, be sure to also add them to\n// the `possibleStandardNames` module to ensure casing and incorrect\n// name warnings.\n\n\nvar properties = {}; // These props are reserved by React. They shouldn't be written to the DOM.\n\nvar reservedProps = ['children', 'dangerouslySetInnerHTML', // TODO: This prevents the assignment of defaultValue to regular\n// elements (not just inputs). Now that ReactDOMInput assigns to the\n// defaultValue property -- do we need this?\n'defaultValue', 'defaultChecked', 'innerHTML', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'style'];\n\nreservedProps.forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, RESERVED, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // A few React string attributes have a different name.\n// This is a mapping from React prop names to the attribute names.\n\n[['acceptCharset', 'accept-charset'], ['className', 'class'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv']].forEach(function (_ref) {\n  var name = _ref[0],\n      attributeName = _ref[1];\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are \"enumerated\" HTML attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n\n['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are \"enumerated\" SVG attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n// Since these are SVG attributes, their attribute names are case-sensitive.\n\n['autoReverse', 'externalResourcesRequired', 'focusable', 'preserveAlpha'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML boolean attributes.\n\n['allowFullScreen', 'async', // Note: there is a special case that prevents it from being written to the DOM\n// on the client side because the browsers are inconsistent. Instead we call focus().\n'autoFocus', 'autoPlay', 'controls', 'default', 'defer', 'disabled', 'disablePictureInPicture', 'disableRemotePlayback', 'formNoValidate', 'hidden', 'loop', 'noModule', 'noValidate', 'open', 'playsInline', 'readOnly', 'required', 'reversed', 'scoped', 'seamless', // Microdata\n'itemScope'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are the few React props that we set as DOM properties\n// rather than attributes. These are all booleans.\n\n['checked', // Note: `option.selected` is not updated if `select.multiple` is\n// disabled with `removeAttribute`. We have special logic for handling this.\n'multiple', 'muted', 'selected' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that are \"overloaded booleans\": they behave like\n// booleans, but can also accept a string value.\n\n['capture', 'download' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that must be positive numbers.\n\n['cols', 'rows', 'size', 'span' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that must be numbers.\n\n['rowSpan', 'start'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, NUMERIC, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n});\nvar CAMELIZE = /[\\-\\:]([a-z])/g;\n\nvar capitalize = function (token) {\n  return token[1].toUpperCase();\n}; // This is a list of all SVG attributes that need special casing, namespacing,\n// or boolean value assignment. Regular attributes that just accept strings\n// and have the same names are omitted, just like in the HTML attribute filter.\n// Some of these attributes can be hard to find. This list was created by\n// scraping the MDN documentation.\n\n\n['accent-height', 'alignment-baseline', 'arabic-form', 'baseline-shift', 'cap-height', 'clip-path', 'clip-rule', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'dominant-baseline', 'enable-background', 'fill-opacity', 'fill-rule', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-name', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'horiz-adv-x', 'horiz-origin-x', 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', 'marker-mid', 'marker-start', 'overline-position', 'overline-thickness', 'paint-order', 'panose-1', 'pointer-events', 'rendering-intent', 'shape-rendering', 'stop-color', 'stop-opacity', 'strikethrough-position', 'strikethrough-thickness', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-decoration', 'text-rendering', 'underline-position', 'underline-thickness', 'unicode-bidi', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'vector-effect', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'word-spacing', 'writing-mode', 'xmlns:xlink', 'x-height' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // String SVG attributes with the xlink namespace.\n\n['xlink:actuate', 'xlink:arcrole', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, 'http://www.w3.org/1999/xlink', false, // sanitizeURL\n  false);\n}); // String SVG attributes with the xml namespace.\n\n['xml:base', 'xml:lang', 'xml:space' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, 'http://www.w3.org/XML/1998/namespace', false, // sanitizeURL\n  false);\n}); // These attribute exists both in HTML and SVG.\n// The attribute name is case-sensitive in SVG so we can't just use\n// the React name like we do for attributes that exist only in HTML.\n\n['tabIndex', 'crossOrigin'].forEach(function (attributeName) {\n  properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty\n  attributeName.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These attributes accept URLs. These must not allow javascript: URLS.\n// These will also need to accept Trusted Types object in the future.\n\nvar xlinkHref = 'xlinkHref';\nproperties[xlinkHref] = new PropertyInfoRecord('xlinkHref', STRING, false, // mustUseProperty\n'xlink:href', 'http://www.w3.org/1999/xlink', true, // sanitizeURL\nfalse);\n['src', 'href', 'action', 'formAction'].forEach(function (attributeName) {\n  properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty\n  attributeName.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  true, // sanitizeURL\n  true);\n});\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\nvar isUnitlessNumber = {\n  animationIterationCount: true,\n  aspectRatio: true,\n  borderImageOutset: true,\n  borderImageSlice: true,\n  borderImageWidth: true,\n  boxFlex: true,\n  boxFlexGroup: true,\n  boxOrdinalGroup: true,\n  columnCount: true,\n  columns: true,\n  flex: true,\n  flexGrow: true,\n  flexPositive: true,\n  flexShrink: true,\n  flexNegative: true,\n  flexOrder: true,\n  gridArea: true,\n  gridRow: true,\n  gridRowEnd: true,\n  gridRowSpan: true,\n  gridRowStart: true,\n  gridColumn: true,\n  gridColumnEnd: true,\n  gridColumnSpan: true,\n  gridColumnStart: true,\n  fontWeight: true,\n  lineClamp: true,\n  lineHeight: true,\n  opacity: true,\n  order: true,\n  orphans: true,\n  tabSize: true,\n  widows: true,\n  zIndex: true,\n  zoom: true,\n  // SVG-related properties\n  fillOpacity: true,\n  floodOpacity: true,\n  stopOpacity: true,\n  strokeDasharray: true,\n  strokeDashoffset: true,\n  strokeMiterlimit: true,\n  strokeOpacity: true,\n  strokeWidth: true\n};\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\n\nfunction prefixKey(prefix, key) {\n  return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\n\n\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O']; // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\n\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n  prefixes.forEach(function (prefix) {\n    isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n  });\n});\n\nvar hasReadOnlyValue = {\n  button: true,\n  checkbox: true,\n  image: true,\n  hidden: true,\n  radio: true,\n  reset: true,\n  submit: true\n};\nfunction checkControlledValueProps(tagName, props) {\n  {\n    if (!(hasReadOnlyValue[props.type] || props.onChange || props.onInput || props.readOnly || props.disabled || props.value == null)) {\n      error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n    }\n\n    if (!(props.onChange || props.readOnly || props.disabled || props.checked == null)) {\n      error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n    }\n  }\n}\n\nfunction isCustomComponent(tagName, props) {\n  if (tagName.indexOf('-') === -1) {\n    return typeof props.is === 'string';\n  }\n\n  switch (tagName) {\n    // These are reserved SVG and MathML elements.\n    // We don't mind this list too much because we expect it to never grow.\n    // The alternative is to track the namespace in a few places which is convoluted.\n    // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts\n    case 'annotation-xml':\n    case 'color-profile':\n    case 'font-face':\n    case 'font-face-src':\n    case 'font-face-uri':\n    case 'font-face-format':\n    case 'font-face-name':\n    case 'missing-glyph':\n      return false;\n\n    default:\n      return true;\n  }\n}\n\nvar ariaProperties = {\n  'aria-current': 0,\n  // state\n  'aria-description': 0,\n  'aria-details': 0,\n  'aria-disabled': 0,\n  // state\n  'aria-hidden': 0,\n  // state\n  'aria-invalid': 0,\n  // state\n  'aria-keyshortcuts': 0,\n  'aria-label': 0,\n  'aria-roledescription': 0,\n  // Widget Attributes\n  'aria-autocomplete': 0,\n  'aria-checked': 0,\n  'aria-expanded': 0,\n  'aria-haspopup': 0,\n  'aria-level': 0,\n  'aria-modal': 0,\n  'aria-multiline': 0,\n  'aria-multiselectable': 0,\n  'aria-orientation': 0,\n  'aria-placeholder': 0,\n  'aria-pressed': 0,\n  'aria-readonly': 0,\n  'aria-required': 0,\n  'aria-selected': 0,\n  'aria-sort': 0,\n  'aria-valuemax': 0,\n  'aria-valuemin': 0,\n  'aria-valuenow': 0,\n  'aria-valuetext': 0,\n  // Live Region Attributes\n  'aria-atomic': 0,\n  'aria-busy': 0,\n  'aria-live': 0,\n  'aria-relevant': 0,\n  // Drag-and-Drop Attributes\n  'aria-dropeffect': 0,\n  'aria-grabbed': 0,\n  // Relationship Attributes\n  'aria-activedescendant': 0,\n  'aria-colcount': 0,\n  'aria-colindex': 0,\n  'aria-colspan': 0,\n  'aria-controls': 0,\n  'aria-describedby': 0,\n  'aria-errormessage': 0,\n  'aria-flowto': 0,\n  'aria-labelledby': 0,\n  'aria-owns': 0,\n  'aria-posinset': 0,\n  'aria-rowcount': 0,\n  'aria-rowindex': 0,\n  'aria-rowspan': 0,\n  'aria-setsize': 0\n};\n\nvar warnedProperties = {};\nvar rARIA = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');\nvar rARIACamel = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');\n\nfunction validateProperty(tagName, name) {\n  {\n    if (hasOwnProperty.call(warnedProperties, name) && warnedProperties[name]) {\n      return true;\n    }\n\n    if (rARIACamel.test(name)) {\n      var ariaName = 'aria-' + name.slice(4).toLowerCase();\n      var correctName = ariaProperties.hasOwnProperty(ariaName) ? ariaName : null; // If this is an aria-* attribute, but is not listed in the known DOM\n      // DOM properties, then it is an invalid aria-* attribute.\n\n      if (correctName == null) {\n        error('Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.', name);\n\n        warnedProperties[name] = true;\n        return true;\n      } // aria-* attributes should be lowercase; suggest the lowercase version.\n\n\n      if (name !== correctName) {\n        error('Invalid ARIA attribute `%s`. Did you mean `%s`?', name, correctName);\n\n        warnedProperties[name] = true;\n        return true;\n      }\n    }\n\n    if (rARIA.test(name)) {\n      var lowerCasedName = name.toLowerCase();\n      var standardName = ariaProperties.hasOwnProperty(lowerCasedName) ? lowerCasedName : null; // If this is an aria-* attribute, but is not listed in the known DOM\n      // DOM properties, then it is an invalid aria-* attribute.\n\n      if (standardName == null) {\n        warnedProperties[name] = true;\n        return false;\n      } // aria-* attributes should be lowercase; suggest the lowercase version.\n\n\n      if (name !== standardName) {\n        error('Unknown ARIA attribute `%s`. Did you mean `%s`?', name, standardName);\n\n        warnedProperties[name] = true;\n        return true;\n      }\n    }\n  }\n\n  return true;\n}\n\nfunction warnInvalidARIAProps(type, props) {\n  {\n    var invalidProps = [];\n\n    for (var key in props) {\n      var isValid = validateProperty(type, key);\n\n      if (!isValid) {\n        invalidProps.push(key);\n      }\n    }\n\n    var unknownPropString = invalidProps.map(function (prop) {\n      return '`' + prop + '`';\n    }).join(', ');\n\n    if (invalidProps.length === 1) {\n      error('Invalid aria prop %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type);\n    } else if (invalidProps.length > 1) {\n      error('Invalid aria props %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type);\n    }\n  }\n}\n\nfunction validateProperties(type, props) {\n  if (isCustomComponent(type, props)) {\n    return;\n  }\n\n  warnInvalidARIAProps(type, props);\n}\n\nvar didWarnValueNull = false;\nfunction validateProperties$1(type, props) {\n  {\n    if (type !== 'input' && type !== 'textarea' && type !== 'select') {\n      return;\n    }\n\n    if (props != null && props.value === null && !didWarnValueNull) {\n      didWarnValueNull = true;\n\n      if (type === 'select' && props.multiple) {\n        error('`value` prop on `%s` should not be null. ' + 'Consider using an empty array when `multiple` is set to `true` ' + 'to clear the component or `undefined` for uncontrolled components.', type);\n      } else {\n        error('`value` prop on `%s` should not be null. ' + 'Consider using an empty string to clear the component or `undefined` ' + 'for uncontrolled components.', type);\n      }\n    }\n  }\n}\n\n// When adding attributes to the HTML or SVG allowed attribute list, be sure to\n// also add them to this module to ensure casing and incorrect name\n// warnings.\nvar possibleStandardNames = {\n  // HTML\n  accept: 'accept',\n  acceptcharset: 'acceptCharset',\n  'accept-charset': 'acceptCharset',\n  accesskey: 'accessKey',\n  action: 'action',\n  allowfullscreen: 'allowFullScreen',\n  alt: 'alt',\n  as: 'as',\n  async: 'async',\n  autocapitalize: 'autoCapitalize',\n  autocomplete: 'autoComplete',\n  autocorrect: 'autoCorrect',\n  autofocus: 'autoFocus',\n  autoplay: 'autoPlay',\n  autosave: 'autoSave',\n  capture: 'capture',\n  cellpadding: 'cellPadding',\n  cellspacing: 'cellSpacing',\n  challenge: 'challenge',\n  charset: 'charSet',\n  checked: 'checked',\n  children: 'children',\n  cite: 'cite',\n  class: 'className',\n  classid: 'classID',\n  classname: 'className',\n  cols: 'cols',\n  colspan: 'colSpan',\n  content: 'content',\n  contenteditable: 'contentEditable',\n  contextmenu: 'contextMenu',\n  controls: 'controls',\n  controlslist: 'controlsList',\n  coords: 'coords',\n  crossorigin: 'crossOrigin',\n  dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',\n  data: 'data',\n  datetime: 'dateTime',\n  default: 'default',\n  defaultchecked: 'defaultChecked',\n  defaultvalue: 'defaultValue',\n  defer: 'defer',\n  dir: 'dir',\n  disabled: 'disabled',\n  disablepictureinpicture: 'disablePictureInPicture',\n  disableremoteplayback: 'disableRemotePlayback',\n  download: 'download',\n  draggable: 'draggable',\n  enctype: 'encType',\n  enterkeyhint: 'enterKeyHint',\n  for: 'htmlFor',\n  form: 'form',\n  formmethod: 'formMethod',\n  formaction: 'formAction',\n  formenctype: 'formEncType',\n  formnovalidate: 'formNoValidate',\n  formtarget: 'formTarget',\n  frameborder: 'frameBorder',\n  headers: 'headers',\n  height: 'height',\n  hidden: 'hidden',\n  high: 'high',\n  href: 'href',\n  hreflang: 'hrefLang',\n  htmlfor: 'htmlFor',\n  httpequiv: 'httpEquiv',\n  'http-equiv': 'httpEquiv',\n  icon: 'icon',\n  id: 'id',\n  imagesizes: 'imageSizes',\n  imagesrcset: 'imageSrcSet',\n  innerhtml: 'innerHTML',\n  inputmode: 'inputMode',\n  integrity: 'integrity',\n  is: 'is',\n  itemid: 'itemID',\n  itemprop: 'itemProp',\n  itemref: 'itemRef',\n  itemscope: 'itemScope',\n  itemtype: 'itemType',\n  keyparams: 'keyParams',\n  keytype: 'keyType',\n  kind: 'kind',\n  label: 'label',\n  lang: 'lang',\n  list: 'list',\n  loop: 'loop',\n  low: 'low',\n  manifest: 'manifest',\n  marginwidth: 'marginWidth',\n  marginheight: 'marginHeight',\n  max: 'max',\n  maxlength: 'maxLength',\n  media: 'media',\n  mediagroup: 'mediaGroup',\n  method: 'method',\n  min: 'min',\n  minlength: 'minLength',\n  multiple: 'multiple',\n  muted: 'muted',\n  name: 'name',\n  nomodule: 'noModule',\n  nonce: 'nonce',\n  novalidate: 'noValidate',\n  open: 'open',\n  optimum: 'optimum',\n  pattern: 'pattern',\n  placeholder: 'placeholder',\n  playsinline: 'playsInline',\n  poster: 'poster',\n  preload: 'preload',\n  profile: 'profile',\n  radiogroup: 'radioGroup',\n  readonly: 'readOnly',\n  referrerpolicy: 'referrerPolicy',\n  rel: 'rel',\n  required: 'required',\n  reversed: 'reversed',\n  role: 'role',\n  rows: 'rows',\n  rowspan: 'rowSpan',\n  sandbox: 'sandbox',\n  scope: 'scope',\n  scoped: 'scoped',\n  scrolling: 'scrolling',\n  seamless: 'seamless',\n  selected: 'selected',\n  shape: 'shape',\n  size: 'size',\n  sizes: 'sizes',\n  span: 'span',\n  spellcheck: 'spellCheck',\n  src: 'src',\n  srcdoc: 'srcDoc',\n  srclang: 'srcLang',\n  srcset: 'srcSet',\n  start: 'start',\n  step: 'step',\n  style: 'style',\n  summary: 'summary',\n  tabindex: 'tabIndex',\n  target: 'target',\n  title: 'title',\n  type: 'type',\n  usemap: 'useMap',\n  value: 'value',\n  width: 'width',\n  wmode: 'wmode',\n  wrap: 'wrap',\n  // SVG\n  about: 'about',\n  accentheight: 'accentHeight',\n  'accent-height': 'accentHeight',\n  accumulate: 'accumulate',\n  additive: 'additive',\n  alignmentbaseline: 'alignmentBaseline',\n  'alignment-baseline': 'alignmentBaseline',\n  allowreorder: 'allowReorder',\n  alphabetic: 'alphabetic',\n  amplitude: 'amplitude',\n  arabicform: 'arabicForm',\n  'arabic-form': 'arabicForm',\n  ascent: 'ascent',\n  attributename: 'attributeName',\n  attributetype: 'attributeType',\n  autoreverse: 'autoReverse',\n  azimuth: 'azimuth',\n  basefrequency: 'baseFrequency',\n  baselineshift: 'baselineShift',\n  'baseline-shift': 'baselineShift',\n  baseprofile: 'baseProfile',\n  bbox: 'bbox',\n  begin: 'begin',\n  bias: 'bias',\n  by: 'by',\n  calcmode: 'calcMode',\n  capheight: 'capHeight',\n  'cap-height': 'capHeight',\n  clip: 'clip',\n  clippath: 'clipPath',\n  'clip-path': 'clipPath',\n  clippathunits: 'clipPathUnits',\n  cliprule: 'clipRule',\n  'clip-rule': 'clipRule',\n  color: 'color',\n  colorinterpolation: 'colorInterpolation',\n  'color-interpolation': 'colorInterpolation',\n  colorinterpolationfilters: 'colorInterpolationFilters',\n  'color-interpolation-filters': 'colorInterpolationFilters',\n  colorprofile: 'colorProfile',\n  'color-profile': 'colorProfile',\n  colorrendering: 'colorRendering',\n  'color-rendering': 'colorRendering',\n  contentscripttype: 'contentScriptType',\n  contentstyletype: 'contentStyleType',\n  cursor: 'cursor',\n  cx: 'cx',\n  cy: 'cy',\n  d: 'd',\n  datatype: 'datatype',\n  decelerate: 'decelerate',\n  descent: 'descent',\n  diffuseconstant: 'diffuseConstant',\n  direction: 'direction',\n  display: 'display',\n  divisor: 'divisor',\n  dominantbaseline: 'dominantBaseline',\n  'dominant-baseline': 'dominantBaseline',\n  dur: 'dur',\n  dx: 'dx',\n  dy: 'dy',\n  edgemode: 'edgeMode',\n  elevation: 'elevation',\n  enablebackground: 'enableBackground',\n  'enable-background': 'enableBackground',\n  end: 'end',\n  exponent: 'exponent',\n  externalresourcesrequired: 'externalResourcesRequired',\n  fill: 'fill',\n  fillopacity: 'fillOpacity',\n  'fill-opacity': 'fillOpacity',\n  fillrule: 'fillRule',\n  'fill-rule': 'fillRule',\n  filter: 'filter',\n  filterres: 'filterRes',\n  filterunits: 'filterUnits',\n  floodopacity: 'floodOpacity',\n  'flood-opacity': 'floodOpacity',\n  floodcolor: 'floodColor',\n  'flood-color': 'floodColor',\n  focusable: 'focusable',\n  fontfamily: 'fontFamily',\n  'font-family': 'fontFamily',\n  fontsize: 'fontSize',\n  'font-size': 'fontSize',\n  fontsizeadjust: 'fontSizeAdjust',\n  'font-size-adjust': 'fontSizeAdjust',\n  fontstretch: 'fontStretch',\n  'font-stretch': 'fontStretch',\n  fontstyle: 'fontStyle',\n  'font-style': 'fontStyle',\n  fontvariant: 'fontVariant',\n  'font-variant': 'fontVariant',\n  fontweight: 'fontWeight',\n  'font-weight': 'fontWeight',\n  format: 'format',\n  from: 'from',\n  fx: 'fx',\n  fy: 'fy',\n  g1: 'g1',\n  g2: 'g2',\n  glyphname: 'glyphName',\n  'glyph-name': 'glyphName',\n  glyphorientationhorizontal: 'glyphOrientationHorizontal',\n  'glyph-orientation-horizontal': 'glyphOrientationHorizontal',\n  glyphorientationvertical: 'glyphOrientationVertical',\n  'glyph-orientation-vertical': 'glyphOrientationVertical',\n  glyphref: 'glyphRef',\n  gradienttransform: 'gradientTransform',\n  gradientunits: 'gradientUnits',\n  hanging: 'hanging',\n  horizadvx: 'horizAdvX',\n  'horiz-adv-x': 'horizAdvX',\n  horizoriginx: 'horizOriginX',\n  'horiz-origin-x': 'horizOriginX',\n  ideographic: 'ideographic',\n  imagerendering: 'imageRendering',\n  'image-rendering': 'imageRendering',\n  in2: 'in2',\n  in: 'in',\n  inlist: 'inlist',\n  intercept: 'intercept',\n  k1: 'k1',\n  k2: 'k2',\n  k3: 'k3',\n  k4: 'k4',\n  k: 'k',\n  kernelmatrix: 'kernelMatrix',\n  kernelunitlength: 'kernelUnitLength',\n  kerning: 'kerning',\n  keypoints: 'keyPoints',\n  keysplines: 'keySplines',\n  keytimes: 'keyTimes',\n  lengthadjust: 'lengthAdjust',\n  letterspacing: 'letterSpacing',\n  'letter-spacing': 'letterSpacing',\n  lightingcolor: 'lightingColor',\n  'lighting-color': 'lightingColor',\n  limitingconeangle: 'limitingConeAngle',\n  local: 'local',\n  markerend: 'markerEnd',\n  'marker-end': 'markerEnd',\n  markerheight: 'markerHeight',\n  markermid: 'markerMid',\n  'marker-mid': 'markerMid',\n  markerstart: 'markerStart',\n  'marker-start': 'markerStart',\n  markerunits: 'markerUnits',\n  markerwidth: 'markerWidth',\n  mask: 'mask',\n  maskcontentunits: 'maskContentUnits',\n  maskunits: 'maskUnits',\n  mathematical: 'mathematical',\n  mode: 'mode',\n  numoctaves: 'numOctaves',\n  offset: 'offset',\n  opacity: 'opacity',\n  operator: 'operator',\n  order: 'order',\n  orient: 'orient',\n  orientation: 'orientation',\n  origin: 'origin',\n  overflow: 'overflow',\n  overlineposition: 'overlinePosition',\n  'overline-position': 'overlinePosition',\n  overlinethickness: 'overlineThickness',\n  'overline-thickness': 'overlineThickness',\n  paintorder: 'paintOrder',\n  'paint-order': 'paintOrder',\n  panose1: 'panose1',\n  'panose-1': 'panose1',\n  pathlength: 'pathLength',\n  patterncontentunits: 'patternContentUnits',\n  patterntransform: 'patternTransform',\n  patternunits: 'patternUnits',\n  pointerevents: 'pointerEvents',\n  'pointer-events': 'pointerEvents',\n  points: 'points',\n  pointsatx: 'pointsAtX',\n  pointsaty: 'pointsAtY',\n  pointsatz: 'pointsAtZ',\n  prefix: 'prefix',\n  preservealpha: 'preserveAlpha',\n  preserveaspectratio: 'preserveAspectRatio',\n  primitiveunits: 'primitiveUnits',\n  property: 'property',\n  r: 'r',\n  radius: 'radius',\n  refx: 'refX',\n  refy: 'refY',\n  renderingintent: 'renderingIntent',\n  'rendering-intent': 'renderingIntent',\n  repeatcount: 'repeatCount',\n  repeatdur: 'repeatDur',\n  requiredextensions: 'requiredExtensions',\n  requiredfeatures: 'requiredFeatures',\n  resource: 'resource',\n  restart: 'restart',\n  result: 'result',\n  results: 'results',\n  rotate: 'rotate',\n  rx: 'rx',\n  ry: 'ry',\n  scale: 'scale',\n  security: 'security',\n  seed: 'seed',\n  shaperendering: 'shapeRendering',\n  'shape-rendering': 'shapeRendering',\n  slope: 'slope',\n  spacing: 'spacing',\n  specularconstant: 'specularConstant',\n  specularexponent: 'specularExponent',\n  speed: 'speed',\n  spreadmethod: 'spreadMethod',\n  startoffset: 'startOffset',\n  stddeviation: 'stdDeviation',\n  stemh: 'stemh',\n  stemv: 'stemv',\n  stitchtiles: 'stitchTiles',\n  stopcolor: 'stopColor',\n  'stop-color': 'stopColor',\n  stopopacity: 'stopOpacity',\n  'stop-opacity': 'stopOpacity',\n  strikethroughposition: 'strikethroughPosition',\n  'strikethrough-position': 'strikethroughPosition',\n  strikethroughthickness: 'strikethroughThickness',\n  'strikethrough-thickness': 'strikethroughThickness',\n  string: 'string',\n  stroke: 'stroke',\n  strokedasharray: 'strokeDasharray',\n  'stroke-dasharray': 'strokeDasharray',\n  strokedashoffset: 'strokeDashoffset',\n  'stroke-dashoffset': 'strokeDashoffset',\n  strokelinecap: 'strokeLinecap',\n  'stroke-linecap': 'strokeLinecap',\n  strokelinejoin: 'strokeLinejoin',\n  'stroke-linejoin': 'strokeLinejoin',\n  strokemiterlimit: 'strokeMiterlimit',\n  'stroke-miterlimit': 'strokeMiterlimit',\n  strokewidth: 'strokeWidth',\n  'stroke-width': 'strokeWidth',\n  strokeopacity: 'strokeOpacity',\n  'stroke-opacity': 'strokeOpacity',\n  suppresscontenteditablewarning: 'suppressContentEditableWarning',\n  suppresshydrationwarning: 'suppressHydrationWarning',\n  surfacescale: 'surfaceScale',\n  systemlanguage: 'systemLanguage',\n  tablevalues: 'tableValues',\n  targetx: 'targetX',\n  targety: 'targetY',\n  textanchor: 'textAnchor',\n  'text-anchor': 'textAnchor',\n  textdecoration: 'textDecoration',\n  'text-decoration': 'textDecoration',\n  textlength: 'textLength',\n  textrendering: 'textRendering',\n  'text-rendering': 'textRendering',\n  to: 'to',\n  transform: 'transform',\n  typeof: 'typeof',\n  u1: 'u1',\n  u2: 'u2',\n  underlineposition: 'underlinePosition',\n  'underline-position': 'underlinePosition',\n  underlinethickness: 'underlineThickness',\n  'underline-thickness': 'underlineThickness',\n  unicode: 'unicode',\n  unicodebidi: 'unicodeBidi',\n  'unicode-bidi': 'unicodeBidi',\n  unicoderange: 'unicodeRange',\n  'unicode-range': 'unicodeRange',\n  unitsperem: 'unitsPerEm',\n  'units-per-em': 'unitsPerEm',\n  unselectable: 'unselectable',\n  valphabetic: 'vAlphabetic',\n  'v-alphabetic': 'vAlphabetic',\n  values: 'values',\n  vectoreffect: 'vectorEffect',\n  'vector-effect': 'vectorEffect',\n  version: 'version',\n  vertadvy: 'vertAdvY',\n  'vert-adv-y': 'vertAdvY',\n  vertoriginx: 'vertOriginX',\n  'vert-origin-x': 'vertOriginX',\n  vertoriginy: 'vertOriginY',\n  'vert-origin-y': 'vertOriginY',\n  vhanging: 'vHanging',\n  'v-hanging': 'vHanging',\n  videographic: 'vIdeographic',\n  'v-ideographic': 'vIdeographic',\n  viewbox: 'viewBox',\n  viewtarget: 'viewTarget',\n  visibility: 'visibility',\n  vmathematical: 'vMathematical',\n  'v-mathematical': 'vMathematical',\n  vocab: 'vocab',\n  widths: 'widths',\n  wordspacing: 'wordSpacing',\n  'word-spacing': 'wordSpacing',\n  writingmode: 'writingMode',\n  'writing-mode': 'writingMode',\n  x1: 'x1',\n  x2: 'x2',\n  x: 'x',\n  xchannelselector: 'xChannelSelector',\n  xheight: 'xHeight',\n  'x-height': 'xHeight',\n  xlinkactuate: 'xlinkActuate',\n  'xlink:actuate': 'xlinkActuate',\n  xlinkarcrole: 'xlinkArcrole',\n  'xlink:arcrole': 'xlinkArcrole',\n  xlinkhref: 'xlinkHref',\n  'xlink:href': 'xlinkHref',\n  xlinkrole: 'xlinkRole',\n  'xlink:role': 'xlinkRole',\n  xlinkshow: 'xlinkShow',\n  'xlink:show': 'xlinkShow',\n  xlinktitle: 'xlinkTitle',\n  'xlink:title': 'xlinkTitle',\n  xlinktype: 'xlinkType',\n  'xlink:type': 'xlinkType',\n  xmlbase: 'xmlBase',\n  'xml:base': 'xmlBase',\n  xmllang: 'xmlLang',\n  'xml:lang': 'xmlLang',\n  xmlns: 'xmlns',\n  'xml:space': 'xmlSpace',\n  xmlnsxlink: 'xmlnsXlink',\n  'xmlns:xlink': 'xmlnsXlink',\n  xmlspace: 'xmlSpace',\n  y1: 'y1',\n  y2: 'y2',\n  y: 'y',\n  ychannelselector: 'yChannelSelector',\n  z: 'z',\n  zoomandpan: 'zoomAndPan'\n};\n\nvar validateProperty$1 = function () {};\n\n{\n  var warnedProperties$1 = {};\n  var EVENT_NAME_REGEX = /^on./;\n  var INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/;\n  var rARIA$1 = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');\n  var rARIACamel$1 = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');\n\n  validateProperty$1 = function (tagName, name, value, eventRegistry) {\n    if (hasOwnProperty.call(warnedProperties$1, name) && warnedProperties$1[name]) {\n      return true;\n    }\n\n    var lowerCasedName = name.toLowerCase();\n\n    if (lowerCasedName === 'onfocusin' || lowerCasedName === 'onfocusout') {\n      error('React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.');\n\n      warnedProperties$1[name] = true;\n      return true;\n    } // We can't rely on the event system being injected on the server.\n\n\n    if (eventRegistry != null) {\n      var registrationNameDependencies = eventRegistry.registrationNameDependencies,\n          possibleRegistrationNames = eventRegistry.possibleRegistrationNames;\n\n      if (registrationNameDependencies.hasOwnProperty(name)) {\n        return true;\n      }\n\n      var registrationName = possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames[lowerCasedName] : null;\n\n      if (registrationName != null) {\n        error('Invalid event handler property `%s`. Did you mean `%s`?', name, registrationName);\n\n        warnedProperties$1[name] = true;\n        return true;\n      }\n\n      if (EVENT_NAME_REGEX.test(name)) {\n        error('Unknown event handler property `%s`. It will be ignored.', name);\n\n        warnedProperties$1[name] = true;\n        return true;\n      }\n    } else if (EVENT_NAME_REGEX.test(name)) {\n      // If no event plugins have been injected, we are in a server environment.\n      // So we can't tell if the event name is correct for sure, but we can filter\n      // out known bad ones like `onclick`. We can't suggest a specific replacement though.\n      if (INVALID_EVENT_NAME_REGEX.test(name)) {\n        error('Invalid event handler property `%s`. ' + 'React events use the camelCase naming convention, for example `onClick`.', name);\n      }\n\n      warnedProperties$1[name] = true;\n      return true;\n    } // Let the ARIA attribute hook validate ARIA attributes\n\n\n    if (rARIA$1.test(name) || rARIACamel$1.test(name)) {\n      return true;\n    }\n\n    if (lowerCasedName === 'innerhtml') {\n      error('Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.');\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (lowerCasedName === 'aria') {\n      error('The `aria` attribute is reserved for future use in React. ' + 'Pass individual `aria-` attributes instead.');\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (lowerCasedName === 'is' && value !== null && value !== undefined && typeof value !== 'string') {\n      error('Received a `%s` for a string attribute `is`. If this is expected, cast ' + 'the value to a string.', typeof value);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (typeof value === 'number' && isNaN(value)) {\n      error('Received NaN for the `%s` attribute. If this is expected, cast ' + 'the value to a string.', name);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    var propertyInfo = getPropertyInfo(name);\n    var isReserved = propertyInfo !== null && propertyInfo.type === RESERVED; // Known attributes should match the casing specified in the property config.\n\n    if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n      var standardName = possibleStandardNames[lowerCasedName];\n\n      if (standardName !== name) {\n        error('Invalid DOM property `%s`. Did you mean `%s`?', name, standardName);\n\n        warnedProperties$1[name] = true;\n        return true;\n      }\n    } else if (!isReserved && name !== lowerCasedName) {\n      // Unknown attributes should have lowercase casing since that's how they\n      // will be cased anyway with server rendering.\n      error('React does not recognize the `%s` prop on a DOM element. If you ' + 'intentionally want it to appear in the DOM as a custom ' + 'attribute, spell it as lowercase `%s` instead. ' + 'If you accidentally passed it from a parent component, remove ' + 'it from the DOM element.', name, lowerCasedName);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (typeof value === 'boolean' && shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {\n      if (value) {\n        error('Received `%s` for a non-boolean attribute `%s`.\\n\\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s=\"%s\" or %s={value.toString()}.', value, name, name, value, name);\n      } else {\n        error('Received `%s` for a non-boolean attribute `%s`.\\n\\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s=\"%s\" or %s={value.toString()}.\\n\\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', value, name, name, value, name, name, name);\n      }\n\n      warnedProperties$1[name] = true;\n      return true;\n    } // Now that we've validated casing, do not validate\n    // data types for reserved props\n\n\n    if (isReserved) {\n      return true;\n    } // Warn when a known attribute is a bad type\n\n\n    if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {\n      warnedProperties$1[name] = true;\n      return false;\n    } // Warn when passing the strings 'false' or 'true' into a boolean prop\n\n\n    if ((value === 'false' || value === 'true') && propertyInfo !== null && propertyInfo.type === BOOLEAN) {\n      error('Received the string `%s` for the boolean attribute `%s`. ' + '%s ' + 'Did you mean %s={%s}?', value, name, value === 'false' ? 'The browser will interpret it as a truthy value.' : 'Although this works, it will not work as expected if you pass the string \"false\".', name, value);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    return true;\n  };\n}\n\nvar warnUnknownProperties = function (type, props, eventRegistry) {\n  {\n    var unknownProps = [];\n\n    for (var key in props) {\n      var isValid = validateProperty$1(type, key, props[key], eventRegistry);\n\n      if (!isValid) {\n        unknownProps.push(key);\n      }\n    }\n\n    var unknownPropString = unknownProps.map(function (prop) {\n      return '`' + prop + '`';\n    }).join(', ');\n\n    if (unknownProps.length === 1) {\n      error('Invalid value for prop %s on <%s> tag. Either remove it from the element, ' + 'or pass a string or number value to keep it in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type);\n    } else if (unknownProps.length > 1) {\n      error('Invalid values for props %s on <%s> tag. Either remove them from the element, ' + 'or pass a string or number value to keep them in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type);\n    }\n  }\n};\n\nfunction validateProperties$2(type, props, eventRegistry) {\n  if (isCustomComponent(type, props)) {\n    return;\n  }\n\n  warnUnknownProperties(type, props, eventRegistry);\n}\n\nvar warnValidStyle = function () {};\n\n{\n  // 'msTransform' is correct, but the other prefixes should be capitalized\n  var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n  var msPattern = /^-ms-/;\n  var hyphenPattern = /-(.)/g; // style values shouldn't contain a semicolon\n\n  var badStyleValueWithSemicolonPattern = /;\\s*$/;\n  var warnedStyleNames = {};\n  var warnedStyleValues = {};\n  var warnedForNaNValue = false;\n  var warnedForInfinityValue = false;\n\n  var camelize = function (string) {\n    return string.replace(hyphenPattern, function (_, character) {\n      return character.toUpperCase();\n    });\n  };\n\n  var warnHyphenatedStyleName = function (name) {\n    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n      return;\n    }\n\n    warnedStyleNames[name] = true;\n\n    error('Unsupported style property %s. Did you mean %s?', name, // As Andi Smith suggests\n    // (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n    // is converted to lowercase `ms`.\n    camelize(name.replace(msPattern, 'ms-')));\n  };\n\n  var warnBadVendoredStyleName = function (name) {\n    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n      return;\n    }\n\n    warnedStyleNames[name] = true;\n\n    error('Unsupported vendor-prefixed style property %s. Did you mean %s?', name, name.charAt(0).toUpperCase() + name.slice(1));\n  };\n\n  var warnStyleValueWithSemicolon = function (name, value) {\n    if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n      return;\n    }\n\n    warnedStyleValues[value] = true;\n\n    error(\"Style property values shouldn't contain a semicolon. \" + 'Try \"%s: %s\" instead.', name, value.replace(badStyleValueWithSemicolonPattern, ''));\n  };\n\n  var warnStyleValueIsNaN = function (name, value) {\n    if (warnedForNaNValue) {\n      return;\n    }\n\n    warnedForNaNValue = true;\n\n    error('`NaN` is an invalid value for the `%s` css style property.', name);\n  };\n\n  var warnStyleValueIsInfinity = function (name, value) {\n    if (warnedForInfinityValue) {\n      return;\n    }\n\n    warnedForInfinityValue = true;\n\n    error('`Infinity` is an invalid value for the `%s` css style property.', name);\n  };\n\n  warnValidStyle = function (name, value) {\n    if (name.indexOf('-') > -1) {\n      warnHyphenatedStyleName(name);\n    } else if (badVendoredStyleNamePattern.test(name)) {\n      warnBadVendoredStyleName(name);\n    } else if (badStyleValueWithSemicolonPattern.test(value)) {\n      warnStyleValueWithSemicolon(name, value);\n    }\n\n    if (typeof value === 'number') {\n      if (isNaN(value)) {\n        warnStyleValueIsNaN(name, value);\n      } else if (!isFinite(value)) {\n        warnStyleValueIsInfinity(name, value);\n      }\n    }\n  };\n}\n\nvar warnValidStyle$1 = warnValidStyle;\n\n// code copied and modified from escape-html\nvar matchHtmlRegExp = /[\"'&<>]/;\n/**\n * Escapes special characters and HTML entities in a given html string.\n *\n * @param  {string} string HTML string to escape for later insertion\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n  {\n    checkHtmlStringCoercion(string);\n  }\n\n  var str = '' + string;\n  var match = matchHtmlRegExp.exec(str);\n\n  if (!match) {\n    return str;\n  }\n\n  var escape;\n  var html = '';\n  var index;\n  var lastIndex = 0;\n\n  for (index = match.index; index < str.length; index++) {\n    switch (str.charCodeAt(index)) {\n      case 34:\n        // \"\n        escape = '&quot;';\n        break;\n\n      case 38:\n        // &\n        escape = '&amp;';\n        break;\n\n      case 39:\n        // '\n        escape = '&#x27;'; // modified from escape-html; used to be '&#39'\n\n        break;\n\n      case 60:\n        // <\n        escape = '&lt;';\n        break;\n\n      case 62:\n        // >\n        escape = '&gt;';\n        break;\n\n      default:\n        continue;\n    }\n\n    if (lastIndex !== index) {\n      html += str.substring(lastIndex, index);\n    }\n\n    lastIndex = index + 1;\n    html += escape;\n  }\n\n  return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n} // end code copied and modified from escape-html\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\n\n\nfunction escapeTextForBrowser(text) {\n  if (typeof text === 'boolean' || typeof text === 'number') {\n    // this shortcircuit helps perf for types that we know will never have\n    // special characters, especially given that this function is used often\n    // for numeric dom ids.\n    return '' + text;\n  }\n\n  return escapeHtml(text);\n}\n\nvar uppercasePattern = /([A-Z])/g;\nvar msPattern$1 = /^ms-/;\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n *   > hyphenateStyleName('backgroundColor')\n *   < \"background-color\"\n *   > hyphenateStyleName('MozTransition')\n *   < \"-moz-transition\"\n *   > hyphenateStyleName('msTransition')\n *   < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n */\n\nfunction hyphenateStyleName(name) {\n  return name.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern$1, '-ms-');\n}\n\n// and any newline or tab are filtered out as if they're not part of the URL.\n// https://url.spec.whatwg.org/#url-parsing\n// Tab or newline are defined as \\r\\n\\t:\n// https://infra.spec.whatwg.org/#ascii-tab-or-newline\n// A C0 control is a code point in the range \\u0000 NULL to \\u001F\n// INFORMATION SEPARATOR ONE, inclusive:\n// https://infra.spec.whatwg.org/#c0-control-or-space\n\n/* eslint-disable max-len */\n\nvar isJavaScriptProtocol = /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*\\:/i;\nvar didWarn = false;\n\nfunction sanitizeURL(url) {\n  {\n    if (!didWarn && isJavaScriptProtocol.test(url)) {\n      didWarn = true;\n\n      error('A future version of React will block javascript: URLs as a security precaution. ' + 'Use event handlers instead if you can. If you need to generate unsafe HTML try ' + 'using dangerouslySetInnerHTML instead. React was passed %s.', JSON.stringify(url));\n    }\n  }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\nvar startInlineScript = stringToPrecomputedChunk('<script>');\nvar endInlineScript = stringToPrecomputedChunk('</script>');\nvar startScriptSrc = stringToPrecomputedChunk('<script src=\"');\nvar startModuleSrc = stringToPrecomputedChunk('<script type=\"module\" src=\"');\nvar endAsyncScript = stringToPrecomputedChunk('\" async=\"\"></script>'); // Allows us to keep track of what we've already written so we can refer back to it.\n\nfunction createResponseState(identifierPrefix, nonce, bootstrapScriptContent, bootstrapScripts, bootstrapModules) {\n  var idPrefix = identifierPrefix === undefined ? '' : identifierPrefix;\n  var inlineScriptWithNonce = nonce === undefined ? startInlineScript : stringToPrecomputedChunk('<script nonce=\"' + escapeTextForBrowser(nonce) + '\">');\n  var bootstrapChunks = [];\n\n  if (bootstrapScriptContent !== undefined) {\n    bootstrapChunks.push(inlineScriptWithNonce, stringToChunk(escapeTextForBrowser(bootstrapScriptContent)), endInlineScript);\n  }\n\n  if (bootstrapScripts !== undefined) {\n    for (var i = 0; i < bootstrapScripts.length; i++) {\n      bootstrapChunks.push(startScriptSrc, stringToChunk(escapeTextForBrowser(bootstrapScripts[i])), endAsyncScript);\n    }\n  }\n\n  if (bootstrapModules !== undefined) {\n    for (var _i = 0; _i < bootstrapModules.length; _i++) {\n      bootstrapChunks.push(startModuleSrc, stringToChunk(escapeTextForBrowser(bootstrapModules[_i])), endAsyncScript);\n    }\n  }\n\n  return {\n    bootstrapChunks: bootstrapChunks,\n    startInlineScript: inlineScriptWithNonce,\n    placeholderPrefix: stringToPrecomputedChunk(idPrefix + 'P:'),\n    segmentPrefix: stringToPrecomputedChunk(idPrefix + 'S:'),\n    boundaryPrefix: idPrefix + 'B:',\n    idPrefix: idPrefix,\n    nextSuspenseID: 0,\n    sentCompleteSegmentFunction: false,\n    sentCompleteBoundaryFunction: false,\n    sentClientRenderFunction: false\n  };\n} // Constants for the insertion mode we're currently writing in. We don't encode all HTML5 insertion\n// modes. We only include the variants as they matter for the sake of our purposes.\n// We don't actually provide the namespace therefore we use constants instead of the string.\n\nvar ROOT_HTML_MODE = 0; // Used for the root most element tag.\n\nvar HTML_MODE = 1;\nvar SVG_MODE = 2;\nvar MATHML_MODE = 3;\nvar HTML_TABLE_MODE = 4;\nvar HTML_TABLE_BODY_MODE = 5;\nvar HTML_TABLE_ROW_MODE = 6;\nvar HTML_COLGROUP_MODE = 7; // We have a greater than HTML_TABLE_MODE check elsewhere. If you add more cases here, make sure it\n// still makes sense\n\nfunction createFormatContext(insertionMode, selectedValue) {\n  return {\n    insertionMode: insertionMode,\n    selectedValue: selectedValue\n  };\n}\n\nfunction createRootFormatContext(namespaceURI) {\n  var insertionMode = namespaceURI === 'http://www.w3.org/2000/svg' ? SVG_MODE : namespaceURI === 'http://www.w3.org/1998/Math/MathML' ? MATHML_MODE : ROOT_HTML_MODE;\n  return createFormatContext(insertionMode, null);\n}\nfunction getChildFormatContext(parentContext, type, props) {\n  switch (type) {\n    case 'select':\n      return createFormatContext(HTML_MODE, props.value != null ? props.value : props.defaultValue);\n\n    case 'svg':\n      return createFormatContext(SVG_MODE, null);\n\n    case 'math':\n      return createFormatContext(MATHML_MODE, null);\n\n    case 'foreignObject':\n      return createFormatContext(HTML_MODE, null);\n    // Table parents are special in that their children can only be created at all if they're\n    // wrapped in a table parent. So we need to encode that we're entering this mode.\n\n    case 'table':\n      return createFormatContext(HTML_TABLE_MODE, null);\n\n    case 'thead':\n    case 'tbody':\n    case 'tfoot':\n      return createFormatContext(HTML_TABLE_BODY_MODE, null);\n\n    case 'colgroup':\n      return createFormatContext(HTML_COLGROUP_MODE, null);\n\n    case 'tr':\n      return createFormatContext(HTML_TABLE_ROW_MODE, null);\n  }\n\n  if (parentContext.insertionMode >= HTML_TABLE_MODE) {\n    // Whatever tag this was, it wasn't a table parent or other special parent, so we must have\n    // entered plain HTML again.\n    return createFormatContext(HTML_MODE, null);\n  }\n\n  if (parentContext.insertionMode === ROOT_HTML_MODE) {\n    // We've emitted the root and is now in plain HTML mode.\n    return createFormatContext(HTML_MODE, null);\n  }\n\n  return parentContext;\n}\nvar UNINITIALIZED_SUSPENSE_BOUNDARY_ID = null;\nfunction assignSuspenseBoundaryID(responseState) {\n  var generatedID = responseState.nextSuspenseID++;\n  return stringToPrecomputedChunk(responseState.boundaryPrefix + generatedID.toString(16));\n}\nfunction makeId(responseState, treeId, localId) {\n  var idPrefix = responseState.idPrefix;\n  var id = ':' + idPrefix + 'R' + treeId; // Unless this is the first id at this level, append a number at the end\n  // that represents the position of this useId hook among all the useId\n  // hooks for this fiber.\n\n  if (localId > 0) {\n    id += 'H' + localId.toString(32);\n  }\n\n  return id + ':';\n}\n\nfunction encodeHTMLTextNode(text) {\n  return escapeTextForBrowser(text);\n}\n\nvar textSeparator = stringToPrecomputedChunk('<!-- -->');\nfunction pushTextInstance(target, text, responseState) {\n  if (text === '') {\n    // Empty text doesn't have a DOM node representation and the hydration is aware of this.\n    return;\n  } // TODO: Avoid adding a text separator in common cases.\n\n\n  target.push(stringToChunk(encodeHTMLTextNode(text)), textSeparator);\n}\nvar styleNameCache = new Map();\n\nfunction processStyleName(styleName) {\n  var chunk = styleNameCache.get(styleName);\n\n  if (chunk !== undefined) {\n    return chunk;\n  }\n\n  var result = stringToPrecomputedChunk(escapeTextForBrowser(hyphenateStyleName(styleName)));\n  styleNameCache.set(styleName, result);\n  return result;\n}\n\nvar styleAttributeStart = stringToPrecomputedChunk(' style=\"');\nvar styleAssign = stringToPrecomputedChunk(':');\nvar styleSeparator = stringToPrecomputedChunk(';');\n\nfunction pushStyle(target, responseState, style) {\n  if (typeof style !== 'object') {\n    throw new Error('The `style` prop expects a mapping from style properties to values, ' + \"not a string. For example, style={{marginRight: spacing + 'em'}} when \" + 'using JSX.');\n  }\n\n  var isFirst = true;\n\n  for (var styleName in style) {\n    if (!hasOwnProperty.call(style, styleName)) {\n      continue;\n    } // If you provide unsafe user data here they can inject arbitrary CSS\n    // which may be problematic (I couldn't repro this):\n    // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n    // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n    // This is not an XSS hole but instead a potential CSS injection issue\n    // which has lead to a greater discussion about how we're going to\n    // trust URLs moving forward. See #2115901\n\n\n    var styleValue = style[styleName];\n\n    if (styleValue == null || typeof styleValue === 'boolean' || styleValue === '') {\n      // TODO: We used to set empty string as a style with an empty value. Does that ever make sense?\n      continue;\n    }\n\n    var nameChunk = void 0;\n    var valueChunk = void 0;\n    var isCustomProperty = styleName.indexOf('--') === 0;\n\n    if (isCustomProperty) {\n      nameChunk = stringToChunk(escapeTextForBrowser(styleName));\n\n      {\n        checkCSSPropertyStringCoercion(styleValue, styleName);\n      }\n\n      valueChunk = stringToChunk(escapeTextForBrowser(('' + styleValue).trim()));\n    } else {\n      {\n        warnValidStyle$1(styleName, styleValue);\n      }\n\n      nameChunk = processStyleName(styleName);\n\n      if (typeof styleValue === 'number') {\n        if (styleValue !== 0 && !hasOwnProperty.call(isUnitlessNumber, styleName)) {\n          valueChunk = stringToChunk(styleValue + 'px'); // Presumes implicit 'px' suffix for unitless numbers\n        } else {\n          valueChunk = stringToChunk('' + styleValue);\n        }\n      } else {\n        {\n          checkCSSPropertyStringCoercion(styleValue, styleName);\n        }\n\n        valueChunk = stringToChunk(escapeTextForBrowser(('' + styleValue).trim()));\n      }\n    }\n\n    if (isFirst) {\n      isFirst = false; // If it's first, we don't need any separators prefixed.\n\n      target.push(styleAttributeStart, nameChunk, styleAssign, valueChunk);\n    } else {\n      target.push(styleSeparator, nameChunk, styleAssign, valueChunk);\n    }\n  }\n\n  if (!isFirst) {\n    target.push(attributeEnd);\n  }\n}\n\nvar attributeSeparator = stringToPrecomputedChunk(' ');\nvar attributeAssign = stringToPrecomputedChunk('=\"');\nvar attributeEnd = stringToPrecomputedChunk('\"');\nvar attributeEmptyString = stringToPrecomputedChunk('=\"\"');\n\nfunction pushAttribute(target, responseState, name, value) {\n  switch (name) {\n    case 'style':\n      {\n        pushStyle(target, responseState, value);\n        return;\n      }\n\n    case 'defaultValue':\n    case 'defaultChecked': // These shouldn't be set as attributes on generic HTML elements.\n\n    case 'innerHTML': // Must use dangerouslySetInnerHTML instead.\n\n    case 'suppressContentEditableWarning':\n    case 'suppressHydrationWarning':\n      // Ignored. These are built-in to React on the client.\n      return;\n  }\n\n  if ( // shouldIgnoreAttribute\n  // We have already filtered out null/undefined and reserved words.\n  name.length > 2 && (name[0] === 'o' || name[0] === 'O') && (name[1] === 'n' || name[1] === 'N')) {\n    return;\n  }\n\n  var propertyInfo = getPropertyInfo(name);\n\n  if (propertyInfo !== null) {\n    // shouldRemoveAttribute\n    switch (typeof value) {\n      case 'function': // $FlowIssue symbol is perfectly valid here\n\n      case 'symbol':\n        // eslint-disable-line\n        return;\n\n      case 'boolean':\n        {\n          if (!propertyInfo.acceptsBooleans) {\n            return;\n          }\n        }\n    }\n\n    var attributeName = propertyInfo.attributeName;\n    var attributeNameChunk = stringToChunk(attributeName); // TODO: If it's known we can cache the chunk.\n\n    switch (propertyInfo.type) {\n      case BOOLEAN:\n        if (value) {\n          target.push(attributeSeparator, attributeNameChunk, attributeEmptyString);\n        }\n\n        return;\n\n      case OVERLOADED_BOOLEAN:\n        if (value === true) {\n          target.push(attributeSeparator, attributeNameChunk, attributeEmptyString);\n        } else if (value === false) ; else {\n          target.push(attributeSeparator, attributeNameChunk, attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n        }\n\n        return;\n\n      case NUMERIC:\n        if (!isNaN(value)) {\n          target.push(attributeSeparator, attributeNameChunk, attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n        }\n\n        break;\n\n      case POSITIVE_NUMERIC:\n        if (!isNaN(value) && value >= 1) {\n          target.push(attributeSeparator, attributeNameChunk, attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n        }\n\n        break;\n\n      default:\n        if (propertyInfo.sanitizeURL) {\n          {\n            checkAttributeStringCoercion(value, attributeName);\n          }\n\n          value = '' + value;\n          sanitizeURL(value);\n        }\n\n        target.push(attributeSeparator, attributeNameChunk, attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n    }\n  } else if (isAttributeNameSafe(name)) {\n    // shouldRemoveAttribute\n    switch (typeof value) {\n      case 'function': // $FlowIssue symbol is perfectly valid here\n\n      case 'symbol':\n        // eslint-disable-line\n        return;\n\n      case 'boolean':\n        {\n          var prefix = name.toLowerCase().slice(0, 5);\n\n          if (prefix !== 'data-' && prefix !== 'aria-') {\n            return;\n          }\n        }\n    }\n\n    target.push(attributeSeparator, stringToChunk(name), attributeAssign, stringToChunk(escapeTextForBrowser(value)), attributeEnd);\n  }\n}\n\nvar endOfStartTag = stringToPrecomputedChunk('>');\nvar endOfStartTagSelfClosing = stringToPrecomputedChunk('/>');\n\nfunction pushInnerHTML(target, innerHTML, children) {\n  if (innerHTML != null) {\n    if (children != null) {\n      throw new Error('Can only set one of `children` or `props.dangerouslySetInnerHTML`.');\n    }\n\n    if (typeof innerHTML !== 'object' || !('__html' in innerHTML)) {\n      throw new Error('`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. ' + 'Please visit https://reactjs.org/link/dangerously-set-inner-html ' + 'for more information.');\n    }\n\n    var html = innerHTML.__html;\n\n    if (html !== null && html !== undefined) {\n      {\n        checkHtmlStringCoercion(html);\n      }\n\n      target.push(stringToChunk('' + html));\n    }\n  }\n} // TODO: Move these to ResponseState so that we warn for every request.\n// It would help debugging in stateful servers (e.g. service worker).\n\n\nvar didWarnDefaultInputValue = false;\nvar didWarnDefaultChecked = false;\nvar didWarnDefaultSelectValue = false;\nvar didWarnDefaultTextareaValue = false;\nvar didWarnInvalidOptionChildren = false;\nvar didWarnInvalidOptionInnerHTML = false;\nvar didWarnSelectedSetOnOption = false;\n\nfunction checkSelectProp(props, propName) {\n  {\n    var value = props[propName];\n\n    if (value != null) {\n      var array = isArray(value);\n\n      if (props.multiple && !array) {\n        error('The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.', propName);\n      } else if (!props.multiple && array) {\n        error('The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.', propName);\n      }\n    }\n  }\n}\n\nfunction pushStartSelect(target, props, responseState) {\n  {\n    checkControlledValueProps('select', props);\n    checkSelectProp(props, 'value');\n    checkSelectProp(props, 'defaultValue');\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnDefaultSelectValue) {\n      error('Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components');\n\n      didWarnDefaultSelectValue = true;\n    }\n  }\n\n  target.push(startChunkForTag('select'));\n  var children = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          // TODO: This doesn't really make sense for select since it can't use the controlled\n          // value in the innerHTML.\n          innerHTML = propValue;\n          break;\n\n        case 'defaultValue':\n        case 'value':\n          // These are set on the Context instead and applied to the nested options.\n          break;\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag);\n  pushInnerHTML(target, innerHTML, children);\n  return children;\n}\n\nfunction flattenOptionChildren(children) {\n  var content = ''; // Flatten children and warn if they aren't strings or numbers;\n  // invalid types are ignored.\n\n  React.Children.forEach(children, function (child) {\n    if (child == null) {\n      return;\n    }\n\n    content += child;\n\n    {\n      if (!didWarnInvalidOptionChildren && typeof child !== 'string' && typeof child !== 'number') {\n        didWarnInvalidOptionChildren = true;\n\n        error('Cannot infer the option value of complex children. ' + 'Pass a `value` prop or use a plain string as children to <option>.');\n      }\n    }\n  });\n  return content;\n}\n\nvar selectedMarkerAttribute = stringToPrecomputedChunk(' selected=\"\"');\n\nfunction pushStartOption(target, props, responseState, formatContext) {\n  var selectedValue = formatContext.selectedValue;\n  target.push(startChunkForTag('option'));\n  var children = null;\n  var value = null;\n  var selected = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'selected':\n          // ignore\n          selected = propValue;\n\n          {\n            // TODO: Remove support for `selected` in <option>.\n            if (!didWarnSelectedSetOnOption) {\n              error('Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.');\n\n              didWarnSelectedSetOnOption = true;\n            }\n          }\n\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          innerHTML = propValue;\n          break;\n        // eslint-disable-next-line-no-fallthrough\n\n        case 'value':\n          value = propValue;\n        // We intentionally fallthrough to also set the attribute on the node.\n        // eslint-disable-next-line-no-fallthrough\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  if (selectedValue != null) {\n    var stringValue;\n\n    if (value !== null) {\n      {\n        checkAttributeStringCoercion(value, 'value');\n      }\n\n      stringValue = '' + value;\n    } else {\n      {\n        if (innerHTML !== null) {\n          if (!didWarnInvalidOptionInnerHTML) {\n            didWarnInvalidOptionInnerHTML = true;\n\n            error('Pass a `value` prop if you set dangerouslyInnerHTML so React knows ' + 'which value should be selected.');\n          }\n        }\n      }\n\n      stringValue = flattenOptionChildren(children);\n    }\n\n    if (isArray(selectedValue)) {\n      // multiple\n      for (var i = 0; i < selectedValue.length; i++) {\n        {\n          checkAttributeStringCoercion(selectedValue[i], 'value');\n        }\n\n        var v = '' + selectedValue[i];\n\n        if (v === stringValue) {\n          target.push(selectedMarkerAttribute);\n          break;\n        }\n      }\n    } else {\n      {\n        checkAttributeStringCoercion(selectedValue, 'select.value');\n      }\n\n      if ('' + selectedValue === stringValue) {\n        target.push(selectedMarkerAttribute);\n      }\n    }\n  } else if (selected) {\n    target.push(selectedMarkerAttribute);\n  }\n\n  target.push(endOfStartTag);\n  pushInnerHTML(target, innerHTML, children);\n  return children;\n}\n\nfunction pushInput(target, props, responseState) {\n  {\n    checkControlledValueProps('input', props);\n\n    if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnDefaultChecked) {\n      error('%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', 'A component', props.type);\n\n      didWarnDefaultChecked = true;\n    }\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnDefaultInputValue) {\n      error('%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', 'A component', props.type);\n\n      didWarnDefaultInputValue = true;\n    }\n  }\n\n  target.push(startChunkForTag('input'));\n  var value = null;\n  var defaultValue = null;\n  var checked = null;\n  var defaultChecked = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n        case 'dangerouslySetInnerHTML':\n          throw new Error('input' + \" is a self-closing tag and must neither have `children` nor \" + 'use `dangerouslySetInnerHTML`.');\n        // eslint-disable-next-line-no-fallthrough\n\n        case 'defaultChecked':\n          defaultChecked = propValue;\n          break;\n\n        case 'defaultValue':\n          defaultValue = propValue;\n          break;\n\n        case 'checked':\n          checked = propValue;\n          break;\n\n        case 'value':\n          value = propValue;\n          break;\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  if (checked !== null) {\n    pushAttribute(target, responseState, 'checked', checked);\n  } else if (defaultChecked !== null) {\n    pushAttribute(target, responseState, 'checked', defaultChecked);\n  }\n\n  if (value !== null) {\n    pushAttribute(target, responseState, 'value', value);\n  } else if (defaultValue !== null) {\n    pushAttribute(target, responseState, 'value', defaultValue);\n  }\n\n  target.push(endOfStartTagSelfClosing);\n  return null;\n}\n\nfunction pushStartTextArea(target, props, responseState) {\n  {\n    checkControlledValueProps('textarea', props);\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnDefaultTextareaValue) {\n      error('Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components');\n\n      didWarnDefaultTextareaValue = true;\n    }\n  }\n\n  target.push(startChunkForTag('textarea'));\n  var value = null;\n  var defaultValue = null;\n  var children = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'value':\n          value = propValue;\n          break;\n\n        case 'defaultValue':\n          defaultValue = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          throw new Error('`dangerouslySetInnerHTML` does not make sense on <textarea>.');\n        // eslint-disable-next-line-no-fallthrough\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  if (value === null && defaultValue !== null) {\n    value = defaultValue;\n  }\n\n  target.push(endOfStartTag); // TODO (yungsters): Remove support for children content in <textarea>.\n\n  if (children != null) {\n    {\n      error('Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.');\n    }\n\n    if (value != null) {\n      throw new Error('If you supply `defaultValue` on a <textarea>, do not pass children.');\n    }\n\n    if (isArray(children)) {\n      if (children.length > 1) {\n        throw new Error('<textarea> can only have at most one child.');\n      } // TODO: remove the coercion and the DEV check below because it will\n      // always be overwritten by the coercion several lines below it. #22309\n\n\n      {\n        checkHtmlStringCoercion(children[0]);\n      }\n\n      value = '' + children[0];\n    }\n\n    {\n      checkHtmlStringCoercion(children);\n    }\n\n    value = '' + children;\n  }\n\n  if (typeof value === 'string' && value[0] === '\\n') {\n    // text/html ignores the first character in these tags if it's a newline\n    // Prefer to break application/xml over text/html (for now) by adding\n    // a newline specifically to get eaten by the parser. (Alternately for\n    // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n    // \\r is normalized out by HTMLTextAreaElement#value.)\n    // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n    // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n    // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n    // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n    //  from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n    target.push(leadingNewline);\n  } // ToString and push directly instead of recurse over children.\n  // We don't really support complex children in the value anyway.\n  // This also currently avoids a trailing comment node which breaks textarea.\n\n\n  if (value !== null) {\n    {\n      checkAttributeStringCoercion(value, 'value');\n    }\n\n    target.push(stringToChunk(encodeHTMLTextNode('' + value)));\n  }\n\n  return null;\n}\n\nfunction pushSelfClosing(target, props, tag, responseState) {\n  target.push(startChunkForTag(tag));\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n        case 'dangerouslySetInnerHTML':\n          throw new Error(tag + \" is a self-closing tag and must neither have `children` nor \" + 'use `dangerouslySetInnerHTML`.');\n        // eslint-disable-next-line-no-fallthrough\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTagSelfClosing);\n  return null;\n}\n\nfunction pushStartMenuItem(target, props, responseState) {\n  target.push(startChunkForTag('menuitem'));\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n        case 'dangerouslySetInnerHTML':\n          throw new Error('menuitems cannot have `children` nor `dangerouslySetInnerHTML`.');\n        // eslint-disable-next-line-no-fallthrough\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag);\n  return null;\n}\n\nfunction pushStartGenericElement(target, props, tag, responseState) {\n  target.push(startChunkForTag(tag));\n  var children = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          innerHTML = propValue;\n          break;\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag);\n  pushInnerHTML(target, innerHTML, children);\n\n  if (typeof children === 'string') {\n    // Special case children as a string to avoid the unnecessary comment.\n    // TODO: Remove this special case after the general optimization is in place.\n    target.push(stringToChunk(encodeHTMLTextNode(children)));\n    return null;\n  }\n\n  return children;\n}\n\nfunction pushStartCustomElement(target, props, tag, responseState) {\n  target.push(startChunkForTag(tag));\n  var children = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          innerHTML = propValue;\n          break;\n\n        case 'style':\n          pushStyle(target, responseState, propValue);\n          break;\n\n        case 'suppressContentEditableWarning':\n        case 'suppressHydrationWarning':\n          // Ignored. These are built-in to React on the client.\n          break;\n\n        default:\n          if (isAttributeNameSafe(propKey) && typeof propValue !== 'function' && typeof propValue !== 'symbol') {\n            target.push(attributeSeparator, stringToChunk(propKey), attributeAssign, stringToChunk(escapeTextForBrowser(propValue)), attributeEnd);\n          }\n\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag);\n  pushInnerHTML(target, innerHTML, children);\n  return children;\n}\n\nvar leadingNewline = stringToPrecomputedChunk('\\n');\n\nfunction pushStartPreformattedElement(target, props, tag, responseState) {\n  target.push(startChunkForTag(tag));\n  var children = null;\n  var innerHTML = null;\n\n  for (var propKey in props) {\n    if (hasOwnProperty.call(props, propKey)) {\n      var propValue = props[propKey];\n\n      if (propValue == null) {\n        continue;\n      }\n\n      switch (propKey) {\n        case 'children':\n          children = propValue;\n          break;\n\n        case 'dangerouslySetInnerHTML':\n          innerHTML = propValue;\n          break;\n\n        default:\n          pushAttribute(target, responseState, propKey, propValue);\n          break;\n      }\n    }\n  }\n\n  target.push(endOfStartTag); // text/html ignores the first character in these tags if it's a newline\n  // Prefer to break application/xml over text/html (for now) by adding\n  // a newline specifically to get eaten by the parser. (Alternately for\n  // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n  // \\r is normalized out by HTMLTextAreaElement#value.)\n  // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n  // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n  // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n  // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n  //  from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n  // TODO: This doesn't deal with the case where the child is an array\n  // or component that returns a string.\n\n  if (innerHTML != null) {\n    if (children != null) {\n      throw new Error('Can only set one of `children` or `props.dangerouslySetInnerHTML`.');\n    }\n\n    if (typeof innerHTML !== 'object' || !('__html' in innerHTML)) {\n      throw new Error('`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. ' + 'Please visit https://reactjs.org/link/dangerously-set-inner-html ' + 'for more information.');\n    }\n\n    var html = innerHTML.__html;\n\n    if (html !== null && html !== undefined) {\n      if (typeof html === 'string' && html.length > 0 && html[0] === '\\n') {\n        target.push(leadingNewline, stringToChunk(html));\n      } else {\n        {\n          checkHtmlStringCoercion(html);\n        }\n\n        target.push(stringToChunk('' + html));\n      }\n    }\n  }\n\n  if (typeof children === 'string' && children[0] === '\\n') {\n    target.push(leadingNewline);\n  }\n\n  return children;\n} // We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\n\nvar validatedTagCache = new Map();\n\nfunction startChunkForTag(tag) {\n  var tagStartChunk = validatedTagCache.get(tag);\n\n  if (tagStartChunk === undefined) {\n    if (!VALID_TAG_REGEX.test(tag)) {\n      throw new Error(\"Invalid tag: \" + tag);\n    }\n\n    tagStartChunk = stringToPrecomputedChunk('<' + tag);\n    validatedTagCache.set(tag, tagStartChunk);\n  }\n\n  return tagStartChunk;\n}\n\nvar DOCTYPE = stringToPrecomputedChunk('<!DOCTYPE html>');\nfunction pushStartInstance(target, type, props, responseState, formatContext) {\n  {\n    validateProperties(type, props);\n    validateProperties$1(type, props);\n    validateProperties$2(type, props, null);\n\n    if (!props.suppressContentEditableWarning && props.contentEditable && props.children != null) {\n      error('A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.');\n    }\n\n    if (formatContext.insertionMode !== SVG_MODE && formatContext.insertionMode !== MATHML_MODE) {\n      if (type.indexOf('-') === -1 && typeof props.is !== 'string' && type.toLowerCase() !== type) {\n        error('<%s /> is using incorrect casing. ' + 'Use PascalCase for React components, ' + 'or lowercase for HTML elements.', type);\n      }\n    }\n  }\n\n  switch (type) {\n    // Special tags\n    case 'select':\n      return pushStartSelect(target, props, responseState);\n\n    case 'option':\n      return pushStartOption(target, props, responseState, formatContext);\n\n    case 'textarea':\n      return pushStartTextArea(target, props, responseState);\n\n    case 'input':\n      return pushInput(target, props, responseState);\n\n    case 'menuitem':\n      return pushStartMenuItem(target, props, responseState);\n    // Newline eating tags\n\n    case 'listing':\n    case 'pre':\n      {\n        return pushStartPreformattedElement(target, props, type, responseState);\n      }\n    // Omitted close tags\n\n    case 'area':\n    case 'base':\n    case 'br':\n    case 'col':\n    case 'embed':\n    case 'hr':\n    case 'img':\n    case 'keygen':\n    case 'link':\n    case 'meta':\n    case 'param':\n    case 'source':\n    case 'track':\n    case 'wbr':\n      {\n        return pushSelfClosing(target, props, type, responseState);\n      }\n    // These are reserved SVG and MathML elements, that are never custom elements.\n    // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts\n\n    case 'annotation-xml':\n    case 'color-profile':\n    case 'font-face':\n    case 'font-face-src':\n    case 'font-face-uri':\n    case 'font-face-format':\n    case 'font-face-name':\n    case 'missing-glyph':\n      {\n        return pushStartGenericElement(target, props, type, responseState);\n      }\n\n    case 'html':\n      {\n        if (formatContext.insertionMode === ROOT_HTML_MODE) {\n          // If we're rendering the html tag and we're at the root (i.e. not in foreignObject)\n          // then we also emit the DOCTYPE as part of the root content as a convenience for\n          // rendering the whole document.\n          target.push(DOCTYPE);\n        }\n\n        return pushStartGenericElement(target, props, type, responseState);\n      }\n\n    default:\n      {\n        if (type.indexOf('-') === -1 && typeof props.is !== 'string') {\n          // Generic element\n          return pushStartGenericElement(target, props, type, responseState);\n        } else {\n          // Custom element\n          return pushStartCustomElement(target, props, type, responseState);\n        }\n      }\n  }\n}\nvar endTag1 = stringToPrecomputedChunk('</');\nvar endTag2 = stringToPrecomputedChunk('>');\nfunction pushEndInstance(target, type, props) {\n  switch (type) {\n    // Omitted close tags\n    // TODO: Instead of repeating this switch we could try to pass a flag from above.\n    // That would require returning a tuple. Which might be ok if it gets inlined.\n    case 'area':\n    case 'base':\n    case 'br':\n    case 'col':\n    case 'embed':\n    case 'hr':\n    case 'img':\n    case 'input':\n    case 'keygen':\n    case 'link':\n    case 'meta':\n    case 'param':\n    case 'source':\n    case 'track':\n    case 'wbr':\n      {\n        // No close tag needed.\n        break;\n      }\n\n    default:\n      {\n        target.push(endTag1, stringToChunk(type), endTag2);\n      }\n  }\n}\nfunction writeCompletedRoot(destination, responseState) {\n  var bootstrapChunks = responseState.bootstrapChunks;\n  var i = 0;\n\n  for (; i < bootstrapChunks.length - 1; i++) {\n    writeChunk(destination, bootstrapChunks[i]);\n  }\n\n  if (i < bootstrapChunks.length) {\n    return writeChunkAndReturn(destination, bootstrapChunks[i]);\n  }\n\n  return true;\n} // Structural Nodes\n// A placeholder is a node inside a hidden partial tree that can be filled in later, but before\n// display. It's never visible to users. We use the template tag because it can be used in every\n// type of parent. <script> tags also work in every other tag except <colgroup>.\n\nvar placeholder1 = stringToPrecomputedChunk('<template id=\"');\nvar placeholder2 = stringToPrecomputedChunk('\"></template>');\nfunction writePlaceholder(destination, responseState, id) {\n  writeChunk(destination, placeholder1);\n  writeChunk(destination, responseState.placeholderPrefix);\n  var formattedID = stringToChunk(id.toString(16));\n  writeChunk(destination, formattedID);\n  return writeChunkAndReturn(destination, placeholder2);\n} // Suspense boundaries are encoded as comments.\n\nvar startCompletedSuspenseBoundary = stringToPrecomputedChunk('<!--$-->');\nvar startPendingSuspenseBoundary1 = stringToPrecomputedChunk('<!--$?--><template id=\"');\nvar startPendingSuspenseBoundary2 = stringToPrecomputedChunk('\"></template>');\nvar startClientRenderedSuspenseBoundary = stringToPrecomputedChunk('<!--$!-->');\nvar endSuspenseBoundary = stringToPrecomputedChunk('<!--/$-->');\nfunction writeStartCompletedSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, startCompletedSuspenseBoundary);\n}\nfunction writeStartPendingSuspenseBoundary(destination, responseState, id) {\n  writeChunk(destination, startPendingSuspenseBoundary1);\n\n  if (id === null) {\n    throw new Error('An ID must have been assigned before we can complete the boundary.');\n  }\n\n  writeChunk(destination, id);\n  return writeChunkAndReturn(destination, startPendingSuspenseBoundary2);\n}\nfunction writeStartClientRenderedSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, startClientRenderedSuspenseBoundary);\n}\nfunction writeEndCompletedSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, endSuspenseBoundary);\n}\nfunction writeEndPendingSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, endSuspenseBoundary);\n}\nfunction writeEndClientRenderedSuspenseBoundary(destination, responseState) {\n  return writeChunkAndReturn(destination, endSuspenseBoundary);\n}\nvar startSegmentHTML = stringToPrecomputedChunk('<div hidden id=\"');\nvar startSegmentHTML2 = stringToPrecomputedChunk('\">');\nvar endSegmentHTML = stringToPrecomputedChunk('</div>');\nvar startSegmentSVG = stringToPrecomputedChunk('<svg aria-hidden=\"true\" style=\"display:none\" id=\"');\nvar startSegmentSVG2 = stringToPrecomputedChunk('\">');\nvar endSegmentSVG = stringToPrecomputedChunk('</svg>');\nvar startSegmentMathML = stringToPrecomputedChunk('<math aria-hidden=\"true\" style=\"display:none\" id=\"');\nvar startSegmentMathML2 = stringToPrecomputedChunk('\">');\nvar endSegmentMathML = stringToPrecomputedChunk('</math>');\nvar startSegmentTable = stringToPrecomputedChunk('<table hidden id=\"');\nvar startSegmentTable2 = stringToPrecomputedChunk('\">');\nvar endSegmentTable = stringToPrecomputedChunk('</table>');\nvar startSegmentTableBody = stringToPrecomputedChunk('<table hidden><tbody id=\"');\nvar startSegmentTableBody2 = stringToPrecomputedChunk('\">');\nvar endSegmentTableBody = stringToPrecomputedChunk('</tbody></table>');\nvar startSegmentTableRow = stringToPrecomputedChunk('<table hidden><tr id=\"');\nvar startSegmentTableRow2 = stringToPrecomputedChunk('\">');\nvar endSegmentTableRow = stringToPrecomputedChunk('</tr></table>');\nvar startSegmentColGroup = stringToPrecomputedChunk('<table hidden><colgroup id=\"');\nvar startSegmentColGroup2 = stringToPrecomputedChunk('\">');\nvar endSegmentColGroup = stringToPrecomputedChunk('</colgroup></table>');\nfunction writeStartSegment(destination, responseState, formatContext, id) {\n  switch (formatContext.insertionMode) {\n    case ROOT_HTML_MODE:\n    case HTML_MODE:\n      {\n        writeChunk(destination, startSegmentHTML);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentHTML2);\n      }\n\n    case SVG_MODE:\n      {\n        writeChunk(destination, startSegmentSVG);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentSVG2);\n      }\n\n    case MATHML_MODE:\n      {\n        writeChunk(destination, startSegmentMathML);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentMathML2);\n      }\n\n    case HTML_TABLE_MODE:\n      {\n        writeChunk(destination, startSegmentTable);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentTable2);\n      }\n    // TODO: For the rest of these, there will be extra wrapper nodes that never\n    // get deleted from the document. We need to delete the table too as part\n    // of the injected scripts. They are invisible though so it's not too terrible\n    // and it's kind of an edge case to suspend in a table. Totally supported though.\n\n    case HTML_TABLE_BODY_MODE:\n      {\n        writeChunk(destination, startSegmentTableBody);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentTableBody2);\n      }\n\n    case HTML_TABLE_ROW_MODE:\n      {\n        writeChunk(destination, startSegmentTableRow);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentTableRow2);\n      }\n\n    case HTML_COLGROUP_MODE:\n      {\n        writeChunk(destination, startSegmentColGroup);\n        writeChunk(destination, responseState.segmentPrefix);\n        writeChunk(destination, stringToChunk(id.toString(16)));\n        return writeChunkAndReturn(destination, startSegmentColGroup2);\n      }\n\n    default:\n      {\n        throw new Error('Unknown insertion mode. This is a bug in React.');\n      }\n  }\n}\nfunction writeEndSegment(destination, formatContext) {\n  switch (formatContext.insertionMode) {\n    case ROOT_HTML_MODE:\n    case HTML_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentHTML);\n      }\n\n    case SVG_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentSVG);\n      }\n\n    case MATHML_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentMathML);\n      }\n\n    case HTML_TABLE_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentTable);\n      }\n\n    case HTML_TABLE_BODY_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentTableBody);\n      }\n\n    case HTML_TABLE_ROW_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentTableRow);\n      }\n\n    case HTML_COLGROUP_MODE:\n      {\n        return writeChunkAndReturn(destination, endSegmentColGroup);\n      }\n\n    default:\n      {\n        throw new Error('Unknown insertion mode. This is a bug in React.');\n      }\n  }\n} // Instruction Set\n// The following code is the source scripts that we then minify and inline below,\n// with renamed function names that we hope don't collide:\n// const COMMENT_NODE = 8;\n// const SUSPENSE_START_DATA = '$';\n// const SUSPENSE_END_DATA = '/$';\n// const SUSPENSE_PENDING_START_DATA = '$?';\n// const SUSPENSE_FALLBACK_START_DATA = '$!';\n//\n// function clientRenderBoundary(suspenseBoundaryID) {\n//   // Find the fallback's first element.\n//   const suspenseIdNode = document.getElementById(suspenseBoundaryID);\n//   if (!suspenseIdNode) {\n//     // The user must have already navigated away from this tree.\n//     // E.g. because the parent was hydrated.\n//     return;\n//   }\n//   // Find the boundary around the fallback. This is always the previous node.\n//   const suspenseNode = suspenseIdNode.previousSibling;\n//   // Tag it to be client rendered.\n//   suspenseNode.data = SUSPENSE_FALLBACK_START_DATA;\n//   // Tell React to retry it if the parent already hydrated.\n//   if (suspenseNode._reactRetry) {\n//     suspenseNode._reactRetry();\n//   }\n// }\n//\n// function completeBoundary(suspenseBoundaryID, contentID) {\n//   // Find the fallback's first element.\n//   const suspenseIdNode = document.getElementById(suspenseBoundaryID);\n//   const contentNode = document.getElementById(contentID);\n//   // We'll detach the content node so that regardless of what happens next we don't leave in the tree.\n//   // This might also help by not causing recalcing each time we move a child from here to the target.\n//   contentNode.parentNode.removeChild(contentNode);\n//   if (!suspenseIdNode) {\n//     // The user must have already navigated away from this tree.\n//     // E.g. because the parent was hydrated. That's fine there's nothing to do\n//     // but we have to make sure that we already deleted the container node.\n//     return;\n//   }\n//   // Find the boundary around the fallback. This is always the previous node.\n//   const suspenseNode = suspenseIdNode.previousSibling;\n//\n//   // Clear all the existing children. This is complicated because\n//   // there can be embedded Suspense boundaries in the fallback.\n//   // This is similar to clearSuspenseBoundary in ReactDOMHostConfig.\n//   // TODO: We could avoid this if we never emitted suspense boundaries in fallback trees.\n//   // They never hydrate anyway. However, currently we support incrementally loading the fallback.\n//   const parentInstance = suspenseNode.parentNode;\n//   let node = suspenseNode.nextSibling;\n//   let depth = 0;\n//   do {\n//     if (node && node.nodeType === COMMENT_NODE) {\n//       const data = node.data;\n//       if (data === SUSPENSE_END_DATA) {\n//         if (depth === 0) {\n//           break;\n//         } else {\n//           depth--;\n//         }\n//       } else if (\n//         data === SUSPENSE_START_DATA ||\n//         data === SUSPENSE_PENDING_START_DATA ||\n//         data === SUSPENSE_FALLBACK_START_DATA\n//       ) {\n//         depth++;\n//       }\n//     }\n//\n//     const nextNode = node.nextSibling;\n//     parentInstance.removeChild(node);\n//     node = nextNode;\n//   } while (node);\n//\n//   const endOfBoundary = node;\n//\n//   // Insert all the children from the contentNode between the start and end of suspense boundary.\n//   while (contentNode.firstChild) {\n//     parentInstance.insertBefore(contentNode.firstChild, endOfBoundary);\n//   }\n//   suspenseNode.data = SUSPENSE_START_DATA;\n//   if (suspenseNode._reactRetry) {\n//     suspenseNode._reactRetry();\n//   }\n// }\n//\n// function completeSegment(containerID, placeholderID) {\n//   const segmentContainer = document.getElementById(containerID);\n//   const placeholderNode = document.getElementById(placeholderID);\n//   // We always expect both nodes to exist here because, while we might\n//   // have navigated away from the main tree, we still expect the detached\n//   // tree to exist.\n//   segmentContainer.parentNode.removeChild(segmentContainer);\n//   while (segmentContainer.firstChild) {\n//     placeholderNode.parentNode.insertBefore(\n//       segmentContainer.firstChild,\n//       placeholderNode,\n//     );\n//   }\n//   placeholderNode.parentNode.removeChild(placeholderNode);\n// }\n\nvar completeSegmentFunction = 'function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)}';\nvar completeBoundaryFunction = 'function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if(\"/$\"===d)if(0===e)break;else e--;else\"$\"!==d&&\"$?\"!==d&&\"$!\"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data=\"$\";a._reactRetry&&a._reactRetry()}}';\nvar clientRenderFunction = 'function $RX(a){if(a=document.getElementById(a))a=a.previousSibling,a.data=\"$!\",a._reactRetry&&a._reactRetry()}';\nvar completeSegmentScript1Full = stringToPrecomputedChunk(completeSegmentFunction + ';$RS(\"');\nvar completeSegmentScript1Partial = stringToPrecomputedChunk('$RS(\"');\nvar completeSegmentScript2 = stringToPrecomputedChunk('\",\"');\nvar completeSegmentScript3 = stringToPrecomputedChunk('\")</script>');\nfunction writeCompletedSegmentInstruction(destination, responseState, contentSegmentID) {\n  writeChunk(destination, responseState.startInlineScript);\n\n  if (!responseState.sentCompleteSegmentFunction) {\n    // The first time we write this, we'll need to include the full implementation.\n    responseState.sentCompleteSegmentFunction = true;\n    writeChunk(destination, completeSegmentScript1Full);\n  } else {\n    // Future calls can just reuse the same function.\n    writeChunk(destination, completeSegmentScript1Partial);\n  }\n\n  writeChunk(destination, responseState.segmentPrefix);\n  var formattedID = stringToChunk(contentSegmentID.toString(16));\n  writeChunk(destination, formattedID);\n  writeChunk(destination, completeSegmentScript2);\n  writeChunk(destination, responseState.placeholderPrefix);\n  writeChunk(destination, formattedID);\n  return writeChunkAndReturn(destination, completeSegmentScript3);\n}\nvar completeBoundaryScript1Full = stringToPrecomputedChunk(completeBoundaryFunction + ';$RC(\"');\nvar completeBoundaryScript1Partial = stringToPrecomputedChunk('$RC(\"');\nvar completeBoundaryScript2 = stringToPrecomputedChunk('\",\"');\nvar completeBoundaryScript3 = stringToPrecomputedChunk('\")</script>');\nfunction writeCompletedBoundaryInstruction(destination, responseState, boundaryID, contentSegmentID) {\n  writeChunk(destination, responseState.startInlineScript);\n\n  if (!responseState.sentCompleteBoundaryFunction) {\n    // The first time we write this, we'll need to include the full implementation.\n    responseState.sentCompleteBoundaryFunction = true;\n    writeChunk(destination, completeBoundaryScript1Full);\n  } else {\n    // Future calls can just reuse the same function.\n    writeChunk(destination, completeBoundaryScript1Partial);\n  }\n\n  if (boundaryID === null) {\n    throw new Error('An ID must have been assigned before we can complete the boundary.');\n  }\n\n  var formattedContentID = stringToChunk(contentSegmentID.toString(16));\n  writeChunk(destination, boundaryID);\n  writeChunk(destination, completeBoundaryScript2);\n  writeChunk(destination, responseState.segmentPrefix);\n  writeChunk(destination, formattedContentID);\n  return writeChunkAndReturn(destination, completeBoundaryScript3);\n}\nvar clientRenderScript1Full = stringToPrecomputedChunk(clientRenderFunction + ';$RX(\"');\nvar clientRenderScript1Partial = stringToPrecomputedChunk('$RX(\"');\nvar clientRenderScript2 = stringToPrecomputedChunk('\")</script>');\nfunction writeClientRenderBoundaryInstruction(destination, responseState, boundaryID) {\n  writeChunk(destination, responseState.startInlineScript);\n\n  if (!responseState.sentClientRenderFunction) {\n    // The first time we write this, we'll need to include the full implementation.\n    responseState.sentClientRenderFunction = true;\n    writeChunk(destination, clientRenderScript1Full);\n  } else {\n    // Future calls can just reuse the same function.\n    writeChunk(destination, clientRenderScript1Partial);\n  }\n\n  if (boundaryID === null) {\n    throw new Error('An ID must have been assigned before we can complete the boundary.');\n  }\n\n  writeChunk(destination, boundaryID);\n  return writeChunkAndReturn(destination, clientRenderScript2);\n}\n\nvar assign = Object.assign;\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_SCOPE_TYPE = Symbol.for('react.scope');\nvar REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for('react.debug_trace_mode');\nvar REACT_LEGACY_HIDDEN_TYPE = Symbol.for('react.legacy_hidden');\nvar REACT_SERVER_CONTEXT_DEFAULT_VALUE_NOT_LOADED = Symbol.for('react.default_value');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable !== 'object') {\n    return null;\n  }\n\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n\n  return null;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  var displayName = outerType.displayName;\n\n  if (displayName) {\n    return displayName;\n  }\n\n  var functionName = innerType.displayName || innerType.name || '';\n  return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n  return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n  if (type == null) {\n    // Host root, text node or just invalid type.\n    return null;\n  }\n\n  {\n    if (typeof type.tag === 'number') {\n      error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n    }\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || null;\n  }\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'Fragment';\n\n    case REACT_PORTAL_TYPE:\n      return 'Portal';\n\n    case REACT_PROFILER_TYPE:\n      return 'Profiler';\n\n    case REACT_STRICT_MODE_TYPE:\n      return 'StrictMode';\n\n    case REACT_SUSPENSE_TYPE:\n      return 'Suspense';\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return 'SuspenseList';\n\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        var context = type;\n        return getContextName(context) + '.Consumer';\n\n      case REACT_PROVIDER_TYPE:\n        var provider = type;\n        return getContextName(provider._context) + '.Provider';\n\n      case REACT_FORWARD_REF_TYPE:\n        return getWrappedName(type, type.render, 'ForwardRef');\n\n      case REACT_MEMO_TYPE:\n        var outerName = type.displayName || null;\n\n        if (outerName !== null) {\n          return outerName;\n        }\n\n        return getComponentNameFromType(type.type) || 'Memo';\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            return getComponentNameFromType(init(payload));\n          } catch (x) {\n            return null;\n          }\n        }\n\n      // eslint-disable-next-line no-fallthrough\n    }\n  }\n\n  return null;\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n  {\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      prevLog = console.log;\n      prevInfo = console.info;\n      prevWarn = console.warn;\n      prevError = console.error;\n      prevGroup = console.group;\n      prevGroupCollapsed = console.groupCollapsed;\n      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n      var props = {\n        configurable: true,\n        enumerable: true,\n        value: disabledLog,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        info: props,\n        log: props,\n        warn: props,\n        error: props,\n        group: props,\n        groupCollapsed: props,\n        groupEnd: props\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    disabledDepth++;\n  }\n}\nfunction reenableLogs() {\n  {\n    disabledDepth--;\n\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      var props = {\n        configurable: true,\n        enumerable: true,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        log: assign({}, props, {\n          value: prevLog\n        }),\n        info: assign({}, props, {\n          value: prevInfo\n        }),\n        warn: assign({}, props, {\n          value: prevWarn\n        }),\n        error: assign({}, props, {\n          value: prevError\n        }),\n        group: assign({}, props, {\n          value: prevGroup\n        }),\n        groupCollapsed: assign({}, props, {\n          value: prevGroupCollapsed\n        }),\n        groupEnd: assign({}, props, {\n          value: prevGroupEnd\n        })\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    if (disabledDepth < 0) {\n      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n    }\n  }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n  {\n    if (prefix === undefined) {\n      // Extract the VM specific prefix used by each line.\n      try {\n        throw Error();\n      } catch (x) {\n        var match = x.stack.trim().match(/\\n( *(at )?)/);\n        prefix = match && match[1] || '';\n      }\n    } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n    return '\\n' + prefix + name;\n  }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n  componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n  // If something asked for a stack inside a fake render, it should get ignored.\n  if ( !fn || reentry) {\n    return '';\n  }\n\n  {\n    var frame = componentFrameCache.get(fn);\n\n    if (frame !== undefined) {\n      return frame;\n    }\n  }\n\n  var control;\n  reentry = true;\n  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n  Error.prepareStackTrace = undefined;\n  var previousDispatcher;\n\n  {\n    previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n    // for warnings.\n\n    ReactCurrentDispatcher.current = null;\n    disableLogs();\n  }\n\n  try {\n    // This should throw.\n    if (construct) {\n      // Something should be setting the props in the constructor.\n      var Fake = function () {\n        throw Error();\n      }; // $FlowFixMe\n\n\n      Object.defineProperty(Fake.prototype, 'props', {\n        set: function () {\n          // We use a throwing setter instead of frozen or non-writable props\n          // because that won't throw in a non-strict mode function.\n          throw Error();\n        }\n      });\n\n      if (typeof Reflect === 'object' && Reflect.construct) {\n        // We construct a different control for this case to include any extra\n        // frames added by the construct call.\n        try {\n          Reflect.construct(Fake, []);\n        } catch (x) {\n          control = x;\n        }\n\n        Reflect.construct(fn, [], Fake);\n      } else {\n        try {\n          Fake.call();\n        } catch (x) {\n          control = x;\n        }\n\n        fn.call(Fake.prototype);\n      }\n    } else {\n      try {\n        throw Error();\n      } catch (x) {\n        control = x;\n      }\n\n      fn();\n    }\n  } catch (sample) {\n    // This is inlined manually because closure doesn't do it for us.\n    if (sample && control && typeof sample.stack === 'string') {\n      // This extracts the first frame from the sample that isn't also in the control.\n      // Skipping one frame that we assume is the frame that calls the two.\n      var sampleLines = sample.stack.split('\\n');\n      var controlLines = control.stack.split('\\n');\n      var s = sampleLines.length - 1;\n      var c = controlLines.length - 1;\n\n      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n        // We expect at least one stack frame to be shared.\n        // Typically this will be the root most one. However, stack frames may be\n        // cut off due to maximum stack limits. In this case, one maybe cut off\n        // earlier than the other. We assume that the sample is longer or the same\n        // and there for cut off earlier. So we should find the root most frame in\n        // the sample somewhere in the control.\n        c--;\n      }\n\n      for (; s >= 1 && c >= 0; s--, c--) {\n        // Next we find the first one that isn't the same which should be the\n        // frame that called our sample function and the control.\n        if (sampleLines[s] !== controlLines[c]) {\n          // In V8, the first line is describing the message but other VMs don't.\n          // If we're about to return the first line, and the control is also on the same\n          // line, that's a pretty good indicator that our sample threw at same line as\n          // the control. I.e. before we entered the sample frame. So we ignore this result.\n          // This can happen if you passed a class to function component, or non-function.\n          if (s !== 1 || c !== 1) {\n            do {\n              s--;\n              c--; // We may still have similar intermediate frames from the construct call.\n              // The next one that isn't the same should be our match though.\n\n              if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n                var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n                // but we have a user-provided \"displayName\"\n                // splice it in to make the stack more readable.\n\n\n                if (fn.displayName && _frame.includes('<anonymous>')) {\n                  _frame = _frame.replace('<anonymous>', fn.displayName);\n                }\n\n                {\n                  if (typeof fn === 'function') {\n                    componentFrameCache.set(fn, _frame);\n                  }\n                } // Return the line we found.\n\n\n                return _frame;\n              }\n            } while (s >= 1 && c >= 0);\n          }\n\n          break;\n        }\n      }\n    }\n  } finally {\n    reentry = false;\n\n    {\n      ReactCurrentDispatcher.current = previousDispatcher;\n      reenableLogs();\n    }\n\n    Error.prepareStackTrace = previousPrepareStackTrace;\n  } // Fallback to just using the name if we couldn't make it throw.\n\n\n  var name = fn ? fn.displayName || fn.name : '';\n  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n  {\n    if (typeof fn === 'function') {\n      componentFrameCache.set(fn, syntheticFrame);\n    }\n  }\n\n  return syntheticFrame;\n}\n\nfunction describeClassComponentFrame(ctor, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(ctor, true);\n  }\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(fn, false);\n  }\n}\n\nfunction shouldConstruct(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n  if (type == null) {\n    return '';\n  }\n\n  if (typeof type === 'function') {\n    {\n      return describeNativeComponentFrame(type, shouldConstruct(type));\n    }\n  }\n\n  if (typeof type === 'string') {\n    return describeBuiltInComponentFrame(type);\n  }\n\n  switch (type) {\n    case REACT_SUSPENSE_TYPE:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return describeBuiltInComponentFrame('SuspenseList');\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        return describeFunctionComponentFrame(type.render);\n\n      case REACT_MEMO_TYPE:\n        // Memo may contain any component type so we recursively resolve it.\n        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            // Lazy may contain any component type so we recursively resolve it.\n            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n          } catch (x) {}\n        }\n    }\n  }\n\n  return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame.setExtraStackFrame(null);\n    }\n  }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n  {\n    // $FlowFixMe This is okay but Flow doesn't know it.\n    var has = Function.call.bind(hasOwnProperty);\n\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            // eslint-disable-next-line react-internal/prod-error-codes\n            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n\n          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n        } catch (ex) {\n          error$1 = ex;\n        }\n\n        if (error$1 && !(error$1 instanceof Error)) {\n          setCurrentlyValidatingElement(element);\n\n          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n          setCurrentlyValidatingElement(null);\n        }\n\n        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error$1.message] = true;\n          setCurrentlyValidatingElement(element);\n\n          error('Failed %s type: %s', location, error$1.message);\n\n          setCurrentlyValidatingElement(null);\n        }\n      }\n    }\n  }\n}\n\nvar warnedAboutMissingGetChildContext;\n\n{\n  warnedAboutMissingGetChildContext = {};\n}\n\nvar emptyContextObject = {};\n\n{\n  Object.freeze(emptyContextObject);\n}\n\nfunction getMaskedContext(type, unmaskedContext) {\n  {\n    var contextTypes = type.contextTypes;\n\n    if (!contextTypes) {\n      return emptyContextObject;\n    }\n\n    var context = {};\n\n    for (var key in contextTypes) {\n      context[key] = unmaskedContext[key];\n    }\n\n    {\n      var name = getComponentNameFromType(type) || 'Unknown';\n      checkPropTypes(contextTypes, context, 'context', name);\n    }\n\n    return context;\n  }\n}\nfunction processChildContext(instance, type, parentContext, childContextTypes) {\n  {\n    // TODO (bvaughn) Replace this behavior with an invariant() in the future.\n    // It has only been added in Fiber to match the (unintentional) behavior in Stack.\n    if (typeof instance.getChildContext !== 'function') {\n      {\n        var componentName = getComponentNameFromType(type) || 'Unknown';\n\n        if (!warnedAboutMissingGetChildContext[componentName]) {\n          warnedAboutMissingGetChildContext[componentName] = true;\n\n          error('%s.childContextTypes is specified but there is no getChildContext() method ' + 'on the instance. You can either define getChildContext() on %s or remove ' + 'childContextTypes from it.', componentName, componentName);\n        }\n      }\n\n      return parentContext;\n    }\n\n    var childContext = instance.getChildContext();\n\n    for (var contextKey in childContext) {\n      if (!(contextKey in childContextTypes)) {\n        throw new Error((getComponentNameFromType(type) || 'Unknown') + \".getChildContext(): key \\\"\" + contextKey + \"\\\" is not defined in childContextTypes.\");\n      }\n    }\n\n    {\n      var name = getComponentNameFromType(type) || 'Unknown';\n      checkPropTypes(childContextTypes, childContext, 'child context', name);\n    }\n\n    return assign({}, parentContext, childContext);\n  }\n}\n\nvar rendererSigil;\n\n{\n  // Use this to detect multiple renderers using the same context\n  rendererSigil = {};\n} // Used to store the parent path of all context overrides in a shared linked list.\n// Forming a reverse tree.\n\n\nvar rootContextSnapshot = null; // We assume that this runtime owns the \"current\" field on all ReactContext instances.\n// This global (actually thread local) state represents what state all those \"current\",\n// fields are currently in.\n\nvar currentActiveSnapshot = null;\n\nfunction popNode(prev) {\n  {\n    prev.context._currentValue = prev.parentValue;\n  }\n}\n\nfunction pushNode(next) {\n  {\n    next.context._currentValue = next.value;\n  }\n}\n\nfunction popToNearestCommonAncestor(prev, next) {\n  if (prev === next) ; else {\n    popNode(prev);\n    var parentPrev = prev.parent;\n    var parentNext = next.parent;\n\n    if (parentPrev === null) {\n      if (parentNext !== null) {\n        throw new Error('The stacks must reach the root at the same time. This is a bug in React.');\n      }\n    } else {\n      if (parentNext === null) {\n        throw new Error('The stacks must reach the root at the same time. This is a bug in React.');\n      }\n\n      popToNearestCommonAncestor(parentPrev, parentNext);\n    } // On the way back, we push the new ones that weren't common.\n\n\n    pushNode(next);\n  }\n}\n\nfunction popAllPrevious(prev) {\n  popNode(prev);\n  var parentPrev = prev.parent;\n\n  if (parentPrev !== null) {\n    popAllPrevious(parentPrev);\n  }\n}\n\nfunction pushAllNext(next) {\n  var parentNext = next.parent;\n\n  if (parentNext !== null) {\n    pushAllNext(parentNext);\n  }\n\n  pushNode(next);\n}\n\nfunction popPreviousToCommonLevel(prev, next) {\n  popNode(prev);\n  var parentPrev = prev.parent;\n\n  if (parentPrev === null) {\n    throw new Error('The depth must equal at least at zero before reaching the root. This is a bug in React.');\n  }\n\n  if (parentPrev.depth === next.depth) {\n    // We found the same level. Now we just need to find a shared ancestor.\n    popToNearestCommonAncestor(parentPrev, next);\n  } else {\n    // We must still be deeper.\n    popPreviousToCommonLevel(parentPrev, next);\n  }\n}\n\nfunction popNextToCommonLevel(prev, next) {\n  var parentNext = next.parent;\n\n  if (parentNext === null) {\n    throw new Error('The depth must equal at least at zero before reaching the root. This is a bug in React.');\n  }\n\n  if (prev.depth === parentNext.depth) {\n    // We found the same level. Now we just need to find a shared ancestor.\n    popToNearestCommonAncestor(prev, parentNext);\n  } else {\n    // We must still be deeper.\n    popNextToCommonLevel(prev, parentNext);\n  }\n\n  pushNode(next);\n} // Perform context switching to the new snapshot.\n// To make it cheap to read many contexts, while not suspending, we make the switch eagerly by\n// updating all the context's current values. That way reads, always just read the current value.\n// At the cost of updating contexts even if they're never read by this subtree.\n\n\nfunction switchContext(newSnapshot) {\n  // The basic algorithm we need to do is to pop back any contexts that are no longer on the stack.\n  // We also need to update any new contexts that are now on the stack with the deepest value.\n  // The easiest way to update new contexts is to just reapply them in reverse order from the\n  // perspective of the backpointers. To avoid allocating a lot when switching, we use the stack\n  // for that. Therefore this algorithm is recursive.\n  // 1) First we pop which ever snapshot tree was deepest. Popping old contexts as we go.\n  // 2) Then we find the nearest common ancestor from there. Popping old contexts as we go.\n  // 3) Then we reapply new contexts on the way back up the stack.\n  var prev = currentActiveSnapshot;\n  var next = newSnapshot;\n\n  if (prev !== next) {\n    if (prev === null) {\n      // $FlowFixMe: This has to be non-null since it's not equal to prev.\n      pushAllNext(next);\n    } else if (next === null) {\n      popAllPrevious(prev);\n    } else if (prev.depth === next.depth) {\n      popToNearestCommonAncestor(prev, next);\n    } else if (prev.depth > next.depth) {\n      popPreviousToCommonLevel(prev, next);\n    } else {\n      popNextToCommonLevel(prev, next);\n    }\n\n    currentActiveSnapshot = next;\n  }\n}\nfunction pushProvider(context, nextValue) {\n  var prevValue;\n\n  {\n    prevValue = context._currentValue;\n    context._currentValue = nextValue;\n\n    {\n      if (context._currentRenderer !== undefined && context._currentRenderer !== null && context._currentRenderer !== rendererSigil) {\n        error('Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.');\n      }\n\n      context._currentRenderer = rendererSigil;\n    }\n  }\n\n  var prevNode = currentActiveSnapshot;\n  var newNode = {\n    parent: prevNode,\n    depth: prevNode === null ? 0 : prevNode.depth + 1,\n    context: context,\n    parentValue: prevValue,\n    value: nextValue\n  };\n  currentActiveSnapshot = newNode;\n  return newNode;\n}\nfunction popProvider(context) {\n  var prevSnapshot = currentActiveSnapshot;\n\n  if (prevSnapshot === null) {\n    throw new Error('Tried to pop a Context at the root of the app. This is a bug in React.');\n  }\n\n  {\n    if (prevSnapshot.context !== context) {\n      error('The parent context is not the expected context. This is probably a bug in React.');\n    }\n  }\n\n  {\n    var value = prevSnapshot.parentValue;\n\n    if (value === REACT_SERVER_CONTEXT_DEFAULT_VALUE_NOT_LOADED) {\n      prevSnapshot.context._currentValue = prevSnapshot.context._defaultValue;\n    } else {\n      prevSnapshot.context._currentValue = value;\n    }\n\n    {\n      if (context._currentRenderer !== undefined && context._currentRenderer !== null && context._currentRenderer !== rendererSigil) {\n        error('Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.');\n      }\n\n      context._currentRenderer = rendererSigil;\n    }\n  }\n\n  return currentActiveSnapshot = prevSnapshot.parent;\n}\nfunction getActiveContext() {\n  return currentActiveSnapshot;\n}\nfunction readContext(context) {\n  var value =  context._currentValue ;\n  return value;\n}\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n *\n * Note that this module is currently shared and assumed to be stateless.\n * If this becomes an actual Map, that will break.\n */\nfunction get(key) {\n  return key._reactInternals;\n}\nfunction set(key, value) {\n  key._reactInternals = value;\n}\n\nvar didWarnAboutNoopUpdateForComponent = {};\nvar didWarnAboutDeprecatedWillMount = {};\nvar didWarnAboutUninitializedState;\nvar didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate;\nvar didWarnAboutLegacyLifecyclesAndDerivedState;\nvar didWarnAboutUndefinedDerivedState;\nvar warnOnUndefinedDerivedState;\nvar warnOnInvalidCallback;\nvar didWarnAboutDirectlyAssigningPropsToState;\nvar didWarnAboutContextTypeAndContextTypes;\nvar didWarnAboutInvalidateContextType;\n\n{\n  didWarnAboutUninitializedState = new Set();\n  didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = new Set();\n  didWarnAboutLegacyLifecyclesAndDerivedState = new Set();\n  didWarnAboutDirectlyAssigningPropsToState = new Set();\n  didWarnAboutUndefinedDerivedState = new Set();\n  didWarnAboutContextTypeAndContextTypes = new Set();\n  didWarnAboutInvalidateContextType = new Set();\n  var didWarnOnInvalidCallback = new Set();\n\n  warnOnInvalidCallback = function (callback, callerName) {\n    if (callback === null || typeof callback === 'function') {\n      return;\n    }\n\n    var key = callerName + '_' + callback;\n\n    if (!didWarnOnInvalidCallback.has(key)) {\n      didWarnOnInvalidCallback.add(key);\n\n      error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);\n    }\n  };\n\n  warnOnUndefinedDerivedState = function (type, partialState) {\n    if (partialState === undefined) {\n      var componentName = getComponentNameFromType(type) || 'Component';\n\n      if (!didWarnAboutUndefinedDerivedState.has(componentName)) {\n        didWarnAboutUndefinedDerivedState.add(componentName);\n\n        error('%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. ' + 'You have returned undefined.', componentName);\n      }\n    }\n  };\n}\n\nfunction warnNoop(publicInstance, callerName) {\n  {\n    var _constructor = publicInstance.constructor;\n    var componentName = _constructor && getComponentNameFromType(_constructor) || 'ReactClass';\n    var warningKey = componentName + '.' + callerName;\n\n    if (didWarnAboutNoopUpdateForComponent[warningKey]) {\n      return;\n    }\n\n    error('%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op.\\n\\nPlease check the code for the %s component.', callerName, callerName, componentName);\n\n    didWarnAboutNoopUpdateForComponent[warningKey] = true;\n  }\n}\n\nvar classComponentUpdater = {\n  isMounted: function (inst) {\n    return false;\n  },\n  enqueueSetState: function (inst, payload, callback) {\n    var internals = get(inst);\n\n    if (internals.queue === null) {\n      warnNoop(inst, 'setState');\n    } else {\n      internals.queue.push(payload);\n\n      {\n        if (callback !== undefined && callback !== null) {\n          warnOnInvalidCallback(callback, 'setState');\n        }\n      }\n    }\n  },\n  enqueueReplaceState: function (inst, payload, callback) {\n    var internals = get(inst);\n    internals.replace = true;\n    internals.queue = [payload];\n\n    {\n      if (callback !== undefined && callback !== null) {\n        warnOnInvalidCallback(callback, 'setState');\n      }\n    }\n  },\n  enqueueForceUpdate: function (inst, callback) {\n    var internals = get(inst);\n\n    if (internals.queue === null) {\n      warnNoop(inst, 'forceUpdate');\n    } else {\n      {\n        if (callback !== undefined && callback !== null) {\n          warnOnInvalidCallback(callback, 'setState');\n        }\n      }\n    }\n  }\n};\n\nfunction applyDerivedStateFromProps(instance, ctor, getDerivedStateFromProps, prevState, nextProps) {\n  var partialState = getDerivedStateFromProps(nextProps, prevState);\n\n  {\n    warnOnUndefinedDerivedState(ctor, partialState);\n  } // Merge the partial state and the previous state.\n\n\n  var newState = partialState === null || partialState === undefined ? prevState : assign({}, prevState, partialState);\n  return newState;\n}\n\nfunction constructClassInstance(ctor, props, maskedLegacyContext) {\n  var context = emptyContextObject;\n  var contextType = ctor.contextType;\n\n  {\n    if ('contextType' in ctor) {\n      var isValid = // Allow null for conditional declaration\n      contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a <Context.Consumer>\n\n      if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) {\n        didWarnAboutInvalidateContextType.add(ctor);\n        var addendum = '';\n\n        if (contextType === undefined) {\n          addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.';\n        } else if (typeof contextType !== 'object') {\n          addendum = ' However, it is set to a ' + typeof contextType + '.';\n        } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {\n          addendum = ' Did you accidentally pass the Context.Provider instead?';\n        } else if (contextType._context !== undefined) {\n          // <Context.Consumer>\n          addendum = ' Did you accidentally pass the Context.Consumer instead?';\n        } else {\n          addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.';\n        }\n\n        error('%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentNameFromType(ctor) || 'Component', addendum);\n      }\n    }\n  }\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    context = readContext(contextType);\n  } else {\n    context = maskedLegacyContext;\n  }\n\n  var instance = new ctor(props, context);\n\n  {\n    if (typeof ctor.getDerivedStateFromProps === 'function' && (instance.state === null || instance.state === undefined)) {\n      var componentName = getComponentNameFromType(ctor) || 'Component';\n\n      if (!didWarnAboutUninitializedState.has(componentName)) {\n        didWarnAboutUninitializedState.add(componentName);\n\n        error('`%s` uses `getDerivedStateFromProps` but its initial state is ' + '%s. This is not recommended. Instead, define the initial state by ' + 'assigning an object to `this.state` in the constructor of `%s`. ' + 'This ensures that `getDerivedStateFromProps` arguments have a consistent shape.', componentName, instance.state === null ? 'null' : 'undefined', componentName);\n      }\n    } // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n    // Warn about these lifecycles if they are present.\n    // Don't warn about react-lifecycles-compat polyfilled methods though.\n\n\n    if (typeof ctor.getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function') {\n      var foundWillMountName = null;\n      var foundWillReceivePropsName = null;\n      var foundWillUpdateName = null;\n\n      if (typeof instance.componentWillMount === 'function' && instance.componentWillMount.__suppressDeprecationWarning !== true) {\n        foundWillMountName = 'componentWillMount';\n      } else if (typeof instance.UNSAFE_componentWillMount === 'function') {\n        foundWillMountName = 'UNSAFE_componentWillMount';\n      }\n\n      if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {\n        foundWillReceivePropsName = 'componentWillReceiveProps';\n      } else if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n        foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n      }\n\n      if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {\n        foundWillUpdateName = 'componentWillUpdate';\n      } else if (typeof instance.UNSAFE_componentWillUpdate === 'function') {\n        foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n      }\n\n      if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) {\n        var _componentName = getComponentNameFromType(ctor) || 'Component';\n\n        var newApiName = typeof ctor.getDerivedStateFromProps === 'function' ? 'getDerivedStateFromProps()' : 'getSnapshotBeforeUpdate()';\n\n        if (!didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName)) {\n          didWarnAboutLegacyLifecyclesAndDerivedState.add(_componentName);\n\n          error('Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' + '%s uses %s but also contains the following legacy lifecycles:%s%s%s\\n\\n' + 'The above lifecycles should be removed. Learn more about this warning here:\\n' + 'https://reactjs.org/link/unsafe-component-lifecycles', _componentName, newApiName, foundWillMountName !== null ? \"\\n  \" + foundWillMountName : '', foundWillReceivePropsName !== null ? \"\\n  \" + foundWillReceivePropsName : '', foundWillUpdateName !== null ? \"\\n  \" + foundWillUpdateName : '');\n        }\n      }\n    }\n  }\n\n  return instance;\n}\n\nfunction checkClassInstance(instance, ctor, newProps) {\n  {\n    var name = getComponentNameFromType(ctor) || 'Component';\n    var renderPresent = instance.render;\n\n    if (!renderPresent) {\n      if (ctor.prototype && typeof ctor.prototype.render === 'function') {\n        error('%s(...): No `render` method found on the returned component ' + 'instance: did you accidentally return an object from the constructor?', name);\n      } else {\n        error('%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', name);\n      }\n    }\n\n    if (instance.getInitialState && !instance.getInitialState.isReactClassApproved && !instance.state) {\n      error('getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', name);\n    }\n\n    if (instance.getDefaultProps && !instance.getDefaultProps.isReactClassApproved) {\n      error('getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', name);\n    }\n\n    if (instance.propTypes) {\n      error('propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', name);\n    }\n\n    if (instance.contextType) {\n      error('contextType was defined as an instance property on %s. Use a static ' + 'property to define contextType instead.', name);\n    }\n\n    {\n      if (instance.contextTypes) {\n        error('contextTypes was defined as an instance property on %s. Use a static ' + 'property to define contextTypes instead.', name);\n      }\n\n      if (ctor.contextType && ctor.contextTypes && !didWarnAboutContextTypeAndContextTypes.has(ctor)) {\n        didWarnAboutContextTypeAndContextTypes.add(ctor);\n\n        error('%s declares both contextTypes and contextType static properties. ' + 'The legacy contextTypes property will be ignored.', name);\n      }\n    }\n\n    if (typeof instance.componentShouldUpdate === 'function') {\n      error('%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', name);\n    }\n\n    if (ctor.prototype && ctor.prototype.isPureReactComponent && typeof instance.shouldComponentUpdate !== 'undefined') {\n      error('%s has a method called shouldComponentUpdate(). ' + 'shouldComponentUpdate should not be used when extending React.PureComponent. ' + 'Please extend React.Component if shouldComponentUpdate is used.', getComponentNameFromType(ctor) || 'A pure component');\n    }\n\n    if (typeof instance.componentDidUnmount === 'function') {\n      error('%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', name);\n    }\n\n    if (typeof instance.componentDidReceiveProps === 'function') {\n      error('%s has a method called ' + 'componentDidReceiveProps(). But there is no such lifecycle method. ' + 'If you meant to update the state in response to changing props, ' + 'use componentWillReceiveProps(). If you meant to fetch data or ' + 'run side-effects or mutations after React has updated the UI, use componentDidUpdate().', name);\n    }\n\n    if (typeof instance.componentWillRecieveProps === 'function') {\n      error('%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', name);\n    }\n\n    if (typeof instance.UNSAFE_componentWillRecieveProps === 'function') {\n      error('%s has a method called ' + 'UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?', name);\n    }\n\n    var hasMutatedProps = instance.props !== newProps;\n\n    if (instance.props !== undefined && hasMutatedProps) {\n      error('%s(...): When calling super() in `%s`, make sure to pass ' + \"up the same props that your component's constructor was passed.\", name, name);\n    }\n\n    if (instance.defaultProps) {\n      error('Setting defaultProps as an instance property on %s is not supported and will be ignored.' + ' Instead, define defaultProps as a static property on %s.', name, name);\n    }\n\n    if (typeof instance.getSnapshotBeforeUpdate === 'function' && typeof instance.componentDidUpdate !== 'function' && !didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(ctor)) {\n      didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(ctor);\n\n      error('%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). ' + 'This component defines getSnapshotBeforeUpdate() only.', getComponentNameFromType(ctor));\n    }\n\n    if (typeof instance.getDerivedStateFromProps === 'function') {\n      error('%s: getDerivedStateFromProps() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name);\n    }\n\n    if (typeof instance.getDerivedStateFromError === 'function') {\n      error('%s: getDerivedStateFromError() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name);\n    }\n\n    if (typeof ctor.getSnapshotBeforeUpdate === 'function') {\n      error('%s: getSnapshotBeforeUpdate() is defined as a static method ' + 'and will be ignored. Instead, declare it as an instance method.', name);\n    }\n\n    var _state = instance.state;\n\n    if (_state && (typeof _state !== 'object' || isArray(_state))) {\n      error('%s.state: must be set to an object or null', name);\n    }\n\n    if (typeof instance.getChildContext === 'function' && typeof ctor.childContextTypes !== 'object') {\n      error('%s.getChildContext(): childContextTypes must be defined in order to ' + 'use getChildContext().', name);\n    }\n  }\n}\n\nfunction callComponentWillMount(type, instance) {\n  var oldState = instance.state;\n\n  if (typeof instance.componentWillMount === 'function') {\n    {\n      if ( instance.componentWillMount.__suppressDeprecationWarning !== true) {\n        var componentName = getComponentNameFromType(type) || 'Unknown';\n\n        if (!didWarnAboutDeprecatedWillMount[componentName]) {\n          warn( // keep this warning in sync with ReactStrictModeWarning.js\n          'componentWillMount has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move code from componentWillMount to componentDidMount (preferred in most cases) ' + 'or the constructor.\\n' + '\\nPlease update the following components: %s', componentName);\n\n          didWarnAboutDeprecatedWillMount[componentName] = true;\n        }\n      }\n    }\n\n    instance.componentWillMount();\n  }\n\n  if (typeof instance.UNSAFE_componentWillMount === 'function') {\n    instance.UNSAFE_componentWillMount();\n  }\n\n  if (oldState !== instance.state) {\n    {\n      error('%s.componentWillMount(): Assigning directly to this.state is ' + \"deprecated (except inside a component's \" + 'constructor). Use setState instead.', getComponentNameFromType(type) || 'Component');\n    }\n\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n  }\n}\n\nfunction processUpdateQueue(internalInstance, inst, props, maskedLegacyContext) {\n  if (internalInstance.queue !== null && internalInstance.queue.length > 0) {\n    var oldQueue = internalInstance.queue;\n    var oldReplace = internalInstance.replace;\n    internalInstance.queue = null;\n    internalInstance.replace = false;\n\n    if (oldReplace && oldQueue.length === 1) {\n      inst.state = oldQueue[0];\n    } else {\n      var nextState = oldReplace ? oldQueue[0] : inst.state;\n      var dontMutate = true;\n\n      for (var i = oldReplace ? 1 : 0; i < oldQueue.length; i++) {\n        var partial = oldQueue[i];\n        var partialState = typeof partial === 'function' ? partial.call(inst, nextState, props, maskedLegacyContext) : partial;\n\n        if (partialState != null) {\n          if (dontMutate) {\n            dontMutate = false;\n            nextState = assign({}, nextState, partialState);\n          } else {\n            assign(nextState, partialState);\n          }\n        }\n      }\n\n      inst.state = nextState;\n    }\n  } else {\n    internalInstance.queue = null;\n  }\n} // Invokes the mount life-cycles on a previously never rendered instance.\n\n\nfunction mountClassInstance(instance, ctor, newProps, maskedLegacyContext) {\n  {\n    checkClassInstance(instance, ctor, newProps);\n  }\n\n  var initialState = instance.state !== undefined ? instance.state : null;\n  instance.updater = classComponentUpdater;\n  instance.props = newProps;\n  instance.state = initialState; // We don't bother initializing the refs object on the server, since we're not going to resolve them anyway.\n  // The internal instance will be used to manage updates that happen during this mount.\n\n  var internalInstance = {\n    queue: [],\n    replace: false\n  };\n  set(instance, internalInstance);\n  var contextType = ctor.contextType;\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    instance.context = readContext(contextType);\n  } else {\n    instance.context = maskedLegacyContext;\n  }\n\n  {\n    if (instance.state === newProps) {\n      var componentName = getComponentNameFromType(ctor) || 'Component';\n\n      if (!didWarnAboutDirectlyAssigningPropsToState.has(componentName)) {\n        didWarnAboutDirectlyAssigningPropsToState.add(componentName);\n\n        error('%s: It is not recommended to assign props directly to state ' + \"because updates to props won't be reflected in state. \" + 'In most cases, it is better to use props directly.', componentName);\n      }\n    }\n  }\n\n  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n\n  if (typeof getDerivedStateFromProps === 'function') {\n    instance.state = applyDerivedStateFromProps(instance, ctor, getDerivedStateFromProps, initialState, newProps);\n  } // In order to support react-lifecycles-compat polyfilled components,\n  // Unsafe lifecycles should not be invoked for components using the new APIs.\n\n\n  if (typeof ctor.getDerivedStateFromProps !== 'function' && typeof instance.getSnapshotBeforeUpdate !== 'function' && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {\n    callComponentWillMount(ctor, instance); // If we had additional state updates during this life-cycle, let's\n    // process them now.\n\n    processUpdateQueue(internalInstance, instance, newProps, maskedLegacyContext);\n  }\n}\n\n// Ids are base 32 strings whose binary representation corresponds to the\n// position of a node in a tree.\n// Every time the tree forks into multiple children, we add additional bits to\n// the left of the sequence that represent the position of the child within the\n// current level of children.\n//\n//      00101       00010001011010101\n//      ╰─┬─╯       ╰───────┬───────╯\n//   Fork 5 of 20       Parent id\n//\n// The leading 0s are important. In the above example, you only need 3 bits to\n// represent slot 5. However, you need 5 bits to represent all the forks at\n// the current level, so we must account for the empty bits at the end.\n//\n// For this same reason, slots are 1-indexed instead of 0-indexed. Otherwise,\n// the zeroth id at a level would be indistinguishable from its parent.\n//\n// If a node has only one child, and does not materialize an id (i.e. does not\n// contain a useId hook), then we don't need to allocate any space in the\n// sequence. It's treated as a transparent indirection. For example, these two\n// trees produce the same ids:\n//\n// <>                          <>\n//   <Indirection>               <A />\n//     <A />                     <B />\n//   </Indirection>            </>\n//   <B />\n// </>\n//\n// However, we cannot skip any node that materializes an id. Otherwise, a parent\n// id that does not fork would be indistinguishable from its child id. For\n// example, this tree does not fork, but the parent and child must have\n// different ids.\n//\n// <Parent>\n//   <Child />\n// </Parent>\n//\n// To handle this scenario, every time we materialize an id, we allocate a\n// new level with a single slot. You can think of this as a fork with only one\n// prong, or an array of children with length 1.\n//\n// It's possible for the size of the sequence to exceed 32 bits, the max\n// size for bitwise operations. When this happens, we make more room by\n// converting the right part of the id to a string and storing it in an overflow\n// variable. We use a base 32 string representation, because 32 is the largest\n// power of 2 that is supported by toString(). We want the base to be large so\n// that the resulting ids are compact, and we want the base to be a power of 2\n// because every log2(base) bits corresponds to a single character, i.e. every\n// log2(32) = 5 bits. That means we can lop bits off the end 5 at a time without\n// affecting the final result.\nvar emptyTreeContext = {\n  id: 1,\n  overflow: ''\n};\nfunction getTreeId(context) {\n  var overflow = context.overflow;\n  var idWithLeadingBit = context.id;\n  var id = idWithLeadingBit & ~getLeadingBit(idWithLeadingBit);\n  return id.toString(32) + overflow;\n}\nfunction pushTreeContext(baseContext, totalChildren, index) {\n  var baseIdWithLeadingBit = baseContext.id;\n  var baseOverflow = baseContext.overflow; // The leftmost 1 marks the end of the sequence, non-inclusive. It's not part\n  // of the id; we use it to account for leading 0s.\n\n  var baseLength = getBitLength(baseIdWithLeadingBit) - 1;\n  var baseId = baseIdWithLeadingBit & ~(1 << baseLength);\n  var slot = index + 1;\n  var length = getBitLength(totalChildren) + baseLength; // 30 is the max length we can store without overflowing, taking into\n  // consideration the leading 1 we use to mark the end of the sequence.\n\n  if (length > 30) {\n    // We overflowed the bitwise-safe range. Fall back to slower algorithm.\n    // This branch assumes the length of the base id is greater than 5; it won't\n    // work for smaller ids, because you need 5 bits per character.\n    //\n    // We encode the id in multiple steps: first the base id, then the\n    // remaining digits.\n    //\n    // Each 5 bit sequence corresponds to a single base 32 character. So for\n    // example, if the current id is 23 bits long, we can convert 20 of those\n    // bits into a string of 4 characters, with 3 bits left over.\n    //\n    // First calculate how many bits in the base id represent a complete\n    // sequence of characters.\n    var numberOfOverflowBits = baseLength - baseLength % 5; // Then create a bitmask that selects only those bits.\n\n    var newOverflowBits = (1 << numberOfOverflowBits) - 1; // Select the bits, and convert them to a base 32 string.\n\n    var newOverflow = (baseId & newOverflowBits).toString(32); // Now we can remove those bits from the base id.\n\n    var restOfBaseId = baseId >> numberOfOverflowBits;\n    var restOfBaseLength = baseLength - numberOfOverflowBits; // Finally, encode the rest of the bits using the normal algorithm. Because\n    // we made more room, this time it won't overflow.\n\n    var restOfLength = getBitLength(totalChildren) + restOfBaseLength;\n    var restOfNewBits = slot << restOfBaseLength;\n    var id = restOfNewBits | restOfBaseId;\n    var overflow = newOverflow + baseOverflow;\n    return {\n      id: 1 << restOfLength | id,\n      overflow: overflow\n    };\n  } else {\n    // Normal path\n    var newBits = slot << baseLength;\n\n    var _id = newBits | baseId;\n\n    var _overflow = baseOverflow;\n    return {\n      id: 1 << length | _id,\n      overflow: _overflow\n    };\n  }\n}\n\nfunction getBitLength(number) {\n  return 32 - clz32(number);\n}\n\nfunction getLeadingBit(id) {\n  return 1 << getBitLength(id) - 1;\n} // TODO: Math.clz32 is supported in Node 12+. Maybe we can drop the fallback.\n\n\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback; // Count leading zeros.\n// Based on:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32\n\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nfunction clz32Fallback(x) {\n  var asUint = x >>> 0;\n\n  if (asUint === 0) {\n    return 32;\n  }\n\n  return 31 - (log(asUint) / LN2 | 0) | 0;\n}\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n  return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n  ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\nvar currentlyRenderingComponent = null;\nvar currentlyRenderingTask = null;\nvar firstWorkInProgressHook = null;\nvar workInProgressHook = null; // Whether the work-in-progress hook is a re-rendered hook\n\nvar isReRender = false; // Whether an update was scheduled during the currently executing render pass.\n\nvar didScheduleRenderPhaseUpdate = false; // Counts the number of useId hooks in this component\n\nvar localIdCounter = 0; // Lazily created map of render-phase updates\n\nvar renderPhaseUpdates = null; // Counter to prevent infinite loops.\n\nvar numberOfReRenders = 0;\nvar RE_RENDER_LIMIT = 25;\nvar isInHookUserCodeInDev = false; // In DEV, this is the name of the currently executing primitive hook\n\nvar currentHookNameInDev;\n\nfunction resolveCurrentlyRenderingComponent() {\n  if (currentlyRenderingComponent === null) {\n    throw new Error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n  }\n\n  {\n    if (isInHookUserCodeInDev) {\n      error('Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. ' + 'You can only call Hooks at the top level of your React function. ' + 'For more information, see ' + 'https://reactjs.org/link/rules-of-hooks');\n    }\n  }\n\n  return currentlyRenderingComponent;\n}\n\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n  if (prevDeps === null) {\n    {\n      error('%s received a final argument during this render, but not during ' + 'the previous render. Even though the final argument is optional, ' + 'its type cannot change between renders.', currentHookNameInDev);\n    }\n\n    return false;\n  }\n\n  {\n    // Don't bother comparing lengths in prod because these arrays should be\n    // passed inline.\n    if (nextDeps.length !== prevDeps.length) {\n      error('The final argument passed to %s changed size between renders. The ' + 'order and size of this array must remain constant.\\n\\n' + 'Previous: %s\\n' + 'Incoming: %s', currentHookNameInDev, \"[\" + nextDeps.join(', ') + \"]\", \"[\" + prevDeps.join(', ') + \"]\");\n    }\n  }\n\n  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++) {\n    if (objectIs(nextDeps[i], prevDeps[i])) {\n      continue;\n    }\n\n    return false;\n  }\n\n  return true;\n}\n\nfunction createHook() {\n  if (numberOfReRenders > 0) {\n    throw new Error('Rendered more hooks than during the previous render');\n  }\n\n  return {\n    memoizedState: null,\n    queue: null,\n    next: null\n  };\n}\n\nfunction createWorkInProgressHook() {\n  if (workInProgressHook === null) {\n    // This is the first hook in the list\n    if (firstWorkInProgressHook === null) {\n      isReRender = false;\n      firstWorkInProgressHook = workInProgressHook = createHook();\n    } else {\n      // There's already a work-in-progress. Reuse it.\n      isReRender = true;\n      workInProgressHook = firstWorkInProgressHook;\n    }\n  } else {\n    if (workInProgressHook.next === null) {\n      isReRender = false; // Append to the end of the list\n\n      workInProgressHook = workInProgressHook.next = createHook();\n    } else {\n      // There's already a work-in-progress. Reuse it.\n      isReRender = true;\n      workInProgressHook = workInProgressHook.next;\n    }\n  }\n\n  return workInProgressHook;\n}\n\nfunction prepareToUseHooks(task, componentIdentity) {\n  currentlyRenderingComponent = componentIdentity;\n  currentlyRenderingTask = task;\n\n  {\n    isInHookUserCodeInDev = false;\n  } // The following should have already been reset\n  // didScheduleRenderPhaseUpdate = false;\n  // localIdCounter = 0;\n  // firstWorkInProgressHook = null;\n  // numberOfReRenders = 0;\n  // renderPhaseUpdates = null;\n  // workInProgressHook = null;\n\n\n  localIdCounter = 0;\n}\nfunction finishHooks(Component, props, children, refOrContext) {\n  // This must be called after every function component to prevent hooks from\n  // being used in classes.\n  while (didScheduleRenderPhaseUpdate) {\n    // Updates were scheduled during the render phase. They are stored in\n    // the `renderPhaseUpdates` map. Call the component again, reusing the\n    // work-in-progress hooks and applying the additional updates on top. Keep\n    // restarting until no more updates are scheduled.\n    didScheduleRenderPhaseUpdate = false;\n    localIdCounter = 0;\n    numberOfReRenders += 1; // Start over from the beginning of the list\n\n    workInProgressHook = null;\n    children = Component(props, refOrContext);\n  }\n\n  resetHooksState();\n  return children;\n}\nfunction checkDidRenderIdHook() {\n  // This should be called immediately after every finishHooks call.\n  // Conceptually, it's part of the return value of finishHooks; it's only a\n  // separate function to avoid using an array tuple.\n  var didRenderIdHook = localIdCounter !== 0;\n  return didRenderIdHook;\n} // Reset the internal hooks state if an error occurs while rendering a component\n\nfunction resetHooksState() {\n  {\n    isInHookUserCodeInDev = false;\n  }\n\n  currentlyRenderingComponent = null;\n  currentlyRenderingTask = null;\n  didScheduleRenderPhaseUpdate = false;\n  firstWorkInProgressHook = null;\n  numberOfReRenders = 0;\n  renderPhaseUpdates = null;\n  workInProgressHook = null;\n}\n\nfunction readContext$1(context) {\n  {\n    if (isInHookUserCodeInDev) {\n      error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().');\n    }\n  }\n\n  return readContext(context);\n}\n\nfunction useContext(context) {\n  {\n    currentHookNameInDev = 'useContext';\n  }\n\n  resolveCurrentlyRenderingComponent();\n  return readContext(context);\n}\n\nfunction basicStateReducer(state, action) {\n  // $FlowFixMe: Flow doesn't like mixed types\n  return typeof action === 'function' ? action(state) : action;\n}\n\nfunction useState(initialState) {\n  {\n    currentHookNameInDev = 'useState';\n  }\n\n  return useReducer(basicStateReducer, // useReducer has a special case to support lazy useState initializers\n  initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n  {\n    if (reducer !== basicStateReducer) {\n      currentHookNameInDev = 'useReducer';\n    }\n  }\n\n  currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n  workInProgressHook = createWorkInProgressHook();\n\n  if (isReRender) {\n    // This is a re-render. Apply the new render phase updates to the previous\n    // current hook.\n    var queue = workInProgressHook.queue;\n    var dispatch = queue.dispatch;\n\n    if (renderPhaseUpdates !== null) {\n      // Render phase updates are stored in a map of queue -> linked list\n      var firstRenderPhaseUpdate = renderPhaseUpdates.get(queue);\n\n      if (firstRenderPhaseUpdate !== undefined) {\n        renderPhaseUpdates.delete(queue);\n        var newState = workInProgressHook.memoizedState;\n        var update = firstRenderPhaseUpdate;\n\n        do {\n          // Process this render phase update. We don't have to check the\n          // priority because it will always be the same as the current\n          // render's.\n          var action = update.action;\n\n          {\n            isInHookUserCodeInDev = true;\n          }\n\n          newState = reducer(newState, action);\n\n          {\n            isInHookUserCodeInDev = false;\n          }\n\n          update = update.next;\n        } while (update !== null);\n\n        workInProgressHook.memoizedState = newState;\n        return [newState, dispatch];\n      }\n    }\n\n    return [workInProgressHook.memoizedState, dispatch];\n  } else {\n    {\n      isInHookUserCodeInDev = true;\n    }\n\n    var initialState;\n\n    if (reducer === basicStateReducer) {\n      // Special case for `useState`.\n      initialState = typeof initialArg === 'function' ? initialArg() : initialArg;\n    } else {\n      initialState = init !== undefined ? init(initialArg) : initialArg;\n    }\n\n    {\n      isInHookUserCodeInDev = false;\n    }\n\n    workInProgressHook.memoizedState = initialState;\n\n    var _queue = workInProgressHook.queue = {\n      last: null,\n      dispatch: null\n    };\n\n    var _dispatch = _queue.dispatch = dispatchAction.bind(null, currentlyRenderingComponent, _queue);\n\n    return [workInProgressHook.memoizedState, _dispatch];\n  }\n}\n\nfunction useMemo(nextCreate, deps) {\n  currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n  workInProgressHook = createWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n\n  if (workInProgressHook !== null) {\n    var prevState = workInProgressHook.memoizedState;\n\n    if (prevState !== null) {\n      if (nextDeps !== null) {\n        var prevDeps = prevState[1];\n\n        if (areHookInputsEqual(nextDeps, prevDeps)) {\n          return prevState[0];\n        }\n      }\n    }\n  }\n\n  {\n    isInHookUserCodeInDev = true;\n  }\n\n  var nextValue = nextCreate();\n\n  {\n    isInHookUserCodeInDev = false;\n  }\n\n  workInProgressHook.memoizedState = [nextValue, nextDeps];\n  return nextValue;\n}\n\nfunction useRef(initialValue) {\n  currentlyRenderingComponent = resolveCurrentlyRenderingComponent();\n  workInProgressHook = createWorkInProgressHook();\n  var previousRef = workInProgressHook.memoizedState;\n\n  if (previousRef === null) {\n    var ref = {\n      current: initialValue\n    };\n\n    {\n      Object.seal(ref);\n    }\n\n    workInProgressHook.memoizedState = ref;\n    return ref;\n  } else {\n    return previousRef;\n  }\n}\n\nfunction useLayoutEffect(create, inputs) {\n  {\n    currentHookNameInDev = 'useLayoutEffect';\n\n    error('useLayoutEffect does nothing on the server, because its effect cannot ' + \"be encoded into the server renderer's output format. This will lead \" + 'to a mismatch between the initial, non-hydrated UI and the intended ' + 'UI. To avoid this, useLayoutEffect should only be used in ' + 'components that render exclusively on the client. ' + 'See https://reactjs.org/link/uselayouteffect-ssr for common fixes.');\n  }\n}\n\nfunction dispatchAction(componentIdentity, queue, action) {\n  if (numberOfReRenders >= RE_RENDER_LIMIT) {\n    throw new Error('Too many re-renders. React limits the number of renders to prevent ' + 'an infinite loop.');\n  }\n\n  if (componentIdentity === currentlyRenderingComponent) {\n    // This is a render phase update. Stash it in a lazily-created map of\n    // queue -> linked list of updates. After this render pass, we'll restart\n    // and apply the stashed updates on top of the work-in-progress hook.\n    didScheduleRenderPhaseUpdate = true;\n    var update = {\n      action: action,\n      next: null\n    };\n\n    if (renderPhaseUpdates === null) {\n      renderPhaseUpdates = new Map();\n    }\n\n    var firstRenderPhaseUpdate = renderPhaseUpdates.get(queue);\n\n    if (firstRenderPhaseUpdate === undefined) {\n      renderPhaseUpdates.set(queue, update);\n    } else {\n      // Append the update to the end of the list.\n      var lastRenderPhaseUpdate = firstRenderPhaseUpdate;\n\n      while (lastRenderPhaseUpdate.next !== null) {\n        lastRenderPhaseUpdate = lastRenderPhaseUpdate.next;\n      }\n\n      lastRenderPhaseUpdate.next = update;\n    }\n  }\n}\n\nfunction useCallback(callback, deps) {\n  return useMemo(function () {\n    return callback;\n  }, deps);\n} // TODO Decide on how to implement this hook for server rendering.\n// If a mutation occurs during render, consider triggering a Suspense boundary\n// and falling back to client rendering.\n\nfunction useMutableSource(source, getSnapshot, subscribe) {\n  resolveCurrentlyRenderingComponent();\n  return getSnapshot(source._source);\n}\n\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  if (getServerSnapshot === undefined) {\n    throw new Error('Missing getServerSnapshot, which is required for ' + 'server-rendered content. Will revert to client rendering.');\n  }\n\n  return getServerSnapshot();\n}\n\nfunction useDeferredValue(value) {\n  resolveCurrentlyRenderingComponent();\n  return value;\n}\n\nfunction unsupportedStartTransition() {\n  throw new Error('startTransition cannot be called during server rendering.');\n}\n\nfunction useTransition() {\n  resolveCurrentlyRenderingComponent();\n  return [false, unsupportedStartTransition];\n}\n\nfunction useId() {\n  var task = currentlyRenderingTask;\n  var treeId = getTreeId(task.treeContext);\n  var responseState = currentResponseState;\n\n  if (responseState === null) {\n    throw new Error('Invalid hook call. Hooks can only be called inside of the body of a function component.');\n  }\n\n  var localId = localIdCounter++;\n  return makeId(responseState, treeId, localId);\n}\n\nfunction noop() {}\n\nvar Dispatcher = {\n  readContext: readContext$1,\n  useContext: useContext,\n  useMemo: useMemo,\n  useReducer: useReducer,\n  useRef: useRef,\n  useState: useState,\n  useInsertionEffect: noop,\n  useLayoutEffect: useLayoutEffect,\n  useCallback: useCallback,\n  // useImperativeHandle is not run in the server environment\n  useImperativeHandle: noop,\n  // Effects are not run in the server environment.\n  useEffect: noop,\n  // Debugging effect\n  useDebugValue: noop,\n  useDeferredValue: useDeferredValue,\n  useTransition: useTransition,\n  useId: useId,\n  // Subscriptions are not setup in a server environment.\n  useMutableSource: useMutableSource,\n  useSyncExternalStore: useSyncExternalStore\n};\n\nvar currentResponseState = null;\nfunction setCurrentResponseState(responseState) {\n  currentResponseState = responseState;\n}\n\nfunction getStackByComponentStackNode(componentStack) {\n  try {\n    var info = '';\n    var node = componentStack;\n\n    do {\n      switch (node.tag) {\n        case 0:\n          info += describeBuiltInComponentFrame(node.type, null, null);\n          break;\n\n        case 1:\n          info += describeFunctionComponentFrame(node.type, null, null);\n          break;\n\n        case 2:\n          info += describeClassComponentFrame(node.type, null, null);\n          break;\n      }\n\n      node = node.parent;\n    } while (node);\n\n    return info;\n  } catch (x) {\n    return '\\nError generating stack: ' + x.message + '\\n' + x.stack;\n  }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\nvar PENDING = 0;\nvar COMPLETED = 1;\nvar FLUSHED = 2;\nvar ABORTED = 3;\nvar ERRORED = 4;\nvar OPEN = 0;\nvar CLOSING = 1;\nvar CLOSED = 2;\n// This is a default heuristic for how to split up the HTML content into progressive\n// loading. Our goal is to be able to display additional new content about every 500ms.\n// Faster than that is unnecessary and should be throttled on the client. It also\n// adds unnecessary overhead to do more splits. We don't know if it's a higher or lower\n// end device but higher end suffer less from the overhead than lower end does from\n// not getting small enough pieces. We error on the side of low end.\n// We base this on low end 3G speeds which is about 500kbits per second. We assume\n// that there can be a reasonable drop off from max bandwidth which leaves you with\n// as little as 80%. We can receive half of that each 500ms - at best. In practice,\n// a little bandwidth is lost to processing and contention - e.g. CSS and images that\n// are downloaded along with the main content. So we estimate about half of that to be\n// the lower end throughput. In other words, we expect that you can at least show\n// about 12.5kb of content per 500ms. Not counting starting latency for the first\n// paint.\n// 500 * 1024 / 8 * .8 * 0.5 / 2\nvar DEFAULT_PROGRESSIVE_CHUNK_SIZE = 12800;\n\nfunction defaultErrorHandler(error) {\n  console['error'](error); // Don't transform to our wrapper\n}\n\nfunction noop$1() {}\n\nfunction createRequest(children, responseState, rootFormatContext, progressiveChunkSize, onError, onAllReady, onShellReady, onShellError, onFatalError) {\n  var pingedTasks = [];\n  var abortSet = new Set();\n  var request = {\n    destination: null,\n    responseState: responseState,\n    progressiveChunkSize: progressiveChunkSize === undefined ? DEFAULT_PROGRESSIVE_CHUNK_SIZE : progressiveChunkSize,\n    status: OPEN,\n    fatalError: null,\n    nextSegmentId: 0,\n    allPendingTasks: 0,\n    pendingRootTasks: 0,\n    completedRootSegment: null,\n    abortableTasks: abortSet,\n    pingedTasks: pingedTasks,\n    clientRenderedBoundaries: [],\n    completedBoundaries: [],\n    partialBoundaries: [],\n    onError: onError === undefined ? defaultErrorHandler : onError,\n    onAllReady: onAllReady === undefined ? noop$1 : onAllReady,\n    onShellReady: onShellReady === undefined ? noop$1 : onShellReady,\n    onShellError: onShellError === undefined ? noop$1 : onShellError,\n    onFatalError: onFatalError === undefined ? noop$1 : onFatalError\n  }; // This segment represents the root fallback.\n\n  var rootSegment = createPendingSegment(request, 0, null, rootFormatContext); // There is no parent so conceptually, we're unblocked to flush this segment.\n\n  rootSegment.parentFlushed = true;\n  var rootTask = createTask(request, children, null, rootSegment, abortSet, emptyContextObject, rootContextSnapshot, emptyTreeContext);\n  pingedTasks.push(rootTask);\n  return request;\n}\n\nfunction pingTask(request, task) {\n  var pingedTasks = request.pingedTasks;\n  pingedTasks.push(task);\n\n  if (pingedTasks.length === 1) {\n    scheduleWork(function () {\n      return performWork(request);\n    });\n  }\n}\n\nfunction createSuspenseBoundary(request, fallbackAbortableTasks) {\n  return {\n    id: UNINITIALIZED_SUSPENSE_BOUNDARY_ID,\n    rootSegmentID: -1,\n    parentFlushed: false,\n    pendingTasks: 0,\n    forceClientRender: false,\n    completedSegments: [],\n    byteSize: 0,\n    fallbackAbortableTasks: fallbackAbortableTasks\n  };\n}\n\nfunction createTask(request, node, blockedBoundary, blockedSegment, abortSet, legacyContext, context, treeContext) {\n  request.allPendingTasks++;\n\n  if (blockedBoundary === null) {\n    request.pendingRootTasks++;\n  } else {\n    blockedBoundary.pendingTasks++;\n  }\n\n  var task = {\n    node: node,\n    ping: function () {\n      return pingTask(request, task);\n    },\n    blockedBoundary: blockedBoundary,\n    blockedSegment: blockedSegment,\n    abortSet: abortSet,\n    legacyContext: legacyContext,\n    context: context,\n    treeContext: treeContext\n  };\n\n  {\n    task.componentStack = null;\n  }\n\n  abortSet.add(task);\n  return task;\n}\n\nfunction createPendingSegment(request, index, boundary, formatContext) {\n  return {\n    status: PENDING,\n    id: -1,\n    // lazily assigned later\n    index: index,\n    parentFlushed: false,\n    chunks: [],\n    children: [],\n    formatContext: formatContext,\n    boundary: boundary\n  };\n} // DEV-only global reference to the currently executing task\n\n\nvar currentTaskInDEV = null;\n\nfunction getCurrentStackInDEV() {\n  {\n    if (currentTaskInDEV === null || currentTaskInDEV.componentStack === null) {\n      return '';\n    }\n\n    return getStackByComponentStackNode(currentTaskInDEV.componentStack);\n  }\n}\n\nfunction pushBuiltInComponentStackInDEV(task, type) {\n  {\n    task.componentStack = {\n      tag: 0,\n      parent: task.componentStack,\n      type: type\n    };\n  }\n}\n\nfunction pushFunctionComponentStackInDEV(task, type) {\n  {\n    task.componentStack = {\n      tag: 1,\n      parent: task.componentStack,\n      type: type\n    };\n  }\n}\n\nfunction pushClassComponentStackInDEV(task, type) {\n  {\n    task.componentStack = {\n      tag: 2,\n      parent: task.componentStack,\n      type: type\n    };\n  }\n}\n\nfunction popComponentStackInDEV(task) {\n  {\n    if (task.componentStack === null) {\n      error('Unexpectedly popped too many stack frames. This is a bug in React.');\n    } else {\n      task.componentStack = task.componentStack.parent;\n    }\n  }\n}\n\nfunction logRecoverableError(request, error) {\n  // If this callback errors, we intentionally let that error bubble up to become a fatal error\n  // so that someone fixes the error reporting instead of hiding it.\n  var onError = request.onError;\n  onError(error);\n}\n\nfunction fatalError(request, error) {\n  // This is called outside error handling code such as if the root errors outside\n  // a suspense boundary or if the root suspense boundary's fallback errors.\n  // It's also called if React itself or its host configs errors.\n  var onShellError = request.onShellError;\n  onShellError(error);\n  var onFatalError = request.onFatalError;\n  onFatalError(error);\n\n  if (request.destination !== null) {\n    request.status = CLOSED;\n    closeWithError(request.destination, error);\n  } else {\n    request.status = CLOSING;\n    request.fatalError = error;\n  }\n}\n\nfunction renderSuspenseBoundary(request, task, props) {\n  pushBuiltInComponentStackInDEV(task, 'Suspense');\n  var parentBoundary = task.blockedBoundary;\n  var parentSegment = task.blockedSegment; // Each time we enter a suspense boundary, we split out into a new segment for\n  // the fallback so that we can later replace that segment with the content.\n  // This also lets us split out the main content even if it doesn't suspend,\n  // in case it ends up generating a large subtree of content.\n\n  var fallback = props.fallback;\n  var content = props.children;\n  var fallbackAbortSet = new Set();\n  var newBoundary = createSuspenseBoundary(request, fallbackAbortSet);\n  var insertionIndex = parentSegment.chunks.length; // The children of the boundary segment is actually the fallback.\n\n  var boundarySegment = createPendingSegment(request, insertionIndex, newBoundary, parentSegment.formatContext);\n  parentSegment.children.push(boundarySegment); // This segment is the actual child content. We can start rendering that immediately.\n\n  var contentRootSegment = createPendingSegment(request, 0, null, parentSegment.formatContext); // We mark the root segment as having its parent flushed. It's not really flushed but there is\n  // no parent segment so there's nothing to wait on.\n\n  contentRootSegment.parentFlushed = true; // Currently this is running synchronously. We could instead schedule this to pingedTasks.\n  // I suspect that there might be some efficiency benefits from not creating the suspended task\n  // and instead just using the stack if possible.\n  // TODO: Call this directly instead of messing with saving and restoring contexts.\n  // We can reuse the current context and task to render the content immediately without\n  // context switching. We just need to temporarily switch which boundary and which segment\n  // we're writing to. If something suspends, it'll spawn new suspended task with that context.\n\n  task.blockedBoundary = newBoundary;\n  task.blockedSegment = contentRootSegment;\n\n  try {\n    // We use the safe form because we don't handle suspending here. Only error handling.\n    renderNode(request, task, content);\n    contentRootSegment.status = COMPLETED;\n    queueCompletedSegment(newBoundary, contentRootSegment);\n\n    if (newBoundary.pendingTasks === 0) {\n      // This must have been the last segment we were waiting on. This boundary is now complete.\n      // Therefore we won't need the fallback. We early return so that we don't have to create\n      // the fallback.\n      popComponentStackInDEV(task);\n      return;\n    }\n  } catch (error) {\n    contentRootSegment.status = ERRORED;\n    logRecoverableError(request, error);\n    newBoundary.forceClientRender = true; // We don't need to decrement any task numbers because we didn't spawn any new task.\n    // We don't need to schedule any task because we know the parent has written yet.\n    // We do need to fallthrough to create the fallback though.\n  } finally {\n    task.blockedBoundary = parentBoundary;\n    task.blockedSegment = parentSegment;\n  } // We create suspended task for the fallback because we don't want to actually work\n  // on it yet in case we finish the main content, so we queue for later.\n\n\n  var suspendedFallbackTask = createTask(request, fallback, parentBoundary, boundarySegment, fallbackAbortSet, task.legacyContext, task.context, task.treeContext);\n\n  {\n    suspendedFallbackTask.componentStack = task.componentStack;\n  } // TODO: This should be queued at a separate lower priority queue so that we only work\n  // on preparing fallbacks if we don't have any more main content to task on.\n\n\n  request.pingedTasks.push(suspendedFallbackTask);\n  popComponentStackInDEV(task);\n}\n\nfunction renderHostElement(request, task, type, props) {\n  pushBuiltInComponentStackInDEV(task, type);\n  var segment = task.blockedSegment;\n  var children = pushStartInstance(segment.chunks, type, props, request.responseState, segment.formatContext);\n  var prevContext = segment.formatContext;\n  segment.formatContext = getChildFormatContext(prevContext, type, props); // We use the non-destructive form because if something suspends, we still\n  // need to pop back up and finish this subtree of HTML.\n\n  renderNode(request, task, children); // We expect that errors will fatal the whole task and that we don't need\n  // the correct context. Therefore this is not in a finally.\n\n  segment.formatContext = prevContext;\n  pushEndInstance(segment.chunks, type);\n  popComponentStackInDEV(task);\n}\n\nfunction shouldConstruct$1(Component) {\n  return Component.prototype && Component.prototype.isReactComponent;\n}\n\nfunction renderWithHooks(request, task, Component, props, secondArg) {\n  var componentIdentity = {};\n  prepareToUseHooks(task, componentIdentity);\n  var result = Component(props, secondArg);\n  return finishHooks(Component, props, result, secondArg);\n}\n\nfunction finishClassComponent(request, task, instance, Component, props) {\n  var nextChildren = instance.render();\n\n  {\n    if (instance.props !== props) {\n      if (!didWarnAboutReassigningProps) {\n        error('It looks like %s is reassigning its own `this.props` while rendering. ' + 'This is not supported and can lead to confusing bugs.', getComponentNameFromType(Component) || 'a component');\n      }\n\n      didWarnAboutReassigningProps = true;\n    }\n  }\n\n  {\n    var childContextTypes = Component.childContextTypes;\n\n    if (childContextTypes !== null && childContextTypes !== undefined) {\n      var previousContext = task.legacyContext;\n      var mergedContext = processChildContext(instance, Component, previousContext, childContextTypes);\n      task.legacyContext = mergedContext;\n      renderNodeDestructive(request, task, nextChildren);\n      task.legacyContext = previousContext;\n      return;\n    }\n  }\n\n  renderNodeDestructive(request, task, nextChildren);\n}\n\nfunction renderClassComponent(request, task, Component, props) {\n  pushClassComponentStackInDEV(task, Component);\n  var maskedContext =  getMaskedContext(Component, task.legacyContext) ;\n  var instance = constructClassInstance(Component, props, maskedContext);\n  mountClassInstance(instance, Component, props, maskedContext);\n  finishClassComponent(request, task, instance, Component, props);\n  popComponentStackInDEV(task);\n}\n\nvar didWarnAboutBadClass = {};\nvar didWarnAboutModulePatternComponent = {};\nvar didWarnAboutContextTypeOnFunctionComponent = {};\nvar didWarnAboutGetDerivedStateOnFunctionComponent = {};\nvar didWarnAboutReassigningProps = false;\nvar didWarnAboutGenerators = false;\nvar didWarnAboutMaps = false;\nvar hasWarnedAboutUsingContextAsConsumer = false; // This would typically be a function component but we still support module pattern\n// components for some reason.\n\nfunction renderIndeterminateComponent(request, task, Component, props) {\n  var legacyContext;\n\n  {\n    legacyContext = getMaskedContext(Component, task.legacyContext);\n  }\n\n  pushFunctionComponentStackInDEV(task, Component);\n\n  {\n    if (Component.prototype && typeof Component.prototype.render === 'function') {\n      var componentName = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutBadClass[componentName]) {\n        error(\"The <%s /> component appears to have a render method, but doesn't extend React.Component. \" + 'This is likely to cause errors. Change %s to extend React.Component instead.', componentName, componentName);\n\n        didWarnAboutBadClass[componentName] = true;\n      }\n    }\n  }\n\n  var value = renderWithHooks(request, task, Component, props, legacyContext);\n  var hasId = checkDidRenderIdHook();\n\n  {\n    // Support for module components is deprecated and is removed behind a flag.\n    // Whether or not it would crash later, we want to show a good message in DEV first.\n    if (typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) {\n      var _componentName = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutModulePatternComponent[_componentName]) {\n        error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + \"If you can't use a class try assigning the prototype on the function as a workaround. \" + \"`%s.prototype = React.Component.prototype`. Don't use an arrow function since it \" + 'cannot be called with `new` by React.', _componentName, _componentName, _componentName);\n\n        didWarnAboutModulePatternComponent[_componentName] = true;\n      }\n    }\n  }\n\n  if ( // Run these checks in production only if the flag is off.\n  // Eventually we'll delete this branch altogether.\n   typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) {\n    {\n      var _componentName2 = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutModulePatternComponent[_componentName2]) {\n        error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + \"If you can't use a class try assigning the prototype on the function as a workaround. \" + \"`%s.prototype = React.Component.prototype`. Don't use an arrow function since it \" + 'cannot be called with `new` by React.', _componentName2, _componentName2, _componentName2);\n\n        didWarnAboutModulePatternComponent[_componentName2] = true;\n      }\n    }\n\n    mountClassInstance(value, Component, props, legacyContext);\n    finishClassComponent(request, task, value, Component, props);\n  } else {\n\n    {\n      validateFunctionComponentInDev(Component);\n    } // We're now successfully past this task, and we don't have to pop back to\n    // the previous task every again, so we can use the destructive recursive form.\n\n\n    if (hasId) {\n      // This component materialized an id. We treat this as its own level, with\n      // a single \"child\" slot.\n      var prevTreeContext = task.treeContext;\n      var totalChildren = 1;\n      var index = 0;\n      task.treeContext = pushTreeContext(prevTreeContext, totalChildren, index);\n\n      try {\n        renderNodeDestructive(request, task, value);\n      } finally {\n        task.treeContext = prevTreeContext;\n      }\n    } else {\n      renderNodeDestructive(request, task, value);\n    }\n  }\n\n  popComponentStackInDEV(task);\n}\n\nfunction validateFunctionComponentInDev(Component) {\n  {\n    if (Component) {\n      if (Component.childContextTypes) {\n        error('%s(...): childContextTypes cannot be defined on a function component.', Component.displayName || Component.name || 'Component');\n      }\n    }\n\n    if (typeof Component.getDerivedStateFromProps === 'function') {\n      var _componentName3 = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3]) {\n        error('%s: Function components do not support getDerivedStateFromProps.', _componentName3);\n\n        didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3] = true;\n      }\n    }\n\n    if (typeof Component.contextType === 'object' && Component.contextType !== null) {\n      var _componentName4 = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutContextTypeOnFunctionComponent[_componentName4]) {\n        error('%s: Function components do not support contextType.', _componentName4);\n\n        didWarnAboutContextTypeOnFunctionComponent[_componentName4] = true;\n      }\n    }\n  }\n}\n\nfunction resolveDefaultProps(Component, baseProps) {\n  if (Component && Component.defaultProps) {\n    // Resolve default props. Taken from ReactElement\n    var props = assign({}, baseProps);\n    var defaultProps = Component.defaultProps;\n\n    for (var propName in defaultProps) {\n      if (props[propName] === undefined) {\n        props[propName] = defaultProps[propName];\n      }\n    }\n\n    return props;\n  }\n\n  return baseProps;\n}\n\nfunction renderForwardRef(request, task, type, props, ref) {\n  pushFunctionComponentStackInDEV(task, type.render);\n  var children = renderWithHooks(request, task, type.render, props, ref);\n  var hasId = checkDidRenderIdHook();\n\n  if (hasId) {\n    // This component materialized an id. We treat this as its own level, with\n    // a single \"child\" slot.\n    var prevTreeContext = task.treeContext;\n    var totalChildren = 1;\n    var index = 0;\n    task.treeContext = pushTreeContext(prevTreeContext, totalChildren, index);\n\n    try {\n      renderNodeDestructive(request, task, children);\n    } finally {\n      task.treeContext = prevTreeContext;\n    }\n  } else {\n    renderNodeDestructive(request, task, children);\n  }\n\n  popComponentStackInDEV(task);\n}\n\nfunction renderMemo(request, task, type, props, ref) {\n  var innerType = type.type;\n  var resolvedProps = resolveDefaultProps(innerType, props);\n  renderElement(request, task, innerType, resolvedProps, ref);\n}\n\nfunction renderContextConsumer(request, task, context, props) {\n  // The logic below for Context differs depending on PROD or DEV mode. In\n  // DEV mode, we create a separate object for Context.Consumer that acts\n  // like a proxy to Context. This proxy object adds unnecessary code in PROD\n  // so we use the old behaviour (Context.Consumer references Context) to\n  // reduce size and overhead. The separate object references context via\n  // a property called \"_context\", which also gives us the ability to check\n  // in DEV mode if this property exists or not and warn if it does not.\n  {\n    if (context._context === undefined) {\n      // This may be because it's a Context (rather than a Consumer).\n      // Or it may be because it's older React where they're the same thing.\n      // We only want to warn if we're sure it's a new React.\n      if (context !== context.Consumer) {\n        if (!hasWarnedAboutUsingContextAsConsumer) {\n          hasWarnedAboutUsingContextAsConsumer = true;\n\n          error('Rendering <Context> directly is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');\n        }\n      }\n    } else {\n      context = context._context;\n    }\n  }\n\n  var render = props.children;\n\n  {\n    if (typeof render !== 'function') {\n      error('A context consumer was rendered with multiple children, or a child ' + \"that isn't a function. A context consumer expects a single child \" + 'that is a function. If you did pass a function, make sure there ' + 'is no trailing or leading whitespace around it.');\n    }\n  }\n\n  var newValue = readContext(context);\n  var newChildren = render(newValue);\n  renderNodeDestructive(request, task, newChildren);\n}\n\nfunction renderContextProvider(request, task, type, props) {\n  var context = type._context;\n  var value = props.value;\n  var children = props.children;\n  var prevSnapshot;\n\n  {\n    prevSnapshot = task.context;\n  }\n\n  task.context = pushProvider(context, value);\n  renderNodeDestructive(request, task, children);\n  task.context = popProvider(context);\n\n  {\n    if (prevSnapshot !== task.context) {\n      error('Popping the context provider did not return back to the original snapshot. This is a bug in React.');\n    }\n  }\n}\n\nfunction renderLazyComponent(request, task, lazyComponent, props, ref) {\n  pushBuiltInComponentStackInDEV(task, 'Lazy');\n  var payload = lazyComponent._payload;\n  var init = lazyComponent._init;\n  var Component = init(payload);\n  var resolvedProps = resolveDefaultProps(Component, props);\n  renderElement(request, task, Component, resolvedProps, ref);\n  popComponentStackInDEV(task);\n}\n\nfunction renderElement(request, task, type, props, ref) {\n  if (typeof type === 'function') {\n    if (shouldConstruct$1(type)) {\n      renderClassComponent(request, task, type, props);\n      return;\n    } else {\n      renderIndeterminateComponent(request, task, type, props);\n      return;\n    }\n  }\n\n  if (typeof type === 'string') {\n    renderHostElement(request, task, type, props);\n    return;\n  }\n\n  switch (type) {\n    // TODO: LegacyHidden acts the same as a fragment. This only works\n    // because we currently assume that every instance of LegacyHidden is\n    // accompanied by a host component wrapper. In the hidden mode, the host\n    // component is given a `hidden` attribute, which ensures that the\n    // initial HTML is not visible. To support the use of LegacyHidden as a\n    // true fragment, without an extra DOM node, we would have to hide the\n    // initial HTML in some other way.\n    // TODO: Add REACT_OFFSCREEN_TYPE here too with the same capability.\n    case REACT_LEGACY_HIDDEN_TYPE:\n    case REACT_DEBUG_TRACING_MODE_TYPE:\n    case REACT_STRICT_MODE_TYPE:\n    case REACT_PROFILER_TYPE:\n    case REACT_FRAGMENT_TYPE:\n      {\n        renderNodeDestructive(request, task, props.children);\n        return;\n      }\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      {\n        pushBuiltInComponentStackInDEV(task, 'SuspenseList'); // TODO: SuspenseList should control the boundaries.\n\n        renderNodeDestructive(request, task, props.children);\n        popComponentStackInDEV(task);\n        return;\n      }\n\n    case REACT_SCOPE_TYPE:\n      {\n\n        throw new Error('ReactDOMServer does not yet support scope components.');\n      }\n    // eslint-disable-next-line-no-fallthrough\n\n    case REACT_SUSPENSE_TYPE:\n      {\n        {\n          renderSuspenseBoundary(request, task, props);\n        }\n\n        return;\n      }\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        {\n          renderForwardRef(request, task, type, props, ref);\n          return;\n        }\n\n      case REACT_MEMO_TYPE:\n        {\n          renderMemo(request, task, type, props, ref);\n          return;\n        }\n\n      case REACT_PROVIDER_TYPE:\n        {\n          renderContextProvider(request, task, type, props);\n          return;\n        }\n\n      case REACT_CONTEXT_TYPE:\n        {\n          renderContextConsumer(request, task, type, props);\n          return;\n        }\n\n      case REACT_LAZY_TYPE:\n        {\n          renderLazyComponent(request, task, type, props);\n          return;\n        }\n    }\n  }\n\n  var info = '';\n\n  {\n    if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n      info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and \" + 'named imports.';\n    }\n  }\n\n  throw new Error('Element type is invalid: expected a string (for built-in ' + 'components) or a class/function (for composite components) ' + (\"but got: \" + (type == null ? type : typeof type) + \".\" + info));\n}\n\nfunction validateIterable(iterable, iteratorFn) {\n  {\n    // We don't support rendering Generators because it's a mutation.\n    // See https://github.com/facebook/react/issues/12995\n    if (typeof Symbol === 'function' && // $FlowFixMe Flow doesn't know about toStringTag\n    iterable[Symbol.toStringTag] === 'Generator') {\n      if (!didWarnAboutGenerators) {\n        error('Using Generators as children is unsupported and will likely yield ' + 'unexpected results because enumerating a generator mutates it. ' + 'You may convert it to an array with `Array.from()` or the ' + '`[...spread]` operator before rendering. Keep in mind ' + 'you might need to polyfill these features for older browsers.');\n      }\n\n      didWarnAboutGenerators = true;\n    } // Warn about using Maps as children\n\n\n    if (iterable.entries === iteratorFn) {\n      if (!didWarnAboutMaps) {\n        error('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n      }\n\n      didWarnAboutMaps = true;\n    }\n  }\n} // This function by it self renders a node and consumes the task by mutating it\n// to update the current execution state.\n\n\nfunction renderNodeDestructive(request, task, node) {\n  // Stash the node we're working on. We'll pick up from this task in case\n  // something suspends.\n  task.node = node; // Handle object types\n\n  if (typeof node === 'object' && node !== null) {\n    switch (node.$$typeof) {\n      case REACT_ELEMENT_TYPE:\n        {\n          var element = node;\n          var type = element.type;\n          var props = element.props;\n          var ref = element.ref;\n          renderElement(request, task, type, props, ref);\n          return;\n        }\n\n      case REACT_PORTAL_TYPE:\n        throw new Error('Portals are not currently supported by the server renderer. ' + 'Render them conditionally so that they only appear on the client render.');\n      // eslint-disable-next-line-no-fallthrough\n\n      case REACT_LAZY_TYPE:\n        {\n          {\n            var lazyNode = node;\n            var payload = lazyNode._payload;\n            var init = lazyNode._init;\n            var resolvedNode = init(payload);\n            renderNodeDestructive(request, task, resolvedNode);\n            return;\n          }\n        }\n    }\n\n    if (isArray(node)) {\n      renderChildrenArray(request, task, node);\n      return;\n    }\n\n    var iteratorFn = getIteratorFn(node);\n\n    if (iteratorFn) {\n      {\n        validateIterable(node, iteratorFn);\n      }\n\n      var iterator = iteratorFn.call(node);\n\n      if (iterator) {\n        // We need to know how many total children are in this set, so that we\n        // can allocate enough id slots to acommodate them. So we must exhaust\n        // the iterator before we start recursively rendering the children.\n        // TODO: This is not great but I think it's inherent to the id\n        // generation algorithm.\n        var step = iterator.next(); // If there are not entries, we need to push an empty so we start by checking that.\n\n        if (!step.done) {\n          var children = [];\n\n          do {\n            children.push(step.value);\n            step = iterator.next();\n          } while (!step.done);\n\n          renderChildrenArray(request, task, children);\n          return;\n        }\n\n        return;\n      }\n    }\n\n    var childString = Object.prototype.toString.call(node);\n    throw new Error(\"Objects are not valid as a React child (found: \" + (childString === '[object Object]' ? 'object with keys {' + Object.keys(node).join(', ') + '}' : childString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n  }\n\n  if (typeof node === 'string') {\n    pushTextInstance(task.blockedSegment.chunks, node, request.responseState);\n    return;\n  }\n\n  if (typeof node === 'number') {\n    pushTextInstance(task.blockedSegment.chunks, '' + node, request.responseState);\n    return;\n  }\n\n  {\n    if (typeof node === 'function') {\n      error('Functions are not valid as a React child. This may happen if ' + 'you return a Component instead of <Component /> from render. ' + 'Or maybe you meant to call this function rather than return it.');\n    }\n  }\n}\n\nfunction renderChildrenArray(request, task, children) {\n  var totalChildren = children.length;\n\n  for (var i = 0; i < totalChildren; i++) {\n    var prevTreeContext = task.treeContext;\n    task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i);\n\n    try {\n      // We need to use the non-destructive form so that we can safely pop back\n      // up and render the sibling if something suspends.\n      renderNode(request, task, children[i]);\n    } finally {\n      task.treeContext = prevTreeContext;\n    }\n  }\n}\n\nfunction spawnNewSuspendedTask(request, task, x) {\n  // Something suspended, we'll need to create a new segment and resolve it later.\n  var segment = task.blockedSegment;\n  var insertionIndex = segment.chunks.length;\n  var newSegment = createPendingSegment(request, insertionIndex, null, segment.formatContext);\n  segment.children.push(newSegment);\n  var newTask = createTask(request, task.node, task.blockedBoundary, newSegment, task.abortSet, task.legacyContext, task.context, task.treeContext);\n\n  {\n    if (task.componentStack !== null) {\n      // We pop one task off the stack because the node that suspended will be tried again,\n      // which will add it back onto the stack.\n      newTask.componentStack = task.componentStack.parent;\n    }\n  }\n\n  var ping = newTask.ping;\n  x.then(ping, ping);\n} // This is a non-destructive form of rendering a node. If it suspends it spawns\n// a new task and restores the context of this task to what it was before.\n\n\nfunction renderNode(request, task, node) {\n  // TODO: Store segment.children.length here and reset it in case something\n  // suspended partially through writing something.\n  // Snapshot the current context in case something throws to interrupt the\n  // process.\n  var previousFormatContext = task.blockedSegment.formatContext;\n  var previousLegacyContext = task.legacyContext;\n  var previousContext = task.context;\n  var previousComponentStack = null;\n\n  {\n    previousComponentStack = task.componentStack;\n  }\n\n  try {\n    return renderNodeDestructive(request, task, node);\n  } catch (x) {\n    resetHooksState();\n\n    if (typeof x === 'object' && x !== null && typeof x.then === 'function') {\n      spawnNewSuspendedTask(request, task, x); // Restore the context. We assume that this will be restored by the inner\n      // functions in case nothing throws so we don't use \"finally\" here.\n\n      task.blockedSegment.formatContext = previousFormatContext;\n      task.legacyContext = previousLegacyContext;\n      task.context = previousContext; // Restore all active ReactContexts to what they were before.\n\n      switchContext(previousContext);\n\n      {\n        task.componentStack = previousComponentStack;\n      }\n\n      return;\n    } else {\n      // Restore the context. We assume that this will be restored by the inner\n      // functions in case nothing throws so we don't use \"finally\" here.\n      task.blockedSegment.formatContext = previousFormatContext;\n      task.legacyContext = previousLegacyContext;\n      task.context = previousContext; // Restore all active ReactContexts to what they were before.\n\n      switchContext(previousContext);\n\n      {\n        task.componentStack = previousComponentStack;\n      } // We assume that we don't need the correct context.\n      // Let's terminate the rest of the tree and don't render any siblings.\n\n\n      throw x;\n    }\n  }\n}\n\nfunction erroredTask(request, boundary, segment, error) {\n  // Report the error to a global handler.\n  logRecoverableError(request, error);\n\n  if (boundary === null) {\n    fatalError(request, error);\n  } else {\n    boundary.pendingTasks--;\n\n    if (!boundary.forceClientRender) {\n      boundary.forceClientRender = true; // Regardless of what happens next, this boundary won't be displayed,\n      // so we can flush it, if the parent already flushed.\n\n      if (boundary.parentFlushed) {\n        // We don't have a preference where in the queue this goes since it's likely\n        // to error on the client anyway. However, intentionally client-rendered\n        // boundaries should be flushed earlier so that they can start on the client.\n        // We reuse the same queue for errors.\n        request.clientRenderedBoundaries.push(boundary);\n      }\n    }\n  }\n\n  request.allPendingTasks--;\n\n  if (request.allPendingTasks === 0) {\n    var onAllReady = request.onAllReady;\n    onAllReady();\n  }\n}\n\nfunction abortTaskSoft(task) {\n  // This aborts task without aborting the parent boundary that it blocks.\n  // It's used for when we didn't need this task to complete the tree.\n  // If task was needed, then it should use abortTask instead.\n  var request = this;\n  var boundary = task.blockedBoundary;\n  var segment = task.blockedSegment;\n  segment.status = ABORTED;\n  finishedTask(request, boundary, segment);\n}\n\nfunction abortTask(task) {\n  // This aborts the task and aborts the parent that it blocks, putting it into\n  // client rendered mode.\n  var request = this;\n  var boundary = task.blockedBoundary;\n  var segment = task.blockedSegment;\n  segment.status = ABORTED;\n\n  if (boundary === null) {\n    request.allPendingTasks--; // We didn't complete the root so we have nothing to show. We can close\n    // the request;\n\n    if (request.status !== CLOSED) {\n      request.status = CLOSED;\n\n      if (request.destination !== null) {\n        close(request.destination);\n      }\n    }\n  } else {\n    boundary.pendingTasks--;\n\n    if (!boundary.forceClientRender) {\n      boundary.forceClientRender = true;\n\n      if (boundary.parentFlushed) {\n        request.clientRenderedBoundaries.push(boundary);\n      }\n    } // If this boundary was still pending then we haven't already cancelled its fallbacks.\n    // We'll need to abort the fallbacks, which will also error that parent boundary.\n\n\n    boundary.fallbackAbortableTasks.forEach(abortTask, request);\n    boundary.fallbackAbortableTasks.clear();\n    request.allPendingTasks--;\n\n    if (request.allPendingTasks === 0) {\n      var onAllReady = request.onAllReady;\n      onAllReady();\n    }\n  }\n}\n\nfunction queueCompletedSegment(boundary, segment) {\n  if (segment.chunks.length === 0 && segment.children.length === 1 && segment.children[0].boundary === null) {\n    // This is an empty segment. There's nothing to write, so we can instead transfer the ID\n    // to the child. That way any existing references point to the child.\n    var childSegment = segment.children[0];\n    childSegment.id = segment.id;\n    childSegment.parentFlushed = true;\n\n    if (childSegment.status === COMPLETED) {\n      queueCompletedSegment(boundary, childSegment);\n    }\n  } else {\n    var completedSegments = boundary.completedSegments;\n    completedSegments.push(segment);\n  }\n}\n\nfunction finishedTask(request, boundary, segment) {\n  if (boundary === null) {\n    if (segment.parentFlushed) {\n      if (request.completedRootSegment !== null) {\n        throw new Error('There can only be one root segment. This is a bug in React.');\n      }\n\n      request.completedRootSegment = segment;\n    }\n\n    request.pendingRootTasks--;\n\n    if (request.pendingRootTasks === 0) {\n      // We have completed the shell so the shell can't error anymore.\n      request.onShellError = noop$1;\n      var onShellReady = request.onShellReady;\n      onShellReady();\n    }\n  } else {\n    boundary.pendingTasks--;\n\n    if (boundary.forceClientRender) ; else if (boundary.pendingTasks === 0) {\n      // This must have been the last segment we were waiting on. This boundary is now complete.\n      if (segment.parentFlushed) {\n        // Our parent segment already flushed, so we need to schedule this segment to be emitted.\n        // If it is a segment that was aborted, we'll write other content instead so we don't need\n        // to emit it.\n        if (segment.status === COMPLETED) {\n          queueCompletedSegment(boundary, segment);\n        }\n      }\n\n      if (boundary.parentFlushed) {\n        // The segment might be part of a segment that didn't flush yet, but if the boundary's\n        // parent flushed, we need to schedule the boundary to be emitted.\n        request.completedBoundaries.push(boundary);\n      } // We can now cancel any pending task on the fallback since we won't need to show it anymore.\n      // This needs to happen after we read the parentFlushed flags because aborting can finish\n      // work which can trigger user code, which can start flushing, which can change those flags.\n\n\n      boundary.fallbackAbortableTasks.forEach(abortTaskSoft, request);\n      boundary.fallbackAbortableTasks.clear();\n    } else {\n      if (segment.parentFlushed) {\n        // Our parent already flushed, so we need to schedule this segment to be emitted.\n        // If it is a segment that was aborted, we'll write other content instead so we don't need\n        // to emit it.\n        if (segment.status === COMPLETED) {\n          queueCompletedSegment(boundary, segment);\n          var completedSegments = boundary.completedSegments;\n\n          if (completedSegments.length === 1) {\n            // This is the first time since we last flushed that we completed anything.\n            // We can schedule this boundary to emit its partially completed segments early\n            // in case the parent has already been flushed.\n            if (boundary.parentFlushed) {\n              request.partialBoundaries.push(boundary);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  request.allPendingTasks--;\n\n  if (request.allPendingTasks === 0) {\n    // This needs to be called at the very end so that we can synchronously write the result\n    // in the callback if needed.\n    var onAllReady = request.onAllReady;\n    onAllReady();\n  }\n}\n\nfunction retryTask(request, task) {\n  var segment = task.blockedSegment;\n\n  if (segment.status !== PENDING) {\n    // We completed this by other means before we had a chance to retry it.\n    return;\n  } // We restore the context to what it was when we suspended.\n  // We don't restore it after we leave because it's likely that we'll end up\n  // needing a very similar context soon again.\n\n\n  switchContext(task.context);\n  var prevTaskInDEV = null;\n\n  {\n    prevTaskInDEV = currentTaskInDEV;\n    currentTaskInDEV = task;\n  }\n\n  try {\n    // We call the destructive form that mutates this task. That way if something\n    // suspends again, we can reuse the same task instead of spawning a new one.\n    renderNodeDestructive(request, task, task.node);\n    task.abortSet.delete(task);\n    segment.status = COMPLETED;\n    finishedTask(request, task.blockedBoundary, segment);\n  } catch (x) {\n    resetHooksState();\n\n    if (typeof x === 'object' && x !== null && typeof x.then === 'function') {\n      // Something suspended again, let's pick it back up later.\n      var ping = task.ping;\n      x.then(ping, ping);\n    } else {\n      task.abortSet.delete(task);\n      segment.status = ERRORED;\n      erroredTask(request, task.blockedBoundary, segment, x);\n    }\n  } finally {\n    {\n      currentTaskInDEV = prevTaskInDEV;\n    }\n  }\n}\n\nfunction performWork(request) {\n  if (request.status === CLOSED) {\n    return;\n  }\n\n  var prevContext = getActiveContext();\n  var prevDispatcher = ReactCurrentDispatcher$1.current;\n  ReactCurrentDispatcher$1.current = Dispatcher;\n  var prevGetCurrentStackImpl;\n\n  {\n    prevGetCurrentStackImpl = ReactDebugCurrentFrame$1.getCurrentStack;\n    ReactDebugCurrentFrame$1.getCurrentStack = getCurrentStackInDEV;\n  }\n\n  var prevResponseState = currentResponseState;\n  setCurrentResponseState(request.responseState);\n\n  try {\n    var pingedTasks = request.pingedTasks;\n    var i;\n\n    for (i = 0; i < pingedTasks.length; i++) {\n      var task = pingedTasks[i];\n      retryTask(request, task);\n    }\n\n    pingedTasks.splice(0, i);\n\n    if (request.destination !== null) {\n      flushCompletedQueues(request, request.destination);\n    }\n  } catch (error) {\n    logRecoverableError(request, error);\n    fatalError(request, error);\n  } finally {\n    setCurrentResponseState(prevResponseState);\n    ReactCurrentDispatcher$1.current = prevDispatcher;\n\n    {\n      ReactDebugCurrentFrame$1.getCurrentStack = prevGetCurrentStackImpl;\n    }\n\n    if (prevDispatcher === Dispatcher) {\n      // This means that we were in a reentrant work loop. This could happen\n      // in a renderer that supports synchronous work like renderToString,\n      // when it's called from within another renderer.\n      // Normally we don't bother switching the contexts to their root/default\n      // values when leaving because we'll likely need the same or similar\n      // context again. However, when we're inside a synchronous loop like this\n      // we'll to restore the context to what it was before returning.\n      switchContext(prevContext);\n    }\n  }\n}\n\nfunction flushSubtree(request, destination, segment) {\n  segment.parentFlushed = true;\n\n  switch (segment.status) {\n    case PENDING:\n      {\n        // We're emitting a placeholder for this segment to be filled in later.\n        // Therefore we'll need to assign it an ID - to refer to it by.\n        var segmentID = segment.id = request.nextSegmentId++;\n        return writePlaceholder(destination, request.responseState, segmentID);\n      }\n\n    case COMPLETED:\n      {\n        segment.status = FLUSHED;\n        var r = true;\n        var chunks = segment.chunks;\n        var chunkIdx = 0;\n        var children = segment.children;\n\n        for (var childIdx = 0; childIdx < children.length; childIdx++) {\n          var nextChild = children[childIdx]; // Write all the chunks up until the next child.\n\n          for (; chunkIdx < nextChild.index; chunkIdx++) {\n            writeChunk(destination, chunks[chunkIdx]);\n          }\n\n          r = flushSegment(request, destination, nextChild);\n        } // Finally just write all the remaining chunks\n\n\n        for (; chunkIdx < chunks.length - 1; chunkIdx++) {\n          writeChunk(destination, chunks[chunkIdx]);\n        }\n\n        if (chunkIdx < chunks.length) {\n          r = writeChunkAndReturn(destination, chunks[chunkIdx]);\n        }\n\n        return r;\n      }\n\n    default:\n      {\n        throw new Error('Aborted, errored or already flushed boundaries should not be flushed again. This is a bug in React.');\n      }\n  }\n}\n\nfunction flushSegment(request, destination, segment) {\n  var boundary = segment.boundary;\n\n  if (boundary === null) {\n    // Not a suspense boundary.\n    return flushSubtree(request, destination, segment);\n  }\n\n  boundary.parentFlushed = true; // This segment is a Suspense boundary. We need to decide whether to\n  // emit the content or the fallback now.\n\n  if (boundary.forceClientRender) {\n    // Emit a client rendered suspense boundary wrapper.\n    // We never queue the inner boundary so we'll never emit its content or partial segments.\n    writeStartClientRenderedSuspenseBoundary(destination, request.responseState); // Flush the fallback.\n\n    flushSubtree(request, destination, segment);\n    return writeEndClientRenderedSuspenseBoundary(destination, request.responseState);\n  } else if (boundary.pendingTasks > 0) {\n    // This boundary is still loading. Emit a pending suspense boundary wrapper.\n    // Assign an ID to refer to the future content by.\n    boundary.rootSegmentID = request.nextSegmentId++;\n\n    if (boundary.completedSegments.length > 0) {\n      // If this is at least partially complete, we can queue it to be partially emitted early.\n      request.partialBoundaries.push(boundary);\n    } /// This is the first time we should have referenced this ID.\n\n\n    var id = boundary.id = assignSuspenseBoundaryID(request.responseState);\n    writeStartPendingSuspenseBoundary(destination, request.responseState, id); // Flush the fallback.\n\n    flushSubtree(request, destination, segment);\n    return writeEndPendingSuspenseBoundary(destination, request.responseState);\n  } else if (boundary.byteSize > request.progressiveChunkSize) {\n    // This boundary is large and will be emitted separately so that we can progressively show\n    // other content. We add it to the queue during the flush because we have to ensure that\n    // the parent flushes first so that there's something to inject it into.\n    // We also have to make sure that it's emitted into the queue in a deterministic slot.\n    // I.e. we can't insert it here when it completes.\n    // Assign an ID to refer to the future content by.\n    boundary.rootSegmentID = request.nextSegmentId++;\n    request.completedBoundaries.push(boundary); // Emit a pending rendered suspense boundary wrapper.\n\n    writeStartPendingSuspenseBoundary(destination, request.responseState, boundary.id); // Flush the fallback.\n\n    flushSubtree(request, destination, segment);\n    return writeEndPendingSuspenseBoundary(destination, request.responseState);\n  } else {\n    // We can inline this boundary's content as a complete boundary.\n    writeStartCompletedSuspenseBoundary(destination, request.responseState);\n    var completedSegments = boundary.completedSegments;\n\n    if (completedSegments.length !== 1) {\n      throw new Error('A previously unvisited boundary must have exactly one root segment. This is a bug in React.');\n    }\n\n    var contentSegment = completedSegments[0];\n    flushSegment(request, destination, contentSegment);\n    return writeEndCompletedSuspenseBoundary(destination, request.responseState);\n  }\n}\n\nfunction flushClientRenderedBoundary(request, destination, boundary) {\n  return writeClientRenderBoundaryInstruction(destination, request.responseState, boundary.id);\n}\n\nfunction flushSegmentContainer(request, destination, segment) {\n  writeStartSegment(destination, request.responseState, segment.formatContext, segment.id);\n  flushSegment(request, destination, segment);\n  return writeEndSegment(destination, segment.formatContext);\n}\n\nfunction flushCompletedBoundary(request, destination, boundary) {\n  var completedSegments = boundary.completedSegments;\n  var i = 0;\n\n  for (; i < completedSegments.length; i++) {\n    var segment = completedSegments[i];\n    flushPartiallyCompletedSegment(request, destination, boundary, segment);\n  }\n\n  completedSegments.length = 0;\n  return writeCompletedBoundaryInstruction(destination, request.responseState, boundary.id, boundary.rootSegmentID);\n}\n\nfunction flushPartialBoundary(request, destination, boundary) {\n  var completedSegments = boundary.completedSegments;\n  var i = 0;\n\n  for (; i < completedSegments.length; i++) {\n    var segment = completedSegments[i];\n\n    if (!flushPartiallyCompletedSegment(request, destination, boundary, segment)) {\n      i++;\n      completedSegments.splice(0, i); // Only write as much as the buffer wants. Something higher priority\n      // might want to write later.\n\n      return false;\n    }\n  }\n\n  completedSegments.splice(0, i);\n  return true;\n}\n\nfunction flushPartiallyCompletedSegment(request, destination, boundary, segment) {\n  if (segment.status === FLUSHED) {\n    // We've already flushed this inline.\n    return true;\n  }\n\n  var segmentID = segment.id;\n\n  if (segmentID === -1) {\n    // This segment wasn't previously referred to. This happens at the root of\n    // a boundary. We make kind of a leap here and assume this is the root.\n    var rootSegmentID = segment.id = boundary.rootSegmentID;\n\n    if (rootSegmentID === -1) {\n      throw new Error('A root segment ID must have been assigned by now. This is a bug in React.');\n    }\n\n    return flushSegmentContainer(request, destination, segment);\n  } else {\n    flushSegmentContainer(request, destination, segment);\n    return writeCompletedSegmentInstruction(destination, request.responseState, segmentID);\n  }\n}\n\nfunction flushCompletedQueues(request, destination) {\n  beginWriting();\n\n  try {\n    // The structure of this is to go through each queue one by one and write\n    // until the sink tells us to stop. When we should stop, we still finish writing\n    // that item fully and then yield. At that point we remove the already completed\n    // items up until the point we completed them.\n    // TODO: Emit preloading.\n    // TODO: It's kind of unfortunate to keep checking this array after we've already\n    // emitted the root.\n    var completedRootSegment = request.completedRootSegment;\n\n    if (completedRootSegment !== null && request.pendingRootTasks === 0) {\n      flushSegment(request, destination, completedRootSegment);\n      request.completedRootSegment = null;\n      writeCompletedRoot(destination, request.responseState);\n    } // We emit client rendering instructions for already emitted boundaries first.\n    // This is so that we can signal to the client to start client rendering them as\n    // soon as possible.\n\n\n    var clientRenderedBoundaries = request.clientRenderedBoundaries;\n    var i;\n\n    for (i = 0; i < clientRenderedBoundaries.length; i++) {\n      var boundary = clientRenderedBoundaries[i];\n\n      if (!flushClientRenderedBoundary(request, destination, boundary)) {\n        request.destination = null;\n        i++;\n        clientRenderedBoundaries.splice(0, i);\n        return;\n      }\n    }\n\n    clientRenderedBoundaries.splice(0, i); // Next we emit any complete boundaries. It's better to favor boundaries\n    // that are completely done since we can actually show them, than it is to emit\n    // any individual segments from a partially complete boundary.\n\n    var completedBoundaries = request.completedBoundaries;\n\n    for (i = 0; i < completedBoundaries.length; i++) {\n      var _boundary = completedBoundaries[i];\n\n      if (!flushCompletedBoundary(request, destination, _boundary)) {\n        request.destination = null;\n        i++;\n        completedBoundaries.splice(0, i);\n        return;\n      }\n    }\n\n    completedBoundaries.splice(0, i); // Allow anything written so far to flush to the underlying sink before\n    // we continue with lower priorities.\n\n    completeWriting(destination);\n    beginWriting(destination); // TODO: Here we'll emit data used by hydration.\n    // Next we emit any segments of any boundaries that are partially complete\n    // but not deeply complete.\n\n    var partialBoundaries = request.partialBoundaries;\n\n    for (i = 0; i < partialBoundaries.length; i++) {\n      var _boundary2 = partialBoundaries[i];\n\n      if (!flushPartialBoundary(request, destination, _boundary2)) {\n        request.destination = null;\n        i++;\n        partialBoundaries.splice(0, i);\n        return;\n      }\n    }\n\n    partialBoundaries.splice(0, i); // Next we check the completed boundaries again. This may have had\n    // boundaries added to it in case they were too larged to be inlined.\n    // New ones might be added in this loop.\n\n    var largeBoundaries = request.completedBoundaries;\n\n    for (i = 0; i < largeBoundaries.length; i++) {\n      var _boundary3 = largeBoundaries[i];\n\n      if (!flushCompletedBoundary(request, destination, _boundary3)) {\n        request.destination = null;\n        i++;\n        largeBoundaries.splice(0, i);\n        return;\n      }\n    }\n\n    largeBoundaries.splice(0, i);\n  } finally {\n    completeWriting(destination);\n\n    if (request.allPendingTasks === 0 && request.pingedTasks.length === 0 && request.clientRenderedBoundaries.length === 0 && request.completedBoundaries.length === 0 // We don't need to check any partially completed segments because\n    // either they have pending task or they're complete.\n    ) {\n        {\n          if (request.abortableTasks.size !== 0) {\n            error('There was still abortable task at the root when we closed. This is a bug in React.');\n          }\n        } // We're done.\n\n\n        close(destination);\n      }\n  }\n}\n\nfunction startWork(request) {\n  scheduleWork(function () {\n    return performWork(request);\n  });\n}\nfunction startFlowing(request, destination) {\n  if (request.status === CLOSING) {\n    request.status = CLOSED;\n    closeWithError(destination, request.fatalError);\n    return;\n  }\n\n  if (request.status === CLOSED) {\n    return;\n  }\n\n  if (request.destination !== null) {\n    // We're already flowing.\n    return;\n  }\n\n  request.destination = destination;\n\n  try {\n    flushCompletedQueues(request, destination);\n  } catch (error) {\n    logRecoverableError(request, error);\n    fatalError(request, error);\n  }\n} // This is called to early terminate a request. It puts all pending boundaries in client rendered state.\n\nfunction abort(request) {\n  try {\n    var abortableTasks = request.abortableTasks;\n    abortableTasks.forEach(abortTask, request);\n    abortableTasks.clear();\n\n    if (request.destination !== null) {\n      flushCompletedQueues(request, request.destination);\n    }\n  } catch (error) {\n    logRecoverableError(request, error);\n    fatalError(request, error);\n  }\n}\n\nfunction renderToReadableStream(children, options) {\n  return new Promise(function (resolve, reject) {\n    var onFatalError;\n    var onAllReady;\n    var allReady = new Promise(function (res, rej) {\n      onAllReady = res;\n      onFatalError = rej;\n    });\n\n    function onShellReady() {\n      var stream = new ReadableStream({\n        type: 'bytes',\n        pull: function (controller) {\n          startFlowing(request, controller);\n        },\n        cancel: function (reason) {\n          abort(request);\n        }\n      }); // TODO: Move to sub-classing ReadableStream.\n\n      stream.allReady = allReady;\n      resolve(stream);\n    }\n\n    function onShellError(error) {\n      // If the shell errors the caller of `renderToReadableStream` won't have access to `allReady`.\n      // However, `allReady` will be rejected by `onFatalError` as well.\n      // So we need to catch the duplicate, uncatchable fatal error in `allReady` to prevent a `UnhandledPromiseRejection`.\n      allReady.catch(function () {});\n      reject(error);\n    }\n\n    var request = createRequest(children, createResponseState(options ? options.identifierPrefix : undefined, options ? options.nonce : undefined, options ? options.bootstrapScriptContent : undefined, options ? options.bootstrapScripts : undefined, options ? options.bootstrapModules : undefined), createRootFormatContext(options ? options.namespaceURI : undefined), options ? options.progressiveChunkSize : undefined, options ? options.onError : undefined, onAllReady, onShellReady, onShellError, onFatalError);\n\n    if (options && options.signal) {\n      var signal = options.signal;\n\n      var listener = function () {\n        abort(request);\n        signal.removeEventListener('abort', listener);\n      };\n\n      signal.addEventListener('abort', listener);\n    }\n\n    startWork(request);\n  });\n}\n\nexports.renderToReadableStream = renderToReadableStream;\nexports.version = ReactVersion;\n  })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20tc2VydmVyLmJyb3dzZXIuZGV2ZWxvcG1lbnQuanMuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVhOztBQUViLElBQUksSUFBcUM7QUFDekM7QUFDQTs7QUFFQSxZQUFZLG1CQUFPLENBQUMsNENBQU87O0FBRTNCOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDZGQUE2RixhQUFhO0FBQzFHO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpR0FBaUcsZUFBZTtBQUNoSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0EsS0FBSyxHQUFHOztBQUVSLGtEQUFrRDtBQUNsRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLCtFQUErRSxtQ0FBbUM7O0FBRWxIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsd0NBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7O0FBRUEsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkI7QUFDM0I7QUFDQTs7QUFFQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBOztBQUVBLDRCQUE0QjtBQUM1Qjs7QUFFQSxpQkFBaUI7QUFDakI7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOzs7QUFHQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsR0FBRztBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsR0FBRztBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxHQUFHO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsR0FBRztBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsR0FBRzs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsR0FBRzs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxHQUFHOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEdBQUc7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsR0FBRztBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixZQUFZLFFBQVE7QUFDcEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0EsNkNBQTZDO0FBQzdDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1GQUFtRjtBQUNuRjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRLDBDQUEwQzs7O0FBR2xEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdHQUFnRztBQUNoRzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDBDQUEwQzs7O0FBR2xEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTs7O0FBR047QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsOEVBQThFOztBQUU5RTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNKQUFzSixpQkFBaUI7QUFDdkssUUFBUTtBQUNSLHNKQUFzSixpQkFBaUIsd0RBQXdELG1CQUFtQixnQkFBZ0IsK0JBQStCO0FBQ2pTOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047OztBQUdBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBLG9HQUFvRyxHQUFHOztBQUV2RztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjs7QUFFL0IsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksUUFBUTtBQUNwQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEIsb0JBQW9CO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4Qjs7QUFFQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0IsR0FBRyw4QkFBOEI7O0FBRXpEOztBQUVBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7O0FBRUE7QUFDQTtBQUNBLHNCQUFzQjtBQUN0Qjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FBQ0EsV0FBVyxHQUFHO0FBQ2QsWUFBWSxRQUFRO0FBQ3BCOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVFQUF1RTs7QUFFdkU7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLDZCQUE2QjtBQUNqRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsOEJBQThCO0FBQ25EO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQSx3QkFBd0I7O0FBRXhCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQztBQUMxQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnREFBZ0Q7O0FBRWhEO0FBQ0E7QUFDQSxpSUFBaUksOEJBQThCO0FBQy9KOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RCxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUJBQXVCOztBQUV2QjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkRBQTJEOztBQUUzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsNEJBQTRCO0FBQ3RDO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2RUFBNkUsWUFBWTtBQUN6Rjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CO0FBQ3BCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esc0JBQXNCLDBCQUEwQjtBQUNoRDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw4QkFBOEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2RUFBNkUsWUFBWTtBQUN6Rjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEVBQUU7QUFDRjtBQUNBOzs7QUFHQSxxREFBcUQ7O0FBRXJEOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMsZ0NBQWdDO0FBQ3pDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlEQUFpRCw2QkFBNkIsNkJBQTZCLGdDQUFnQyxhQUFhLDJDQUEyQyw0QkFBNEI7QUFDL04sa0RBQWtELDZCQUE2Qiw2QkFBNkIsNEJBQTRCLE1BQU0sb0JBQW9CLHVDQUF1QyxHQUFHLHNCQUFzQixhQUFhLDJCQUEyQixTQUFTLHFDQUFxQyxnQkFBZ0IsaUJBQWlCLElBQUksU0FBUyxLQUFLLGFBQWEsZ0NBQWdDLFdBQVcsZ0NBQWdDO0FBQ25jLDRDQUE0QywrRkFBK0Y7QUFDM0ksc0ZBQXNGO0FBQ3RGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3RkFBd0Y7QUFDeEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0ZBQWdGO0FBQ2hGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0EsU0FBUztBQUNULHVCQUF1QjtBQUN2QjtBQUNBLFNBQVM7QUFDVCx1QkFBdUI7QUFDdkI7QUFDQSxTQUFTO0FBQ1Qsd0JBQXdCO0FBQ3hCO0FBQ0EsU0FBUztBQUNULHdCQUF3QjtBQUN4QjtBQUNBLFNBQVM7QUFDVCxpQ0FBaUM7QUFDakM7QUFDQSxTQUFTO0FBQ1QsMkJBQTJCO0FBQzNCO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkRBQTJEOztBQUUzRDtBQUNBOztBQUVBO0FBQ0EseURBQXlEO0FBQ3pEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLGtCQUFrQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0E7QUFDQSxnRkFBZ0Y7QUFDaEY7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCOzs7QUFHbEI7QUFDQTtBQUNBLGNBQWM7QUFDZDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJIQUEySDtBQUMzSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBOztBQUVBLG9FQUFvRTs7QUFFcEU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0I7QUFDcEI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7OztBQUdBLGdDQUFnQztBQUNoQztBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTs7O0FBR047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0osNEZBQTRGO0FBQzVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDhJQUE4STs7QUFFOUk7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLFVBQVU7QUFDVixrRUFBa0UsNENBQTRDO0FBQzlHOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUEsdUNBQXVDLHFCQUFxQjtBQUM1RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQyxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsRUFBRTs7O0FBR0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjs7O0FBR0E7QUFDQSw0Q0FBNEM7QUFDNUM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQyxnQkFBZ0I7O0FBRWhCO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDs7QUFFQTtBQUNBO0FBQ0Esd0VBQXdFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQ7O0FBRTVELDJEQUEyRDs7QUFFM0QsK0RBQStEOztBQUUvRDtBQUNBLDhEQUE4RDtBQUM5RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRixxREFBcUQ7QUFDckQ7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7O0FBRS9CLHdCQUF3Qjs7QUFFeEIsMENBQTBDOztBQUUxQyx3QkFBd0I7O0FBRXhCLCtCQUErQjs7QUFFL0I7QUFDQTtBQUNBLG1DQUFtQzs7QUFFbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsNENBQTRDO0FBQzlEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLDBCQUEwQjs7QUFFMUI7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRTtBQUNqRTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBQVU7O0FBRVY7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJCQUEyQjtBQUMzQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTCwrRUFBK0U7O0FBRS9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9EOztBQUVwRDtBQUNBLGdEQUFnRDs7QUFFaEQsZ0dBQWdHO0FBQ2hHOztBQUVBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSwwQ0FBMEM7QUFDMUM7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTtBQUNKOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJFQUEyRTtBQUMzRTs7QUFFQSx1Q0FBdUM7QUFDdkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQSxNQUFNO0FBQ047OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw4REFBOEQ7O0FBRTlEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7OztBQUdBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjs7QUFFcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQzs7QUFFcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZOztBQUVaO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnSUFBZ0kscUNBQXFDO0FBQ3JLOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGtCQUFrQixtQkFBbUI7QUFDckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQSwrQ0FBK0M7QUFDL0M7O0FBRUE7QUFDQTtBQUNBLHNDQUFzQzs7QUFFdEM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDOztBQUV0Qzs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBLHlDQUF5QztBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtCQUErQjtBQUMvQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUEsc0NBQXNDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOzs7QUFHQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsZ0JBQWdCLHdCQUF3QjtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwrQkFBK0IsNEJBQTRCO0FBQzNELDhDQUE4Qzs7QUFFOUMsaUJBQWlCLDRCQUE0QjtBQUM3QztBQUNBOztBQUVBO0FBQ0EsVUFBVTs7O0FBR1YsZUFBZSw4QkFBOEI7QUFDN0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUM7QUFDakM7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0ZBQWtGOztBQUVsRjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBLCtFQUErRTs7QUFFL0U7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRDs7QUFFaEQsd0ZBQXdGOztBQUV4RjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyw4QkFBOEI7QUFDdkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUyw4QkFBOEI7QUFDdkM7O0FBRUE7QUFDQTtBQUNBLHNDQUFzQztBQUN0Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUEsZ0JBQWdCLHFDQUFxQztBQUNyRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyQ0FBMkM7QUFDM0M7QUFDQTs7QUFFQTs7QUFFQSxnQkFBZ0IsZ0NBQWdDO0FBQ2hEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNDQUFzQztBQUN0Qzs7QUFFQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBOztBQUVBOztBQUVBLGdCQUFnQiw4QkFBOEI7QUFDOUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0NBQW9DO0FBQ3BDO0FBQ0E7O0FBRUE7O0FBRUEsZ0JBQWdCLDRCQUE0QjtBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7OztBQUdWO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU8sR0FBRzs7QUFFVjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRUEsOEJBQThCO0FBQzlCLGVBQWU7QUFDZixHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9janMvcmVhY3QtZG9tLXNlcnZlci5icm93c2VyLmRldmVsb3BtZW50LmpzPzViN2EiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtZG9tLXNlcnZlci5icm93c2VyLmRldmVsb3BtZW50LmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIChmdW5jdGlvbigpIHtcbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIFJlYWN0VmVyc2lvbiA9ICcxOC4wLjAtZmM0NmRiYTY3LTIwMjIwMzI5JztcblxudmFyIFJlYWN0U2hhcmVkSW50ZXJuYWxzID0gUmVhY3QuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7XG5cbi8vIGJ5IGNhbGxzIHRvIHRoZXNlIG1ldGhvZHMgYnkgYSBCYWJlbCBwbHVnaW4uXG4vL1xuLy8gSW4gUFJPRCAob3IgaW4gcGFja2FnZXMgd2l0aG91dCBhY2Nlc3MgdG8gUmVhY3QgaW50ZXJuYWxzKSxcbi8vIHRoZXkgYXJlIGxlZnQgYXMgdGhleSBhcmUgaW5zdGVhZC5cblxuZnVuY3Rpb24gd2Fybihmb3JtYXQpIHtcbiAge1xuICAgIHtcbiAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG5cbiAgICAgIHByaW50V2FybmluZygnd2FybicsIGZvcm1hdCwgYXJncyk7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBlcnJvcihmb3JtYXQpIHtcbiAge1xuICAgIHtcbiAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiA+IDEgPyBfbGVuMiAtIDEgOiAwKSwgX2tleTIgPSAxOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICAgIGFyZ3NbX2tleTIgLSAxXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgICB9XG5cbiAgICAgIHByaW50V2FybmluZygnZXJyb3InLCBmb3JtYXQsIGFyZ3MpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcmludFdhcm5pbmcobGV2ZWwsIGZvcm1hdCwgYXJncykge1xuICAvLyBXaGVuIGNoYW5naW5nIHRoaXMgbG9naWMsIHlvdSBtaWdodCB3YW50IHRvIGFsc29cbiAgLy8gdXBkYXRlIGNvbnNvbGVXaXRoU3RhY2tEZXYud3d3LmpzIGFzIHdlbGwuXG4gIHtcbiAgICB2YXIgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0RGVidWdDdXJyZW50RnJhbWU7XG4gICAgdmFyIHN0YWNrID0gUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZS5nZXRTdGFja0FkZGVuZHVtKCk7XG5cbiAgICBpZiAoc3RhY2sgIT09ICcnKSB7XG4gICAgICBmb3JtYXQgKz0gJyVzJztcbiAgICAgIGFyZ3MgPSBhcmdzLmNvbmNhdChbc3RhY2tdKTtcbiAgICB9IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9zYWZlLXN0cmluZy1jb2VyY2lvblxuXG5cbiAgICB2YXIgYXJnc1dpdGhGb3JtYXQgPSBhcmdzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgcmV0dXJuIFN0cmluZyhpdGVtKTtcbiAgICB9KTsgLy8gQ2FyZWZ1bDogUk4gY3VycmVudGx5IGRlcGVuZHMgb24gdGhpcyBwcmVmaXhcblxuICAgIGFyZ3NXaXRoRm9ybWF0LnVuc2hpZnQoJ1dhcm5pbmc6ICcgKyBmb3JtYXQpOyAvLyBXZSBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBzcHJlYWQgKG9yIC5hcHBseSkgZGlyZWN0bHkgYmVjYXVzZSBpdFxuICAgIC8vIGJyZWFrcyBJRTk6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTM2MTBcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvbm8tcHJvZHVjdGlvbi1sb2dnaW5nXG5cbiAgICBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChjb25zb2xlW2xldmVsXSwgY29uc29sZSwgYXJnc1dpdGhGb3JtYXQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNjaGVkdWxlV29yayhjYWxsYmFjaykge1xuICBjYWxsYmFjaygpO1xufVxudmFyIFZJRVdfU0laRSA9IDUxMjtcbnZhciBjdXJyZW50VmlldyA9IG51bGw7XG52YXIgd3JpdHRlbkJ5dGVzID0gMDtcbmZ1bmN0aW9uIGJlZ2luV3JpdGluZyhkZXN0aW5hdGlvbikge1xuICBjdXJyZW50VmlldyA9IG5ldyBVaW50OEFycmF5KFZJRVdfU0laRSk7XG4gIHdyaXR0ZW5CeXRlcyA9IDA7XG59XG5mdW5jdGlvbiB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjaHVuaykge1xuICBpZiAoY2h1bmsubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNodW5rLmxlbmd0aCA+IFZJRVdfU0laRSkge1xuICAgIC8vIHRoaXMgY2h1bmsgbWF5IG92ZXJmbG93IGEgc2luZ2xlIHZpZXcgd2hpY2ggaW1wbGllcyBpdCB3YXMgbm90XG4gICAgLy8gb25lIHRoYXQgaXMgY2FjaGVkIGJ5IHRoZSBzdHJlYW1pbmcgcmVuZGVyZXIuIFdlIHdpbGwgZW5xdWV1XG4gICAgLy8gaXQgZGlyZWN0bHkgYW5kIGV4cGVjdCBpdCBpcyBub3QgcmUtdXNlZFxuICAgIGlmICh3cml0dGVuQnl0ZXMgPiAwKSB7XG4gICAgICBkZXN0aW5hdGlvbi5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KGN1cnJlbnRWaWV3LmJ1ZmZlciwgMCwgd3JpdHRlbkJ5dGVzKSk7XG4gICAgICBjdXJyZW50VmlldyA9IG5ldyBVaW50OEFycmF5KFZJRVdfU0laRSk7XG4gICAgICB3cml0dGVuQnl0ZXMgPSAwO1xuICAgIH1cblxuICAgIGRlc3RpbmF0aW9uLmVucXVldWUoY2h1bmspO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBieXRlc1RvV3JpdGUgPSBjaHVuaztcbiAgdmFyIGFsbG93YWJsZUJ5dGVzID0gY3VycmVudFZpZXcubGVuZ3RoIC0gd3JpdHRlbkJ5dGVzO1xuXG4gIGlmIChhbGxvd2FibGVCeXRlcyA8IGJ5dGVzVG9Xcml0ZS5sZW5ndGgpIHtcbiAgICAvLyB0aGlzIGNodW5rIHdvdWxkIG92ZXJmbG93IHRoZSBjdXJyZW50IHZpZXcuIFdlIGVucXVldWUgYSBmdWxsIHZpZXdcbiAgICAvLyBhbmQgc3RhcnQgYSBuZXcgdmlldyB3aXRoIHRoZSByZW1haW5pbmcgY2h1bmtcbiAgICBpZiAoYWxsb3dhYmxlQnl0ZXMgPT09IDApIHtcbiAgICAgIC8vIHRoZSBjdXJyZW50IHZpZXcgaXMgYWxyZWFkeSBmdWxsLCBzZW5kIGl0XG4gICAgICBkZXN0aW5hdGlvbi5lbnF1ZXVlKGN1cnJlbnRWaWV3KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZmlsbCB1cCB0aGUgY3VycmVudCB2aWV3IGFuZCBhcHBseSB0aGUgcmVtYWluaW5nIGNodW5rIGJ5dGVzXG4gICAgICAvLyB0byBhIG5ldyB2aWV3LlxuICAgICAgY3VycmVudFZpZXcuc2V0KGJ5dGVzVG9Xcml0ZS5zdWJhcnJheSgwLCBhbGxvd2FibGVCeXRlcyksIHdyaXR0ZW5CeXRlcyk7IC8vIHdyaXR0ZW5CeXRlcyArPSBhbGxvd2FibGVCeXRlczsgLy8gdGhpcyBjYW4gYmUgc2tpcHBlZCBiZWNhdXNlIHdlIGFyZSBnb2luZyB0byBpbW1lZGlhdGVseSByZXNldCB0aGUgdmlld1xuXG4gICAgICBkZXN0aW5hdGlvbi5lbnF1ZXVlKGN1cnJlbnRWaWV3KTtcbiAgICAgIGJ5dGVzVG9Xcml0ZSA9IGJ5dGVzVG9Xcml0ZS5zdWJhcnJheShhbGxvd2FibGVCeXRlcyk7XG4gICAgfVxuXG4gICAgY3VycmVudFZpZXcgPSBuZXcgVWludDhBcnJheShWSUVXX1NJWkUpO1xuICAgIHdyaXR0ZW5CeXRlcyA9IDA7XG4gIH1cblxuICBjdXJyZW50Vmlldy5zZXQoYnl0ZXNUb1dyaXRlLCB3cml0dGVuQnl0ZXMpO1xuICB3cml0dGVuQnl0ZXMgKz0gYnl0ZXNUb1dyaXRlLmxlbmd0aDtcbn1cbmZ1bmN0aW9uIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGNodW5rKSB7XG4gIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGNodW5rKTsgLy8gaW4gd2ViIHN0cmVhbXMgdGhlcmUgaXMgbm8gYmFja3ByZXNzdXJlIHNvIHdlIGNhbiBhbHdhcyB3cml0ZSBtb3JlXG5cbiAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBjb21wbGV0ZVdyaXRpbmcoZGVzdGluYXRpb24pIHtcbiAgaWYgKGN1cnJlbnRWaWV3ICYmIHdyaXR0ZW5CeXRlcyA+IDApIHtcbiAgICBkZXN0aW5hdGlvbi5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KGN1cnJlbnRWaWV3LmJ1ZmZlciwgMCwgd3JpdHRlbkJ5dGVzKSk7XG4gICAgY3VycmVudFZpZXcgPSBudWxsO1xuICAgIHdyaXR0ZW5CeXRlcyA9IDA7XG4gIH1cbn1cbmZ1bmN0aW9uIGNsb3NlKGRlc3RpbmF0aW9uKSB7XG4gIGRlc3RpbmF0aW9uLmNsb3NlKCk7XG59XG52YXIgdGV4dEVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbmZ1bmN0aW9uIHN0cmluZ1RvQ2h1bmsoY29udGVudCkge1xuICByZXR1cm4gdGV4dEVuY29kZXIuZW5jb2RlKGNvbnRlbnQpO1xufVxuZnVuY3Rpb24gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKGNvbnRlbnQpIHtcbiAgcmV0dXJuIHRleHRFbmNvZGVyLmVuY29kZShjb250ZW50KTtcbn1cbmZ1bmN0aW9uIGNsb3NlV2l0aEVycm9yKGRlc3RpbmF0aW9uLCBlcnJvcikge1xuICBpZiAodHlwZW9mIGRlc3RpbmF0aW9uLmVycm9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gJEZsb3dGaXhNZTogVGhpcyBpcyBhbiBFcnJvciBvYmplY3Qgb3IgdGhlIGRlc3RpbmF0aW9uIGFjY2VwdHMgb3RoZXIgdHlwZXMuXG4gICAgZGVzdGluYXRpb24uZXJyb3IoZXJyb3IpO1xuICB9IGVsc2Uge1xuICAgIC8vIEVhcmxpZXIgaW1wbGVtZW50YXRpb25zIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIG1ldGhvZC4gSW4gdGhhdCBlbnZpcm9ubWVudCB5b3UncmVcbiAgICAvLyBzdXBwb3NlZCB0byB0aHJvdyBmcm9tIGEgcHJvbWlzZSByZXR1cm5lZCBidXQgd2UgZG9uJ3QgcmV0dXJuIGEgcHJvbWlzZSBpbiBvdXJcbiAgICAvLyBhcHByb2FjaC4gV2UgY291bGQgZm9yayB0aGlzIGltcGxlbWVudGF0aW9uIGJ1dCB0aGlzIGlzIGVudmlyb25tZW50IGlzIGFuIGVkZ2VcbiAgICAvLyBjYXNlIHRvIGJlZ2luIHdpdGguIEl0J3MgZXZlbiBsZXNzIGNvbW1vbiB0byBydW4gdGhpcyBpbiBhbiBvbGRlciBlbnZpcm9ubWVudC5cbiAgICAvLyBFdmVuIHRoZW4sIHRoaXMgaXMgbm90IHdoZXJlIGVycm9ycyBhcmUgc3VwcG9zZWQgdG8gaGFwcGVuIGFuZCB0aGV5IGdldCByZXBvcnRlZFxuICAgIC8vIHRvIGEgZ2xvYmFsIGNhbGxiYWNrIGluIGFkZGl0aW9uIHRvIHRoaXMgYW55d2F5LiBTbyBpdCdzIGZpbmUganVzdCB0byBjbG9zZSB0aGlzLlxuICAgIGRlc3RpbmF0aW9uLmNsb3NlKCk7XG4gIH1cbn1cblxuLypcbiAqIFRoZSBgJycgKyB2YWx1ZWAgcGF0dGVybiAodXNlZCBpbiBpbiBwZXJmLXNlbnNpdGl2ZSBjb2RlKSB0aHJvd3MgZm9yIFN5bWJvbFxuICogYW5kIFRlbXBvcmFsLiogdHlwZXMuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC8yMjA2NC5cbiAqXG4gKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgbW9kdWxlIHdpbGwgdGhyb3cgYW4gZWFzaWVyLXRvLXVuZGVyc3RhbmQsXG4gKiBlYXNpZXItdG8tZGVidWcgZXhjZXB0aW9uIHdpdGggYSBjbGVhciBlcnJvcnMgbWVzc2FnZSBtZXNzYWdlIGV4cGxhaW5pbmcgdGhlXG4gKiBwcm9ibGVtLiAoSW5zdGVhZCBvZiBhIGNvbmZ1c2luZyBleGNlcHRpb24gdGhyb3duIGluc2lkZSB0aGUgaW1wbGVtZW50YXRpb25cbiAqIG9mIHRoZSBgdmFsdWVgIG9iamVjdCkuXG4gKi9cbi8vICRGbG93Rml4TWUgb25seSBjYWxsZWQgaW4gREVWLCBzbyB2b2lkIHJldHVybiBpcyBub3QgcG9zc2libGUuXG5mdW5jdGlvbiB0eXBlTmFtZSh2YWx1ZSkge1xuICB7XG4gICAgLy8gdG9TdHJpbmdUYWcgaXMgbmVlZGVkIGZvciBuYW1lc3BhY2VkIHR5cGVzIGxpa2UgVGVtcG9yYWwuSW5zdGFudFxuICAgIHZhciBoYXNUb1N0cmluZ1RhZyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLnRvU3RyaW5nVGFnO1xuICAgIHZhciB0eXBlID0gaGFzVG9TdHJpbmdUYWcgJiYgdmFsdWVbU3ltYm9sLnRvU3RyaW5nVGFnXSB8fCB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lIHx8ICdPYmplY3QnO1xuICAgIHJldHVybiB0eXBlO1xuICB9XG59IC8vICRGbG93Rml4TWUgb25seSBjYWxsZWQgaW4gREVWLCBzbyB2b2lkIHJldHVybiBpcyBub3QgcG9zc2libGUuXG5cblxuZnVuY3Rpb24gd2lsbENvZXJjaW9uVGhyb3codmFsdWUpIHtcbiAge1xuICAgIHRyeSB7XG4gICAgICB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpIHtcbiAgLy8gSWYgeW91IGVuZGVkIHVwIGhlcmUgYnkgZm9sbG93aW5nIGFuIGV4Y2VwdGlvbiBjYWxsIHN0YWNrLCBoZXJlJ3Mgd2hhdCdzXG4gIC8vIGhhcHBlbmVkOiB5b3Ugc3VwcGxpZWQgYW4gb2JqZWN0IG9yIHN5bWJvbCB2YWx1ZSB0byBSZWFjdCAoYXMgYSBwcm9wLCBrZXksXG4gIC8vIERPTSBhdHRyaWJ1dGUsIENTUyBwcm9wZXJ0eSwgc3RyaW5nIHJlZiwgZXRjLikgYW5kIHdoZW4gUmVhY3QgdHJpZWQgdG9cbiAgLy8gY29lcmNlIGl0IHRvIGEgc3RyaW5nIHVzaW5nIGAnJyArIHZhbHVlYCwgYW4gZXhjZXB0aW9uIHdhcyB0aHJvd24uXG4gIC8vXG4gIC8vIFRoZSBtb3N0IGNvbW1vbiB0eXBlcyB0aGF0IHdpbGwgY2F1c2UgdGhpcyBleGNlcHRpb24gYXJlIGBTeW1ib2xgIGluc3RhbmNlc1xuICAvLyBhbmQgVGVtcG9yYWwgb2JqZWN0cyBsaWtlIGBUZW1wb3JhbC5JbnN0YW50YC4gQnV0IGFueSBvYmplY3QgdGhhdCBoYXMgYVxuICAvLyBgdmFsdWVPZmAgb3IgYFtTeW1ib2wudG9QcmltaXRpdmVdYCBtZXRob2QgdGhhdCB0aHJvd3Mgd2lsbCBhbHNvIGNhdXNlIHRoaXNcbiAgLy8gZXhjZXB0aW9uLiAoTGlicmFyeSBhdXRob3JzIGRvIHRoaXMgdG8gcHJldmVudCB1c2VycyBmcm9tIHVzaW5nIGJ1aWx0LWluXG4gIC8vIG51bWVyaWMgb3BlcmF0b3JzIGxpa2UgYCtgIG9yIGNvbXBhcmlzb24gb3BlcmF0b3JzIGxpa2UgYD49YCBiZWNhdXNlIGN1c3RvbVxuICAvLyBtZXRob2RzIGFyZSBuZWVkZWQgdG8gcGVyZm9ybSBhY2N1cmF0ZSBhcml0aG1ldGljIG9yIGNvbXBhcmlzb24uKVxuICAvL1xuICAvLyBUbyBmaXggdGhlIHByb2JsZW0sIGNvZXJjZSB0aGlzIG9iamVjdCBvciBzeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmcgYmVmb3JlXG4gIC8vIHBhc3NpbmcgaXQgdG8gUmVhY3QuIFRoZSBtb3N0IHJlbGlhYmxlIHdheSBpcyB1c3VhbGx5IGBTdHJpbmcodmFsdWUpYC5cbiAgLy9cbiAgLy8gVG8gZmluZCB3aGljaCB2YWx1ZSBpcyB0aHJvd2luZywgY2hlY2sgdGhlIGJyb3dzZXIgb3IgZGVidWdnZXIgY29uc29sZS5cbiAgLy8gQmVmb3JlIHRoaXMgZXhjZXB0aW9uIHdhcyB0aHJvd24sIHRoZXJlIHNob3VsZCBiZSBgY29uc29sZS5lcnJvcmAgb3V0cHV0XG4gIC8vIHRoYXQgc2hvd3MgdGhlIHR5cGUgKFN5bWJvbCwgVGVtcG9yYWwuUGxhaW5EYXRlLCBldGMuKSB0aGF0IGNhdXNlZCB0aGVcbiAgLy8gcHJvYmxlbSBhbmQgaG93IHRoYXQgdHlwZSB3YXMgdXNlZDoga2V5LCBhdHJyaWJ1dGUsIGlucHV0IHZhbHVlIHByb3AsIGV0Yy5cbiAgLy8gSW4gbW9zdCBjYXNlcywgdGhpcyBjb25zb2xlIG91dHB1dCBhbHNvIHNob3dzIHRoZSBjb21wb25lbnQgYW5kIGl0c1xuICAvLyBhbmNlc3RvciBjb21wb25lbnRzIHdoZXJlIHRoZSBleGNlcHRpb24gaGFwcGVuZWQuXG4gIC8vXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9zYWZlLXN0cmluZy1jb2VyY2lvblxuICByZXR1cm4gJycgKyB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbih2YWx1ZSwgYXR0cmlidXRlTmFtZSkge1xuICB7XG4gICAgaWYgKHdpbGxDb2VyY2lvblRocm93KHZhbHVlKSkge1xuICAgICAgZXJyb3IoJ1RoZSBwcm92aWRlZCBgJXNgIGF0dHJpYnV0ZSBpcyBhbiB1bnN1cHBvcnRlZCB0eXBlICVzLicgKyAnIFRoaXMgdmFsdWUgbXVzdCBiZSBjb2VyY2VkIHRvIGEgc3RyaW5nIGJlZm9yZSBiZWZvcmUgdXNpbmcgaXQgaGVyZS4nLCBhdHRyaWJ1dGVOYW1lLCB0eXBlTmFtZSh2YWx1ZSkpO1xuXG4gICAgICByZXR1cm4gdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKTsgLy8gdGhyb3cgKHRvIGhlbHAgY2FsbGVycyBmaW5kIHRyb3VibGVzaG9vdGluZyBjb21tZW50cylcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGNoZWNrQ1NTUHJvcGVydHlTdHJpbmdDb2VyY2lvbih2YWx1ZSwgcHJvcE5hbWUpIHtcbiAge1xuICAgIGlmICh3aWxsQ29lcmNpb25UaHJvdyh2YWx1ZSkpIHtcbiAgICAgIGVycm9yKCdUaGUgcHJvdmlkZWQgYCVzYCBDU1MgcHJvcGVydHkgaXMgYW4gdW5zdXBwb3J0ZWQgdHlwZSAlcy4nICsgJyBUaGlzIHZhbHVlIG11c3QgYmUgY29lcmNlZCB0byBhIHN0cmluZyBiZWZvcmUgYmVmb3JlIHVzaW5nIGl0IGhlcmUuJywgcHJvcE5hbWUsIHR5cGVOYW1lKHZhbHVlKSk7XG5cbiAgICAgIHJldHVybiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpOyAvLyB0aHJvdyAodG8gaGVscCBjYWxsZXJzIGZpbmQgdHJvdWJsZXNob290aW5nIGNvbW1lbnRzKVxuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gY2hlY2tIdG1sU3RyaW5nQ29lcmNpb24odmFsdWUpIHtcbiAge1xuICAgIGlmICh3aWxsQ29lcmNpb25UaHJvdyh2YWx1ZSkpIHtcbiAgICAgIGVycm9yKCdUaGUgcHJvdmlkZWQgSFRNTCBtYXJrdXAgdXNlcyBhIHZhbHVlIG9mIHVuc3VwcG9ydGVkIHR5cGUgJXMuJyArICcgVGhpcyB2YWx1ZSBtdXN0IGJlIGNvZXJjZWQgdG8gYSBzdHJpbmcgYmVmb3JlIGJlZm9yZSB1c2luZyBpdCBoZXJlLicsIHR5cGVOYW1lKHZhbHVlKSk7XG5cbiAgICAgIHJldHVybiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpOyAvLyB0aHJvdyAodG8gaGVscCBjYWxsZXJzIGZpbmQgdHJvdWJsZXNob290aW5nIGNvbW1lbnRzKVxuICAgIH1cbiAgfVxufVxuXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG4vLyBBIHJlc2VydmVkIGF0dHJpYnV0ZS5cbi8vIEl0IGlzIGhhbmRsZWQgYnkgUmVhY3Qgc2VwYXJhdGVseSBhbmQgc2hvdWxkbid0IGJlIHdyaXR0ZW4gdG8gdGhlIERPTS5cbnZhciBSRVNFUlZFRCA9IDA7IC8vIEEgc2ltcGxlIHN0cmluZyBhdHRyaWJ1dGUuXG4vLyBBdHRyaWJ1dGVzIHRoYXQgYXJlbid0IGluIHRoZSBmaWx0ZXIgYXJlIHByZXN1bWVkIHRvIGhhdmUgdGhpcyB0eXBlLlxuXG52YXIgU1RSSU5HID0gMTsgLy8gQSBzdHJpbmcgYXR0cmlidXRlIHRoYXQgYWNjZXB0cyBib29sZWFucyBpbiBSZWFjdC4gSW4gSFRNTCwgdGhlc2UgYXJlIGNhbGxlZFxuLy8gXCJlbnVtZXJhdGVkXCIgYXR0cmlidXRlcyB3aXRoIFwidHJ1ZVwiIGFuZCBcImZhbHNlXCIgYXMgcG9zc2libGUgdmFsdWVzLlxuLy8gV2hlbiB0cnVlLCBpdCBzaG91bGQgYmUgc2V0IHRvIGEgXCJ0cnVlXCIgc3RyaW5nLlxuLy8gV2hlbiBmYWxzZSwgaXQgc2hvdWxkIGJlIHNldCB0byBhIFwiZmFsc2VcIiBzdHJpbmcuXG5cbnZhciBCT09MRUFOSVNIX1NUUklORyA9IDI7IC8vIEEgcmVhbCBib29sZWFuIGF0dHJpYnV0ZS5cbi8vIFdoZW4gdHJ1ZSwgaXQgc2hvdWxkIGJlIHByZXNlbnQgKHNldCBlaXRoZXIgdG8gYW4gZW1wdHkgc3RyaW5nIG9yIGl0cyBuYW1lKS5cbi8vIFdoZW4gZmFsc2UsIGl0IHNob3VsZCBiZSBvbWl0dGVkLlxuXG52YXIgQk9PTEVBTiA9IDM7IC8vIEFuIGF0dHJpYnV0ZSB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgZmxhZyBhcyB3ZWxsIGFzIHdpdGggYSB2YWx1ZS5cbi8vIFdoZW4gdHJ1ZSwgaXQgc2hvdWxkIGJlIHByZXNlbnQgKHNldCBlaXRoZXIgdG8gYW4gZW1wdHkgc3RyaW5nIG9yIGl0cyBuYW1lKS5cbi8vIFdoZW4gZmFsc2UsIGl0IHNob3VsZCBiZSBvbWl0dGVkLlxuLy8gRm9yIGFueSBvdGhlciB2YWx1ZSwgc2hvdWxkIGJlIHByZXNlbnQgd2l0aCB0aGF0IHZhbHVlLlxuXG52YXIgT1ZFUkxPQURFRF9CT09MRUFOID0gNDsgLy8gQW4gYXR0cmlidXRlIHRoYXQgbXVzdCBiZSBudW1lcmljIG9yIHBhcnNlIGFzIGEgbnVtZXJpYy5cbi8vIFdoZW4gZmFsc3ksIGl0IHNob3VsZCBiZSByZW1vdmVkLlxuXG52YXIgTlVNRVJJQyA9IDU7IC8vIEFuIGF0dHJpYnV0ZSB0aGF0IG11c3QgYmUgcG9zaXRpdmUgbnVtZXJpYyBvciBwYXJzZSBhcyBhIHBvc2l0aXZlIG51bWVyaWMuXG4vLyBXaGVuIGZhbHN5LCBpdCBzaG91bGQgYmUgcmVtb3ZlZC5cblxudmFyIFBPU0lUSVZFX05VTUVSSUMgPSA2O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG52YXIgQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUiA9IFwiOkEtWl9hLXpcXFxcdTAwQzAtXFxcXHUwMEQ2XFxcXHUwMEQ4LVxcXFx1MDBGNlxcXFx1MDBGOC1cXFxcdTAyRkZcXFxcdTAzNzAtXFxcXHUwMzdEXFxcXHUwMzdGLVxcXFx1MUZGRlxcXFx1MjAwQy1cXFxcdTIwMERcXFxcdTIwNzAtXFxcXHUyMThGXFxcXHUyQzAwLVxcXFx1MkZFRlxcXFx1MzAwMS1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYwLVxcXFx1RkZGRFwiO1xuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuICovXG5cbnZhciBBVFRSSUJVVEVfTkFNRV9DSEFSID0gQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUiArIFwiXFxcXC0uMC05XFxcXHUwMEI3XFxcXHUwMzAwLVxcXFx1MDM2RlxcXFx1MjAzRi1cXFxcdTIwNDBcIjtcbnZhciBWQUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdFWCA9IG5ldyBSZWdFeHAoJ15bJyArIEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIgKyAnXVsnICsgQVRUUklCVVRFX05BTUVfQ0hBUiArICddKiQnKTtcbnZhciBpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlID0ge307XG52YXIgdmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlID0ge307XG5mdW5jdGlvbiBpc0F0dHJpYnV0ZU5hbWVTYWZlKGF0dHJpYnV0ZU5hbWUpIHtcbiAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlLCBhdHRyaWJ1dGVOYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZSwgYXR0cmlidXRlTmFtZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoVkFMSURfQVRUUklCVVRFX05BTUVfUkVHRVgudGVzdChhdHRyaWJ1dGVOYW1lKSkge1xuICAgIHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZVthdHRyaWJ1dGVOYW1lXSA9IHRydWU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0gdHJ1ZTtcblxuICB7XG4gICAgZXJyb3IoJ0ludmFsaWQgYXR0cmlidXRlIG5hbWU6IGAlc2AnLCBhdHRyaWJ1dGVOYW1lKTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIHNob3VsZFJlbW92ZUF0dHJpYnV0ZVdpdGhXYXJuaW5nKG5hbWUsIHZhbHVlLCBwcm9wZXJ0eUluZm8sIGlzQ3VzdG9tQ29tcG9uZW50VGFnKSB7XG4gIGlmIChwcm9wZXJ0eUluZm8gIT09IG51bGwgJiYgcHJvcGVydHlJbmZvLnR5cGUgPT09IFJFU0VSVkVEKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICBjYXNlICdmdW5jdGlvbic6IC8vICRGbG93SXNzdWUgc3ltYm9sIGlzIHBlcmZlY3RseSB2YWxpZCBoZXJlXG5cbiAgICBjYXNlICdzeW1ib2wnOlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIHtcbiAgICAgICAgaWYgKGlzQ3VzdG9tQ29tcG9uZW50VGFnKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BlcnR5SW5mbyAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiAhcHJvcGVydHlJbmZvLmFjY2VwdHNCb29sZWFucztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgcHJlZml4ID0gbmFtZS50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsIDUpO1xuICAgICAgICAgIHJldHVybiBwcmVmaXggIT09ICdkYXRhLScgJiYgcHJlZml4ICE9PSAnYXJpYS0nO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5mdW5jdGlvbiBnZXRQcm9wZXJ0eUluZm8obmFtZSkge1xuICByZXR1cm4gcHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IHByb3BlcnRpZXNbbmFtZV0gOiBudWxsO1xufVxuXG5mdW5jdGlvbiBQcm9wZXJ0eUluZm9SZWNvcmQobmFtZSwgdHlwZSwgbXVzdFVzZVByb3BlcnR5LCBhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGVOYW1lc3BhY2UsIHNhbml0aXplVVJMLCByZW1vdmVFbXB0eVN0cmluZykge1xuICB0aGlzLmFjY2VwdHNCb29sZWFucyA9IHR5cGUgPT09IEJPT0xFQU5JU0hfU1RSSU5HIHx8IHR5cGUgPT09IEJPT0xFQU4gfHwgdHlwZSA9PT0gT1ZFUkxPQURFRF9CT09MRUFOO1xuICB0aGlzLmF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGVOYW1lO1xuICB0aGlzLmF0dHJpYnV0ZU5hbWVzcGFjZSA9IGF0dHJpYnV0ZU5hbWVzcGFjZTtcbiAgdGhpcy5tdXN0VXNlUHJvcGVydHkgPSBtdXN0VXNlUHJvcGVydHk7XG4gIHRoaXMucHJvcGVydHlOYW1lID0gbmFtZTtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy5zYW5pdGl6ZVVSTCA9IHNhbml0aXplVVJMO1xuICB0aGlzLnJlbW92ZUVtcHR5U3RyaW5nID0gcmVtb3ZlRW1wdHlTdHJpbmc7XG59IC8vIFdoZW4gYWRkaW5nIGF0dHJpYnV0ZXMgdG8gdGhpcyBsaXN0LCBiZSBzdXJlIHRvIGFsc28gYWRkIHRoZW0gdG9cbi8vIHRoZSBgcG9zc2libGVTdGFuZGFyZE5hbWVzYCBtb2R1bGUgdG8gZW5zdXJlIGNhc2luZyBhbmQgaW5jb3JyZWN0XG4vLyBuYW1lIHdhcm5pbmdzLlxuXG5cbnZhciBwcm9wZXJ0aWVzID0ge307IC8vIFRoZXNlIHByb3BzIGFyZSByZXNlcnZlZCBieSBSZWFjdC4gVGhleSBzaG91bGRuJ3QgYmUgd3JpdHRlbiB0byB0aGUgRE9NLlxuXG52YXIgcmVzZXJ2ZWRQcm9wcyA9IFsnY2hpbGRyZW4nLCAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnLCAvLyBUT0RPOiBUaGlzIHByZXZlbnRzIHRoZSBhc3NpZ25tZW50IG9mIGRlZmF1bHRWYWx1ZSB0byByZWd1bGFyXG4vLyBlbGVtZW50cyAobm90IGp1c3QgaW5wdXRzKS4gTm93IHRoYXQgUmVhY3RET01JbnB1dCBhc3NpZ25zIHRvIHRoZVxuLy8gZGVmYXVsdFZhbHVlIHByb3BlcnR5IC0tIGRvIHdlIG5lZWQgdGhpcz9cbidkZWZhdWx0VmFsdWUnLCAnZGVmYXVsdENoZWNrZWQnLCAnaW5uZXJIVE1MJywgJ3N1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZycsICdzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcnLCAnc3R5bGUnXTtcblxucmVzZXJ2ZWRQcm9wcy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gIHByb3BlcnRpZXNbbmFtZV0gPSBuZXcgUHJvcGVydHlJbmZvUmVjb3JkKG5hbWUsIFJFU0VSVkVELCBmYWxzZSwgLy8gbXVzdFVzZVByb3BlcnR5XG4gIG5hbWUsIC8vIGF0dHJpYnV0ZU5hbWVcbiAgbnVsbCwgLy8gYXR0cmlidXRlTmFtZXNwYWNlXG4gIGZhbHNlLCAvLyBzYW5pdGl6ZVVSTFxuICBmYWxzZSk7XG59KTsgLy8gQSBmZXcgUmVhY3Qgc3RyaW5nIGF0dHJpYnV0ZXMgaGF2ZSBhIGRpZmZlcmVudCBuYW1lLlxuLy8gVGhpcyBpcyBhIG1hcHBpbmcgZnJvbSBSZWFjdCBwcm9wIG5hbWVzIHRvIHRoZSBhdHRyaWJ1dGUgbmFtZXMuXG5cbltbJ2FjY2VwdENoYXJzZXQnLCAnYWNjZXB0LWNoYXJzZXQnXSwgWydjbGFzc05hbWUnLCAnY2xhc3MnXSwgWydodG1sRm9yJywgJ2ZvciddLCBbJ2h0dHBFcXVpdicsICdodHRwLWVxdWl2J11dLmZvckVhY2goZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIG5hbWUgPSBfcmVmWzBdLFxuICAgICAgYXR0cmlidXRlTmFtZSA9IF9yZWZbMV07XG4gIHByb3BlcnRpZXNbbmFtZV0gPSBuZXcgUHJvcGVydHlJbmZvUmVjb3JkKG5hbWUsIFNUUklORywgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBhdHRyaWJ1dGVOYW1lLCAvLyBhdHRyaWJ1dGVOYW1lXG4gIG51bGwsIC8vIGF0dHJpYnV0ZU5hbWVzcGFjZVxuICBmYWxzZSwgLy8gc2FuaXRpemVVUkxcbiAgZmFsc2UpO1xufSk7IC8vIFRoZXNlIGFyZSBcImVudW1lcmF0ZWRcIiBIVE1MIGF0dHJpYnV0ZXMgdGhhdCBhY2NlcHQgXCJ0cnVlXCIgYW5kIFwiZmFsc2VcIi5cbi8vIEluIFJlYWN0LCB3ZSBsZXQgdXNlcnMgcGFzcyBgdHJ1ZWAgYW5kIGBmYWxzZWAgZXZlbiB0aG91Z2ggdGVjaG5pY2FsbHlcbi8vIHRoZXNlIGFyZW4ndCBib29sZWFuIGF0dHJpYnV0ZXMgKHRoZXkgYXJlIGNvZXJjZWQgdG8gc3RyaW5ncykuXG5cblsnY29udGVudEVkaXRhYmxlJywgJ2RyYWdnYWJsZScsICdzcGVsbENoZWNrJywgJ3ZhbHVlJ10uZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICBwcm9wZXJ0aWVzW25hbWVdID0gbmV3IFByb3BlcnR5SW5mb1JlY29yZChuYW1lLCBCT09MRUFOSVNIX1NUUklORywgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBuYW1lLnRvTG93ZXJDYXNlKCksIC8vIGF0dHJpYnV0ZU5hbWVcbiAgbnVsbCwgLy8gYXR0cmlidXRlTmFtZXNwYWNlXG4gIGZhbHNlLCAvLyBzYW5pdGl6ZVVSTFxuICBmYWxzZSk7XG59KTsgLy8gVGhlc2UgYXJlIFwiZW51bWVyYXRlZFwiIFNWRyBhdHRyaWJ1dGVzIHRoYXQgYWNjZXB0IFwidHJ1ZVwiIGFuZCBcImZhbHNlXCIuXG4vLyBJbiBSZWFjdCwgd2UgbGV0IHVzZXJzIHBhc3MgYHRydWVgIGFuZCBgZmFsc2VgIGV2ZW4gdGhvdWdoIHRlY2huaWNhbGx5XG4vLyB0aGVzZSBhcmVuJ3QgYm9vbGVhbiBhdHRyaWJ1dGVzICh0aGV5IGFyZSBjb2VyY2VkIHRvIHN0cmluZ3MpLlxuLy8gU2luY2UgdGhlc2UgYXJlIFNWRyBhdHRyaWJ1dGVzLCB0aGVpciBhdHRyaWJ1dGUgbmFtZXMgYXJlIGNhc2Utc2Vuc2l0aXZlLlxuXG5bJ2F1dG9SZXZlcnNlJywgJ2V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQnLCAnZm9jdXNhYmxlJywgJ3ByZXNlcnZlQWxwaGEnXS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gIHByb3BlcnRpZXNbbmFtZV0gPSBuZXcgUHJvcGVydHlJbmZvUmVjb3JkKG5hbWUsIEJPT0xFQU5JU0hfU1RSSU5HLCBmYWxzZSwgLy8gbXVzdFVzZVByb3BlcnR5XG4gIG5hbWUsIC8vIGF0dHJpYnV0ZU5hbWVcbiAgbnVsbCwgLy8gYXR0cmlidXRlTmFtZXNwYWNlXG4gIGZhbHNlLCAvLyBzYW5pdGl6ZVVSTFxuICBmYWxzZSk7XG59KTsgLy8gVGhlc2UgYXJlIEhUTUwgYm9vbGVhbiBhdHRyaWJ1dGVzLlxuXG5bJ2FsbG93RnVsbFNjcmVlbicsICdhc3luYycsIC8vIE5vdGU6IHRoZXJlIGlzIGEgc3BlY2lhbCBjYXNlIHRoYXQgcHJldmVudHMgaXQgZnJvbSBiZWluZyB3cml0dGVuIHRvIHRoZSBET01cbi8vIG9uIHRoZSBjbGllbnQgc2lkZSBiZWNhdXNlIHRoZSBicm93c2VycyBhcmUgaW5jb25zaXN0ZW50LiBJbnN0ZWFkIHdlIGNhbGwgZm9jdXMoKS5cbidhdXRvRm9jdXMnLCAnYXV0b1BsYXknLCAnY29udHJvbHMnLCAnZGVmYXVsdCcsICdkZWZlcicsICdkaXNhYmxlZCcsICdkaXNhYmxlUGljdHVyZUluUGljdHVyZScsICdkaXNhYmxlUmVtb3RlUGxheWJhY2snLCAnZm9ybU5vVmFsaWRhdGUnLCAnaGlkZGVuJywgJ2xvb3AnLCAnbm9Nb2R1bGUnLCAnbm9WYWxpZGF0ZScsICdvcGVuJywgJ3BsYXlzSW5saW5lJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3JldmVyc2VkJywgJ3Njb3BlZCcsICdzZWFtbGVzcycsIC8vIE1pY3JvZGF0YVxuJ2l0ZW1TY29wZSddLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgcHJvcGVydGllc1tuYW1lXSA9IG5ldyBQcm9wZXJ0eUluZm9SZWNvcmQobmFtZSwgQk9PTEVBTiwgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBuYW1lLnRvTG93ZXJDYXNlKCksIC8vIGF0dHJpYnV0ZU5hbWVcbiAgbnVsbCwgLy8gYXR0cmlidXRlTmFtZXNwYWNlXG4gIGZhbHNlLCAvLyBzYW5pdGl6ZVVSTFxuICBmYWxzZSk7XG59KTsgLy8gVGhlc2UgYXJlIHRoZSBmZXcgUmVhY3QgcHJvcHMgdGhhdCB3ZSBzZXQgYXMgRE9NIHByb3BlcnRpZXNcbi8vIHJhdGhlciB0aGFuIGF0dHJpYnV0ZXMuIFRoZXNlIGFyZSBhbGwgYm9vbGVhbnMuXG5cblsnY2hlY2tlZCcsIC8vIE5vdGU6IGBvcHRpb24uc2VsZWN0ZWRgIGlzIG5vdCB1cGRhdGVkIGlmIGBzZWxlY3QubXVsdGlwbGVgIGlzXG4vLyBkaXNhYmxlZCB3aXRoIGByZW1vdmVBdHRyaWJ1dGVgLiBXZSBoYXZlIHNwZWNpYWwgbG9naWMgZm9yIGhhbmRsaW5nIHRoaXMuXG4nbXVsdGlwbGUnLCAnbXV0ZWQnLCAnc2VsZWN0ZWQnIC8vIE5PVEU6IGlmIHlvdSBhZGQgYSBjYW1lbENhc2VkIHByb3AgdG8gdGhpcyBsaXN0LFxuLy8geW91J2xsIG5lZWQgdG8gc2V0IGF0dHJpYnV0ZU5hbWUgdG8gbmFtZS50b0xvd2VyQ2FzZSgpXG4vLyBpbnN0ZWFkIGluIHRoZSBhc3NpZ25tZW50IGJlbG93LlxuXS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gIHByb3BlcnRpZXNbbmFtZV0gPSBuZXcgUHJvcGVydHlJbmZvUmVjb3JkKG5hbWUsIEJPT0xFQU4sIHRydWUsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBuYW1lLCAvLyBhdHRyaWJ1dGVOYW1lXG4gIG51bGwsIC8vIGF0dHJpYnV0ZU5hbWVzcGFjZVxuICBmYWxzZSwgLy8gc2FuaXRpemVVUkxcbiAgZmFsc2UpO1xufSk7IC8vIFRoZXNlIGFyZSBIVE1MIGF0dHJpYnV0ZXMgdGhhdCBhcmUgXCJvdmVybG9hZGVkIGJvb2xlYW5zXCI6IHRoZXkgYmVoYXZlIGxpa2Vcbi8vIGJvb2xlYW5zLCBidXQgY2FuIGFsc28gYWNjZXB0IGEgc3RyaW5nIHZhbHVlLlxuXG5bJ2NhcHR1cmUnLCAnZG93bmxvYWQnIC8vIE5PVEU6IGlmIHlvdSBhZGQgYSBjYW1lbENhc2VkIHByb3AgdG8gdGhpcyBsaXN0LFxuLy8geW91J2xsIG5lZWQgdG8gc2V0IGF0dHJpYnV0ZU5hbWUgdG8gbmFtZS50b0xvd2VyQ2FzZSgpXG4vLyBpbnN0ZWFkIGluIHRoZSBhc3NpZ25tZW50IGJlbG93LlxuXS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gIHByb3BlcnRpZXNbbmFtZV0gPSBuZXcgUHJvcGVydHlJbmZvUmVjb3JkKG5hbWUsIE9WRVJMT0FERURfQk9PTEVBTiwgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBuYW1lLCAvLyBhdHRyaWJ1dGVOYW1lXG4gIG51bGwsIC8vIGF0dHJpYnV0ZU5hbWVzcGFjZVxuICBmYWxzZSwgLy8gc2FuaXRpemVVUkxcbiAgZmFsc2UpO1xufSk7IC8vIFRoZXNlIGFyZSBIVE1MIGF0dHJpYnV0ZXMgdGhhdCBtdXN0IGJlIHBvc2l0aXZlIG51bWJlcnMuXG5cblsnY29scycsICdyb3dzJywgJ3NpemUnLCAnc3BhbicgLy8gTk9URTogaWYgeW91IGFkZCBhIGNhbWVsQ2FzZWQgcHJvcCB0byB0aGlzIGxpc3QsXG4vLyB5b3UnbGwgbmVlZCB0byBzZXQgYXR0cmlidXRlTmFtZSB0byBuYW1lLnRvTG93ZXJDYXNlKClcbi8vIGluc3RlYWQgaW4gdGhlIGFzc2lnbm1lbnQgYmVsb3cuXG5dLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgcHJvcGVydGllc1tuYW1lXSA9IG5ldyBQcm9wZXJ0eUluZm9SZWNvcmQobmFtZSwgUE9TSVRJVkVfTlVNRVJJQywgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBuYW1lLCAvLyBhdHRyaWJ1dGVOYW1lXG4gIG51bGwsIC8vIGF0dHJpYnV0ZU5hbWVzcGFjZVxuICBmYWxzZSwgLy8gc2FuaXRpemVVUkxcbiAgZmFsc2UpO1xufSk7IC8vIFRoZXNlIGFyZSBIVE1MIGF0dHJpYnV0ZXMgdGhhdCBtdXN0IGJlIG51bWJlcnMuXG5cblsncm93U3BhbicsICdzdGFydCddLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgcHJvcGVydGllc1tuYW1lXSA9IG5ldyBQcm9wZXJ0eUluZm9SZWNvcmQobmFtZSwgTlVNRVJJQywgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBuYW1lLnRvTG93ZXJDYXNlKCksIC8vIGF0dHJpYnV0ZU5hbWVcbiAgbnVsbCwgLy8gYXR0cmlidXRlTmFtZXNwYWNlXG4gIGZhbHNlLCAvLyBzYW5pdGl6ZVVSTFxuICBmYWxzZSk7XG59KTtcbnZhciBDQU1FTElaRSA9IC9bXFwtXFw6XShbYS16XSkvZztcblxudmFyIGNhcGl0YWxpemUgPSBmdW5jdGlvbiAodG9rZW4pIHtcbiAgcmV0dXJuIHRva2VuWzFdLnRvVXBwZXJDYXNlKCk7XG59OyAvLyBUaGlzIGlzIGEgbGlzdCBvZiBhbGwgU1ZHIGF0dHJpYnV0ZXMgdGhhdCBuZWVkIHNwZWNpYWwgY2FzaW5nLCBuYW1lc3BhY2luZyxcbi8vIG9yIGJvb2xlYW4gdmFsdWUgYXNzaWdubWVudC4gUmVndWxhciBhdHRyaWJ1dGVzIHRoYXQganVzdCBhY2NlcHQgc3RyaW5nc1xuLy8gYW5kIGhhdmUgdGhlIHNhbWUgbmFtZXMgYXJlIG9taXR0ZWQsIGp1c3QgbGlrZSBpbiB0aGUgSFRNTCBhdHRyaWJ1dGUgZmlsdGVyLlxuLy8gU29tZSBvZiB0aGVzZSBhdHRyaWJ1dGVzIGNhbiBiZSBoYXJkIHRvIGZpbmQuIFRoaXMgbGlzdCB3YXMgY3JlYXRlZCBieVxuLy8gc2NyYXBpbmcgdGhlIE1ETiBkb2N1bWVudGF0aW9uLlxuXG5cblsnYWNjZW50LWhlaWdodCcsICdhbGlnbm1lbnQtYmFzZWxpbmUnLCAnYXJhYmljLWZvcm0nLCAnYmFzZWxpbmUtc2hpZnQnLCAnY2FwLWhlaWdodCcsICdjbGlwLXBhdGgnLCAnY2xpcC1ydWxlJywgJ2NvbG9yLWludGVycG9sYXRpb24nLCAnY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJywgJ2NvbG9yLXByb2ZpbGUnLCAnY29sb3ItcmVuZGVyaW5nJywgJ2RvbWluYW50LWJhc2VsaW5lJywgJ2VuYWJsZS1iYWNrZ3JvdW5kJywgJ2ZpbGwtb3BhY2l0eScsICdmaWxsLXJ1bGUnLCAnZmxvb2QtY29sb3InLCAnZmxvb2Qtb3BhY2l0eScsICdmb250LWZhbWlseScsICdmb250LXNpemUnLCAnZm9udC1zaXplLWFkanVzdCcsICdmb250LXN0cmV0Y2gnLCAnZm9udC1zdHlsZScsICdmb250LXZhcmlhbnQnLCAnZm9udC13ZWlnaHQnLCAnZ2x5cGgtbmFtZScsICdnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsJywgJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJywgJ2hvcml6LWFkdi14JywgJ2hvcml6LW9yaWdpbi14JywgJ2ltYWdlLXJlbmRlcmluZycsICdsZXR0ZXItc3BhY2luZycsICdsaWdodGluZy1jb2xvcicsICdtYXJrZXItZW5kJywgJ21hcmtlci1taWQnLCAnbWFya2VyLXN0YXJ0JywgJ292ZXJsaW5lLXBvc2l0aW9uJywgJ292ZXJsaW5lLXRoaWNrbmVzcycsICdwYWludC1vcmRlcicsICdwYW5vc2UtMScsICdwb2ludGVyLWV2ZW50cycsICdyZW5kZXJpbmctaW50ZW50JywgJ3NoYXBlLXJlbmRlcmluZycsICdzdG9wLWNvbG9yJywgJ3N0b3Atb3BhY2l0eScsICdzdHJpa2V0aHJvdWdoLXBvc2l0aW9uJywgJ3N0cmlrZXRocm91Z2gtdGhpY2tuZXNzJywgJ3N0cm9rZS1kYXNoYXJyYXknLCAnc3Ryb2tlLWRhc2hvZmZzZXQnLCAnc3Ryb2tlLWxpbmVjYXAnLCAnc3Ryb2tlLWxpbmVqb2luJywgJ3N0cm9rZS1taXRlcmxpbWl0JywgJ3N0cm9rZS1vcGFjaXR5JywgJ3N0cm9rZS13aWR0aCcsICd0ZXh0LWFuY2hvcicsICd0ZXh0LWRlY29yYXRpb24nLCAndGV4dC1yZW5kZXJpbmcnLCAndW5kZXJsaW5lLXBvc2l0aW9uJywgJ3VuZGVybGluZS10aGlja25lc3MnLCAndW5pY29kZS1iaWRpJywgJ3VuaWNvZGUtcmFuZ2UnLCAndW5pdHMtcGVyLWVtJywgJ3YtYWxwaGFiZXRpYycsICd2LWhhbmdpbmcnLCAndi1pZGVvZ3JhcGhpYycsICd2LW1hdGhlbWF0aWNhbCcsICd2ZWN0b3ItZWZmZWN0JywgJ3ZlcnQtYWR2LXknLCAndmVydC1vcmlnaW4teCcsICd2ZXJ0LW9yaWdpbi15JywgJ3dvcmQtc3BhY2luZycsICd3cml0aW5nLW1vZGUnLCAneG1sbnM6eGxpbmsnLCAneC1oZWlnaHQnIC8vIE5PVEU6IGlmIHlvdSBhZGQgYSBjYW1lbENhc2VkIHByb3AgdG8gdGhpcyBsaXN0LFxuLy8geW91J2xsIG5lZWQgdG8gc2V0IGF0dHJpYnV0ZU5hbWUgdG8gbmFtZS50b0xvd2VyQ2FzZSgpXG4vLyBpbnN0ZWFkIGluIHRoZSBhc3NpZ25tZW50IGJlbG93LlxuXS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGVOYW1lKSB7XG4gIHZhciBuYW1lID0gYXR0cmlidXRlTmFtZS5yZXBsYWNlKENBTUVMSVpFLCBjYXBpdGFsaXplKTtcbiAgcHJvcGVydGllc1tuYW1lXSA9IG5ldyBQcm9wZXJ0eUluZm9SZWNvcmQobmFtZSwgU1RSSU5HLCBmYWxzZSwgLy8gbXVzdFVzZVByb3BlcnR5XG4gIGF0dHJpYnV0ZU5hbWUsIG51bGwsIC8vIGF0dHJpYnV0ZU5hbWVzcGFjZVxuICBmYWxzZSwgLy8gc2FuaXRpemVVUkxcbiAgZmFsc2UpO1xufSk7IC8vIFN0cmluZyBTVkcgYXR0cmlidXRlcyB3aXRoIHRoZSB4bGluayBuYW1lc3BhY2UuXG5cblsneGxpbms6YWN0dWF0ZScsICd4bGluazphcmNyb2xlJywgJ3hsaW5rOnJvbGUnLCAneGxpbms6c2hvdycsICd4bGluazp0aXRsZScsICd4bGluazp0eXBlJyAvLyBOT1RFOiBpZiB5b3UgYWRkIGEgY2FtZWxDYXNlZCBwcm9wIHRvIHRoaXMgbGlzdCxcbi8vIHlvdSdsbCBuZWVkIHRvIHNldCBhdHRyaWJ1dGVOYW1lIHRvIG5hbWUudG9Mb3dlckNhc2UoKVxuLy8gaW5zdGVhZCBpbiB0aGUgYXNzaWdubWVudCBiZWxvdy5cbl0uZm9yRWFjaChmdW5jdGlvbiAoYXR0cmlidXRlTmFtZSkge1xuICB2YXIgbmFtZSA9IGF0dHJpYnV0ZU5hbWUucmVwbGFjZShDQU1FTElaRSwgY2FwaXRhbGl6ZSk7XG4gIHByb3BlcnRpZXNbbmFtZV0gPSBuZXcgUHJvcGVydHlJbmZvUmVjb3JkKG5hbWUsIFNUUklORywgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBhdHRyaWJ1dGVOYW1lLCAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycsIGZhbHNlLCAvLyBzYW5pdGl6ZVVSTFxuICBmYWxzZSk7XG59KTsgLy8gU3RyaW5nIFNWRyBhdHRyaWJ1dGVzIHdpdGggdGhlIHhtbCBuYW1lc3BhY2UuXG5cblsneG1sOmJhc2UnLCAneG1sOmxhbmcnLCAneG1sOnNwYWNlJyAvLyBOT1RFOiBpZiB5b3UgYWRkIGEgY2FtZWxDYXNlZCBwcm9wIHRvIHRoaXMgbGlzdCxcbi8vIHlvdSdsbCBuZWVkIHRvIHNldCBhdHRyaWJ1dGVOYW1lIHRvIG5hbWUudG9Mb3dlckNhc2UoKVxuLy8gaW5zdGVhZCBpbiB0aGUgYXNzaWdubWVudCBiZWxvdy5cbl0uZm9yRWFjaChmdW5jdGlvbiAoYXR0cmlidXRlTmFtZSkge1xuICB2YXIgbmFtZSA9IGF0dHJpYnV0ZU5hbWUucmVwbGFjZShDQU1FTElaRSwgY2FwaXRhbGl6ZSk7XG4gIHByb3BlcnRpZXNbbmFtZV0gPSBuZXcgUHJvcGVydHlJbmZvUmVjb3JkKG5hbWUsIFNUUklORywgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuICBhdHRyaWJ1dGVOYW1lLCAnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJywgZmFsc2UsIC8vIHNhbml0aXplVVJMXG4gIGZhbHNlKTtcbn0pOyAvLyBUaGVzZSBhdHRyaWJ1dGUgZXhpc3RzIGJvdGggaW4gSFRNTCBhbmQgU1ZHLlxuLy8gVGhlIGF0dHJpYnV0ZSBuYW1lIGlzIGNhc2Utc2Vuc2l0aXZlIGluIFNWRyBzbyB3ZSBjYW4ndCBqdXN0IHVzZVxuLy8gdGhlIFJlYWN0IG5hbWUgbGlrZSB3ZSBkbyBmb3IgYXR0cmlidXRlcyB0aGF0IGV4aXN0IG9ubHkgaW4gSFRNTC5cblxuWyd0YWJJbmRleCcsICdjcm9zc09yaWdpbiddLmZvckVhY2goZnVuY3Rpb24gKGF0dHJpYnV0ZU5hbWUpIHtcbiAgcHJvcGVydGllc1thdHRyaWJ1dGVOYW1lXSA9IG5ldyBQcm9wZXJ0eUluZm9SZWNvcmQoYXR0cmlidXRlTmFtZSwgU1RSSU5HLCBmYWxzZSwgLy8gbXVzdFVzZVByb3BlcnR5XG4gIGF0dHJpYnV0ZU5hbWUudG9Mb3dlckNhc2UoKSwgLy8gYXR0cmlidXRlTmFtZVxuICBudWxsLCAvLyBhdHRyaWJ1dGVOYW1lc3BhY2VcbiAgZmFsc2UsIC8vIHNhbml0aXplVVJMXG4gIGZhbHNlKTtcbn0pOyAvLyBUaGVzZSBhdHRyaWJ1dGVzIGFjY2VwdCBVUkxzLiBUaGVzZSBtdXN0IG5vdCBhbGxvdyBqYXZhc2NyaXB0OiBVUkxTLlxuLy8gVGhlc2Ugd2lsbCBhbHNvIG5lZWQgdG8gYWNjZXB0IFRydXN0ZWQgVHlwZXMgb2JqZWN0IGluIHRoZSBmdXR1cmUuXG5cbnZhciB4bGlua0hyZWYgPSAneGxpbmtIcmVmJztcbnByb3BlcnRpZXNbeGxpbmtIcmVmXSA9IG5ldyBQcm9wZXJ0eUluZm9SZWNvcmQoJ3hsaW5rSHJlZicsIFNUUklORywgZmFsc2UsIC8vIG11c3RVc2VQcm9wZXJ0eVxuJ3hsaW5rOmhyZWYnLCAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycsIHRydWUsIC8vIHNhbml0aXplVVJMXG5mYWxzZSk7XG5bJ3NyYycsICdocmVmJywgJ2FjdGlvbicsICdmb3JtQWN0aW9uJ10uZm9yRWFjaChmdW5jdGlvbiAoYXR0cmlidXRlTmFtZSkge1xuICBwcm9wZXJ0aWVzW2F0dHJpYnV0ZU5hbWVdID0gbmV3IFByb3BlcnR5SW5mb1JlY29yZChhdHRyaWJ1dGVOYW1lLCBTVFJJTkcsIGZhbHNlLCAvLyBtdXN0VXNlUHJvcGVydHlcbiAgYXR0cmlidXRlTmFtZS50b0xvd2VyQ2FzZSgpLCAvLyBhdHRyaWJ1dGVOYW1lXG4gIG51bGwsIC8vIGF0dHJpYnV0ZU5hbWVzcGFjZVxuICB0cnVlLCAvLyBzYW5pdGl6ZVVSTFxuICB0cnVlKTtcbn0pO1xuXG4vKipcbiAqIENTUyBwcm9wZXJ0aWVzIHdoaWNoIGFjY2VwdCBudW1iZXJzIGJ1dCBhcmUgbm90IGluIHVuaXRzIG9mIFwicHhcIi5cbiAqL1xudmFyIGlzVW5pdGxlc3NOdW1iZXIgPSB7XG4gIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiB0cnVlLFxuICBhc3BlY3RSYXRpbzogdHJ1ZSxcbiAgYm9yZGVySW1hZ2VPdXRzZXQ6IHRydWUsXG4gIGJvcmRlckltYWdlU2xpY2U6IHRydWUsXG4gIGJvcmRlckltYWdlV2lkdGg6IHRydWUsXG4gIGJveEZsZXg6IHRydWUsXG4gIGJveEZsZXhHcm91cDogdHJ1ZSxcbiAgYm94T3JkaW5hbEdyb3VwOiB0cnVlLFxuICBjb2x1bW5Db3VudDogdHJ1ZSxcbiAgY29sdW1uczogdHJ1ZSxcbiAgZmxleDogdHJ1ZSxcbiAgZmxleEdyb3c6IHRydWUsXG4gIGZsZXhQb3NpdGl2ZTogdHJ1ZSxcbiAgZmxleFNocmluazogdHJ1ZSxcbiAgZmxleE5lZ2F0aXZlOiB0cnVlLFxuICBmbGV4T3JkZXI6IHRydWUsXG4gIGdyaWRBcmVhOiB0cnVlLFxuICBncmlkUm93OiB0cnVlLFxuICBncmlkUm93RW5kOiB0cnVlLFxuICBncmlkUm93U3BhbjogdHJ1ZSxcbiAgZ3JpZFJvd1N0YXJ0OiB0cnVlLFxuICBncmlkQ29sdW1uOiB0cnVlLFxuICBncmlkQ29sdW1uRW5kOiB0cnVlLFxuICBncmlkQ29sdW1uU3BhbjogdHJ1ZSxcbiAgZ3JpZENvbHVtblN0YXJ0OiB0cnVlLFxuICBmb250V2VpZ2h0OiB0cnVlLFxuICBsaW5lQ2xhbXA6IHRydWUsXG4gIGxpbmVIZWlnaHQ6IHRydWUsXG4gIG9wYWNpdHk6IHRydWUsXG4gIG9yZGVyOiB0cnVlLFxuICBvcnBoYW5zOiB0cnVlLFxuICB0YWJTaXplOiB0cnVlLFxuICB3aWRvd3M6IHRydWUsXG4gIHpJbmRleDogdHJ1ZSxcbiAgem9vbTogdHJ1ZSxcbiAgLy8gU1ZHLXJlbGF0ZWQgcHJvcGVydGllc1xuICBmaWxsT3BhY2l0eTogdHJ1ZSxcbiAgZmxvb2RPcGFjaXR5OiB0cnVlLFxuICBzdG9wT3BhY2l0eTogdHJ1ZSxcbiAgc3Ryb2tlRGFzaGFycmF5OiB0cnVlLFxuICBzdHJva2VEYXNob2Zmc2V0OiB0cnVlLFxuICBzdHJva2VNaXRlcmxpbWl0OiB0cnVlLFxuICBzdHJva2VPcGFjaXR5OiB0cnVlLFxuICBzdHJva2VXaWR0aDogdHJ1ZVxufTtcbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeCB2ZW5kb3Itc3BlY2lmaWMgcHJlZml4LCBlZzogV2Via2l0XG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IHN0eWxlIG5hbWUsIGVnOiB0cmFuc2l0aW9uRHVyYXRpb25cbiAqIEByZXR1cm4ge3N0cmluZ30gc3R5bGUgbmFtZSBwcmVmaXhlZCB3aXRoIGBwcmVmaXhgLCBwcm9wZXJseSBjYW1lbENhc2VkLCBlZzpcbiAqIFdlYmtpdFRyYW5zaXRpb25EdXJhdGlvblxuICovXG5cbmZ1bmN0aW9uIHByZWZpeEtleShwcmVmaXgsIGtleSkge1xuICByZXR1cm4gcHJlZml4ICsga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnN1YnN0cmluZygxKTtcbn1cbi8qKlxuICogU3VwcG9ydCBzdHlsZSBuYW1lcyB0aGF0IG1heSBjb21lIHBhc3NlZCBpbiBwcmVmaXhlZCBieSBhZGRpbmcgcGVybXV0YXRpb25zXG4gKiBvZiB2ZW5kb3IgcHJlZml4ZXMuXG4gKi9cblxuXG52YXIgcHJlZml4ZXMgPSBbJ1dlYmtpdCcsICdtcycsICdNb3onLCAnTyddOyAvLyBVc2luZyBPYmplY3Qua2V5cyBoZXJlLCBvciBlbHNlIHRoZSB2YW5pbGxhIGZvci1pbiBsb29wIG1ha2VzIElFOCBnbyBpbnRvIGFuXG4vLyBpbmZpbml0ZSBsb29wLCBiZWNhdXNlIGl0IGl0ZXJhdGVzIG92ZXIgdGhlIG5ld2x5IGFkZGVkIHByb3BzIHRvby5cblxuT2JqZWN0LmtleXMoaXNVbml0bGVzc051bWJlcikuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICBwcmVmaXhlcy5mb3JFYWNoKGZ1bmN0aW9uIChwcmVmaXgpIHtcbiAgICBpc1VuaXRsZXNzTnVtYmVyW3ByZWZpeEtleShwcmVmaXgsIHByb3ApXSA9IGlzVW5pdGxlc3NOdW1iZXJbcHJvcF07XG4gIH0pO1xufSk7XG5cbnZhciBoYXNSZWFkT25seVZhbHVlID0ge1xuICBidXR0b246IHRydWUsXG4gIGNoZWNrYm94OiB0cnVlLFxuICBpbWFnZTogdHJ1ZSxcbiAgaGlkZGVuOiB0cnVlLFxuICByYWRpbzogdHJ1ZSxcbiAgcmVzZXQ6IHRydWUsXG4gIHN1Ym1pdDogdHJ1ZVxufTtcbmZ1bmN0aW9uIGNoZWNrQ29udHJvbGxlZFZhbHVlUHJvcHModGFnTmFtZSwgcHJvcHMpIHtcbiAge1xuICAgIGlmICghKGhhc1JlYWRPbmx5VmFsdWVbcHJvcHMudHlwZV0gfHwgcHJvcHMub25DaGFuZ2UgfHwgcHJvcHMub25JbnB1dCB8fCBwcm9wcy5yZWFkT25seSB8fCBwcm9wcy5kaXNhYmxlZCB8fCBwcm9wcy52YWx1ZSA9PSBudWxsKSkge1xuICAgICAgZXJyb3IoJ1lvdSBwcm92aWRlZCBhIGB2YWx1ZWAgcHJvcCB0byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiAnICsgJ2BvbkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgJyArICd0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0VmFsdWVgLiBPdGhlcndpc2UsICcgKyAnc2V0IGVpdGhlciBgb25DaGFuZ2VgIG9yIGByZWFkT25seWAuJyk7XG4gICAgfVxuXG4gICAgaWYgKCEocHJvcHMub25DaGFuZ2UgfHwgcHJvcHMucmVhZE9ubHkgfHwgcHJvcHMuZGlzYWJsZWQgfHwgcHJvcHMuY2hlY2tlZCA9PSBudWxsKSkge1xuICAgICAgZXJyb3IoJ1lvdSBwcm92aWRlZCBhIGBjaGVja2VkYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuICcgKyAnYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiAnICsgJ3RoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRDaGVja2VkYC4gT3RoZXJ3aXNlLCAnICsgJ3NldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLicpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc0N1c3RvbUNvbXBvbmVudCh0YWdOYW1lLCBwcm9wcykge1xuICBpZiAodGFnTmFtZS5pbmRleE9mKCctJykgPT09IC0xKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBwcm9wcy5pcyA9PT0gJ3N0cmluZyc7XG4gIH1cblxuICBzd2l0Y2ggKHRhZ05hbWUpIHtcbiAgICAvLyBUaGVzZSBhcmUgcmVzZXJ2ZWQgU1ZHIGFuZCBNYXRoTUwgZWxlbWVudHMuXG4gICAgLy8gV2UgZG9uJ3QgbWluZCB0aGlzIGxpc3QgdG9vIG11Y2ggYmVjYXVzZSB3ZSBleHBlY3QgaXQgdG8gbmV2ZXIgZ3Jvdy5cbiAgICAvLyBUaGUgYWx0ZXJuYXRpdmUgaXMgdG8gdHJhY2sgdGhlIG5hbWVzcGFjZSBpbiBhIGZldyBwbGFjZXMgd2hpY2ggaXMgY29udm9sdXRlZC5cbiAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8jY3VzdG9tLWVsZW1lbnRzLWNvcmUtY29uY2VwdHNcbiAgICBjYXNlICdhbm5vdGF0aW9uLXhtbCc6XG4gICAgY2FzZSAnY29sb3ItcHJvZmlsZSc6XG4gICAgY2FzZSAnZm9udC1mYWNlJzpcbiAgICBjYXNlICdmb250LWZhY2Utc3JjJzpcbiAgICBjYXNlICdmb250LWZhY2UtdXJpJzpcbiAgICBjYXNlICdmb250LWZhY2UtZm9ybWF0JzpcbiAgICBjYXNlICdmb250LWZhY2UtbmFtZSc6XG4gICAgY2FzZSAnbWlzc2luZy1nbHlwaCc6XG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxudmFyIGFyaWFQcm9wZXJ0aWVzID0ge1xuICAnYXJpYS1jdXJyZW50JzogMCxcbiAgLy8gc3RhdGVcbiAgJ2FyaWEtZGVzY3JpcHRpb24nOiAwLFxuICAnYXJpYS1kZXRhaWxzJzogMCxcbiAgJ2FyaWEtZGlzYWJsZWQnOiAwLFxuICAvLyBzdGF0ZVxuICAnYXJpYS1oaWRkZW4nOiAwLFxuICAvLyBzdGF0ZVxuICAnYXJpYS1pbnZhbGlkJzogMCxcbiAgLy8gc3RhdGVcbiAgJ2FyaWEta2V5c2hvcnRjdXRzJzogMCxcbiAgJ2FyaWEtbGFiZWwnOiAwLFxuICAnYXJpYS1yb2xlZGVzY3JpcHRpb24nOiAwLFxuICAvLyBXaWRnZXQgQXR0cmlidXRlc1xuICAnYXJpYS1hdXRvY29tcGxldGUnOiAwLFxuICAnYXJpYS1jaGVja2VkJzogMCxcbiAgJ2FyaWEtZXhwYW5kZWQnOiAwLFxuICAnYXJpYS1oYXNwb3B1cCc6IDAsXG4gICdhcmlhLWxldmVsJzogMCxcbiAgJ2FyaWEtbW9kYWwnOiAwLFxuICAnYXJpYS1tdWx0aWxpbmUnOiAwLFxuICAnYXJpYS1tdWx0aXNlbGVjdGFibGUnOiAwLFxuICAnYXJpYS1vcmllbnRhdGlvbic6IDAsXG4gICdhcmlhLXBsYWNlaG9sZGVyJzogMCxcbiAgJ2FyaWEtcHJlc3NlZCc6IDAsXG4gICdhcmlhLXJlYWRvbmx5JzogMCxcbiAgJ2FyaWEtcmVxdWlyZWQnOiAwLFxuICAnYXJpYS1zZWxlY3RlZCc6IDAsXG4gICdhcmlhLXNvcnQnOiAwLFxuICAnYXJpYS12YWx1ZW1heCc6IDAsXG4gICdhcmlhLXZhbHVlbWluJzogMCxcbiAgJ2FyaWEtdmFsdWVub3cnOiAwLFxuICAnYXJpYS12YWx1ZXRleHQnOiAwLFxuICAvLyBMaXZlIFJlZ2lvbiBBdHRyaWJ1dGVzXG4gICdhcmlhLWF0b21pYyc6IDAsXG4gICdhcmlhLWJ1c3knOiAwLFxuICAnYXJpYS1saXZlJzogMCxcbiAgJ2FyaWEtcmVsZXZhbnQnOiAwLFxuICAvLyBEcmFnLWFuZC1Ecm9wIEF0dHJpYnV0ZXNcbiAgJ2FyaWEtZHJvcGVmZmVjdCc6IDAsXG4gICdhcmlhLWdyYWJiZWQnOiAwLFxuICAvLyBSZWxhdGlvbnNoaXAgQXR0cmlidXRlc1xuICAnYXJpYS1hY3RpdmVkZXNjZW5kYW50JzogMCxcbiAgJ2FyaWEtY29sY291bnQnOiAwLFxuICAnYXJpYS1jb2xpbmRleCc6IDAsXG4gICdhcmlhLWNvbHNwYW4nOiAwLFxuICAnYXJpYS1jb250cm9scyc6IDAsXG4gICdhcmlhLWRlc2NyaWJlZGJ5JzogMCxcbiAgJ2FyaWEtZXJyb3JtZXNzYWdlJzogMCxcbiAgJ2FyaWEtZmxvd3RvJzogMCxcbiAgJ2FyaWEtbGFiZWxsZWRieSc6IDAsXG4gICdhcmlhLW93bnMnOiAwLFxuICAnYXJpYS1wb3NpbnNldCc6IDAsXG4gICdhcmlhLXJvd2NvdW50JzogMCxcbiAgJ2FyaWEtcm93aW5kZXgnOiAwLFxuICAnYXJpYS1yb3dzcGFuJzogMCxcbiAgJ2FyaWEtc2V0c2l6ZSc6IDBcbn07XG5cbnZhciB3YXJuZWRQcm9wZXJ0aWVzID0ge307XG52YXIgckFSSUEgPSBuZXcgUmVnRXhwKCdeKGFyaWEpLVsnICsgQVRUUklCVVRFX05BTUVfQ0hBUiArICddKiQnKTtcbnZhciByQVJJQUNhbWVsID0gbmV3IFJlZ0V4cCgnXihhcmlhKVtBLVpdWycgKyBBVFRSSUJVVEVfTkFNRV9DSEFSICsgJ10qJCcpO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnR5KHRhZ05hbWUsIG5hbWUpIHtcbiAge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHdhcm5lZFByb3BlcnRpZXMsIG5hbWUpICYmIHdhcm5lZFByb3BlcnRpZXNbbmFtZV0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChyQVJJQUNhbWVsLnRlc3QobmFtZSkpIHtcbiAgICAgIHZhciBhcmlhTmFtZSA9ICdhcmlhLScgKyBuYW1lLnNsaWNlKDQpLnRvTG93ZXJDYXNlKCk7XG4gICAgICB2YXIgY29ycmVjdE5hbWUgPSBhcmlhUHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShhcmlhTmFtZSkgPyBhcmlhTmFtZSA6IG51bGw7IC8vIElmIHRoaXMgaXMgYW4gYXJpYS0qIGF0dHJpYnV0ZSwgYnV0IGlzIG5vdCBsaXN0ZWQgaW4gdGhlIGtub3duIERPTVxuICAgICAgLy8gRE9NIHByb3BlcnRpZXMsIHRoZW4gaXQgaXMgYW4gaW52YWxpZCBhcmlhLSogYXR0cmlidXRlLlxuXG4gICAgICBpZiAoY29ycmVjdE5hbWUgPT0gbnVsbCkge1xuICAgICAgICBlcnJvcignSW52YWxpZCBBUklBIGF0dHJpYnV0ZSBgJXNgLiBBUklBIGF0dHJpYnV0ZXMgZm9sbG93IHRoZSBwYXR0ZXJuIGFyaWEtKiBhbmQgbXVzdCBiZSBsb3dlcmNhc2UuJywgbmFtZSk7XG5cbiAgICAgICAgd2FybmVkUHJvcGVydGllc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSAvLyBhcmlhLSogYXR0cmlidXRlcyBzaG91bGQgYmUgbG93ZXJjYXNlOyBzdWdnZXN0IHRoZSBsb3dlcmNhc2UgdmVyc2lvbi5cblxuXG4gICAgICBpZiAobmFtZSAhPT0gY29ycmVjdE5hbWUpIHtcbiAgICAgICAgZXJyb3IoJ0ludmFsaWQgQVJJQSBhdHRyaWJ1dGUgYCVzYC4gRGlkIHlvdSBtZWFuIGAlc2A/JywgbmFtZSwgY29ycmVjdE5hbWUpO1xuXG4gICAgICAgIHdhcm5lZFByb3BlcnRpZXNbbmFtZV0gPSB0cnVlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAockFSSUEudGVzdChuYW1lKSkge1xuICAgICAgdmFyIGxvd2VyQ2FzZWROYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgdmFyIHN0YW5kYXJkTmFtZSA9IGFyaWFQcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGxvd2VyQ2FzZWROYW1lKSA/IGxvd2VyQ2FzZWROYW1lIDogbnVsbDsgLy8gSWYgdGhpcyBpcyBhbiBhcmlhLSogYXR0cmlidXRlLCBidXQgaXMgbm90IGxpc3RlZCBpbiB0aGUga25vd24gRE9NXG4gICAgICAvLyBET00gcHJvcGVydGllcywgdGhlbiBpdCBpcyBhbiBpbnZhbGlkIGFyaWEtKiBhdHRyaWJ1dGUuXG5cbiAgICAgIGlmIChzdGFuZGFyZE5hbWUgPT0gbnVsbCkge1xuICAgICAgICB3YXJuZWRQcm9wZXJ0aWVzW25hbWVdID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSAvLyBhcmlhLSogYXR0cmlidXRlcyBzaG91bGQgYmUgbG93ZXJjYXNlOyBzdWdnZXN0IHRoZSBsb3dlcmNhc2UgdmVyc2lvbi5cblxuXG4gICAgICBpZiAobmFtZSAhPT0gc3RhbmRhcmROYW1lKSB7XG4gICAgICAgIGVycm9yKCdVbmtub3duIEFSSUEgYXR0cmlidXRlIGAlc2AuIERpZCB5b3UgbWVhbiBgJXNgPycsIG5hbWUsIHN0YW5kYXJkTmFtZSk7XG5cbiAgICAgICAgd2FybmVkUHJvcGVydGllc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiB3YXJuSW52YWxpZEFSSUFQcm9wcyh0eXBlLCBwcm9wcykge1xuICB7XG4gICAgdmFyIGludmFsaWRQcm9wcyA9IFtdO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgICB2YXIgaXNWYWxpZCA9IHZhbGlkYXRlUHJvcGVydHkodHlwZSwga2V5KTtcblxuICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgIGludmFsaWRQcm9wcy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHVua25vd25Qcm9wU3RyaW5nID0gaW52YWxpZFByb3BzLm1hcChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgcmV0dXJuICdgJyArIHByb3AgKyAnYCc7XG4gICAgfSkuam9pbignLCAnKTtcblxuICAgIGlmIChpbnZhbGlkUHJvcHMubGVuZ3RoID09PSAxKSB7XG4gICAgICBlcnJvcignSW52YWxpZCBhcmlhIHByb3AgJXMgb24gPCVzPiB0YWcuICcgKyAnRm9yIGRldGFpbHMsIHNlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvaW52YWxpZC1hcmlhLXByb3BzJywgdW5rbm93blByb3BTdHJpbmcsIHR5cGUpO1xuICAgIH0gZWxzZSBpZiAoaW52YWxpZFByb3BzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGVycm9yKCdJbnZhbGlkIGFyaWEgcHJvcHMgJXMgb24gPCVzPiB0YWcuICcgKyAnRm9yIGRldGFpbHMsIHNlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvaW52YWxpZC1hcmlhLXByb3BzJywgdW5rbm93blByb3BTdHJpbmcsIHR5cGUpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BlcnRpZXModHlwZSwgcHJvcHMpIHtcbiAgaWYgKGlzQ3VzdG9tQ29tcG9uZW50KHR5cGUsIHByb3BzKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHdhcm5JbnZhbGlkQVJJQVByb3BzKHR5cGUsIHByb3BzKTtcbn1cblxudmFyIGRpZFdhcm5WYWx1ZU51bGwgPSBmYWxzZTtcbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydGllcyQxKHR5cGUsIHByb3BzKSB7XG4gIHtcbiAgICBpZiAodHlwZSAhPT0gJ2lucHV0JyAmJiB0eXBlICE9PSAndGV4dGFyZWEnICYmIHR5cGUgIT09ICdzZWxlY3QnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHByb3BzICE9IG51bGwgJiYgcHJvcHMudmFsdWUgPT09IG51bGwgJiYgIWRpZFdhcm5WYWx1ZU51bGwpIHtcbiAgICAgIGRpZFdhcm5WYWx1ZU51bGwgPSB0cnVlO1xuXG4gICAgICBpZiAodHlwZSA9PT0gJ3NlbGVjdCcgJiYgcHJvcHMubXVsdGlwbGUpIHtcbiAgICAgICAgZXJyb3IoJ2B2YWx1ZWAgcHJvcCBvbiBgJXNgIHNob3VsZCBub3QgYmUgbnVsbC4gJyArICdDb25zaWRlciB1c2luZyBhbiBlbXB0eSBhcnJheSB3aGVuIGBtdWx0aXBsZWAgaXMgc2V0IHRvIGB0cnVlYCAnICsgJ3RvIGNsZWFyIHRoZSBjb21wb25lbnQgb3IgYHVuZGVmaW5lZGAgZm9yIHVuY29udHJvbGxlZCBjb21wb25lbnRzLicsIHR5cGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyb3IoJ2B2YWx1ZWAgcHJvcCBvbiBgJXNgIHNob3VsZCBub3QgYmUgbnVsbC4gJyArICdDb25zaWRlciB1c2luZyBhbiBlbXB0eSBzdHJpbmcgdG8gY2xlYXIgdGhlIGNvbXBvbmVudCBvciBgdW5kZWZpbmVkYCAnICsgJ2ZvciB1bmNvbnRyb2xsZWQgY29tcG9uZW50cy4nLCB0eXBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gV2hlbiBhZGRpbmcgYXR0cmlidXRlcyB0byB0aGUgSFRNTCBvciBTVkcgYWxsb3dlZCBhdHRyaWJ1dGUgbGlzdCwgYmUgc3VyZSB0b1xuLy8gYWxzbyBhZGQgdGhlbSB0byB0aGlzIG1vZHVsZSB0byBlbnN1cmUgY2FzaW5nIGFuZCBpbmNvcnJlY3QgbmFtZVxuLy8gd2FybmluZ3MuXG52YXIgcG9zc2libGVTdGFuZGFyZE5hbWVzID0ge1xuICAvLyBIVE1MXG4gIGFjY2VwdDogJ2FjY2VwdCcsXG4gIGFjY2VwdGNoYXJzZXQ6ICdhY2NlcHRDaGFyc2V0JyxcbiAgJ2FjY2VwdC1jaGFyc2V0JzogJ2FjY2VwdENoYXJzZXQnLFxuICBhY2Nlc3NrZXk6ICdhY2Nlc3NLZXknLFxuICBhY3Rpb246ICdhY3Rpb24nLFxuICBhbGxvd2Z1bGxzY3JlZW46ICdhbGxvd0Z1bGxTY3JlZW4nLFxuICBhbHQ6ICdhbHQnLFxuICBhczogJ2FzJyxcbiAgYXN5bmM6ICdhc3luYycsXG4gIGF1dG9jYXBpdGFsaXplOiAnYXV0b0NhcGl0YWxpemUnLFxuICBhdXRvY29tcGxldGU6ICdhdXRvQ29tcGxldGUnLFxuICBhdXRvY29ycmVjdDogJ2F1dG9Db3JyZWN0JyxcbiAgYXV0b2ZvY3VzOiAnYXV0b0ZvY3VzJyxcbiAgYXV0b3BsYXk6ICdhdXRvUGxheScsXG4gIGF1dG9zYXZlOiAnYXV0b1NhdmUnLFxuICBjYXB0dXJlOiAnY2FwdHVyZScsXG4gIGNlbGxwYWRkaW5nOiAnY2VsbFBhZGRpbmcnLFxuICBjZWxsc3BhY2luZzogJ2NlbGxTcGFjaW5nJyxcbiAgY2hhbGxlbmdlOiAnY2hhbGxlbmdlJyxcbiAgY2hhcnNldDogJ2NoYXJTZXQnLFxuICBjaGVja2VkOiAnY2hlY2tlZCcsXG4gIGNoaWxkcmVuOiAnY2hpbGRyZW4nLFxuICBjaXRlOiAnY2l0ZScsXG4gIGNsYXNzOiAnY2xhc3NOYW1lJyxcbiAgY2xhc3NpZDogJ2NsYXNzSUQnLFxuICBjbGFzc25hbWU6ICdjbGFzc05hbWUnLFxuICBjb2xzOiAnY29scycsXG4gIGNvbHNwYW46ICdjb2xTcGFuJyxcbiAgY29udGVudDogJ2NvbnRlbnQnLFxuICBjb250ZW50ZWRpdGFibGU6ICdjb250ZW50RWRpdGFibGUnLFxuICBjb250ZXh0bWVudTogJ2NvbnRleHRNZW51JyxcbiAgY29udHJvbHM6ICdjb250cm9scycsXG4gIGNvbnRyb2xzbGlzdDogJ2NvbnRyb2xzTGlzdCcsXG4gIGNvb3JkczogJ2Nvb3JkcycsXG4gIGNyb3Nzb3JpZ2luOiAnY3Jvc3NPcmlnaW4nLFxuICBkYW5nZXJvdXNseXNldGlubmVyaHRtbDogJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJyxcbiAgZGF0YTogJ2RhdGEnLFxuICBkYXRldGltZTogJ2RhdGVUaW1lJyxcbiAgZGVmYXVsdDogJ2RlZmF1bHQnLFxuICBkZWZhdWx0Y2hlY2tlZDogJ2RlZmF1bHRDaGVja2VkJyxcbiAgZGVmYXVsdHZhbHVlOiAnZGVmYXVsdFZhbHVlJyxcbiAgZGVmZXI6ICdkZWZlcicsXG4gIGRpcjogJ2RpcicsXG4gIGRpc2FibGVkOiAnZGlzYWJsZWQnLFxuICBkaXNhYmxlcGljdHVyZWlucGljdHVyZTogJ2Rpc2FibGVQaWN0dXJlSW5QaWN0dXJlJyxcbiAgZGlzYWJsZXJlbW90ZXBsYXliYWNrOiAnZGlzYWJsZVJlbW90ZVBsYXliYWNrJyxcbiAgZG93bmxvYWQ6ICdkb3dubG9hZCcsXG4gIGRyYWdnYWJsZTogJ2RyYWdnYWJsZScsXG4gIGVuY3R5cGU6ICdlbmNUeXBlJyxcbiAgZW50ZXJrZXloaW50OiAnZW50ZXJLZXlIaW50JyxcbiAgZm9yOiAnaHRtbEZvcicsXG4gIGZvcm06ICdmb3JtJyxcbiAgZm9ybW1ldGhvZDogJ2Zvcm1NZXRob2QnLFxuICBmb3JtYWN0aW9uOiAnZm9ybUFjdGlvbicsXG4gIGZvcm1lbmN0eXBlOiAnZm9ybUVuY1R5cGUnLFxuICBmb3Jtbm92YWxpZGF0ZTogJ2Zvcm1Ob1ZhbGlkYXRlJyxcbiAgZm9ybXRhcmdldDogJ2Zvcm1UYXJnZXQnLFxuICBmcmFtZWJvcmRlcjogJ2ZyYW1lQm9yZGVyJyxcbiAgaGVhZGVyczogJ2hlYWRlcnMnLFxuICBoZWlnaHQ6ICdoZWlnaHQnLFxuICBoaWRkZW46ICdoaWRkZW4nLFxuICBoaWdoOiAnaGlnaCcsXG4gIGhyZWY6ICdocmVmJyxcbiAgaHJlZmxhbmc6ICdocmVmTGFuZycsXG4gIGh0bWxmb3I6ICdodG1sRm9yJyxcbiAgaHR0cGVxdWl2OiAnaHR0cEVxdWl2JyxcbiAgJ2h0dHAtZXF1aXYnOiAnaHR0cEVxdWl2JyxcbiAgaWNvbjogJ2ljb24nLFxuICBpZDogJ2lkJyxcbiAgaW1hZ2VzaXplczogJ2ltYWdlU2l6ZXMnLFxuICBpbWFnZXNyY3NldDogJ2ltYWdlU3JjU2V0JyxcbiAgaW5uZXJodG1sOiAnaW5uZXJIVE1MJyxcbiAgaW5wdXRtb2RlOiAnaW5wdXRNb2RlJyxcbiAgaW50ZWdyaXR5OiAnaW50ZWdyaXR5JyxcbiAgaXM6ICdpcycsXG4gIGl0ZW1pZDogJ2l0ZW1JRCcsXG4gIGl0ZW1wcm9wOiAnaXRlbVByb3AnLFxuICBpdGVtcmVmOiAnaXRlbVJlZicsXG4gIGl0ZW1zY29wZTogJ2l0ZW1TY29wZScsXG4gIGl0ZW10eXBlOiAnaXRlbVR5cGUnLFxuICBrZXlwYXJhbXM6ICdrZXlQYXJhbXMnLFxuICBrZXl0eXBlOiAna2V5VHlwZScsXG4gIGtpbmQ6ICdraW5kJyxcbiAgbGFiZWw6ICdsYWJlbCcsXG4gIGxhbmc6ICdsYW5nJyxcbiAgbGlzdDogJ2xpc3QnLFxuICBsb29wOiAnbG9vcCcsXG4gIGxvdzogJ2xvdycsXG4gIG1hbmlmZXN0OiAnbWFuaWZlc3QnLFxuICBtYXJnaW53aWR0aDogJ21hcmdpbldpZHRoJyxcbiAgbWFyZ2luaGVpZ2h0OiAnbWFyZ2luSGVpZ2h0JyxcbiAgbWF4OiAnbWF4JyxcbiAgbWF4bGVuZ3RoOiAnbWF4TGVuZ3RoJyxcbiAgbWVkaWE6ICdtZWRpYScsXG4gIG1lZGlhZ3JvdXA6ICdtZWRpYUdyb3VwJyxcbiAgbWV0aG9kOiAnbWV0aG9kJyxcbiAgbWluOiAnbWluJyxcbiAgbWlubGVuZ3RoOiAnbWluTGVuZ3RoJyxcbiAgbXVsdGlwbGU6ICdtdWx0aXBsZScsXG4gIG11dGVkOiAnbXV0ZWQnLFxuICBuYW1lOiAnbmFtZScsXG4gIG5vbW9kdWxlOiAnbm9Nb2R1bGUnLFxuICBub25jZTogJ25vbmNlJyxcbiAgbm92YWxpZGF0ZTogJ25vVmFsaWRhdGUnLFxuICBvcGVuOiAnb3BlbicsXG4gIG9wdGltdW06ICdvcHRpbXVtJyxcbiAgcGF0dGVybjogJ3BhdHRlcm4nLFxuICBwbGFjZWhvbGRlcjogJ3BsYWNlaG9sZGVyJyxcbiAgcGxheXNpbmxpbmU6ICdwbGF5c0lubGluZScsXG4gIHBvc3RlcjogJ3Bvc3RlcicsXG4gIHByZWxvYWQ6ICdwcmVsb2FkJyxcbiAgcHJvZmlsZTogJ3Byb2ZpbGUnLFxuICByYWRpb2dyb3VwOiAncmFkaW9Hcm91cCcsXG4gIHJlYWRvbmx5OiAncmVhZE9ubHknLFxuICByZWZlcnJlcnBvbGljeTogJ3JlZmVycmVyUG9saWN5JyxcbiAgcmVsOiAncmVsJyxcbiAgcmVxdWlyZWQ6ICdyZXF1aXJlZCcsXG4gIHJldmVyc2VkOiAncmV2ZXJzZWQnLFxuICByb2xlOiAncm9sZScsXG4gIHJvd3M6ICdyb3dzJyxcbiAgcm93c3BhbjogJ3Jvd1NwYW4nLFxuICBzYW5kYm94OiAnc2FuZGJveCcsXG4gIHNjb3BlOiAnc2NvcGUnLFxuICBzY29wZWQ6ICdzY29wZWQnLFxuICBzY3JvbGxpbmc6ICdzY3JvbGxpbmcnLFxuICBzZWFtbGVzczogJ3NlYW1sZXNzJyxcbiAgc2VsZWN0ZWQ6ICdzZWxlY3RlZCcsXG4gIHNoYXBlOiAnc2hhcGUnLFxuICBzaXplOiAnc2l6ZScsXG4gIHNpemVzOiAnc2l6ZXMnLFxuICBzcGFuOiAnc3BhbicsXG4gIHNwZWxsY2hlY2s6ICdzcGVsbENoZWNrJyxcbiAgc3JjOiAnc3JjJyxcbiAgc3JjZG9jOiAnc3JjRG9jJyxcbiAgc3JjbGFuZzogJ3NyY0xhbmcnLFxuICBzcmNzZXQ6ICdzcmNTZXQnLFxuICBzdGFydDogJ3N0YXJ0JyxcbiAgc3RlcDogJ3N0ZXAnLFxuICBzdHlsZTogJ3N0eWxlJyxcbiAgc3VtbWFyeTogJ3N1bW1hcnknLFxuICB0YWJpbmRleDogJ3RhYkluZGV4JyxcbiAgdGFyZ2V0OiAndGFyZ2V0JyxcbiAgdGl0bGU6ICd0aXRsZScsXG4gIHR5cGU6ICd0eXBlJyxcbiAgdXNlbWFwOiAndXNlTWFwJyxcbiAgdmFsdWU6ICd2YWx1ZScsXG4gIHdpZHRoOiAnd2lkdGgnLFxuICB3bW9kZTogJ3dtb2RlJyxcbiAgd3JhcDogJ3dyYXAnLFxuICAvLyBTVkdcbiAgYWJvdXQ6ICdhYm91dCcsXG4gIGFjY2VudGhlaWdodDogJ2FjY2VudEhlaWdodCcsXG4gICdhY2NlbnQtaGVpZ2h0JzogJ2FjY2VudEhlaWdodCcsXG4gIGFjY3VtdWxhdGU6ICdhY2N1bXVsYXRlJyxcbiAgYWRkaXRpdmU6ICdhZGRpdGl2ZScsXG4gIGFsaWdubWVudGJhc2VsaW5lOiAnYWxpZ25tZW50QmFzZWxpbmUnLFxuICAnYWxpZ25tZW50LWJhc2VsaW5lJzogJ2FsaWdubWVudEJhc2VsaW5lJyxcbiAgYWxsb3dyZW9yZGVyOiAnYWxsb3dSZW9yZGVyJyxcbiAgYWxwaGFiZXRpYzogJ2FscGhhYmV0aWMnLFxuICBhbXBsaXR1ZGU6ICdhbXBsaXR1ZGUnLFxuICBhcmFiaWNmb3JtOiAnYXJhYmljRm9ybScsXG4gICdhcmFiaWMtZm9ybSc6ICdhcmFiaWNGb3JtJyxcbiAgYXNjZW50OiAnYXNjZW50JyxcbiAgYXR0cmlidXRlbmFtZTogJ2F0dHJpYnV0ZU5hbWUnLFxuICBhdHRyaWJ1dGV0eXBlOiAnYXR0cmlidXRlVHlwZScsXG4gIGF1dG9yZXZlcnNlOiAnYXV0b1JldmVyc2UnLFxuICBhemltdXRoOiAnYXppbXV0aCcsXG4gIGJhc2VmcmVxdWVuY3k6ICdiYXNlRnJlcXVlbmN5JyxcbiAgYmFzZWxpbmVzaGlmdDogJ2Jhc2VsaW5lU2hpZnQnLFxuICAnYmFzZWxpbmUtc2hpZnQnOiAnYmFzZWxpbmVTaGlmdCcsXG4gIGJhc2Vwcm9maWxlOiAnYmFzZVByb2ZpbGUnLFxuICBiYm94OiAnYmJveCcsXG4gIGJlZ2luOiAnYmVnaW4nLFxuICBiaWFzOiAnYmlhcycsXG4gIGJ5OiAnYnknLFxuICBjYWxjbW9kZTogJ2NhbGNNb2RlJyxcbiAgY2FwaGVpZ2h0OiAnY2FwSGVpZ2h0JyxcbiAgJ2NhcC1oZWlnaHQnOiAnY2FwSGVpZ2h0JyxcbiAgY2xpcDogJ2NsaXAnLFxuICBjbGlwcGF0aDogJ2NsaXBQYXRoJyxcbiAgJ2NsaXAtcGF0aCc6ICdjbGlwUGF0aCcsXG4gIGNsaXBwYXRodW5pdHM6ICdjbGlwUGF0aFVuaXRzJyxcbiAgY2xpcHJ1bGU6ICdjbGlwUnVsZScsXG4gICdjbGlwLXJ1bGUnOiAnY2xpcFJ1bGUnLFxuICBjb2xvcjogJ2NvbG9yJyxcbiAgY29sb3JpbnRlcnBvbGF0aW9uOiAnY29sb3JJbnRlcnBvbGF0aW9uJyxcbiAgJ2NvbG9yLWludGVycG9sYXRpb24nOiAnY29sb3JJbnRlcnBvbGF0aW9uJyxcbiAgY29sb3JpbnRlcnBvbGF0aW9uZmlsdGVyczogJ2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMnLFxuICAnY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJzogJ2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMnLFxuICBjb2xvcnByb2ZpbGU6ICdjb2xvclByb2ZpbGUnLFxuICAnY29sb3ItcHJvZmlsZSc6ICdjb2xvclByb2ZpbGUnLFxuICBjb2xvcnJlbmRlcmluZzogJ2NvbG9yUmVuZGVyaW5nJyxcbiAgJ2NvbG9yLXJlbmRlcmluZyc6ICdjb2xvclJlbmRlcmluZycsXG4gIGNvbnRlbnRzY3JpcHR0eXBlOiAnY29udGVudFNjcmlwdFR5cGUnLFxuICBjb250ZW50c3R5bGV0eXBlOiAnY29udGVudFN0eWxlVHlwZScsXG4gIGN1cnNvcjogJ2N1cnNvcicsXG4gIGN4OiAnY3gnLFxuICBjeTogJ2N5JyxcbiAgZDogJ2QnLFxuICBkYXRhdHlwZTogJ2RhdGF0eXBlJyxcbiAgZGVjZWxlcmF0ZTogJ2RlY2VsZXJhdGUnLFxuICBkZXNjZW50OiAnZGVzY2VudCcsXG4gIGRpZmZ1c2Vjb25zdGFudDogJ2RpZmZ1c2VDb25zdGFudCcsXG4gIGRpcmVjdGlvbjogJ2RpcmVjdGlvbicsXG4gIGRpc3BsYXk6ICdkaXNwbGF5JyxcbiAgZGl2aXNvcjogJ2Rpdmlzb3InLFxuICBkb21pbmFudGJhc2VsaW5lOiAnZG9taW5hbnRCYXNlbGluZScsXG4gICdkb21pbmFudC1iYXNlbGluZSc6ICdkb21pbmFudEJhc2VsaW5lJyxcbiAgZHVyOiAnZHVyJyxcbiAgZHg6ICdkeCcsXG4gIGR5OiAnZHknLFxuICBlZGdlbW9kZTogJ2VkZ2VNb2RlJyxcbiAgZWxldmF0aW9uOiAnZWxldmF0aW9uJyxcbiAgZW5hYmxlYmFja2dyb3VuZDogJ2VuYWJsZUJhY2tncm91bmQnLFxuICAnZW5hYmxlLWJhY2tncm91bmQnOiAnZW5hYmxlQmFja2dyb3VuZCcsXG4gIGVuZDogJ2VuZCcsXG4gIGV4cG9uZW50OiAnZXhwb25lbnQnLFxuICBleHRlcm5hbHJlc291cmNlc3JlcXVpcmVkOiAnZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCcsXG4gIGZpbGw6ICdmaWxsJyxcbiAgZmlsbG9wYWNpdHk6ICdmaWxsT3BhY2l0eScsXG4gICdmaWxsLW9wYWNpdHknOiAnZmlsbE9wYWNpdHknLFxuICBmaWxscnVsZTogJ2ZpbGxSdWxlJyxcbiAgJ2ZpbGwtcnVsZSc6ICdmaWxsUnVsZScsXG4gIGZpbHRlcjogJ2ZpbHRlcicsXG4gIGZpbHRlcnJlczogJ2ZpbHRlclJlcycsXG4gIGZpbHRlcnVuaXRzOiAnZmlsdGVyVW5pdHMnLFxuICBmbG9vZG9wYWNpdHk6ICdmbG9vZE9wYWNpdHknLFxuICAnZmxvb2Qtb3BhY2l0eSc6ICdmbG9vZE9wYWNpdHknLFxuICBmbG9vZGNvbG9yOiAnZmxvb2RDb2xvcicsXG4gICdmbG9vZC1jb2xvcic6ICdmbG9vZENvbG9yJyxcbiAgZm9jdXNhYmxlOiAnZm9jdXNhYmxlJyxcbiAgZm9udGZhbWlseTogJ2ZvbnRGYW1pbHknLFxuICAnZm9udC1mYW1pbHknOiAnZm9udEZhbWlseScsXG4gIGZvbnRzaXplOiAnZm9udFNpemUnLFxuICAnZm9udC1zaXplJzogJ2ZvbnRTaXplJyxcbiAgZm9udHNpemVhZGp1c3Q6ICdmb250U2l6ZUFkanVzdCcsXG4gICdmb250LXNpemUtYWRqdXN0JzogJ2ZvbnRTaXplQWRqdXN0JyxcbiAgZm9udHN0cmV0Y2g6ICdmb250U3RyZXRjaCcsXG4gICdmb250LXN0cmV0Y2gnOiAnZm9udFN0cmV0Y2gnLFxuICBmb250c3R5bGU6ICdmb250U3R5bGUnLFxuICAnZm9udC1zdHlsZSc6ICdmb250U3R5bGUnLFxuICBmb250dmFyaWFudDogJ2ZvbnRWYXJpYW50JyxcbiAgJ2ZvbnQtdmFyaWFudCc6ICdmb250VmFyaWFudCcsXG4gIGZvbnR3ZWlnaHQ6ICdmb250V2VpZ2h0JyxcbiAgJ2ZvbnQtd2VpZ2h0JzogJ2ZvbnRXZWlnaHQnLFxuICBmb3JtYXQ6ICdmb3JtYXQnLFxuICBmcm9tOiAnZnJvbScsXG4gIGZ4OiAnZngnLFxuICBmeTogJ2Z5JyxcbiAgZzE6ICdnMScsXG4gIGcyOiAnZzInLFxuICBnbHlwaG5hbWU6ICdnbHlwaE5hbWUnLFxuICAnZ2x5cGgtbmFtZSc6ICdnbHlwaE5hbWUnLFxuICBnbHlwaG9yaWVudGF0aW9uaG9yaXpvbnRhbDogJ2dseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsJyxcbiAgJ2dseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwnOiAnZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwnLFxuICBnbHlwaG9yaWVudGF0aW9udmVydGljYWw6ICdnbHlwaE9yaWVudGF0aW9uVmVydGljYWwnLFxuICAnZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwnOiAnZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsJyxcbiAgZ2x5cGhyZWY6ICdnbHlwaFJlZicsXG4gIGdyYWRpZW50dHJhbnNmb3JtOiAnZ3JhZGllbnRUcmFuc2Zvcm0nLFxuICBncmFkaWVudHVuaXRzOiAnZ3JhZGllbnRVbml0cycsXG4gIGhhbmdpbmc6ICdoYW5naW5nJyxcbiAgaG9yaXphZHZ4OiAnaG9yaXpBZHZYJyxcbiAgJ2hvcml6LWFkdi14JzogJ2hvcml6QWR2WCcsXG4gIGhvcml6b3JpZ2lueDogJ2hvcml6T3JpZ2luWCcsXG4gICdob3Jpei1vcmlnaW4teCc6ICdob3Jpek9yaWdpblgnLFxuICBpZGVvZ3JhcGhpYzogJ2lkZW9ncmFwaGljJyxcbiAgaW1hZ2VyZW5kZXJpbmc6ICdpbWFnZVJlbmRlcmluZycsXG4gICdpbWFnZS1yZW5kZXJpbmcnOiAnaW1hZ2VSZW5kZXJpbmcnLFxuICBpbjI6ICdpbjInLFxuICBpbjogJ2luJyxcbiAgaW5saXN0OiAnaW5saXN0JyxcbiAgaW50ZXJjZXB0OiAnaW50ZXJjZXB0JyxcbiAgazE6ICdrMScsXG4gIGsyOiAnazInLFxuICBrMzogJ2szJyxcbiAgazQ6ICdrNCcsXG4gIGs6ICdrJyxcbiAga2VybmVsbWF0cml4OiAna2VybmVsTWF0cml4JyxcbiAga2VybmVsdW5pdGxlbmd0aDogJ2tlcm5lbFVuaXRMZW5ndGgnLFxuICBrZXJuaW5nOiAna2VybmluZycsXG4gIGtleXBvaW50czogJ2tleVBvaW50cycsXG4gIGtleXNwbGluZXM6ICdrZXlTcGxpbmVzJyxcbiAga2V5dGltZXM6ICdrZXlUaW1lcycsXG4gIGxlbmd0aGFkanVzdDogJ2xlbmd0aEFkanVzdCcsXG4gIGxldHRlcnNwYWNpbmc6ICdsZXR0ZXJTcGFjaW5nJyxcbiAgJ2xldHRlci1zcGFjaW5nJzogJ2xldHRlclNwYWNpbmcnLFxuICBsaWdodGluZ2NvbG9yOiAnbGlnaHRpbmdDb2xvcicsXG4gICdsaWdodGluZy1jb2xvcic6ICdsaWdodGluZ0NvbG9yJyxcbiAgbGltaXRpbmdjb25lYW5nbGU6ICdsaW1pdGluZ0NvbmVBbmdsZScsXG4gIGxvY2FsOiAnbG9jYWwnLFxuICBtYXJrZXJlbmQ6ICdtYXJrZXJFbmQnLFxuICAnbWFya2VyLWVuZCc6ICdtYXJrZXJFbmQnLFxuICBtYXJrZXJoZWlnaHQ6ICdtYXJrZXJIZWlnaHQnLFxuICBtYXJrZXJtaWQ6ICdtYXJrZXJNaWQnLFxuICAnbWFya2VyLW1pZCc6ICdtYXJrZXJNaWQnLFxuICBtYXJrZXJzdGFydDogJ21hcmtlclN0YXJ0JyxcbiAgJ21hcmtlci1zdGFydCc6ICdtYXJrZXJTdGFydCcsXG4gIG1hcmtlcnVuaXRzOiAnbWFya2VyVW5pdHMnLFxuICBtYXJrZXJ3aWR0aDogJ21hcmtlcldpZHRoJyxcbiAgbWFzazogJ21hc2snLFxuICBtYXNrY29udGVudHVuaXRzOiAnbWFza0NvbnRlbnRVbml0cycsXG4gIG1hc2t1bml0czogJ21hc2tVbml0cycsXG4gIG1hdGhlbWF0aWNhbDogJ21hdGhlbWF0aWNhbCcsXG4gIG1vZGU6ICdtb2RlJyxcbiAgbnVtb2N0YXZlczogJ251bU9jdGF2ZXMnLFxuICBvZmZzZXQ6ICdvZmZzZXQnLFxuICBvcGFjaXR5OiAnb3BhY2l0eScsXG4gIG9wZXJhdG9yOiAnb3BlcmF0b3InLFxuICBvcmRlcjogJ29yZGVyJyxcbiAgb3JpZW50OiAnb3JpZW50JyxcbiAgb3JpZW50YXRpb246ICdvcmllbnRhdGlvbicsXG4gIG9yaWdpbjogJ29yaWdpbicsXG4gIG92ZXJmbG93OiAnb3ZlcmZsb3cnLFxuICBvdmVybGluZXBvc2l0aW9uOiAnb3ZlcmxpbmVQb3NpdGlvbicsXG4gICdvdmVybGluZS1wb3NpdGlvbic6ICdvdmVybGluZVBvc2l0aW9uJyxcbiAgb3ZlcmxpbmV0aGlja25lc3M6ICdvdmVybGluZVRoaWNrbmVzcycsXG4gICdvdmVybGluZS10aGlja25lc3MnOiAnb3ZlcmxpbmVUaGlja25lc3MnLFxuICBwYWludG9yZGVyOiAncGFpbnRPcmRlcicsXG4gICdwYWludC1vcmRlcic6ICdwYWludE9yZGVyJyxcbiAgcGFub3NlMTogJ3Bhbm9zZTEnLFxuICAncGFub3NlLTEnOiAncGFub3NlMScsXG4gIHBhdGhsZW5ndGg6ICdwYXRoTGVuZ3RoJyxcbiAgcGF0dGVybmNvbnRlbnR1bml0czogJ3BhdHRlcm5Db250ZW50VW5pdHMnLFxuICBwYXR0ZXJudHJhbnNmb3JtOiAncGF0dGVyblRyYW5zZm9ybScsXG4gIHBhdHRlcm51bml0czogJ3BhdHRlcm5Vbml0cycsXG4gIHBvaW50ZXJldmVudHM6ICdwb2ludGVyRXZlbnRzJyxcbiAgJ3BvaW50ZXItZXZlbnRzJzogJ3BvaW50ZXJFdmVudHMnLFxuICBwb2ludHM6ICdwb2ludHMnLFxuICBwb2ludHNhdHg6ICdwb2ludHNBdFgnLFxuICBwb2ludHNhdHk6ICdwb2ludHNBdFknLFxuICBwb2ludHNhdHo6ICdwb2ludHNBdFonLFxuICBwcmVmaXg6ICdwcmVmaXgnLFxuICBwcmVzZXJ2ZWFscGhhOiAncHJlc2VydmVBbHBoYScsXG4gIHByZXNlcnZlYXNwZWN0cmF0aW86ICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJyxcbiAgcHJpbWl0aXZldW5pdHM6ICdwcmltaXRpdmVVbml0cycsXG4gIHByb3BlcnR5OiAncHJvcGVydHknLFxuICByOiAncicsXG4gIHJhZGl1czogJ3JhZGl1cycsXG4gIHJlZng6ICdyZWZYJyxcbiAgcmVmeTogJ3JlZlknLFxuICByZW5kZXJpbmdpbnRlbnQ6ICdyZW5kZXJpbmdJbnRlbnQnLFxuICAncmVuZGVyaW5nLWludGVudCc6ICdyZW5kZXJpbmdJbnRlbnQnLFxuICByZXBlYXRjb3VudDogJ3JlcGVhdENvdW50JyxcbiAgcmVwZWF0ZHVyOiAncmVwZWF0RHVyJyxcbiAgcmVxdWlyZWRleHRlbnNpb25zOiAncmVxdWlyZWRFeHRlbnNpb25zJyxcbiAgcmVxdWlyZWRmZWF0dXJlczogJ3JlcXVpcmVkRmVhdHVyZXMnLFxuICByZXNvdXJjZTogJ3Jlc291cmNlJyxcbiAgcmVzdGFydDogJ3Jlc3RhcnQnLFxuICByZXN1bHQ6ICdyZXN1bHQnLFxuICByZXN1bHRzOiAncmVzdWx0cycsXG4gIHJvdGF0ZTogJ3JvdGF0ZScsXG4gIHJ4OiAncngnLFxuICByeTogJ3J5JyxcbiAgc2NhbGU6ICdzY2FsZScsXG4gIHNlY3VyaXR5OiAnc2VjdXJpdHknLFxuICBzZWVkOiAnc2VlZCcsXG4gIHNoYXBlcmVuZGVyaW5nOiAnc2hhcGVSZW5kZXJpbmcnLFxuICAnc2hhcGUtcmVuZGVyaW5nJzogJ3NoYXBlUmVuZGVyaW5nJyxcbiAgc2xvcGU6ICdzbG9wZScsXG4gIHNwYWNpbmc6ICdzcGFjaW5nJyxcbiAgc3BlY3VsYXJjb25zdGFudDogJ3NwZWN1bGFyQ29uc3RhbnQnLFxuICBzcGVjdWxhcmV4cG9uZW50OiAnc3BlY3VsYXJFeHBvbmVudCcsXG4gIHNwZWVkOiAnc3BlZWQnLFxuICBzcHJlYWRtZXRob2Q6ICdzcHJlYWRNZXRob2QnLFxuICBzdGFydG9mZnNldDogJ3N0YXJ0T2Zmc2V0JyxcbiAgc3RkZGV2aWF0aW9uOiAnc3RkRGV2aWF0aW9uJyxcbiAgc3RlbWg6ICdzdGVtaCcsXG4gIHN0ZW12OiAnc3RlbXYnLFxuICBzdGl0Y2h0aWxlczogJ3N0aXRjaFRpbGVzJyxcbiAgc3RvcGNvbG9yOiAnc3RvcENvbG9yJyxcbiAgJ3N0b3AtY29sb3InOiAnc3RvcENvbG9yJyxcbiAgc3RvcG9wYWNpdHk6ICdzdG9wT3BhY2l0eScsXG4gICdzdG9wLW9wYWNpdHknOiAnc3RvcE9wYWNpdHknLFxuICBzdHJpa2V0aHJvdWdocG9zaXRpb246ICdzdHJpa2V0aHJvdWdoUG9zaXRpb24nLFxuICAnc3RyaWtldGhyb3VnaC1wb3NpdGlvbic6ICdzdHJpa2V0aHJvdWdoUG9zaXRpb24nLFxuICBzdHJpa2V0aHJvdWdodGhpY2tuZXNzOiAnc3RyaWtldGhyb3VnaFRoaWNrbmVzcycsXG4gICdzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyc6ICdzdHJpa2V0aHJvdWdoVGhpY2tuZXNzJyxcbiAgc3RyaW5nOiAnc3RyaW5nJyxcbiAgc3Ryb2tlOiAnc3Ryb2tlJyxcbiAgc3Ryb2tlZGFzaGFycmF5OiAnc3Ryb2tlRGFzaGFycmF5JyxcbiAgJ3N0cm9rZS1kYXNoYXJyYXknOiAnc3Ryb2tlRGFzaGFycmF5JyxcbiAgc3Ryb2tlZGFzaG9mZnNldDogJ3N0cm9rZURhc2hvZmZzZXQnLFxuICAnc3Ryb2tlLWRhc2hvZmZzZXQnOiAnc3Ryb2tlRGFzaG9mZnNldCcsXG4gIHN0cm9rZWxpbmVjYXA6ICdzdHJva2VMaW5lY2FwJyxcbiAgJ3N0cm9rZS1saW5lY2FwJzogJ3N0cm9rZUxpbmVjYXAnLFxuICBzdHJva2VsaW5lam9pbjogJ3N0cm9rZUxpbmVqb2luJyxcbiAgJ3N0cm9rZS1saW5lam9pbic6ICdzdHJva2VMaW5lam9pbicsXG4gIHN0cm9rZW1pdGVybGltaXQ6ICdzdHJva2VNaXRlcmxpbWl0JyxcbiAgJ3N0cm9rZS1taXRlcmxpbWl0JzogJ3N0cm9rZU1pdGVybGltaXQnLFxuICBzdHJva2V3aWR0aDogJ3N0cm9rZVdpZHRoJyxcbiAgJ3N0cm9rZS13aWR0aCc6ICdzdHJva2VXaWR0aCcsXG4gIHN0cm9rZW9wYWNpdHk6ICdzdHJva2VPcGFjaXR5JyxcbiAgJ3N0cm9rZS1vcGFjaXR5JzogJ3N0cm9rZU9wYWNpdHknLFxuICBzdXBwcmVzc2NvbnRlbnRlZGl0YWJsZXdhcm5pbmc6ICdzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcnLFxuICBzdXBwcmVzc2h5ZHJhdGlvbndhcm5pbmc6ICdzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcnLFxuICBzdXJmYWNlc2NhbGU6ICdzdXJmYWNlU2NhbGUnLFxuICBzeXN0ZW1sYW5ndWFnZTogJ3N5c3RlbUxhbmd1YWdlJyxcbiAgdGFibGV2YWx1ZXM6ICd0YWJsZVZhbHVlcycsXG4gIHRhcmdldHg6ICd0YXJnZXRYJyxcbiAgdGFyZ2V0eTogJ3RhcmdldFknLFxuICB0ZXh0YW5jaG9yOiAndGV4dEFuY2hvcicsXG4gICd0ZXh0LWFuY2hvcic6ICd0ZXh0QW5jaG9yJyxcbiAgdGV4dGRlY29yYXRpb246ICd0ZXh0RGVjb3JhdGlvbicsXG4gICd0ZXh0LWRlY29yYXRpb24nOiAndGV4dERlY29yYXRpb24nLFxuICB0ZXh0bGVuZ3RoOiAndGV4dExlbmd0aCcsXG4gIHRleHRyZW5kZXJpbmc6ICd0ZXh0UmVuZGVyaW5nJyxcbiAgJ3RleHQtcmVuZGVyaW5nJzogJ3RleHRSZW5kZXJpbmcnLFxuICB0bzogJ3RvJyxcbiAgdHJhbnNmb3JtOiAndHJhbnNmb3JtJyxcbiAgdHlwZW9mOiAndHlwZW9mJyxcbiAgdTE6ICd1MScsXG4gIHUyOiAndTInLFxuICB1bmRlcmxpbmVwb3NpdGlvbjogJ3VuZGVybGluZVBvc2l0aW9uJyxcbiAgJ3VuZGVybGluZS1wb3NpdGlvbic6ICd1bmRlcmxpbmVQb3NpdGlvbicsXG4gIHVuZGVybGluZXRoaWNrbmVzczogJ3VuZGVybGluZVRoaWNrbmVzcycsXG4gICd1bmRlcmxpbmUtdGhpY2tuZXNzJzogJ3VuZGVybGluZVRoaWNrbmVzcycsXG4gIHVuaWNvZGU6ICd1bmljb2RlJyxcbiAgdW5pY29kZWJpZGk6ICd1bmljb2RlQmlkaScsXG4gICd1bmljb2RlLWJpZGknOiAndW5pY29kZUJpZGknLFxuICB1bmljb2RlcmFuZ2U6ICd1bmljb2RlUmFuZ2UnLFxuICAndW5pY29kZS1yYW5nZSc6ICd1bmljb2RlUmFuZ2UnLFxuICB1bml0c3BlcmVtOiAndW5pdHNQZXJFbScsXG4gICd1bml0cy1wZXItZW0nOiAndW5pdHNQZXJFbScsXG4gIHVuc2VsZWN0YWJsZTogJ3Vuc2VsZWN0YWJsZScsXG4gIHZhbHBoYWJldGljOiAndkFscGhhYmV0aWMnLFxuICAndi1hbHBoYWJldGljJzogJ3ZBbHBoYWJldGljJyxcbiAgdmFsdWVzOiAndmFsdWVzJyxcbiAgdmVjdG9yZWZmZWN0OiAndmVjdG9yRWZmZWN0JyxcbiAgJ3ZlY3Rvci1lZmZlY3QnOiAndmVjdG9yRWZmZWN0JyxcbiAgdmVyc2lvbjogJ3ZlcnNpb24nLFxuICB2ZXJ0YWR2eTogJ3ZlcnRBZHZZJyxcbiAgJ3ZlcnQtYWR2LXknOiAndmVydEFkdlknLFxuICB2ZXJ0b3JpZ2lueDogJ3ZlcnRPcmlnaW5YJyxcbiAgJ3ZlcnQtb3JpZ2luLXgnOiAndmVydE9yaWdpblgnLFxuICB2ZXJ0b3JpZ2lueTogJ3ZlcnRPcmlnaW5ZJyxcbiAgJ3ZlcnQtb3JpZ2luLXknOiAndmVydE9yaWdpblknLFxuICB2aGFuZ2luZzogJ3ZIYW5naW5nJyxcbiAgJ3YtaGFuZ2luZyc6ICd2SGFuZ2luZycsXG4gIHZpZGVvZ3JhcGhpYzogJ3ZJZGVvZ3JhcGhpYycsXG4gICd2LWlkZW9ncmFwaGljJzogJ3ZJZGVvZ3JhcGhpYycsXG4gIHZpZXdib3g6ICd2aWV3Qm94JyxcbiAgdmlld3RhcmdldDogJ3ZpZXdUYXJnZXQnLFxuICB2aXNpYmlsaXR5OiAndmlzaWJpbGl0eScsXG4gIHZtYXRoZW1hdGljYWw6ICd2TWF0aGVtYXRpY2FsJyxcbiAgJ3YtbWF0aGVtYXRpY2FsJzogJ3ZNYXRoZW1hdGljYWwnLFxuICB2b2NhYjogJ3ZvY2FiJyxcbiAgd2lkdGhzOiAnd2lkdGhzJyxcbiAgd29yZHNwYWNpbmc6ICd3b3JkU3BhY2luZycsXG4gICd3b3JkLXNwYWNpbmcnOiAnd29yZFNwYWNpbmcnLFxuICB3cml0aW5nbW9kZTogJ3dyaXRpbmdNb2RlJyxcbiAgJ3dyaXRpbmctbW9kZSc6ICd3cml0aW5nTW9kZScsXG4gIHgxOiAneDEnLFxuICB4MjogJ3gyJyxcbiAgeDogJ3gnLFxuICB4Y2hhbm5lbHNlbGVjdG9yOiAneENoYW5uZWxTZWxlY3RvcicsXG4gIHhoZWlnaHQ6ICd4SGVpZ2h0JyxcbiAgJ3gtaGVpZ2h0JzogJ3hIZWlnaHQnLFxuICB4bGlua2FjdHVhdGU6ICd4bGlua0FjdHVhdGUnLFxuICAneGxpbms6YWN0dWF0ZSc6ICd4bGlua0FjdHVhdGUnLFxuICB4bGlua2FyY3JvbGU6ICd4bGlua0FyY3JvbGUnLFxuICAneGxpbms6YXJjcm9sZSc6ICd4bGlua0FyY3JvbGUnLFxuICB4bGlua2hyZWY6ICd4bGlua0hyZWYnLFxuICAneGxpbms6aHJlZic6ICd4bGlua0hyZWYnLFxuICB4bGlua3JvbGU6ICd4bGlua1JvbGUnLFxuICAneGxpbms6cm9sZSc6ICd4bGlua1JvbGUnLFxuICB4bGlua3Nob3c6ICd4bGlua1Nob3cnLFxuICAneGxpbms6c2hvdyc6ICd4bGlua1Nob3cnLFxuICB4bGlua3RpdGxlOiAneGxpbmtUaXRsZScsXG4gICd4bGluazp0aXRsZSc6ICd4bGlua1RpdGxlJyxcbiAgeGxpbmt0eXBlOiAneGxpbmtUeXBlJyxcbiAgJ3hsaW5rOnR5cGUnOiAneGxpbmtUeXBlJyxcbiAgeG1sYmFzZTogJ3htbEJhc2UnLFxuICAneG1sOmJhc2UnOiAneG1sQmFzZScsXG4gIHhtbGxhbmc6ICd4bWxMYW5nJyxcbiAgJ3htbDpsYW5nJzogJ3htbExhbmcnLFxuICB4bWxuczogJ3htbG5zJyxcbiAgJ3htbDpzcGFjZSc6ICd4bWxTcGFjZScsXG4gIHhtbG5zeGxpbms6ICd4bWxuc1hsaW5rJyxcbiAgJ3htbG5zOnhsaW5rJzogJ3htbG5zWGxpbmsnLFxuICB4bWxzcGFjZTogJ3htbFNwYWNlJyxcbiAgeTE6ICd5MScsXG4gIHkyOiAneTInLFxuICB5OiAneScsXG4gIHljaGFubmVsc2VsZWN0b3I6ICd5Q2hhbm5lbFNlbGVjdG9yJyxcbiAgejogJ3onLFxuICB6b29tYW5kcGFuOiAnem9vbUFuZFBhbidcbn07XG5cbnZhciB2YWxpZGF0ZVByb3BlcnR5JDEgPSBmdW5jdGlvbiAoKSB7fTtcblxue1xuICB2YXIgd2FybmVkUHJvcGVydGllcyQxID0ge307XG4gIHZhciBFVkVOVF9OQU1FX1JFR0VYID0gL15vbi4vO1xuICB2YXIgSU5WQUxJRF9FVkVOVF9OQU1FX1JFR0VYID0gL15vblteQS1aXS87XG4gIHZhciByQVJJQSQxID0gbmV3IFJlZ0V4cCgnXihhcmlhKS1bJyArIEFUVFJJQlVURV9OQU1FX0NIQVIgKyAnXSokJyk7XG4gIHZhciByQVJJQUNhbWVsJDEgPSBuZXcgUmVnRXhwKCdeKGFyaWEpW0EtWl1bJyArIEFUVFJJQlVURV9OQU1FX0NIQVIgKyAnXSokJyk7XG5cbiAgdmFsaWRhdGVQcm9wZXJ0eSQxID0gZnVuY3Rpb24gKHRhZ05hbWUsIG5hbWUsIHZhbHVlLCBldmVudFJlZ2lzdHJ5KSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwod2FybmVkUHJvcGVydGllcyQxLCBuYW1lKSAmJiB3YXJuZWRQcm9wZXJ0aWVzJDFbbmFtZV0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhciBsb3dlckNhc2VkTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmIChsb3dlckNhc2VkTmFtZSA9PT0gJ29uZm9jdXNpbicgfHwgbG93ZXJDYXNlZE5hbWUgPT09ICdvbmZvY3Vzb3V0Jykge1xuICAgICAgZXJyb3IoJ1JlYWN0IHVzZXMgb25Gb2N1cyBhbmQgb25CbHVyIGluc3RlYWQgb2Ygb25Gb2N1c0luIGFuZCBvbkZvY3VzT3V0LiAnICsgJ0FsbCBSZWFjdCBldmVudHMgYXJlIG5vcm1hbGl6ZWQgdG8gYnViYmxlLCBzbyBvbkZvY3VzSW4gYW5kIG9uRm9jdXNPdXQgJyArICdhcmUgbm90IG5lZWRlZC9zdXBwb3J0ZWQgYnkgUmVhY3QuJyk7XG5cbiAgICAgIHdhcm5lZFByb3BlcnRpZXMkMVtuYW1lXSA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IC8vIFdlIGNhbid0IHJlbHkgb24gdGhlIGV2ZW50IHN5c3RlbSBiZWluZyBpbmplY3RlZCBvbiB0aGUgc2VydmVyLlxuXG5cbiAgICBpZiAoZXZlbnRSZWdpc3RyeSAhPSBudWxsKSB7XG4gICAgICB2YXIgcmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llcyA9IGV2ZW50UmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llcyxcbiAgICAgICAgICBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzID0gZXZlbnRSZWdpc3RyeS5wb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzO1xuXG4gICAgICBpZiAocmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlZ2lzdHJhdGlvbk5hbWUgPSBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KGxvd2VyQ2FzZWROYW1lKSA/IHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXNbbG93ZXJDYXNlZE5hbWVdIDogbnVsbDtcblxuICAgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgIT0gbnVsbCkge1xuICAgICAgICBlcnJvcignSW52YWxpZCBldmVudCBoYW5kbGVyIHByb3BlcnR5IGAlc2AuIERpZCB5b3UgbWVhbiBgJXNgPycsIG5hbWUsIHJlZ2lzdHJhdGlvbk5hbWUpO1xuXG4gICAgICAgIHdhcm5lZFByb3BlcnRpZXMkMVtuYW1lXSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoRVZFTlRfTkFNRV9SRUdFWC50ZXN0KG5hbWUpKSB7XG4gICAgICAgIGVycm9yKCdVbmtub3duIGV2ZW50IGhhbmRsZXIgcHJvcGVydHkgYCVzYC4gSXQgd2lsbCBiZSBpZ25vcmVkLicsIG5hbWUpO1xuXG4gICAgICAgIHdhcm5lZFByb3BlcnRpZXMkMVtuYW1lXSA9IHRydWU7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoRVZFTlRfTkFNRV9SRUdFWC50ZXN0KG5hbWUpKSB7XG4gICAgICAvLyBJZiBubyBldmVudCBwbHVnaW5zIGhhdmUgYmVlbiBpbmplY3RlZCwgd2UgYXJlIGluIGEgc2VydmVyIGVudmlyb25tZW50LlxuICAgICAgLy8gU28gd2UgY2FuJ3QgdGVsbCBpZiB0aGUgZXZlbnQgbmFtZSBpcyBjb3JyZWN0IGZvciBzdXJlLCBidXQgd2UgY2FuIGZpbHRlclxuICAgICAgLy8gb3V0IGtub3duIGJhZCBvbmVzIGxpa2UgYG9uY2xpY2tgLiBXZSBjYW4ndCBzdWdnZXN0IGEgc3BlY2lmaWMgcmVwbGFjZW1lbnQgdGhvdWdoLlxuICAgICAgaWYgKElOVkFMSURfRVZFTlRfTkFNRV9SRUdFWC50ZXN0KG5hbWUpKSB7XG4gICAgICAgIGVycm9yKCdJbnZhbGlkIGV2ZW50IGhhbmRsZXIgcHJvcGVydHkgYCVzYC4gJyArICdSZWFjdCBldmVudHMgdXNlIHRoZSBjYW1lbENhc2UgbmFtaW5nIGNvbnZlbnRpb24sIGZvciBleGFtcGxlIGBvbkNsaWNrYC4nLCBuYW1lKTtcbiAgICAgIH1cblxuICAgICAgd2FybmVkUHJvcGVydGllcyQxW25hbWVdID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gLy8gTGV0IHRoZSBBUklBIGF0dHJpYnV0ZSBob29rIHZhbGlkYXRlIEFSSUEgYXR0cmlidXRlc1xuXG5cbiAgICBpZiAockFSSUEkMS50ZXN0KG5hbWUpIHx8IHJBUklBQ2FtZWwkMS50ZXN0KG5hbWUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAobG93ZXJDYXNlZE5hbWUgPT09ICdpbm5lcmh0bWwnKSB7XG4gICAgICBlcnJvcignRGlyZWN0bHkgc2V0dGluZyBwcm9wZXJ0eSBgaW5uZXJIVE1MYCBpcyBub3QgcGVybWl0dGVkLiAnICsgJ0ZvciBtb3JlIGluZm9ybWF0aW9uLCBsb29rdXAgZG9jdW1lbnRhdGlvbiBvbiBgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLicpO1xuXG4gICAgICB3YXJuZWRQcm9wZXJ0aWVzJDFbbmFtZV0gPSB0cnVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGxvd2VyQ2FzZWROYW1lID09PSAnYXJpYScpIHtcbiAgICAgIGVycm9yKCdUaGUgYGFyaWFgIGF0dHJpYnV0ZSBpcyByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSBpbiBSZWFjdC4gJyArICdQYXNzIGluZGl2aWR1YWwgYGFyaWEtYCBhdHRyaWJ1dGVzIGluc3RlYWQuJyk7XG5cbiAgICAgIHdhcm5lZFByb3BlcnRpZXMkMVtuYW1lXSA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAobG93ZXJDYXNlZE5hbWUgPT09ICdpcycgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBlcnJvcignUmVjZWl2ZWQgYSBgJXNgIGZvciBhIHN0cmluZyBhdHRyaWJ1dGUgYGlzYC4gSWYgdGhpcyBpcyBleHBlY3RlZCwgY2FzdCAnICsgJ3RoZSB2YWx1ZSB0byBhIHN0cmluZy4nLCB0eXBlb2YgdmFsdWUpO1xuXG4gICAgICB3YXJuZWRQcm9wZXJ0aWVzJDFbbmFtZV0gPSB0cnVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgaXNOYU4odmFsdWUpKSB7XG4gICAgICBlcnJvcignUmVjZWl2ZWQgTmFOIGZvciB0aGUgYCVzYCBhdHRyaWJ1dGUuIElmIHRoaXMgaXMgZXhwZWN0ZWQsIGNhc3QgJyArICd0aGUgdmFsdWUgdG8gYSBzdHJpbmcuJywgbmFtZSk7XG5cbiAgICAgIHdhcm5lZFByb3BlcnRpZXMkMVtuYW1lXSA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgcHJvcGVydHlJbmZvID0gZ2V0UHJvcGVydHlJbmZvKG5hbWUpO1xuICAgIHZhciBpc1Jlc2VydmVkID0gcHJvcGVydHlJbmZvICE9PSBudWxsICYmIHByb3BlcnR5SW5mby50eXBlID09PSBSRVNFUlZFRDsgLy8gS25vd24gYXR0cmlidXRlcyBzaG91bGQgbWF0Y2ggdGhlIGNhc2luZyBzcGVjaWZpZWQgaW4gdGhlIHByb3BlcnR5IGNvbmZpZy5cblxuICAgIGlmIChwb3NzaWJsZVN0YW5kYXJkTmFtZXMuaGFzT3duUHJvcGVydHkobG93ZXJDYXNlZE5hbWUpKSB7XG4gICAgICB2YXIgc3RhbmRhcmROYW1lID0gcG9zc2libGVTdGFuZGFyZE5hbWVzW2xvd2VyQ2FzZWROYW1lXTtcblxuICAgICAgaWYgKHN0YW5kYXJkTmFtZSAhPT0gbmFtZSkge1xuICAgICAgICBlcnJvcignSW52YWxpZCBET00gcHJvcGVydHkgYCVzYC4gRGlkIHlvdSBtZWFuIGAlc2A/JywgbmFtZSwgc3RhbmRhcmROYW1lKTtcblxuICAgICAgICB3YXJuZWRQcm9wZXJ0aWVzJDFbbmFtZV0gPSB0cnVlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFpc1Jlc2VydmVkICYmIG5hbWUgIT09IGxvd2VyQ2FzZWROYW1lKSB7XG4gICAgICAvLyBVbmtub3duIGF0dHJpYnV0ZXMgc2hvdWxkIGhhdmUgbG93ZXJjYXNlIGNhc2luZyBzaW5jZSB0aGF0J3MgaG93IHRoZXlcbiAgICAgIC8vIHdpbGwgYmUgY2FzZWQgYW55d2F5IHdpdGggc2VydmVyIHJlbmRlcmluZy5cbiAgICAgIGVycm9yKCdSZWFjdCBkb2VzIG5vdCByZWNvZ25pemUgdGhlIGAlc2AgcHJvcCBvbiBhIERPTSBlbGVtZW50LiBJZiB5b3UgJyArICdpbnRlbnRpb25hbGx5IHdhbnQgaXQgdG8gYXBwZWFyIGluIHRoZSBET00gYXMgYSBjdXN0b20gJyArICdhdHRyaWJ1dGUsIHNwZWxsIGl0IGFzIGxvd2VyY2FzZSBgJXNgIGluc3RlYWQuICcgKyAnSWYgeW91IGFjY2lkZW50YWxseSBwYXNzZWQgaXQgZnJvbSBhIHBhcmVudCBjb21wb25lbnQsIHJlbW92ZSAnICsgJ2l0IGZyb20gdGhlIERPTSBlbGVtZW50LicsIG5hbWUsIGxvd2VyQ2FzZWROYW1lKTtcblxuICAgICAgd2FybmVkUHJvcGVydGllcyQxW25hbWVdID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyAmJiBzaG91bGRSZW1vdmVBdHRyaWJ1dGVXaXRoV2FybmluZyhuYW1lLCB2YWx1ZSwgcHJvcGVydHlJbmZvLCBmYWxzZSkpIHtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBlcnJvcignUmVjZWl2ZWQgYCVzYCBmb3IgYSBub24tYm9vbGVhbiBhdHRyaWJ1dGUgYCVzYC5cXG5cXG4nICsgJ0lmIHlvdSB3YW50IHRvIHdyaXRlIGl0IHRvIHRoZSBET00sIHBhc3MgYSBzdHJpbmcgaW5zdGVhZDogJyArICclcz1cIiVzXCIgb3IgJXM9e3ZhbHVlLnRvU3RyaW5nKCl9LicsIHZhbHVlLCBuYW1lLCBuYW1lLCB2YWx1ZSwgbmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvcignUmVjZWl2ZWQgYCVzYCBmb3IgYSBub24tYm9vbGVhbiBhdHRyaWJ1dGUgYCVzYC5cXG5cXG4nICsgJ0lmIHlvdSB3YW50IHRvIHdyaXRlIGl0IHRvIHRoZSBET00sIHBhc3MgYSBzdHJpbmcgaW5zdGVhZDogJyArICclcz1cIiVzXCIgb3IgJXM9e3ZhbHVlLnRvU3RyaW5nKCl9LlxcblxcbicgKyAnSWYgeW91IHVzZWQgdG8gY29uZGl0aW9uYWxseSBvbWl0IGl0IHdpdGggJXM9e2NvbmRpdGlvbiAmJiB2YWx1ZX0sICcgKyAncGFzcyAlcz17Y29uZGl0aW9uID8gdmFsdWUgOiB1bmRlZmluZWR9IGluc3RlYWQuJywgdmFsdWUsIG5hbWUsIG5hbWUsIHZhbHVlLCBuYW1lLCBuYW1lLCBuYW1lKTtcbiAgICAgIH1cblxuICAgICAgd2FybmVkUHJvcGVydGllcyQxW25hbWVdID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gLy8gTm93IHRoYXQgd2UndmUgdmFsaWRhdGVkIGNhc2luZywgZG8gbm90IHZhbGlkYXRlXG4gICAgLy8gZGF0YSB0eXBlcyBmb3IgcmVzZXJ2ZWQgcHJvcHNcblxuXG4gICAgaWYgKGlzUmVzZXJ2ZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gLy8gV2FybiB3aGVuIGEga25vd24gYXR0cmlidXRlIGlzIGEgYmFkIHR5cGVcblxuXG4gICAgaWYgKHNob3VsZFJlbW92ZUF0dHJpYnV0ZVdpdGhXYXJuaW5nKG5hbWUsIHZhbHVlLCBwcm9wZXJ0eUluZm8sIGZhbHNlKSkge1xuICAgICAgd2FybmVkUHJvcGVydGllcyQxW25hbWVdID0gdHJ1ZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIFdhcm4gd2hlbiBwYXNzaW5nIHRoZSBzdHJpbmdzICdmYWxzZScgb3IgJ3RydWUnIGludG8gYSBib29sZWFuIHByb3BcblxuXG4gICAgaWYgKCh2YWx1ZSA9PT0gJ2ZhbHNlJyB8fCB2YWx1ZSA9PT0gJ3RydWUnKSAmJiBwcm9wZXJ0eUluZm8gIT09IG51bGwgJiYgcHJvcGVydHlJbmZvLnR5cGUgPT09IEJPT0xFQU4pIHtcbiAgICAgIGVycm9yKCdSZWNlaXZlZCB0aGUgc3RyaW5nIGAlc2AgZm9yIHRoZSBib29sZWFuIGF0dHJpYnV0ZSBgJXNgLiAnICsgJyVzICcgKyAnRGlkIHlvdSBtZWFuICVzPXslc30/JywgdmFsdWUsIG5hbWUsIHZhbHVlID09PSAnZmFsc2UnID8gJ1RoZSBicm93c2VyIHdpbGwgaW50ZXJwcmV0IGl0IGFzIGEgdHJ1dGh5IHZhbHVlLicgOiAnQWx0aG91Z2ggdGhpcyB3b3JrcywgaXQgd2lsbCBub3Qgd29yayBhcyBleHBlY3RlZCBpZiB5b3UgcGFzcyB0aGUgc3RyaW5nIFwiZmFsc2VcIi4nLCBuYW1lLCB2YWx1ZSk7XG5cbiAgICAgIHdhcm5lZFByb3BlcnRpZXMkMVtuYW1lXSA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn1cblxudmFyIHdhcm5Vbmtub3duUHJvcGVydGllcyA9IGZ1bmN0aW9uICh0eXBlLCBwcm9wcywgZXZlbnRSZWdpc3RyeSkge1xuICB7XG4gICAgdmFyIHVua25vd25Qcm9wcyA9IFtdO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgICB2YXIgaXNWYWxpZCA9IHZhbGlkYXRlUHJvcGVydHkkMSh0eXBlLCBrZXksIHByb3BzW2tleV0sIGV2ZW50UmVnaXN0cnkpO1xuXG4gICAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgdW5rbm93blByb3BzLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgdW5rbm93blByb3BTdHJpbmcgPSB1bmtub3duUHJvcHMubWFwKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICByZXR1cm4gJ2AnICsgcHJvcCArICdgJztcbiAgICB9KS5qb2luKCcsICcpO1xuXG4gICAgaWYgKHVua25vd25Qcm9wcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGVycm9yKCdJbnZhbGlkIHZhbHVlIGZvciBwcm9wICVzIG9uIDwlcz4gdGFnLiBFaXRoZXIgcmVtb3ZlIGl0IGZyb20gdGhlIGVsZW1lbnQsICcgKyAnb3IgcGFzcyBhIHN0cmluZyBvciBudW1iZXIgdmFsdWUgdG8ga2VlcCBpdCBpbiB0aGUgRE9NLiAnICsgJ0ZvciBkZXRhaWxzLCBzZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL2F0dHJpYnV0ZS1iZWhhdmlvciAnLCB1bmtub3duUHJvcFN0cmluZywgdHlwZSk7XG4gICAgfSBlbHNlIGlmICh1bmtub3duUHJvcHMubGVuZ3RoID4gMSkge1xuICAgICAgZXJyb3IoJ0ludmFsaWQgdmFsdWVzIGZvciBwcm9wcyAlcyBvbiA8JXM+IHRhZy4gRWl0aGVyIHJlbW92ZSB0aGVtIGZyb20gdGhlIGVsZW1lbnQsICcgKyAnb3IgcGFzcyBhIHN0cmluZyBvciBudW1iZXIgdmFsdWUgdG8ga2VlcCB0aGVtIGluIHRoZSBET00uICcgKyAnRm9yIGRldGFpbHMsIHNlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvYXR0cmlidXRlLWJlaGF2aW9yICcsIHVua25vd25Qcm9wU3RyaW5nLCB0eXBlKTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydGllcyQyKHR5cGUsIHByb3BzLCBldmVudFJlZ2lzdHJ5KSB7XG4gIGlmIChpc0N1c3RvbUNvbXBvbmVudCh0eXBlLCBwcm9wcykpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB3YXJuVW5rbm93blByb3BlcnRpZXModHlwZSwgcHJvcHMsIGV2ZW50UmVnaXN0cnkpO1xufVxuXG52YXIgd2FyblZhbGlkU3R5bGUgPSBmdW5jdGlvbiAoKSB7fTtcblxue1xuICAvLyAnbXNUcmFuc2Zvcm0nIGlzIGNvcnJlY3QsIGJ1dCB0aGUgb3RoZXIgcHJlZml4ZXMgc2hvdWxkIGJlIGNhcGl0YWxpemVkXG4gIHZhciBiYWRWZW5kb3JlZFN0eWxlTmFtZVBhdHRlcm4gPSAvXig/OndlYmtpdHxtb3p8bylbQS1aXS87XG4gIHZhciBtc1BhdHRlcm4gPSAvXi1tcy0vO1xuICB2YXIgaHlwaGVuUGF0dGVybiA9IC8tKC4pL2c7IC8vIHN0eWxlIHZhbHVlcyBzaG91bGRuJ3QgY29udGFpbiBhIHNlbWljb2xvblxuXG4gIHZhciBiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4gPSAvO1xccyokLztcbiAgdmFyIHdhcm5lZFN0eWxlTmFtZXMgPSB7fTtcbiAgdmFyIHdhcm5lZFN0eWxlVmFsdWVzID0ge307XG4gIHZhciB3YXJuZWRGb3JOYU5WYWx1ZSA9IGZhbHNlO1xuICB2YXIgd2FybmVkRm9ySW5maW5pdHlWYWx1ZSA9IGZhbHNlO1xuXG4gIHZhciBjYW1lbGl6ZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoaHlwaGVuUGF0dGVybiwgZnVuY3Rpb24gKF8sIGNoYXJhY3Rlcikge1xuICAgICAgcmV0dXJuIGNoYXJhY3Rlci50b1VwcGVyQ2FzZSgpO1xuICAgIH0pO1xuICB9O1xuXG4gIHZhciB3YXJuSHlwaGVuYXRlZFN0eWxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0gPSB0cnVlO1xuXG4gICAgZXJyb3IoJ1Vuc3VwcG9ydGVkIHN0eWxlIHByb3BlcnR5ICVzLiBEaWQgeW91IG1lYW4gJXM/JywgbmFtZSwgLy8gQXMgQW5kaSBTbWl0aCBzdWdnZXN0c1xuICAgIC8vIChodHRwOi8vd3d3LmFuZGlzbWl0aC5jb20vYmxvZy8yMDEyLzAyL21vZGVybml6ci1wcmVmaXhlZC8pLCBhbiBgLW1zYCBwcmVmaXhcbiAgICAvLyBpcyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGBtc2AuXG4gICAgY2FtZWxpemUobmFtZS5yZXBsYWNlKG1zUGF0dGVybiwgJ21zLScpKSk7XG4gIH07XG5cbiAgdmFyIHdhcm5CYWRWZW5kb3JlZFN0eWxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0gPSB0cnVlO1xuXG4gICAgZXJyb3IoJ1Vuc3VwcG9ydGVkIHZlbmRvci1wcmVmaXhlZCBzdHlsZSBwcm9wZXJ0eSAlcy4gRGlkIHlvdSBtZWFuICVzPycsIG5hbWUsIG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpKTtcbiAgfTtcblxuICB2YXIgd2FyblN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKHdhcm5lZFN0eWxlVmFsdWVzLmhhc093blByb3BlcnR5KHZhbHVlKSAmJiB3YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0gPSB0cnVlO1xuXG4gICAgZXJyb3IoXCJTdHlsZSBwcm9wZXJ0eSB2YWx1ZXMgc2hvdWxkbid0IGNvbnRhaW4gYSBzZW1pY29sb24uIFwiICsgJ1RyeSBcIiVzOiAlc1wiIGluc3RlYWQuJywgbmFtZSwgdmFsdWUucmVwbGFjZShiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4sICcnKSk7XG4gIH07XG5cbiAgdmFyIHdhcm5TdHlsZVZhbHVlSXNOYU4gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgICBpZiAod2FybmVkRm9yTmFOVmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3YXJuZWRGb3JOYU5WYWx1ZSA9IHRydWU7XG5cbiAgICBlcnJvcignYE5hTmAgaXMgYW4gaW52YWxpZCB2YWx1ZSBmb3IgdGhlIGAlc2AgY3NzIHN0eWxlIHByb3BlcnR5LicsIG5hbWUpO1xuICB9O1xuXG4gIHZhciB3YXJuU3R5bGVWYWx1ZUlzSW5maW5pdHkgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgICBpZiAod2FybmVkRm9ySW5maW5pdHlWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdhcm5lZEZvckluZmluaXR5VmFsdWUgPSB0cnVlO1xuXG4gICAgZXJyb3IoJ2BJbmZpbml0eWAgaXMgYW4gaW52YWxpZCB2YWx1ZSBmb3IgdGhlIGAlc2AgY3NzIHN0eWxlIHByb3BlcnR5LicsIG5hbWUpO1xuICB9O1xuXG4gIHdhcm5WYWxpZFN0eWxlID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKG5hbWUuaW5kZXhPZignLScpID4gLTEpIHtcbiAgICAgIHdhcm5IeXBoZW5hdGVkU3R5bGVOYW1lKG5hbWUpO1xuICAgIH0gZWxzZSBpZiAoYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuLnRlc3QobmFtZSkpIHtcbiAgICAgIHdhcm5CYWRWZW5kb3JlZFN0eWxlTmFtZShuYW1lKTtcbiAgICB9IGVsc2UgaWYgKGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgd2FyblN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uKG5hbWUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgICB3YXJuU3R5bGVWYWx1ZUlzTmFOKG5hbWUsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzRmluaXRlKHZhbHVlKSkge1xuICAgICAgICB3YXJuU3R5bGVWYWx1ZUlzSW5maW5pdHkobmFtZSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxudmFyIHdhcm5WYWxpZFN0eWxlJDEgPSB3YXJuVmFsaWRTdHlsZTtcblxuLy8gY29kZSBjb3BpZWQgYW5kIG1vZGlmaWVkIGZyb20gZXNjYXBlLWh0bWxcbnZhciBtYXRjaEh0bWxSZWdFeHAgPSAvW1wiJyY8Pl0vO1xuLyoqXG4gKiBFc2NhcGVzIHNwZWNpYWwgY2hhcmFjdGVycyBhbmQgSFRNTCBlbnRpdGllcyBpbiBhIGdpdmVuIGh0bWwgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gc3RyaW5nIEhUTUwgc3RyaW5nIHRvIGVzY2FwZSBmb3IgbGF0ZXIgaW5zZXJ0aW9uXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZXNjYXBlSHRtbChzdHJpbmcpIHtcbiAge1xuICAgIGNoZWNrSHRtbFN0cmluZ0NvZXJjaW9uKHN0cmluZyk7XG4gIH1cblxuICB2YXIgc3RyID0gJycgKyBzdHJpbmc7XG4gIHZhciBtYXRjaCA9IG1hdGNoSHRtbFJlZ0V4cC5leGVjKHN0cik7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICB2YXIgZXNjYXBlO1xuICB2YXIgaHRtbCA9ICcnO1xuICB2YXIgaW5kZXg7XG4gIHZhciBsYXN0SW5kZXggPSAwO1xuXG4gIGZvciAoaW5kZXggPSBtYXRjaC5pbmRleDsgaW5kZXggPCBzdHIubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgc3dpdGNoIChzdHIuY2hhckNvZGVBdChpbmRleCkpIHtcbiAgICAgIGNhc2UgMzQ6XG4gICAgICAgIC8vIFwiXG4gICAgICAgIGVzY2FwZSA9ICcmcXVvdDsnO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAzODpcbiAgICAgICAgLy8gJlxuICAgICAgICBlc2NhcGUgPSAnJmFtcDsnO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAzOTpcbiAgICAgICAgLy8gJ1xuICAgICAgICBlc2NhcGUgPSAnJiN4Mjc7JzsgLy8gbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbDsgdXNlZCB0byBiZSAnJiMzOSdcblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSA2MDpcbiAgICAgICAgLy8gPFxuICAgICAgICBlc2NhcGUgPSAnJmx0Oyc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIDYyOlxuICAgICAgICAvLyA+XG4gICAgICAgIGVzY2FwZSA9ICcmZ3Q7JztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChsYXN0SW5kZXggIT09IGluZGV4KSB7XG4gICAgICBodG1sICs9IHN0ci5zdWJzdHJpbmcobGFzdEluZGV4LCBpbmRleCk7XG4gICAgfVxuXG4gICAgbGFzdEluZGV4ID0gaW5kZXggKyAxO1xuICAgIGh0bWwgKz0gZXNjYXBlO1xuICB9XG5cbiAgcmV0dXJuIGxhc3RJbmRleCAhPT0gaW5kZXggPyBodG1sICsgc3RyLnN1YnN0cmluZyhsYXN0SW5kZXgsIGluZGV4KSA6IGh0bWw7XG59IC8vIGVuZCBjb2RlIGNvcGllZCBhbmQgbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbFxuXG4vKipcbiAqIEVzY2FwZXMgdGV4dCB0byBwcmV2ZW50IHNjcmlwdGluZyBhdHRhY2tzLlxuICpcbiAqIEBwYXJhbSB7Kn0gdGV4dCBUZXh0IHZhbHVlIHRvIGVzY2FwZS5cbiAqIEByZXR1cm4ge3N0cmluZ30gQW4gZXNjYXBlZCBzdHJpbmcuXG4gKi9cblxuXG5mdW5jdGlvbiBlc2NhcGVUZXh0Rm9yQnJvd3Nlcih0ZXh0KSB7XG4gIGlmICh0eXBlb2YgdGV4dCA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGVvZiB0ZXh0ID09PSAnbnVtYmVyJykge1xuICAgIC8vIHRoaXMgc2hvcnRjaXJjdWl0IGhlbHBzIHBlcmYgZm9yIHR5cGVzIHRoYXQgd2Uga25vdyB3aWxsIG5ldmVyIGhhdmVcbiAgICAvLyBzcGVjaWFsIGNoYXJhY3RlcnMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgb2Z0ZW5cbiAgICAvLyBmb3IgbnVtZXJpYyBkb20gaWRzLlxuICAgIHJldHVybiAnJyArIHRleHQ7XG4gIH1cblxuICByZXR1cm4gZXNjYXBlSHRtbCh0ZXh0KTtcbn1cblxudmFyIHVwcGVyY2FzZVBhdHRlcm4gPSAvKFtBLVpdKS9nO1xudmFyIG1zUGF0dGVybiQxID0gL15tcy0vO1xuLyoqXG4gKiBIeXBoZW5hdGVzIGEgY2FtZWxjYXNlZCBDU1MgcHJvcGVydHkgbmFtZSwgZm9yIGV4YW1wbGU6XG4gKlxuICogICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgnYmFja2dyb3VuZENvbG9yJylcbiAqICAgPCBcImJhY2tncm91bmQtY29sb3JcIlxuICogICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgnTW96VHJhbnNpdGlvbicpXG4gKiAgIDwgXCItbW96LXRyYW5zaXRpb25cIlxuICogICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgnbXNUcmFuc2l0aW9uJylcbiAqICAgPCBcIi1tcy10cmFuc2l0aW9uXCJcbiAqXG4gKiBBcyBNb2Rlcm5penIgc3VnZ2VzdHMgKGh0dHA6Ly9tb2Rlcm5penIuY29tL2RvY3MvI3ByZWZpeGVkKSwgYW4gYG1zYCBwcmVmaXhcbiAqIGlzIGNvbnZlcnRlZCB0byBgLW1zLWAuXG4gKi9cblxuZnVuY3Rpb24gaHlwaGVuYXRlU3R5bGVOYW1lKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUucmVwbGFjZSh1cHBlcmNhc2VQYXR0ZXJuLCAnLSQxJykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKG1zUGF0dGVybiQxLCAnLW1zLScpO1xufVxuXG4vLyBhbmQgYW55IG5ld2xpbmUgb3IgdGFiIGFyZSBmaWx0ZXJlZCBvdXQgYXMgaWYgdGhleSdyZSBub3QgcGFydCBvZiB0aGUgVVJMLlxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmwtcGFyc2luZ1xuLy8gVGFiIG9yIG5ld2xpbmUgYXJlIGRlZmluZWQgYXMgXFxyXFxuXFx0OlxuLy8gaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI2FzY2lpLXRhYi1vci1uZXdsaW5lXG4vLyBBIEMwIGNvbnRyb2wgaXMgYSBjb2RlIHBvaW50IGluIHRoZSByYW5nZSBcXHUwMDAwIE5VTEwgdG8gXFx1MDAxRlxuLy8gSU5GT1JNQVRJT04gU0VQQVJBVE9SIE9ORSwgaW5jbHVzaXZlOlxuLy8gaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI2MwLWNvbnRyb2wtb3Itc3BhY2VcblxuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuXG52YXIgaXNKYXZhU2NyaXB0UHJvdG9jb2wgPSAvXltcXHUwMDAwLVxcdTAwMUYgXSpqW1xcclxcblxcdF0qYVtcXHJcXG5cXHRdKnZbXFxyXFxuXFx0XSphW1xcclxcblxcdF0qc1tcXHJcXG5cXHRdKmNbXFxyXFxuXFx0XSpyW1xcclxcblxcdF0qaVtcXHJcXG5cXHRdKnBbXFxyXFxuXFx0XSp0W1xcclxcblxcdF0qXFw6L2k7XG52YXIgZGlkV2FybiA9IGZhbHNlO1xuXG5mdW5jdGlvbiBzYW5pdGl6ZVVSTCh1cmwpIHtcbiAge1xuICAgIGlmICghZGlkV2FybiAmJiBpc0phdmFTY3JpcHRQcm90b2NvbC50ZXN0KHVybCkpIHtcbiAgICAgIGRpZFdhcm4gPSB0cnVlO1xuXG4gICAgICBlcnJvcignQSBmdXR1cmUgdmVyc2lvbiBvZiBSZWFjdCB3aWxsIGJsb2NrIGphdmFzY3JpcHQ6IFVSTHMgYXMgYSBzZWN1cml0eSBwcmVjYXV0aW9uLiAnICsgJ1VzZSBldmVudCBoYW5kbGVycyBpbnN0ZWFkIGlmIHlvdSBjYW4uIElmIHlvdSBuZWVkIHRvIGdlbmVyYXRlIHVuc2FmZSBIVE1MIHRyeSAnICsgJ3VzaW5nIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGluc3RlYWQuIFJlYWN0IHdhcyBwYXNzZWQgJXMuJywgSlNPTi5zdHJpbmdpZnkodXJsKSk7XG4gICAgfVxuICB9XG59XG5cbnZhciBpc0FycmF5SW1wbCA9IEFycmF5LmlzQXJyYXk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZWRlY2xhcmVcblxuZnVuY3Rpb24gaXNBcnJheShhKSB7XG4gIHJldHVybiBpc0FycmF5SW1wbChhKTtcbn1cblxudmFyIHN0YXJ0SW5saW5lU2NyaXB0ID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8c2NyaXB0PicpO1xudmFyIGVuZElubGluZVNjcmlwdCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPC9zY3JpcHQ+Jyk7XG52YXIgc3RhcnRTY3JpcHRTcmMgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzxzY3JpcHQgc3JjPVwiJyk7XG52YXIgc3RhcnRNb2R1bGVTcmMgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzxzY3JpcHQgdHlwZT1cIm1vZHVsZVwiIHNyYz1cIicpO1xudmFyIGVuZEFzeW5jU2NyaXB0ID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIiBhc3luYz1cIlwiPjwvc2NyaXB0PicpOyAvLyBBbGxvd3MgdXMgdG8ga2VlcCB0cmFjayBvZiB3aGF0IHdlJ3ZlIGFscmVhZHkgd3JpdHRlbiBzbyB3ZSBjYW4gcmVmZXIgYmFjayB0byBpdC5cblxuZnVuY3Rpb24gY3JlYXRlUmVzcG9uc2VTdGF0ZShpZGVudGlmaWVyUHJlZml4LCBub25jZSwgYm9vdHN0cmFwU2NyaXB0Q29udGVudCwgYm9vdHN0cmFwU2NyaXB0cywgYm9vdHN0cmFwTW9kdWxlcykge1xuICB2YXIgaWRQcmVmaXggPSBpZGVudGlmaWVyUHJlZml4ID09PSB1bmRlZmluZWQgPyAnJyA6IGlkZW50aWZpZXJQcmVmaXg7XG4gIHZhciBpbmxpbmVTY3JpcHRXaXRoTm9uY2UgPSBub25jZSA9PT0gdW5kZWZpbmVkID8gc3RhcnRJbmxpbmVTY3JpcHQgOiBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzxzY3JpcHQgbm9uY2U9XCInICsgZXNjYXBlVGV4dEZvckJyb3dzZXIobm9uY2UpICsgJ1wiPicpO1xuICB2YXIgYm9vdHN0cmFwQ2h1bmtzID0gW107XG5cbiAgaWYgKGJvb3RzdHJhcFNjcmlwdENvbnRlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgIGJvb3RzdHJhcENodW5rcy5wdXNoKGlubGluZVNjcmlwdFdpdGhOb25jZSwgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3Nlcihib290c3RyYXBTY3JpcHRDb250ZW50KSksIGVuZElubGluZVNjcmlwdCk7XG4gIH1cblxuICBpZiAoYm9vdHN0cmFwU2NyaXB0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBib290c3RyYXBTY3JpcHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBib290c3RyYXBDaHVua3MucHVzaChzdGFydFNjcmlwdFNyYywgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3Nlcihib290c3RyYXBTY3JpcHRzW2ldKSksIGVuZEFzeW5jU2NyaXB0KTtcbiAgICB9XG4gIH1cblxuICBpZiAoYm9vdHN0cmFwTW9kdWxlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGJvb3RzdHJhcE1vZHVsZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICBib290c3RyYXBDaHVua3MucHVzaChzdGFydE1vZHVsZVNyYywgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3Nlcihib290c3RyYXBNb2R1bGVzW19pXSkpLCBlbmRBc3luY1NjcmlwdCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBib290c3RyYXBDaHVua3M6IGJvb3RzdHJhcENodW5rcyxcbiAgICBzdGFydElubGluZVNjcmlwdDogaW5saW5lU2NyaXB0V2l0aE5vbmNlLFxuICAgIHBsYWNlaG9sZGVyUHJlZml4OiBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoaWRQcmVmaXggKyAnUDonKSxcbiAgICBzZWdtZW50UHJlZml4OiBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoaWRQcmVmaXggKyAnUzonKSxcbiAgICBib3VuZGFyeVByZWZpeDogaWRQcmVmaXggKyAnQjonLFxuICAgIGlkUHJlZml4OiBpZFByZWZpeCxcbiAgICBuZXh0U3VzcGVuc2VJRDogMCxcbiAgICBzZW50Q29tcGxldGVTZWdtZW50RnVuY3Rpb246IGZhbHNlLFxuICAgIHNlbnRDb21wbGV0ZUJvdW5kYXJ5RnVuY3Rpb246IGZhbHNlLFxuICAgIHNlbnRDbGllbnRSZW5kZXJGdW5jdGlvbjogZmFsc2VcbiAgfTtcbn0gLy8gQ29uc3RhbnRzIGZvciB0aGUgaW5zZXJ0aW9uIG1vZGUgd2UncmUgY3VycmVudGx5IHdyaXRpbmcgaW4uIFdlIGRvbid0IGVuY29kZSBhbGwgSFRNTDUgaW5zZXJ0aW9uXG4vLyBtb2Rlcy4gV2Ugb25seSBpbmNsdWRlIHRoZSB2YXJpYW50cyBhcyB0aGV5IG1hdHRlciBmb3IgdGhlIHNha2Ugb2Ygb3VyIHB1cnBvc2VzLlxuLy8gV2UgZG9uJ3QgYWN0dWFsbHkgcHJvdmlkZSB0aGUgbmFtZXNwYWNlIHRoZXJlZm9yZSB3ZSB1c2UgY29uc3RhbnRzIGluc3RlYWQgb2YgdGhlIHN0cmluZy5cblxudmFyIFJPT1RfSFRNTF9NT0RFID0gMDsgLy8gVXNlZCBmb3IgdGhlIHJvb3QgbW9zdCBlbGVtZW50IHRhZy5cblxudmFyIEhUTUxfTU9ERSA9IDE7XG52YXIgU1ZHX01PREUgPSAyO1xudmFyIE1BVEhNTF9NT0RFID0gMztcbnZhciBIVE1MX1RBQkxFX01PREUgPSA0O1xudmFyIEhUTUxfVEFCTEVfQk9EWV9NT0RFID0gNTtcbnZhciBIVE1MX1RBQkxFX1JPV19NT0RFID0gNjtcbnZhciBIVE1MX0NPTEdST1VQX01PREUgPSA3OyAvLyBXZSBoYXZlIGEgZ3JlYXRlciB0aGFuIEhUTUxfVEFCTEVfTU9ERSBjaGVjayBlbHNld2hlcmUuIElmIHlvdSBhZGQgbW9yZSBjYXNlcyBoZXJlLCBtYWtlIHN1cmUgaXRcbi8vIHN0aWxsIG1ha2VzIHNlbnNlXG5cbmZ1bmN0aW9uIGNyZWF0ZUZvcm1hdENvbnRleHQoaW5zZXJ0aW9uTW9kZSwgc2VsZWN0ZWRWYWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGluc2VydGlvbk1vZGU6IGluc2VydGlvbk1vZGUsXG4gICAgc2VsZWN0ZWRWYWx1ZTogc2VsZWN0ZWRWYWx1ZVxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVSb290Rm9ybWF0Q29udGV4dChuYW1lc3BhY2VVUkkpIHtcbiAgdmFyIGluc2VydGlvbk1vZGUgPSBuYW1lc3BhY2VVUkkgPT09ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgPyBTVkdfTU9ERSA6IG5hbWVzcGFjZVVSSSA9PT0gJ2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnID8gTUFUSE1MX01PREUgOiBST09UX0hUTUxfTU9ERTtcbiAgcmV0dXJuIGNyZWF0ZUZvcm1hdENvbnRleHQoaW5zZXJ0aW9uTW9kZSwgbnVsbCk7XG59XG5mdW5jdGlvbiBnZXRDaGlsZEZvcm1hdENvbnRleHQocGFyZW50Q29udGV4dCwgdHlwZSwgcHJvcHMpIHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgIHJldHVybiBjcmVhdGVGb3JtYXRDb250ZXh0KEhUTUxfTU9ERSwgcHJvcHMudmFsdWUgIT0gbnVsbCA/IHByb3BzLnZhbHVlIDogcHJvcHMuZGVmYXVsdFZhbHVlKTtcblxuICAgIGNhc2UgJ3N2Zyc6XG4gICAgICByZXR1cm4gY3JlYXRlRm9ybWF0Q29udGV4dChTVkdfTU9ERSwgbnVsbCk7XG5cbiAgICBjYXNlICdtYXRoJzpcbiAgICAgIHJldHVybiBjcmVhdGVGb3JtYXRDb250ZXh0KE1BVEhNTF9NT0RFLCBudWxsKTtcblxuICAgIGNhc2UgJ2ZvcmVpZ25PYmplY3QnOlxuICAgICAgcmV0dXJuIGNyZWF0ZUZvcm1hdENvbnRleHQoSFRNTF9NT0RFLCBudWxsKTtcbiAgICAvLyBUYWJsZSBwYXJlbnRzIGFyZSBzcGVjaWFsIGluIHRoYXQgdGhlaXIgY2hpbGRyZW4gY2FuIG9ubHkgYmUgY3JlYXRlZCBhdCBhbGwgaWYgdGhleSdyZVxuICAgIC8vIHdyYXBwZWQgaW4gYSB0YWJsZSBwYXJlbnQuIFNvIHdlIG5lZWQgdG8gZW5jb2RlIHRoYXQgd2UncmUgZW50ZXJpbmcgdGhpcyBtb2RlLlxuXG4gICAgY2FzZSAndGFibGUnOlxuICAgICAgcmV0dXJuIGNyZWF0ZUZvcm1hdENvbnRleHQoSFRNTF9UQUJMRV9NT0RFLCBudWxsKTtcblxuICAgIGNhc2UgJ3RoZWFkJzpcbiAgICBjYXNlICd0Ym9keSc6XG4gICAgY2FzZSAndGZvb3QnOlxuICAgICAgcmV0dXJuIGNyZWF0ZUZvcm1hdENvbnRleHQoSFRNTF9UQUJMRV9CT0RZX01PREUsIG51bGwpO1xuXG4gICAgY2FzZSAnY29sZ3JvdXAnOlxuICAgICAgcmV0dXJuIGNyZWF0ZUZvcm1hdENvbnRleHQoSFRNTF9DT0xHUk9VUF9NT0RFLCBudWxsKTtcblxuICAgIGNhc2UgJ3RyJzpcbiAgICAgIHJldHVybiBjcmVhdGVGb3JtYXRDb250ZXh0KEhUTUxfVEFCTEVfUk9XX01PREUsIG51bGwpO1xuICB9XG5cbiAgaWYgKHBhcmVudENvbnRleHQuaW5zZXJ0aW9uTW9kZSA+PSBIVE1MX1RBQkxFX01PREUpIHtcbiAgICAvLyBXaGF0ZXZlciB0YWcgdGhpcyB3YXMsIGl0IHdhc24ndCBhIHRhYmxlIHBhcmVudCBvciBvdGhlciBzcGVjaWFsIHBhcmVudCwgc28gd2UgbXVzdCBoYXZlXG4gICAgLy8gZW50ZXJlZCBwbGFpbiBIVE1MIGFnYWluLlxuICAgIHJldHVybiBjcmVhdGVGb3JtYXRDb250ZXh0KEhUTUxfTU9ERSwgbnVsbCk7XG4gIH1cblxuICBpZiAocGFyZW50Q29udGV4dC5pbnNlcnRpb25Nb2RlID09PSBST09UX0hUTUxfTU9ERSkge1xuICAgIC8vIFdlJ3ZlIGVtaXR0ZWQgdGhlIHJvb3QgYW5kIGlzIG5vdyBpbiBwbGFpbiBIVE1MIG1vZGUuXG4gICAgcmV0dXJuIGNyZWF0ZUZvcm1hdENvbnRleHQoSFRNTF9NT0RFLCBudWxsKTtcbiAgfVxuXG4gIHJldHVybiBwYXJlbnRDb250ZXh0O1xufVxudmFyIFVOSU5JVElBTElaRURfU1VTUEVOU0VfQk9VTkRBUllfSUQgPSBudWxsO1xuZnVuY3Rpb24gYXNzaWduU3VzcGVuc2VCb3VuZGFyeUlEKHJlc3BvbnNlU3RhdGUpIHtcbiAgdmFyIGdlbmVyYXRlZElEID0gcmVzcG9uc2VTdGF0ZS5uZXh0U3VzcGVuc2VJRCsrO1xuICByZXR1cm4gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKHJlc3BvbnNlU3RhdGUuYm91bmRhcnlQcmVmaXggKyBnZW5lcmF0ZWRJRC50b1N0cmluZygxNikpO1xufVxuZnVuY3Rpb24gbWFrZUlkKHJlc3BvbnNlU3RhdGUsIHRyZWVJZCwgbG9jYWxJZCkge1xuICB2YXIgaWRQcmVmaXggPSByZXNwb25zZVN0YXRlLmlkUHJlZml4O1xuICB2YXIgaWQgPSAnOicgKyBpZFByZWZpeCArICdSJyArIHRyZWVJZDsgLy8gVW5sZXNzIHRoaXMgaXMgdGhlIGZpcnN0IGlkIGF0IHRoaXMgbGV2ZWwsIGFwcGVuZCBhIG51bWJlciBhdCB0aGUgZW5kXG4gIC8vIHRoYXQgcmVwcmVzZW50cyB0aGUgcG9zaXRpb24gb2YgdGhpcyB1c2VJZCBob29rIGFtb25nIGFsbCB0aGUgdXNlSWRcbiAgLy8gaG9va3MgZm9yIHRoaXMgZmliZXIuXG5cbiAgaWYgKGxvY2FsSWQgPiAwKSB7XG4gICAgaWQgKz0gJ0gnICsgbG9jYWxJZC50b1N0cmluZygzMik7XG4gIH1cblxuICByZXR1cm4gaWQgKyAnOic7XG59XG5cbmZ1bmN0aW9uIGVuY29kZUhUTUxUZXh0Tm9kZSh0ZXh0KSB7XG4gIHJldHVybiBlc2NhcGVUZXh0Rm9yQnJvd3Nlcih0ZXh0KTtcbn1cblxudmFyIHRleHRTZXBhcmF0b3IgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzwhLS0gLS0+Jyk7XG5mdW5jdGlvbiBwdXNoVGV4dEluc3RhbmNlKHRhcmdldCwgdGV4dCwgcmVzcG9uc2VTdGF0ZSkge1xuICBpZiAodGV4dCA9PT0gJycpIHtcbiAgICAvLyBFbXB0eSB0ZXh0IGRvZXNuJ3QgaGF2ZSBhIERPTSBub2RlIHJlcHJlc2VudGF0aW9uIGFuZCB0aGUgaHlkcmF0aW9uIGlzIGF3YXJlIG9mIHRoaXMuXG4gICAgcmV0dXJuO1xuICB9IC8vIFRPRE86IEF2b2lkIGFkZGluZyBhIHRleHQgc2VwYXJhdG9yIGluIGNvbW1vbiBjYXNlcy5cblxuXG4gIHRhcmdldC5wdXNoKHN0cmluZ1RvQ2h1bmsoZW5jb2RlSFRNTFRleHROb2RlKHRleHQpKSwgdGV4dFNlcGFyYXRvcik7XG59XG52YXIgc3R5bGVOYW1lQ2FjaGUgPSBuZXcgTWFwKCk7XG5cbmZ1bmN0aW9uIHByb2Nlc3NTdHlsZU5hbWUoc3R5bGVOYW1lKSB7XG4gIHZhciBjaHVuayA9IHN0eWxlTmFtZUNhY2hlLmdldChzdHlsZU5hbWUpO1xuXG4gIGlmIChjaHVuayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGNodW5rO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3NlcihoeXBoZW5hdGVTdHlsZU5hbWUoc3R5bGVOYW1lKSkpO1xuICBzdHlsZU5hbWVDYWNoZS5zZXQoc3R5bGVOYW1lLCByZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG52YXIgc3R5bGVBdHRyaWJ1dGVTdGFydCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnIHN0eWxlPVwiJyk7XG52YXIgc3R5bGVBc3NpZ24gPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzonKTtcbnZhciBzdHlsZVNlcGFyYXRvciA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnOycpO1xuXG5mdW5jdGlvbiBwdXNoU3R5bGUodGFyZ2V0LCByZXNwb25zZVN0YXRlLCBzdHlsZSkge1xuICBpZiAodHlwZW9mIHN0eWxlICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGBzdHlsZWAgcHJvcCBleHBlY3RzIGEgbWFwcGluZyBmcm9tIHN0eWxlIHByb3BlcnRpZXMgdG8gdmFsdWVzLCAnICsgXCJub3QgYSBzdHJpbmcuIEZvciBleGFtcGxlLCBzdHlsZT17e21hcmdpblJpZ2h0OiBzcGFjaW5nICsgJ2VtJ319IHdoZW4gXCIgKyAndXNpbmcgSlNYLicpO1xuICB9XG5cbiAgdmFyIGlzRmlyc3QgPSB0cnVlO1xuXG4gIGZvciAodmFyIHN0eWxlTmFtZSBpbiBzdHlsZSkge1xuICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChzdHlsZSwgc3R5bGVOYW1lKSkge1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyBJZiB5b3UgcHJvdmlkZSB1bnNhZmUgdXNlciBkYXRhIGhlcmUgdGhleSBjYW4gaW5qZWN0IGFyYml0cmFyeSBDU1NcbiAgICAvLyB3aGljaCBtYXkgYmUgcHJvYmxlbWF0aWMgKEkgY291bGRuJ3QgcmVwcm8gdGhpcyk6XG4gICAgLy8gaHR0cHM6Ly93d3cub3dhc3Aub3JnL2luZGV4LnBocC9YU1NfRmlsdGVyX0V2YXNpb25fQ2hlYXRfU2hlZXRcbiAgICAvLyBodHRwOi8vd3d3LnRoZXNwYW5uZXIuY28udWsvMjAwNy8xMS8yNi91bHRpbWF0ZS14c3MtY3NzLWluamVjdGlvbi9cbiAgICAvLyBUaGlzIGlzIG5vdCBhbiBYU1MgaG9sZSBidXQgaW5zdGVhZCBhIHBvdGVudGlhbCBDU1MgaW5qZWN0aW9uIGlzc3VlXG4gICAgLy8gd2hpY2ggaGFzIGxlYWQgdG8gYSBncmVhdGVyIGRpc2N1c3Npb24gYWJvdXQgaG93IHdlJ3JlIGdvaW5nIHRvXG4gICAgLy8gdHJ1c3QgVVJMcyBtb3ZpbmcgZm9yd2FyZC4gU2VlICMyMTE1OTAxXG5cblxuICAgIHZhciBzdHlsZVZhbHVlID0gc3R5bGVbc3R5bGVOYW1lXTtcblxuICAgIGlmIChzdHlsZVZhbHVlID09IG51bGwgfHwgdHlwZW9mIHN0eWxlVmFsdWUgPT09ICdib29sZWFuJyB8fCBzdHlsZVZhbHVlID09PSAnJykge1xuICAgICAgLy8gVE9ETzogV2UgdXNlZCB0byBzZXQgZW1wdHkgc3RyaW5nIGFzIGEgc3R5bGUgd2l0aCBhbiBlbXB0eSB2YWx1ZS4gRG9lcyB0aGF0IGV2ZXIgbWFrZSBzZW5zZT9cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBuYW1lQ2h1bmsgPSB2b2lkIDA7XG4gICAgdmFyIHZhbHVlQ2h1bmsgPSB2b2lkIDA7XG4gICAgdmFyIGlzQ3VzdG9tUHJvcGVydHkgPSBzdHlsZU5hbWUuaW5kZXhPZignLS0nKSA9PT0gMDtcblxuICAgIGlmIChpc0N1c3RvbVByb3BlcnR5KSB7XG4gICAgICBuYW1lQ2h1bmsgPSBzdHJpbmdUb0NodW5rKGVzY2FwZVRleHRGb3JCcm93c2VyKHN0eWxlTmFtZSkpO1xuXG4gICAgICB7XG4gICAgICAgIGNoZWNrQ1NTUHJvcGVydHlTdHJpbmdDb2VyY2lvbihzdHlsZVZhbHVlLCBzdHlsZU5hbWUpO1xuICAgICAgfVxuXG4gICAgICB2YWx1ZUNodW5rID0gc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3NlcigoJycgKyBzdHlsZVZhbHVlKS50cmltKCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAge1xuICAgICAgICB3YXJuVmFsaWRTdHlsZSQxKHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIG5hbWVDaHVuayA9IHByb2Nlc3NTdHlsZU5hbWUoc3R5bGVOYW1lKTtcblxuICAgICAgaWYgKHR5cGVvZiBzdHlsZVZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICBpZiAoc3R5bGVWYWx1ZSAhPT0gMCAmJiAhaGFzT3duUHJvcGVydHkuY2FsbChpc1VuaXRsZXNzTnVtYmVyLCBzdHlsZU5hbWUpKSB7XG4gICAgICAgICAgdmFsdWVDaHVuayA9IHN0cmluZ1RvQ2h1bmsoc3R5bGVWYWx1ZSArICdweCcpOyAvLyBQcmVzdW1lcyBpbXBsaWNpdCAncHgnIHN1ZmZpeCBmb3IgdW5pdGxlc3MgbnVtYmVyc1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlQ2h1bmsgPSBzdHJpbmdUb0NodW5rKCcnICsgc3R5bGVWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHtcbiAgICAgICAgICBjaGVja0NTU1Byb3BlcnR5U3RyaW5nQ29lcmNpb24oc3R5bGVWYWx1ZSwgc3R5bGVOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhbHVlQ2h1bmsgPSBzdHJpbmdUb0NodW5rKGVzY2FwZVRleHRGb3JCcm93c2VyKCgnJyArIHN0eWxlVmFsdWUpLnRyaW0oKSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc0ZpcnN0KSB7XG4gICAgICBpc0ZpcnN0ID0gZmFsc2U7IC8vIElmIGl0J3MgZmlyc3QsIHdlIGRvbid0IG5lZWQgYW55IHNlcGFyYXRvcnMgcHJlZml4ZWQuXG5cbiAgICAgIHRhcmdldC5wdXNoKHN0eWxlQXR0cmlidXRlU3RhcnQsIG5hbWVDaHVuaywgc3R5bGVBc3NpZ24sIHZhbHVlQ2h1bmspO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXQucHVzaChzdHlsZVNlcGFyYXRvciwgbmFtZUNodW5rLCBzdHlsZUFzc2lnbiwgdmFsdWVDaHVuayk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFpc0ZpcnN0KSB7XG4gICAgdGFyZ2V0LnB1c2goYXR0cmlidXRlRW5kKTtcbiAgfVxufVxuXG52YXIgYXR0cmlidXRlU2VwYXJhdG9yID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCcgJyk7XG52YXIgYXR0cmlidXRlQXNzaWduID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc9XCInKTtcbnZhciBhdHRyaWJ1dGVFbmQgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiJyk7XG52YXIgYXR0cmlidXRlRW1wdHlTdHJpbmcgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJz1cIlwiJyk7XG5cbmZ1bmN0aW9uIHB1c2hBdHRyaWJ1dGUodGFyZ2V0LCByZXNwb25zZVN0YXRlLCBuYW1lLCB2YWx1ZSkge1xuICBzd2l0Y2ggKG5hbWUpIHtcbiAgICBjYXNlICdzdHlsZSc6XG4gICAgICB7XG4gICAgICAgIHB1c2hTdHlsZSh0YXJnZXQsIHJlc3BvbnNlU3RhdGUsIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgY2FzZSAnZGVmYXVsdFZhbHVlJzpcbiAgICBjYXNlICdkZWZhdWx0Q2hlY2tlZCc6IC8vIFRoZXNlIHNob3VsZG4ndCBiZSBzZXQgYXMgYXR0cmlidXRlcyBvbiBnZW5lcmljIEhUTUwgZWxlbWVudHMuXG5cbiAgICBjYXNlICdpbm5lckhUTUwnOiAvLyBNdXN0IHVzZSBkYW5nZXJvdXNseVNldElubmVySFRNTCBpbnN0ZWFkLlxuXG4gICAgY2FzZSAnc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nJzpcbiAgICBjYXNlICdzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcnOlxuICAgICAgLy8gSWdub3JlZC4gVGhlc2UgYXJlIGJ1aWx0LWluIHRvIFJlYWN0IG9uIHRoZSBjbGllbnQuXG4gICAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIC8vIHNob3VsZElnbm9yZUF0dHJpYnV0ZVxuICAvLyBXZSBoYXZlIGFscmVhZHkgZmlsdGVyZWQgb3V0IG51bGwvdW5kZWZpbmVkIGFuZCByZXNlcnZlZCB3b3Jkcy5cbiAgbmFtZS5sZW5ndGggPiAyICYmIChuYW1lWzBdID09PSAnbycgfHwgbmFtZVswXSA9PT0gJ08nKSAmJiAobmFtZVsxXSA9PT0gJ24nIHx8IG5hbWVbMV0gPT09ICdOJykpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgcHJvcGVydHlJbmZvID0gZ2V0UHJvcGVydHlJbmZvKG5hbWUpO1xuXG4gIGlmIChwcm9wZXJ0eUluZm8gIT09IG51bGwpIHtcbiAgICAvLyBzaG91bGRSZW1vdmVBdHRyaWJ1dGVcbiAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgY2FzZSAnZnVuY3Rpb24nOiAvLyAkRmxvd0lzc3VlIHN5bWJvbCBpcyBwZXJmZWN0bHkgdmFsaWQgaGVyZVxuXG4gICAgICBjYXNlICdzeW1ib2wnOlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgICAgIHJldHVybjtcblxuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHtcbiAgICAgICAgICBpZiAoIXByb3BlcnR5SW5mby5hY2NlcHRzQm9vbGVhbnMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgYXR0cmlidXRlTmFtZSA9IHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lO1xuICAgIHZhciBhdHRyaWJ1dGVOYW1lQ2h1bmsgPSBzdHJpbmdUb0NodW5rKGF0dHJpYnV0ZU5hbWUpOyAvLyBUT0RPOiBJZiBpdCdzIGtub3duIHdlIGNhbiBjYWNoZSB0aGUgY2h1bmsuXG5cbiAgICBzd2l0Y2ggKHByb3BlcnR5SW5mby50eXBlKSB7XG4gICAgICBjYXNlIEJPT0xFQU46XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHRhcmdldC5wdXNoKGF0dHJpYnV0ZVNlcGFyYXRvciwgYXR0cmlidXRlTmFtZUNodW5rLCBhdHRyaWJ1dGVFbXB0eVN0cmluZyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG5cbiAgICAgIGNhc2UgT1ZFUkxPQURFRF9CT09MRUFOOlxuICAgICAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgICB0YXJnZXQucHVzaChhdHRyaWJ1dGVTZXBhcmF0b3IsIGF0dHJpYnV0ZU5hbWVDaHVuaywgYXR0cmlidXRlRW1wdHlTdHJpbmcpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBmYWxzZSkgOyBlbHNlIHtcbiAgICAgICAgICB0YXJnZXQucHVzaChhdHRyaWJ1dGVTZXBhcmF0b3IsIGF0dHJpYnV0ZU5hbWVDaHVuaywgYXR0cmlidXRlQXNzaWduLCBzdHJpbmdUb0NodW5rKGVzY2FwZVRleHRGb3JCcm93c2VyKHZhbHVlKSksIGF0dHJpYnV0ZUVuZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG5cbiAgICAgIGNhc2UgTlVNRVJJQzpcbiAgICAgICAgaWYgKCFpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICB0YXJnZXQucHVzaChhdHRyaWJ1dGVTZXBhcmF0b3IsIGF0dHJpYnV0ZU5hbWVDaHVuaywgYXR0cmlidXRlQXNzaWduLCBzdHJpbmdUb0NodW5rKGVzY2FwZVRleHRGb3JCcm93c2VyKHZhbHVlKSksIGF0dHJpYnV0ZUVuZCk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBQT1NJVElWRV9OVU1FUklDOlxuICAgICAgICBpZiAoIWlzTmFOKHZhbHVlKSAmJiB2YWx1ZSA+PSAxKSB7XG4gICAgICAgICAgdGFyZ2V0LnB1c2goYXR0cmlidXRlU2VwYXJhdG9yLCBhdHRyaWJ1dGVOYW1lQ2h1bmssIGF0dHJpYnV0ZUFzc2lnbiwgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3Nlcih2YWx1ZSkpLCBhdHRyaWJ1dGVFbmQpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChwcm9wZXJ0eUluZm8uc2FuaXRpemVVUkwpIHtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjaGVja0F0dHJpYnV0ZVN0cmluZ0NvZXJjaW9uKHZhbHVlLCBhdHRyaWJ1dGVOYW1lKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YWx1ZSA9ICcnICsgdmFsdWU7XG4gICAgICAgICAgc2FuaXRpemVVUkwodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGFyZ2V0LnB1c2goYXR0cmlidXRlU2VwYXJhdG9yLCBhdHRyaWJ1dGVOYW1lQ2h1bmssIGF0dHJpYnV0ZUFzc2lnbiwgc3RyaW5nVG9DaHVuayhlc2NhcGVUZXh0Rm9yQnJvd3Nlcih2YWx1ZSkpLCBhdHRyaWJ1dGVFbmQpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc0F0dHJpYnV0ZU5hbWVTYWZlKG5hbWUpKSB7XG4gICAgLy8gc2hvdWxkUmVtb3ZlQXR0cmlidXRlXG4gICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICAgIGNhc2UgJ2Z1bmN0aW9uJzogLy8gJEZsb3dJc3N1ZSBzeW1ib2wgaXMgcGVyZmVjdGx5IHZhbGlkIGhlcmVcblxuICAgICAgY2FzZSAnc3ltYm9sJzpcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgICAgICByZXR1cm47XG5cbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIHByZWZpeCA9IG5hbWUudG9Mb3dlckNhc2UoKS5zbGljZSgwLCA1KTtcblxuICAgICAgICAgIGlmIChwcmVmaXggIT09ICdkYXRhLScgJiYgcHJlZml4ICE9PSAnYXJpYS0nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGFyZ2V0LnB1c2goYXR0cmlidXRlU2VwYXJhdG9yLCBzdHJpbmdUb0NodW5rKG5hbWUpLCBhdHRyaWJ1dGVBc3NpZ24sIHN0cmluZ1RvQ2h1bmsoZXNjYXBlVGV4dEZvckJyb3dzZXIodmFsdWUpKSwgYXR0cmlidXRlRW5kKTtcbiAgfVxufVxuXG52YXIgZW5kT2ZTdGFydFRhZyA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPicpO1xudmFyIGVuZE9mU3RhcnRUYWdTZWxmQ2xvc2luZyA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnLz4nKTtcblxuZnVuY3Rpb24gcHVzaElubmVySFRNTCh0YXJnZXQsIGlubmVySFRNTCwgY2hpbGRyZW4pIHtcbiAgaWYgKGlubmVySFRNTCAhPSBudWxsKSB7XG4gICAgaWYgKGNoaWxkcmVuICE9IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuIG9ubHkgc2V0IG9uZSBvZiBgY2hpbGRyZW5gIG9yIGBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTGAuJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpbm5lckhUTUwgIT09ICdvYmplY3QnIHx8ICEoJ19faHRtbCcgaW4gaW5uZXJIVE1MKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgIG11c3QgYmUgaW4gdGhlIGZvcm0gYHtfX2h0bWw6IC4uLn1gLiAnICsgJ1BsZWFzZSB2aXNpdCBodHRwczovL3JlYWN0anMub3JnL2xpbmsvZGFuZ2Vyb3VzbHktc2V0LWlubmVyLWh0bWwgJyArICdmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKTtcbiAgICB9XG5cbiAgICB2YXIgaHRtbCA9IGlubmVySFRNTC5fX2h0bWw7XG5cbiAgICBpZiAoaHRtbCAhPT0gbnVsbCAmJiBodG1sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHtcbiAgICAgICAgY2hlY2tIdG1sU3RyaW5nQ29lcmNpb24oaHRtbCk7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldC5wdXNoKHN0cmluZ1RvQ2h1bmsoJycgKyBodG1sKSk7XG4gICAgfVxuICB9XG59IC8vIFRPRE86IE1vdmUgdGhlc2UgdG8gUmVzcG9uc2VTdGF0ZSBzbyB0aGF0IHdlIHdhcm4gZm9yIGV2ZXJ5IHJlcXVlc3QuXG4vLyBJdCB3b3VsZCBoZWxwIGRlYnVnZ2luZyBpbiBzdGF0ZWZ1bCBzZXJ2ZXJzIChlLmcuIHNlcnZpY2Ugd29ya2VyKS5cblxuXG52YXIgZGlkV2FybkRlZmF1bHRJbnB1dFZhbHVlID0gZmFsc2U7XG52YXIgZGlkV2FybkRlZmF1bHRDaGVja2VkID0gZmFsc2U7XG52YXIgZGlkV2FybkRlZmF1bHRTZWxlY3RWYWx1ZSA9IGZhbHNlO1xudmFyIGRpZFdhcm5EZWZhdWx0VGV4dGFyZWFWYWx1ZSA9IGZhbHNlO1xudmFyIGRpZFdhcm5JbnZhbGlkT3B0aW9uQ2hpbGRyZW4gPSBmYWxzZTtcbnZhciBkaWRXYXJuSW52YWxpZE9wdGlvbklubmVySFRNTCA9IGZhbHNlO1xudmFyIGRpZFdhcm5TZWxlY3RlZFNldE9uT3B0aW9uID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGNoZWNrU2VsZWN0UHJvcChwcm9wcywgcHJvcE5hbWUpIHtcbiAge1xuICAgIHZhciB2YWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcblxuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICB2YXIgYXJyYXkgPSBpc0FycmF5KHZhbHVlKTtcblxuICAgICAgaWYgKHByb3BzLm11bHRpcGxlICYmICFhcnJheSkge1xuICAgICAgICBlcnJvcignVGhlIGAlc2AgcHJvcCBzdXBwbGllZCB0byA8c2VsZWN0PiBtdXN0IGJlIGFuIGFycmF5IGlmICcgKyAnYG11bHRpcGxlYCBpcyB0cnVlLicsIHByb3BOYW1lKTtcbiAgICAgIH0gZWxzZSBpZiAoIXByb3BzLm11bHRpcGxlICYmIGFycmF5KSB7XG4gICAgICAgIGVycm9yKCdUaGUgYCVzYCBwcm9wIHN1cHBsaWVkIHRvIDxzZWxlY3Q+IG11c3QgYmUgYSBzY2FsYXIgJyArICd2YWx1ZSBpZiBgbXVsdGlwbGVgIGlzIGZhbHNlLicsIHByb3BOYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHVzaFN0YXJ0U2VsZWN0KHRhcmdldCwgcHJvcHMsIHJlc3BvbnNlU3RhdGUpIHtcbiAge1xuICAgIGNoZWNrQ29udHJvbGxlZFZhbHVlUHJvcHMoJ3NlbGVjdCcsIHByb3BzKTtcbiAgICBjaGVja1NlbGVjdFByb3AocHJvcHMsICd2YWx1ZScpO1xuICAgIGNoZWNrU2VsZWN0UHJvcChwcm9wcywgJ2RlZmF1bHRWYWx1ZScpO1xuXG4gICAgaWYgKHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5EZWZhdWx0U2VsZWN0VmFsdWUpIHtcbiAgICAgIGVycm9yKCdTZWxlY3QgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUgcHJvcCwgYnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIHNlbGVjdCAnICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL3JlYWN0anMub3JnL2xpbmsvY29udHJvbGxlZC1jb21wb25lbnRzJyk7XG5cbiAgICAgIGRpZFdhcm5EZWZhdWx0U2VsZWN0VmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHRhcmdldC5wdXNoKHN0YXJ0Q2h1bmtGb3JUYWcoJ3NlbGVjdCcpKTtcbiAgdmFyIGNoaWxkcmVuID0gbnVsbDtcbiAgdmFyIGlubmVySFRNTCA9IG51bGw7XG5cbiAgZm9yICh2YXIgcHJvcEtleSBpbiBwcm9wcykge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5KSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuXG4gICAgICBpZiAocHJvcFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAocHJvcEtleSkge1xuICAgICAgICBjYXNlICdjaGlsZHJlbic6XG4gICAgICAgICAgY2hpbGRyZW4gPSBwcm9wVmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnOlxuICAgICAgICAgIC8vIFRPRE86IFRoaXMgZG9lc24ndCByZWFsbHkgbWFrZSBzZW5zZSBmb3Igc2VsZWN0IHNpbmNlIGl0IGNhbid0IHVzZSB0aGUgY29udHJvbGxlZFxuICAgICAgICAgIC8vIHZhbHVlIGluIHRoZSBpbm5lckhUTUwuXG4gICAgICAgICAgaW5uZXJIVE1MID0gcHJvcFZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2RlZmF1bHRWYWx1ZSc6XG4gICAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgICAgICAvLyBUaGVzZSBhcmUgc2V0IG9uIHRoZSBDb250ZXh0IGluc3RlYWQgYW5kIGFwcGxpZWQgdG8gdGhlIG5lc3RlZCBvcHRpb25zLlxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIHJlc3BvbnNlU3RhdGUsIHByb3BLZXksIHByb3BWYWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGFyZ2V0LnB1c2goZW5kT2ZTdGFydFRhZyk7XG4gIHB1c2hJbm5lckhUTUwodGFyZ2V0LCBpbm5lckhUTUwsIGNoaWxkcmVuKTtcbiAgcmV0dXJuIGNoaWxkcmVuO1xufVxuXG5mdW5jdGlvbiBmbGF0dGVuT3B0aW9uQ2hpbGRyZW4oY2hpbGRyZW4pIHtcbiAgdmFyIGNvbnRlbnQgPSAnJzsgLy8gRmxhdHRlbiBjaGlsZHJlbiBhbmQgd2FybiBpZiB0aGV5IGFyZW4ndCBzdHJpbmdzIG9yIG51bWJlcnM7XG4gIC8vIGludmFsaWQgdHlwZXMgYXJlIGlnbm9yZWQuXG5cbiAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFjaChjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgaWYgKGNoaWxkID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb250ZW50ICs9IGNoaWxkO1xuXG4gICAge1xuICAgICAgaWYgKCFkaWRXYXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuICYmIHR5cGVvZiBjaGlsZCAhPT0gJ3N0cmluZycgJiYgdHlwZW9mIGNoaWxkICE9PSAnbnVtYmVyJykge1xuICAgICAgICBkaWRXYXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuID0gdHJ1ZTtcblxuICAgICAgICBlcnJvcignQ2Fubm90IGluZmVyIHRoZSBvcHRpb24gdmFsdWUgb2YgY29tcGxleCBjaGlsZHJlbi4gJyArICdQYXNzIGEgYHZhbHVlYCBwcm9wIG9yIHVzZSBhIHBsYWluIHN0cmluZyBhcyBjaGlsZHJlbiB0byA8b3B0aW9uPi4nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY29udGVudDtcbn1cblxudmFyIHNlbGVjdGVkTWFya2VyQXR0cmlidXRlID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCcgc2VsZWN0ZWQ9XCJcIicpO1xuXG5mdW5jdGlvbiBwdXNoU3RhcnRPcHRpb24odGFyZ2V0LCBwcm9wcywgcmVzcG9uc2VTdGF0ZSwgZm9ybWF0Q29udGV4dCkge1xuICB2YXIgc2VsZWN0ZWRWYWx1ZSA9IGZvcm1hdENvbnRleHQuc2VsZWN0ZWRWYWx1ZTtcbiAgdGFyZ2V0LnB1c2goc3RhcnRDaHVua0ZvclRhZygnb3B0aW9uJykpO1xuICB2YXIgY2hpbGRyZW4gPSBudWxsO1xuICB2YXIgdmFsdWUgPSBudWxsO1xuICB2YXIgc2VsZWN0ZWQgPSBudWxsO1xuICB2YXIgaW5uZXJIVE1MID0gbnVsbDtcblxuICBmb3IgKHZhciBwcm9wS2V5IGluIHByb3BzKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkpKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcEtleV07XG5cbiAgICAgIGlmIChwcm9wVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChwcm9wS2V5KSB7XG4gICAgICAgIGNhc2UgJ2NoaWxkcmVuJzpcbiAgICAgICAgICBjaGlsZHJlbiA9IHByb3BWYWx1ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzZWxlY3RlZCc6XG4gICAgICAgICAgLy8gaWdub3JlXG4gICAgICAgICAgc2VsZWN0ZWQgPSBwcm9wVmFsdWU7XG5cbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBUT0RPOiBSZW1vdmUgc3VwcG9ydCBmb3IgYHNlbGVjdGVkYCBpbiA8b3B0aW9uPi5cbiAgICAgICAgICAgIGlmICghZGlkV2FyblNlbGVjdGVkU2V0T25PcHRpb24pIHtcbiAgICAgICAgICAgICAgZXJyb3IoJ1VzZSB0aGUgYGRlZmF1bHRWYWx1ZWAgb3IgYHZhbHVlYCBwcm9wcyBvbiA8c2VsZWN0PiBpbnN0ZWFkIG9mICcgKyAnc2V0dGluZyBgc2VsZWN0ZWRgIG9uIDxvcHRpb24+LicpO1xuXG4gICAgICAgICAgICAgIGRpZFdhcm5TZWxlY3RlZFNldE9uT3B0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdkYW5nZXJvdXNseVNldElubmVySFRNTCc6XG4gICAgICAgICAgaW5uZXJIVE1MID0gcHJvcFZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUtbm8tZmFsbHRocm91Z2hcblxuICAgICAgICBjYXNlICd2YWx1ZSc6XG4gICAgICAgICAgdmFsdWUgPSBwcm9wVmFsdWU7XG4gICAgICAgIC8vIFdlIGludGVudGlvbmFsbHkgZmFsbHRocm91Z2ggdG8gYWxzbyBzZXQgdGhlIGF0dHJpYnV0ZSBvbiB0aGUgbm9kZS5cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lLW5vLWZhbGx0aHJvdWdoXG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBwdXNoQXR0cmlidXRlKHRhcmdldCwgcmVzcG9uc2VTdGF0ZSwgcHJvcEtleSwgcHJvcFZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc2VsZWN0ZWRWYWx1ZSAhPSBudWxsKSB7XG4gICAgdmFyIHN0cmluZ1ZhbHVlO1xuXG4gICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICB7XG4gICAgICAgIGNoZWNrQXR0cmlidXRlU3RyaW5nQ29lcmNpb24odmFsdWUsICd2YWx1ZScpO1xuICAgICAgfVxuXG4gICAgICBzdHJpbmdWYWx1ZSA9ICcnICsgdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHtcbiAgICAgICAgaWYgKGlubmVySFRNTCAhPT0gbnVsbCkge1xuICAgICAgICAgIGlmICghZGlkV2FybkludmFsaWRPcHRpb25Jbm5lckhUTUwpIHtcbiAgICAgICAgICAgIGRpZFdhcm5JbnZhbGlkT3B0aW9uSW5uZXJIVE1MID0gdHJ1ZTtcblxuICAgICAgICAgICAgZXJyb3IoJ1Bhc3MgYSBgdmFsdWVgIHByb3AgaWYgeW91IHNldCBkYW5nZXJvdXNseUlubmVySFRNTCBzbyBSZWFjdCBrbm93cyAnICsgJ3doaWNoIHZhbHVlIHNob3VsZCBiZSBzZWxlY3RlZC4nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3RyaW5nVmFsdWUgPSBmbGF0dGVuT3B0aW9uQ2hpbGRyZW4oY2hpbGRyZW4pO1xuICAgIH1cblxuICAgIGlmIChpc0FycmF5KHNlbGVjdGVkVmFsdWUpKSB7XG4gICAgICAvLyBtdWx0aXBsZVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3RlZFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHtcbiAgICAgICAgICBjaGVja0F0dHJpYnV0ZVN0cmluZ0NvZXJjaW9uKHNlbGVjdGVkVmFsdWVbaV0sICd2YWx1ZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHYgPSAnJyArIHNlbGVjdGVkVmFsdWVbaV07XG5cbiAgICAgICAgaWYgKHYgPT09IHN0cmluZ1ZhbHVlKSB7XG4gICAgICAgICAgdGFyZ2V0LnB1c2goc2VsZWN0ZWRNYXJrZXJBdHRyaWJ1dGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHtcbiAgICAgICAgY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbihzZWxlY3RlZFZhbHVlLCAnc2VsZWN0LnZhbHVlJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICgnJyArIHNlbGVjdGVkVmFsdWUgPT09IHN0cmluZ1ZhbHVlKSB7XG4gICAgICAgIHRhcmdldC5wdXNoKHNlbGVjdGVkTWFya2VyQXR0cmlidXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoc2VsZWN0ZWQpIHtcbiAgICB0YXJnZXQucHVzaChzZWxlY3RlZE1hcmtlckF0dHJpYnV0ZSk7XG4gIH1cblxuICB0YXJnZXQucHVzaChlbmRPZlN0YXJ0VGFnKTtcbiAgcHVzaElubmVySFRNTCh0YXJnZXQsIGlubmVySFRNTCwgY2hpbGRyZW4pO1xuICByZXR1cm4gY2hpbGRyZW47XG59XG5cbmZ1bmN0aW9uIHB1c2hJbnB1dCh0YXJnZXQsIHByb3BzLCByZXNwb25zZVN0YXRlKSB7XG4gIHtcbiAgICBjaGVja0NvbnRyb2xsZWRWYWx1ZVByb3BzKCdpbnB1dCcsIHByb3BzKTtcblxuICAgIGlmIChwcm9wcy5jaGVja2VkICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdENoZWNrZWQgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FybkRlZmF1bHRDaGVja2VkKSB7XG4gICAgICBlcnJvcignJXMgY29udGFpbnMgYW4gaW5wdXQgb2YgdHlwZSAlcyB3aXRoIGJvdGggY2hlY2tlZCBhbmQgZGVmYXVsdENoZWNrZWQgcHJvcHMuICcgKyAnSW5wdXQgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIGNoZWNrZWQgcHJvcCwgb3IgdGhlIGRlZmF1bHRDaGVja2VkIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL3JlYWN0anMub3JnL2xpbmsvY29udHJvbGxlZC1jb21wb25lbnRzJywgJ0EgY29tcG9uZW50JywgcHJvcHMudHlwZSk7XG5cbiAgICAgIGRpZFdhcm5EZWZhdWx0Q2hlY2tlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5EZWZhdWx0SW5wdXRWYWx1ZSkge1xuICAgICAgZXJyb3IoJyVzIGNvbnRhaW5zIGFuIGlucHV0IG9mIHR5cGUgJXMgd2l0aCBib3RoIHZhbHVlIGFuZCBkZWZhdWx0VmFsdWUgcHJvcHMuICcgKyAnSW5wdXQgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUgcHJvcCwgYnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIGlucHV0ICcgKyAnZWxlbWVudCBhbmQgcmVtb3ZlIG9uZSBvZiB0aGVzZSBwcm9wcy4gTW9yZSBpbmZvOiAnICsgJ2h0dHBzOi8vcmVhY3Rqcy5vcmcvbGluay9jb250cm9sbGVkLWNvbXBvbmVudHMnLCAnQSBjb21wb25lbnQnLCBwcm9wcy50eXBlKTtcblxuICAgICAgZGlkV2FybkRlZmF1bHRJbnB1dFZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB0YXJnZXQucHVzaChzdGFydENodW5rRm9yVGFnKCdpbnB1dCcpKTtcbiAgdmFyIHZhbHVlID0gbnVsbDtcbiAgdmFyIGRlZmF1bHRWYWx1ZSA9IG51bGw7XG4gIHZhciBjaGVja2VkID0gbnVsbDtcbiAgdmFyIGRlZmF1bHRDaGVja2VkID0gbnVsbDtcblxuICBmb3IgKHZhciBwcm9wS2V5IGluIHByb3BzKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkpKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcEtleV07XG5cbiAgICAgIGlmIChwcm9wVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChwcm9wS2V5KSB7XG4gICAgICAgIGNhc2UgJ2NoaWxkcmVuJzpcbiAgICAgICAgY2FzZSAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaW5wdXQnICsgXCIgaXMgYSBzZWxmLWNsb3NpbmcgdGFnIGFuZCBtdXN0IG5laXRoZXIgaGF2ZSBgY2hpbGRyZW5gIG5vciBcIiArICd1c2UgYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYC4nKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lLW5vLWZhbGx0aHJvdWdoXG5cbiAgICAgICAgY2FzZSAnZGVmYXVsdENoZWNrZWQnOlxuICAgICAgICAgIGRlZmF1bHRDaGVja2VkID0gcHJvcFZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2RlZmF1bHRWYWx1ZSc6XG4gICAgICAgICAgZGVmYXVsdFZhbHVlID0gcHJvcFZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NoZWNrZWQnOlxuICAgICAgICAgIGNoZWNrZWQgPSBwcm9wVmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAndmFsdWUnOlxuICAgICAgICAgIHZhbHVlID0gcHJvcFZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIHJlc3BvbnNlU3RhdGUsIHByb3BLZXksIHByb3BWYWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGNoZWNrZWQgIT09IG51bGwpIHtcbiAgICBwdXNoQXR0cmlidXRlKHRhcmdldCwgcmVzcG9uc2VTdGF0ZSwgJ2NoZWNrZWQnLCBjaGVja2VkKTtcbiAgfSBlbHNlIGlmIChkZWZhdWx0Q2hlY2tlZCAhPT0gbnVsbCkge1xuICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0LCByZXNwb25zZVN0YXRlLCAnY2hlY2tlZCcsIGRlZmF1bHRDaGVja2VkKTtcbiAgfVxuXG4gIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0LCByZXNwb25zZVN0YXRlLCAndmFsdWUnLCB2YWx1ZSk7XG4gIH0gZWxzZSBpZiAoZGVmYXVsdFZhbHVlICE9PSBudWxsKSB7XG4gICAgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIHJlc3BvbnNlU3RhdGUsICd2YWx1ZScsIGRlZmF1bHRWYWx1ZSk7XG4gIH1cblxuICB0YXJnZXQucHVzaChlbmRPZlN0YXJ0VGFnU2VsZkNsb3NpbmcpO1xuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gcHVzaFN0YXJ0VGV4dEFyZWEodGFyZ2V0LCBwcm9wcywgcmVzcG9uc2VTdGF0ZSkge1xuICB7XG4gICAgY2hlY2tDb250cm9sbGVkVmFsdWVQcm9wcygndGV4dGFyZWEnLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FybkRlZmF1bHRUZXh0YXJlYVZhbHVlKSB7XG4gICAgICBlcnJvcignVGV4dGFyZWEgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUgcHJvcCwgYnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIHRleHRhcmVhICcgKyAnYW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL3JlYWN0anMub3JnL2xpbmsvY29udHJvbGxlZC1jb21wb25lbnRzJyk7XG5cbiAgICAgIGRpZFdhcm5EZWZhdWx0VGV4dGFyZWFWYWx1ZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgdGFyZ2V0LnB1c2goc3RhcnRDaHVua0ZvclRhZygndGV4dGFyZWEnKSk7XG4gIHZhciB2YWx1ZSA9IG51bGw7XG4gIHZhciBkZWZhdWx0VmFsdWUgPSBudWxsO1xuICB2YXIgY2hpbGRyZW4gPSBudWxsO1xuXG4gIGZvciAodmFyIHByb3BLZXkgaW4gcHJvcHMpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgcHJvcEtleSkpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wS2V5XTtcblxuICAgICAgaWYgKHByb3BWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHByb3BLZXkpIHtcbiAgICAgICAgY2FzZSAnY2hpbGRyZW4nOlxuICAgICAgICAgIGNoaWxkcmVuID0gcHJvcFZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgICAgICB2YWx1ZSA9IHByb3BWYWx1ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdkZWZhdWx0VmFsdWUnOlxuICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHByb3BWYWx1ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdkYW5nZXJvdXNseVNldElubmVySFRNTCc6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgIGRvZXMgbm90IG1ha2Ugc2Vuc2Ugb24gPHRleHRhcmVhPi4nKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lLW5vLWZhbGx0aHJvdWdoXG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBwdXNoQXR0cmlidXRlKHRhcmdldCwgcmVzcG9uc2VTdGF0ZSwgcHJvcEtleSwgcHJvcFZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAodmFsdWUgPT09IG51bGwgJiYgZGVmYXVsdFZhbHVlICE9PSBudWxsKSB7XG4gICAgdmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gIH1cblxuICB0YXJnZXQucHVzaChlbmRPZlN0YXJ0VGFnKTsgLy8gVE9ETyAoeXVuZ3N0ZXJzKTogUmVtb3ZlIHN1cHBvcnQgZm9yIGNoaWxkcmVuIGNvbnRlbnQgaW4gPHRleHRhcmVhPi5cblxuICBpZiAoY2hpbGRyZW4gIT0gbnVsbCkge1xuICAgIHtcbiAgICAgIGVycm9yKCdVc2UgdGhlIGBkZWZhdWx0VmFsdWVgIG9yIGB2YWx1ZWAgcHJvcHMgaW5zdGVhZCBvZiBzZXR0aW5nICcgKyAnY2hpbGRyZW4gb24gPHRleHRhcmVhPi4nKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJZiB5b3Ugc3VwcGx5IGBkZWZhdWx0VmFsdWVgIG9uIGEgPHRleHRhcmVhPiwgZG8gbm90IHBhc3MgY2hpbGRyZW4uJyk7XG4gICAgfVxuXG4gICAgaWYgKGlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJzx0ZXh0YXJlYT4gY2FuIG9ubHkgaGF2ZSBhdCBtb3N0IG9uZSBjaGlsZC4nKTtcbiAgICAgIH0gLy8gVE9ETzogcmVtb3ZlIHRoZSBjb2VyY2lvbiBhbmQgdGhlIERFViBjaGVjayBiZWxvdyBiZWNhdXNlIGl0IHdpbGxcbiAgICAgIC8vIGFsd2F5cyBiZSBvdmVyd3JpdHRlbiBieSB0aGUgY29lcmNpb24gc2V2ZXJhbCBsaW5lcyBiZWxvdyBpdC4gIzIyMzA5XG5cblxuICAgICAge1xuICAgICAgICBjaGVja0h0bWxTdHJpbmdDb2VyY2lvbihjaGlsZHJlblswXSk7XG4gICAgICB9XG5cbiAgICAgIHZhbHVlID0gJycgKyBjaGlsZHJlblswXTtcbiAgICB9XG5cbiAgICB7XG4gICAgICBjaGVja0h0bWxTdHJpbmdDb2VyY2lvbihjaGlsZHJlbik7XG4gICAgfVxuXG4gICAgdmFsdWUgPSAnJyArIGNoaWxkcmVuO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWVbMF0gPT09ICdcXG4nKSB7XG4gICAgLy8gdGV4dC9odG1sIGlnbm9yZXMgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGVzZSB0YWdzIGlmIGl0J3MgYSBuZXdsaW5lXG4gICAgLy8gUHJlZmVyIHRvIGJyZWFrIGFwcGxpY2F0aW9uL3htbCBvdmVyIHRleHQvaHRtbCAoZm9yIG5vdykgYnkgYWRkaW5nXG4gICAgLy8gYSBuZXdsaW5lIHNwZWNpZmljYWxseSB0byBnZXQgZWF0ZW4gYnkgdGhlIHBhcnNlci4gKEFsdGVybmF0ZWx5IGZvclxuICAgIC8vIHRleHRhcmVhcywgcmVwbGFjaW5nIFwiXlxcblwiIHdpdGggXCJcXHJcXG5cIiBkb2Vzbid0IGdldCBlYXRlbiwgYW5kIHRoZSBmaXJzdFxuICAgIC8vIFxcciBpcyBub3JtYWxpemVkIG91dCBieSBIVE1MVGV4dEFyZWFFbGVtZW50I3ZhbHVlLilcbiAgICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sLXBvbHlnbG90LyNuZXdsaW5lcy1pbi10ZXh0YXJlYS1hbmQtcHJlPlxuICAgIC8vIFNlZTogPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI2VsZW1lbnQtcmVzdHJpY3Rpb25zPlxuICAgIC8vIFNlZTogPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI25ld2xpbmVzPlxuICAgIC8vIFNlZTogUGFyc2luZyBvZiBcInRleHRhcmVhXCIgXCJsaXN0aW5nXCIgYW5kIFwicHJlXCIgZWxlbWVudHNcbiAgICAvLyAgZnJvbSA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keT5cbiAgICB0YXJnZXQucHVzaChsZWFkaW5nTmV3bGluZSk7XG4gIH0gLy8gVG9TdHJpbmcgYW5kIHB1c2ggZGlyZWN0bHkgaW5zdGVhZCBvZiByZWN1cnNlIG92ZXIgY2hpbGRyZW4uXG4gIC8vIFdlIGRvbid0IHJlYWxseSBzdXBwb3J0IGNvbXBsZXggY2hpbGRyZW4gaW4gdGhlIHZhbHVlIGFueXdheS5cbiAgLy8gVGhpcyBhbHNvIGN1cnJlbnRseSBhdm9pZHMgYSB0cmFpbGluZyBjb21tZW50IG5vZGUgd2hpY2ggYnJlYWtzIHRleHRhcmVhLlxuXG5cbiAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAge1xuICAgICAgY2hlY2tBdHRyaWJ1dGVTdHJpbmdDb2VyY2lvbih2YWx1ZSwgJ3ZhbHVlJyk7XG4gICAgfVxuXG4gICAgdGFyZ2V0LnB1c2goc3RyaW5nVG9DaHVuayhlbmNvZGVIVE1MVGV4dE5vZGUoJycgKyB2YWx1ZSkpKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBwdXNoU2VsZkNsb3NpbmcodGFyZ2V0LCBwcm9wcywgdGFnLCByZXNwb25zZVN0YXRlKSB7XG4gIHRhcmdldC5wdXNoKHN0YXJ0Q2h1bmtGb3JUYWcodGFnKSk7XG5cbiAgZm9yICh2YXIgcHJvcEtleSBpbiBwcm9wcykge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5KSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuXG4gICAgICBpZiAocHJvcFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAocHJvcEtleSkge1xuICAgICAgICBjYXNlICdjaGlsZHJlbic6XG4gICAgICAgIGNhc2UgJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJzpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGFnICsgXCIgaXMgYSBzZWxmLWNsb3NpbmcgdGFnIGFuZCBtdXN0IG5laXRoZXIgaGF2ZSBgY2hpbGRyZW5gIG5vciBcIiArICd1c2UgYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYC4nKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lLW5vLWZhbGx0aHJvdWdoXG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBwdXNoQXR0cmlidXRlKHRhcmdldCwgcmVzcG9uc2VTdGF0ZSwgcHJvcEtleSwgcHJvcFZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0YXJnZXQucHVzaChlbmRPZlN0YXJ0VGFnU2VsZkNsb3NpbmcpO1xuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gcHVzaFN0YXJ0TWVudUl0ZW0odGFyZ2V0LCBwcm9wcywgcmVzcG9uc2VTdGF0ZSkge1xuICB0YXJnZXQucHVzaChzdGFydENodW5rRm9yVGFnKCdtZW51aXRlbScpKTtcblxuICBmb3IgKHZhciBwcm9wS2V5IGluIHByb3BzKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkpKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcEtleV07XG5cbiAgICAgIGlmIChwcm9wVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChwcm9wS2V5KSB7XG4gICAgICAgIGNhc2UgJ2NoaWxkcmVuJzpcbiAgICAgICAgY2FzZSAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnOlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbWVudWl0ZW1zIGNhbm5vdCBoYXZlIGBjaGlsZHJlbmAgbm9yIGBkYW5nZXJvdXNseVNldElubmVySFRNTGAuJyk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZS1uby1mYWxsdGhyb3VnaFxuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIHJlc3BvbnNlU3RhdGUsIHByb3BLZXksIHByb3BWYWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGFyZ2V0LnB1c2goZW5kT2ZTdGFydFRhZyk7XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBwdXNoU3RhcnRHZW5lcmljRWxlbWVudCh0YXJnZXQsIHByb3BzLCB0YWcsIHJlc3BvbnNlU3RhdGUpIHtcbiAgdGFyZ2V0LnB1c2goc3RhcnRDaHVua0ZvclRhZyh0YWcpKTtcbiAgdmFyIGNoaWxkcmVuID0gbnVsbDtcbiAgdmFyIGlubmVySFRNTCA9IG51bGw7XG5cbiAgZm9yICh2YXIgcHJvcEtleSBpbiBwcm9wcykge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5KSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuXG4gICAgICBpZiAocHJvcFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAocHJvcEtleSkge1xuICAgICAgICBjYXNlICdjaGlsZHJlbic6XG4gICAgICAgICAgY2hpbGRyZW4gPSBwcm9wVmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnOlxuICAgICAgICAgIGlubmVySFRNTCA9IHByb3BWYWx1ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHB1c2hBdHRyaWJ1dGUodGFyZ2V0LCByZXNwb25zZVN0YXRlLCBwcm9wS2V5LCBwcm9wVmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRhcmdldC5wdXNoKGVuZE9mU3RhcnRUYWcpO1xuICBwdXNoSW5uZXJIVE1MKHRhcmdldCwgaW5uZXJIVE1MLCBjaGlsZHJlbik7XG5cbiAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2UgY2hpbGRyZW4gYXMgYSBzdHJpbmcgdG8gYXZvaWQgdGhlIHVubmVjZXNzYXJ5IGNvbW1lbnQuXG4gICAgLy8gVE9ETzogUmVtb3ZlIHRoaXMgc3BlY2lhbCBjYXNlIGFmdGVyIHRoZSBnZW5lcmFsIG9wdGltaXphdGlvbiBpcyBpbiBwbGFjZS5cbiAgICB0YXJnZXQucHVzaChzdHJpbmdUb0NodW5rKGVuY29kZUhUTUxUZXh0Tm9kZShjaGlsZHJlbikpKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBjaGlsZHJlbjtcbn1cblxuZnVuY3Rpb24gcHVzaFN0YXJ0Q3VzdG9tRWxlbWVudCh0YXJnZXQsIHByb3BzLCB0YWcsIHJlc3BvbnNlU3RhdGUpIHtcbiAgdGFyZ2V0LnB1c2goc3RhcnRDaHVua0ZvclRhZyh0YWcpKTtcbiAgdmFyIGNoaWxkcmVuID0gbnVsbDtcbiAgdmFyIGlubmVySFRNTCA9IG51bGw7XG5cbiAgZm9yICh2YXIgcHJvcEtleSBpbiBwcm9wcykge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBwcm9wS2V5KSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuXG4gICAgICBpZiAocHJvcFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAocHJvcEtleSkge1xuICAgICAgICBjYXNlICdjaGlsZHJlbic6XG4gICAgICAgICAgY2hpbGRyZW4gPSBwcm9wVmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwnOlxuICAgICAgICAgIGlubmVySFRNTCA9IHByb3BWYWx1ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzdHlsZSc6XG4gICAgICAgICAgcHVzaFN0eWxlKHRhcmdldCwgcmVzcG9uc2VTdGF0ZSwgcHJvcFZhbHVlKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcnOlxuICAgICAgICBjYXNlICdzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcnOlxuICAgICAgICAgIC8vIElnbm9yZWQuIFRoZXNlIGFyZSBidWlsdC1pbiB0byBSZWFjdCBvbiB0aGUgY2xpZW50LlxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaWYgKGlzQXR0cmlidXRlTmFtZVNhZmUocHJvcEtleSkgJiYgdHlwZW9mIHByb3BWYWx1ZSAhPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgcHJvcFZhbHVlICE9PSAnc3ltYm9sJykge1xuICAgICAgICAgICAgdGFyZ2V0LnB1c2goYXR0cmlidXRlU2VwYXJhdG9yLCBzdHJpbmdUb0NodW5rKHByb3BLZXkpLCBhdHRyaWJ1dGVBc3NpZ24sIHN0cmluZ1RvQ2h1bmsoZXNjYXBlVGV4dEZvckJyb3dzZXIocHJvcFZhbHVlKSksIGF0dHJpYnV0ZUVuZCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGFyZ2V0LnB1c2goZW5kT2ZTdGFydFRhZyk7XG4gIHB1c2hJbm5lckhUTUwodGFyZ2V0LCBpbm5lckhUTUwsIGNoaWxkcmVuKTtcbiAgcmV0dXJuIGNoaWxkcmVuO1xufVxuXG52YXIgbGVhZGluZ05ld2xpbmUgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1xcbicpO1xuXG5mdW5jdGlvbiBwdXNoU3RhcnRQcmVmb3JtYXR0ZWRFbGVtZW50KHRhcmdldCwgcHJvcHMsIHRhZywgcmVzcG9uc2VTdGF0ZSkge1xuICB0YXJnZXQucHVzaChzdGFydENodW5rRm9yVGFnKHRhZykpO1xuICB2YXIgY2hpbGRyZW4gPSBudWxsO1xuICB2YXIgaW5uZXJIVE1MID0gbnVsbDtcblxuICBmb3IgKHZhciBwcm9wS2V5IGluIHByb3BzKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIHByb3BLZXkpKSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcEtleV07XG5cbiAgICAgIGlmIChwcm9wVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChwcm9wS2V5KSB7XG4gICAgICAgIGNhc2UgJ2NoaWxkcmVuJzpcbiAgICAgICAgICBjaGlsZHJlbiA9IHByb3BWYWx1ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdkYW5nZXJvdXNseVNldElubmVySFRNTCc6XG4gICAgICAgICAgaW5uZXJIVE1MID0gcHJvcFZhbHVlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcHVzaEF0dHJpYnV0ZSh0YXJnZXQsIHJlc3BvbnNlU3RhdGUsIHByb3BLZXksIHByb3BWYWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGFyZ2V0LnB1c2goZW5kT2ZTdGFydFRhZyk7IC8vIHRleHQvaHRtbCBpZ25vcmVzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlc2UgdGFncyBpZiBpdCdzIGEgbmV3bGluZVxuICAvLyBQcmVmZXIgdG8gYnJlYWsgYXBwbGljYXRpb24veG1sIG92ZXIgdGV4dC9odG1sIChmb3Igbm93KSBieSBhZGRpbmdcbiAgLy8gYSBuZXdsaW5lIHNwZWNpZmljYWxseSB0byBnZXQgZWF0ZW4gYnkgdGhlIHBhcnNlci4gKEFsdGVybmF0ZWx5IGZvclxuICAvLyB0ZXh0YXJlYXMsIHJlcGxhY2luZyBcIl5cXG5cIiB3aXRoIFwiXFxyXFxuXCIgZG9lc24ndCBnZXQgZWF0ZW4sIGFuZCB0aGUgZmlyc3RcbiAgLy8gXFxyIGlzIG5vcm1hbGl6ZWQgb3V0IGJ5IEhUTUxUZXh0QXJlYUVsZW1lbnQjdmFsdWUuKVxuICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sLXBvbHlnbG90LyNuZXdsaW5lcy1pbi10ZXh0YXJlYS1hbmQtcHJlPlxuICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNlbGVtZW50LXJlc3RyaWN0aW9ucz5cbiAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwjbmV3bGluZXM+XG4gIC8vIFNlZTogUGFyc2luZyBvZiBcInRleHRhcmVhXCIgXCJsaXN0aW5nXCIgYW5kIFwicHJlXCIgZWxlbWVudHNcbiAgLy8gIGZyb20gPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHk+XG4gIC8vIFRPRE86IFRoaXMgZG9lc24ndCBkZWFsIHdpdGggdGhlIGNhc2Ugd2hlcmUgdGhlIGNoaWxkIGlzIGFuIGFycmF5XG4gIC8vIG9yIGNvbXBvbmVudCB0aGF0IHJldHVybnMgYSBzdHJpbmcuXG5cbiAgaWYgKGlubmVySFRNTCAhPSBudWxsKSB7XG4gICAgaWYgKGNoaWxkcmVuICE9IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuIG9ubHkgc2V0IG9uZSBvZiBgY2hpbGRyZW5gIG9yIGBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTGAuJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpbm5lckhUTUwgIT09ICdvYmplY3QnIHx8ICEoJ19faHRtbCcgaW4gaW5uZXJIVE1MKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgIG11c3QgYmUgaW4gdGhlIGZvcm0gYHtfX2h0bWw6IC4uLn1gLiAnICsgJ1BsZWFzZSB2aXNpdCBodHRwczovL3JlYWN0anMub3JnL2xpbmsvZGFuZ2Vyb3VzbHktc2V0LWlubmVyLWh0bWwgJyArICdmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKTtcbiAgICB9XG5cbiAgICB2YXIgaHRtbCA9IGlubmVySFRNTC5fX2h0bWw7XG5cbiAgICBpZiAoaHRtbCAhPT0gbnVsbCAmJiBodG1sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2YgaHRtbCA9PT0gJ3N0cmluZycgJiYgaHRtbC5sZW5ndGggPiAwICYmIGh0bWxbMF0gPT09ICdcXG4nKSB7XG4gICAgICAgIHRhcmdldC5wdXNoKGxlYWRpbmdOZXdsaW5lLCBzdHJpbmdUb0NodW5rKGh0bWwpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHtcbiAgICAgICAgICBjaGVja0h0bWxTdHJpbmdDb2VyY2lvbihodG1sKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhcmdldC5wdXNoKHN0cmluZ1RvQ2h1bmsoJycgKyBodG1sKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PT0gJ3N0cmluZycgJiYgY2hpbGRyZW5bMF0gPT09ICdcXG4nKSB7XG4gICAgdGFyZ2V0LnB1c2gobGVhZGluZ05ld2xpbmUpO1xuICB9XG5cbiAgcmV0dXJuIGNoaWxkcmVuO1xufSAvLyBXZSBhY2NlcHQgYW55IHRhZyB0byBiZSByZW5kZXJlZCBidXQgc2luY2UgdGhpcyBnZXRzIGluamVjdGVkIGludG8gYXJiaXRyYXJ5XG4vLyBIVE1MLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGl0J3MgYSBzYWZlIHRhZy5cbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwvI05ULU5hbWVcblxuXG52YXIgVkFMSURfVEFHX1JFR0VYID0gL15bYS16QS1aXVthLXpBLVo6X1xcLlxcLVxcZF0qJC87IC8vIFNpbXBsaWZpZWQgc3Vic2V0XG5cbnZhciB2YWxpZGF0ZWRUYWdDYWNoZSA9IG5ldyBNYXAoKTtcblxuZnVuY3Rpb24gc3RhcnRDaHVua0ZvclRhZyh0YWcpIHtcbiAgdmFyIHRhZ1N0YXJ0Q2h1bmsgPSB2YWxpZGF0ZWRUYWdDYWNoZS5nZXQodGFnKTtcblxuICBpZiAodGFnU3RhcnRDaHVuayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFWQUxJRF9UQUdfUkVHRVgudGVzdCh0YWcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHRhZzogXCIgKyB0YWcpO1xuICAgIH1cblxuICAgIHRhZ1N0YXJ0Q2h1bmsgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzwnICsgdGFnKTtcbiAgICB2YWxpZGF0ZWRUYWdDYWNoZS5zZXQodGFnLCB0YWdTdGFydENodW5rKTtcbiAgfVxuXG4gIHJldHVybiB0YWdTdGFydENodW5rO1xufVxuXG52YXIgRE9DVFlQRSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPCFET0NUWVBFIGh0bWw+Jyk7XG5mdW5jdGlvbiBwdXNoU3RhcnRJbnN0YW5jZSh0YXJnZXQsIHR5cGUsIHByb3BzLCByZXNwb25zZVN0YXRlLCBmb3JtYXRDb250ZXh0KSB7XG4gIHtcbiAgICB2YWxpZGF0ZVByb3BlcnRpZXModHlwZSwgcHJvcHMpO1xuICAgIHZhbGlkYXRlUHJvcGVydGllcyQxKHR5cGUsIHByb3BzKTtcbiAgICB2YWxpZGF0ZVByb3BlcnRpZXMkMih0eXBlLCBwcm9wcywgbnVsbCk7XG5cbiAgICBpZiAoIXByb3BzLnN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyAmJiBwcm9wcy5jb250ZW50RWRpdGFibGUgJiYgcHJvcHMuY2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAgZXJyb3IoJ0EgY29tcG9uZW50IGlzIGBjb250ZW50RWRpdGFibGVgIGFuZCBjb250YWlucyBgY2hpbGRyZW5gIG1hbmFnZWQgYnkgJyArICdSZWFjdC4gSXQgaXMgbm93IHlvdXIgcmVzcG9uc2liaWxpdHkgdG8gZ3VhcmFudGVlIHRoYXQgbm9uZSBvZiAnICsgJ3Rob3NlIG5vZGVzIGFyZSB1bmV4cGVjdGVkbHkgbW9kaWZpZWQgb3IgZHVwbGljYXRlZC4gVGhpcyBpcyAnICsgJ3Byb2JhYmx5IG5vdCBpbnRlbnRpb25hbC4nKTtcbiAgICB9XG5cbiAgICBpZiAoZm9ybWF0Q29udGV4dC5pbnNlcnRpb25Nb2RlICE9PSBTVkdfTU9ERSAmJiBmb3JtYXRDb250ZXh0Lmluc2VydGlvbk1vZGUgIT09IE1BVEhNTF9NT0RFKSB7XG4gICAgICBpZiAodHlwZS5pbmRleE9mKCctJykgPT09IC0xICYmIHR5cGVvZiBwcm9wcy5pcyAhPT0gJ3N0cmluZycgJiYgdHlwZS50b0xvd2VyQ2FzZSgpICE9PSB0eXBlKSB7XG4gICAgICAgIGVycm9yKCc8JXMgLz4gaXMgdXNpbmcgaW5jb3JyZWN0IGNhc2luZy4gJyArICdVc2UgUGFzY2FsQ2FzZSBmb3IgUmVhY3QgY29tcG9uZW50cywgJyArICdvciBsb3dlcmNhc2UgZm9yIEhUTUwgZWxlbWVudHMuJywgdHlwZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgLy8gU3BlY2lhbCB0YWdzXG4gICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgIHJldHVybiBwdXNoU3RhcnRTZWxlY3QodGFyZ2V0LCBwcm9wcywgcmVzcG9uc2VTdGF0ZSk7XG5cbiAgICBjYXNlICdvcHRpb24nOlxuICAgICAgcmV0dXJuIHB1c2hTdGFydE9wdGlvbih0YXJnZXQsIHByb3BzLCByZXNwb25zZVN0YXRlLCBmb3JtYXRDb250ZXh0KTtcblxuICAgIGNhc2UgJ3RleHRhcmVhJzpcbiAgICAgIHJldHVybiBwdXNoU3RhcnRUZXh0QXJlYSh0YXJnZXQsIHByb3BzLCByZXNwb25zZVN0YXRlKTtcblxuICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgIHJldHVybiBwdXNoSW5wdXQodGFyZ2V0LCBwcm9wcywgcmVzcG9uc2VTdGF0ZSk7XG5cbiAgICBjYXNlICdtZW51aXRlbSc6XG4gICAgICByZXR1cm4gcHVzaFN0YXJ0TWVudUl0ZW0odGFyZ2V0LCBwcm9wcywgcmVzcG9uc2VTdGF0ZSk7XG4gICAgLy8gTmV3bGluZSBlYXRpbmcgdGFnc1xuXG4gICAgY2FzZSAnbGlzdGluZyc6XG4gICAgY2FzZSAncHJlJzpcbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIHB1c2hTdGFydFByZWZvcm1hdHRlZEVsZW1lbnQodGFyZ2V0LCBwcm9wcywgdHlwZSwgcmVzcG9uc2VTdGF0ZSk7XG4gICAgICB9XG4gICAgLy8gT21pdHRlZCBjbG9zZSB0YWdzXG5cbiAgICBjYXNlICdhcmVhJzpcbiAgICBjYXNlICdiYXNlJzpcbiAgICBjYXNlICdicic6XG4gICAgY2FzZSAnY29sJzpcbiAgICBjYXNlICdlbWJlZCc6XG4gICAgY2FzZSAnaHInOlxuICAgIGNhc2UgJ2ltZyc6XG4gICAgY2FzZSAna2V5Z2VuJzpcbiAgICBjYXNlICdsaW5rJzpcbiAgICBjYXNlICdtZXRhJzpcbiAgICBjYXNlICdwYXJhbSc6XG4gICAgY2FzZSAnc291cmNlJzpcbiAgICBjYXNlICd0cmFjayc6XG4gICAgY2FzZSAnd2JyJzpcbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIHB1c2hTZWxmQ2xvc2luZyh0YXJnZXQsIHByb3BzLCB0eXBlLCByZXNwb25zZVN0YXRlKTtcbiAgICAgIH1cbiAgICAvLyBUaGVzZSBhcmUgcmVzZXJ2ZWQgU1ZHIGFuZCBNYXRoTUwgZWxlbWVudHMsIHRoYXQgYXJlIG5ldmVyIGN1c3RvbSBlbGVtZW50cy5cbiAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL2N1c3RvbS8jY3VzdG9tLWVsZW1lbnRzLWNvcmUtY29uY2VwdHNcblxuICAgIGNhc2UgJ2Fubm90YXRpb24teG1sJzpcbiAgICBjYXNlICdjb2xvci1wcm9maWxlJzpcbiAgICBjYXNlICdmb250LWZhY2UnOlxuICAgIGNhc2UgJ2ZvbnQtZmFjZS1zcmMnOlxuICAgIGNhc2UgJ2ZvbnQtZmFjZS11cmknOlxuICAgIGNhc2UgJ2ZvbnQtZmFjZS1mb3JtYXQnOlxuICAgIGNhc2UgJ2ZvbnQtZmFjZS1uYW1lJzpcbiAgICBjYXNlICdtaXNzaW5nLWdseXBoJzpcbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIHB1c2hTdGFydEdlbmVyaWNFbGVtZW50KHRhcmdldCwgcHJvcHMsIHR5cGUsIHJlc3BvbnNlU3RhdGUpO1xuICAgICAgfVxuXG4gICAgY2FzZSAnaHRtbCc6XG4gICAgICB7XG4gICAgICAgIGlmIChmb3JtYXRDb250ZXh0Lmluc2VydGlvbk1vZGUgPT09IFJPT1RfSFRNTF9NT0RFKSB7XG4gICAgICAgICAgLy8gSWYgd2UncmUgcmVuZGVyaW5nIHRoZSBodG1sIHRhZyBhbmQgd2UncmUgYXQgdGhlIHJvb3QgKGkuZS4gbm90IGluIGZvcmVpZ25PYmplY3QpXG4gICAgICAgICAgLy8gdGhlbiB3ZSBhbHNvIGVtaXQgdGhlIERPQ1RZUEUgYXMgcGFydCBvZiB0aGUgcm9vdCBjb250ZW50IGFzIGEgY29udmVuaWVuY2UgZm9yXG4gICAgICAgICAgLy8gcmVuZGVyaW5nIHRoZSB3aG9sZSBkb2N1bWVudC5cbiAgICAgICAgICB0YXJnZXQucHVzaChET0NUWVBFKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwdXNoU3RhcnRHZW5lcmljRWxlbWVudCh0YXJnZXQsIHByb3BzLCB0eXBlLCByZXNwb25zZVN0YXRlKTtcbiAgICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICB7XG4gICAgICAgIGlmICh0eXBlLmluZGV4T2YoJy0nKSA9PT0gLTEgJiYgdHlwZW9mIHByb3BzLmlzICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIC8vIEdlbmVyaWMgZWxlbWVudFxuICAgICAgICAgIHJldHVybiBwdXNoU3RhcnRHZW5lcmljRWxlbWVudCh0YXJnZXQsIHByb3BzLCB0eXBlLCByZXNwb25zZVN0YXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBDdXN0b20gZWxlbWVudFxuICAgICAgICAgIHJldHVybiBwdXNoU3RhcnRDdXN0b21FbGVtZW50KHRhcmdldCwgcHJvcHMsIHR5cGUsIHJlc3BvbnNlU3RhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gIH1cbn1cbnZhciBlbmRUYWcxID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8LycpO1xudmFyIGVuZFRhZzIgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJz4nKTtcbmZ1bmN0aW9uIHB1c2hFbmRJbnN0YW5jZSh0YXJnZXQsIHR5cGUsIHByb3BzKSB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIC8vIE9taXR0ZWQgY2xvc2UgdGFnc1xuICAgIC8vIFRPRE86IEluc3RlYWQgb2YgcmVwZWF0aW5nIHRoaXMgc3dpdGNoIHdlIGNvdWxkIHRyeSB0byBwYXNzIGEgZmxhZyBmcm9tIGFib3ZlLlxuICAgIC8vIFRoYXQgd291bGQgcmVxdWlyZSByZXR1cm5pbmcgYSB0dXBsZS4gV2hpY2ggbWlnaHQgYmUgb2sgaWYgaXQgZ2V0cyBpbmxpbmVkLlxuICAgIGNhc2UgJ2FyZWEnOlxuICAgIGNhc2UgJ2Jhc2UnOlxuICAgIGNhc2UgJ2JyJzpcbiAgICBjYXNlICdjb2wnOlxuICAgIGNhc2UgJ2VtYmVkJzpcbiAgICBjYXNlICdocic6XG4gICAgY2FzZSAnaW1nJzpcbiAgICBjYXNlICdpbnB1dCc6XG4gICAgY2FzZSAna2V5Z2VuJzpcbiAgICBjYXNlICdsaW5rJzpcbiAgICBjYXNlICdtZXRhJzpcbiAgICBjYXNlICdwYXJhbSc6XG4gICAgY2FzZSAnc291cmNlJzpcbiAgICBjYXNlICd0cmFjayc6XG4gICAgY2FzZSAnd2JyJzpcbiAgICAgIHtcbiAgICAgICAgLy8gTm8gY2xvc2UgdGFnIG5lZWRlZC5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICBkZWZhdWx0OlxuICAgICAge1xuICAgICAgICB0YXJnZXQucHVzaChlbmRUYWcxLCBzdHJpbmdUb0NodW5rKHR5cGUpLCBlbmRUYWcyKTtcbiAgICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gd3JpdGVDb21wbGV0ZWRSb290KGRlc3RpbmF0aW9uLCByZXNwb25zZVN0YXRlKSB7XG4gIHZhciBib290c3RyYXBDaHVua3MgPSByZXNwb25zZVN0YXRlLmJvb3RzdHJhcENodW5rcztcbiAgdmFyIGkgPSAwO1xuXG4gIGZvciAoOyBpIDwgYm9vdHN0cmFwQ2h1bmtzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGJvb3RzdHJhcENodW5rc1tpXSk7XG4gIH1cblxuICBpZiAoaSA8IGJvb3RzdHJhcENodW5rcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgYm9vdHN0cmFwQ2h1bmtzW2ldKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufSAvLyBTdHJ1Y3R1cmFsIE5vZGVzXG4vLyBBIHBsYWNlaG9sZGVyIGlzIGEgbm9kZSBpbnNpZGUgYSBoaWRkZW4gcGFydGlhbCB0cmVlIHRoYXQgY2FuIGJlIGZpbGxlZCBpbiBsYXRlciwgYnV0IGJlZm9yZVxuLy8gZGlzcGxheS4gSXQncyBuZXZlciB2aXNpYmxlIHRvIHVzZXJzLiBXZSB1c2UgdGhlIHRlbXBsYXRlIHRhZyBiZWNhdXNlIGl0IGNhbiBiZSB1c2VkIGluIGV2ZXJ5XG4vLyB0eXBlIG9mIHBhcmVudC4gPHNjcmlwdD4gdGFncyBhbHNvIHdvcmsgaW4gZXZlcnkgb3RoZXIgdGFnIGV4Y2VwdCA8Y29sZ3JvdXA+LlxuXG52YXIgcGxhY2Vob2xkZXIxID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8dGVtcGxhdGUgaWQ9XCInKTtcbnZhciBwbGFjZWhvbGRlcjIgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiPjwvdGVtcGxhdGU+Jyk7XG5mdW5jdGlvbiB3cml0ZVBsYWNlaG9sZGVyKGRlc3RpbmF0aW9uLCByZXNwb25zZVN0YXRlLCBpZCkge1xuICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBwbGFjZWhvbGRlcjEpO1xuICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCByZXNwb25zZVN0YXRlLnBsYWNlaG9sZGVyUHJlZml4KTtcbiAgdmFyIGZvcm1hdHRlZElEID0gc3RyaW5nVG9DaHVuayhpZC50b1N0cmluZygxNikpO1xuICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBmb3JtYXR0ZWRJRCk7XG4gIHJldHVybiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBwbGFjZWhvbGRlcjIpO1xufSAvLyBTdXNwZW5zZSBib3VuZGFyaWVzIGFyZSBlbmNvZGVkIGFzIGNvbW1lbnRzLlxuXG52YXIgc3RhcnRDb21wbGV0ZWRTdXNwZW5zZUJvdW5kYXJ5ID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8IS0tJC0tPicpO1xudmFyIHN0YXJ0UGVuZGluZ1N1c3BlbnNlQm91bmRhcnkxID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8IS0tJD8tLT48dGVtcGxhdGUgaWQ9XCInKTtcbnZhciBzdGFydFBlbmRpbmdTdXNwZW5zZUJvdW5kYXJ5MiA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCI+PC90ZW1wbGF0ZT4nKTtcbnZhciBzdGFydENsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPCEtLSQhLS0+Jyk7XG52YXIgZW5kU3VzcGVuc2VCb3VuZGFyeSA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPCEtLS8kLS0+Jyk7XG5mdW5jdGlvbiB3cml0ZVN0YXJ0Q29tcGxldGVkU3VzcGVuc2VCb3VuZGFyeShkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZSkge1xuICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgc3RhcnRDb21wbGV0ZWRTdXNwZW5zZUJvdW5kYXJ5KTtcbn1cbmZ1bmN0aW9uIHdyaXRlU3RhcnRQZW5kaW5nU3VzcGVuc2VCb3VuZGFyeShkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZSwgaWQpIHtcbiAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgc3RhcnRQZW5kaW5nU3VzcGVuc2VCb3VuZGFyeTEpO1xuXG4gIGlmIChpZCA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQW4gSUQgbXVzdCBoYXZlIGJlZW4gYXNzaWduZWQgYmVmb3JlIHdlIGNhbiBjb21wbGV0ZSB0aGUgYm91bmRhcnkuJyk7XG4gIH1cblxuICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBpZCk7XG4gIHJldHVybiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBzdGFydFBlbmRpbmdTdXNwZW5zZUJvdW5kYXJ5Mik7XG59XG5mdW5jdGlvbiB3cml0ZVN0YXJ0Q2xpZW50UmVuZGVyZWRTdXNwZW5zZUJvdW5kYXJ5KGRlc3RpbmF0aW9uLCByZXNwb25zZVN0YXRlKSB7XG4gIHJldHVybiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBzdGFydENsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeSk7XG59XG5mdW5jdGlvbiB3cml0ZUVuZENvbXBsZXRlZFN1c3BlbnNlQm91bmRhcnkoZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUpIHtcbiAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGVuZFN1c3BlbnNlQm91bmRhcnkpO1xufVxuZnVuY3Rpb24gd3JpdGVFbmRQZW5kaW5nU3VzcGVuc2VCb3VuZGFyeShkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZSkge1xuICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgZW5kU3VzcGVuc2VCb3VuZGFyeSk7XG59XG5mdW5jdGlvbiB3cml0ZUVuZENsaWVudFJlbmRlcmVkU3VzcGVuc2VCb3VuZGFyeShkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZSkge1xuICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgZW5kU3VzcGVuc2VCb3VuZGFyeSk7XG59XG52YXIgc3RhcnRTZWdtZW50SFRNTCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPGRpdiBoaWRkZW4gaWQ9XCInKTtcbnZhciBzdGFydFNlZ21lbnRIVE1MMiA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCI+Jyk7XG52YXIgZW5kU2VnbWVudEhUTUwgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzwvZGl2PicpO1xudmFyIHN0YXJ0U2VnbWVudFNWRyA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPHN2ZyBhcmlhLWhpZGRlbj1cInRydWVcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiIGlkPVwiJyk7XG52YXIgc3RhcnRTZWdtZW50U1ZHMiA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCI+Jyk7XG52YXIgZW5kU2VnbWVudFNWRyA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPC9zdmc+Jyk7XG52YXIgc3RhcnRTZWdtZW50TWF0aE1MID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8bWF0aCBhcmlhLWhpZGRlbj1cInRydWVcIiBzdHlsZT1cImRpc3BsYXk6bm9uZVwiIGlkPVwiJyk7XG52YXIgc3RhcnRTZWdtZW50TWF0aE1MMiA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCI+Jyk7XG52YXIgZW5kU2VnbWVudE1hdGhNTCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPC9tYXRoPicpO1xudmFyIHN0YXJ0U2VnbWVudFRhYmxlID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8dGFibGUgaGlkZGVuIGlkPVwiJyk7XG52YXIgc3RhcnRTZWdtZW50VGFibGUyID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCdcIj4nKTtcbnZhciBlbmRTZWdtZW50VGFibGUgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzwvdGFibGU+Jyk7XG52YXIgc3RhcnRTZWdtZW50VGFibGVCb2R5ID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8dGFibGUgaGlkZGVuPjx0Ym9keSBpZD1cIicpO1xudmFyIHN0YXJ0U2VnbWVudFRhYmxlQm9keTIgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiPicpO1xudmFyIGVuZFNlZ21lbnRUYWJsZUJvZHkgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJzwvdGJvZHk+PC90YWJsZT4nKTtcbnZhciBzdGFydFNlZ21lbnRUYWJsZVJvdyA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPHRhYmxlIGhpZGRlbj48dHIgaWQ9XCInKTtcbnZhciBzdGFydFNlZ21lbnRUYWJsZVJvdzIgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiPicpO1xudmFyIGVuZFNlZ21lbnRUYWJsZVJvdyA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnPC90cj48L3RhYmxlPicpO1xudmFyIHN0YXJ0U2VnbWVudENvbEdyb3VwID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8dGFibGUgaGlkZGVuPjxjb2xncm91cCBpZD1cIicpO1xudmFyIHN0YXJ0U2VnbWVudENvbEdyb3VwMiA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCI+Jyk7XG52YXIgZW5kU2VnbWVudENvbEdyb3VwID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCc8L2NvbGdyb3VwPjwvdGFibGU+Jyk7XG5mdW5jdGlvbiB3cml0ZVN0YXJ0U2VnbWVudChkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZSwgZm9ybWF0Q29udGV4dCwgaWQpIHtcbiAgc3dpdGNoIChmb3JtYXRDb250ZXh0Lmluc2VydGlvbk1vZGUpIHtcbiAgICBjYXNlIFJPT1RfSFRNTF9NT0RFOlxuICAgIGNhc2UgSFRNTF9NT0RFOlxuICAgICAge1xuICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRIVE1MKTtcbiAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZS5zZWdtZW50UHJlZml4KTtcbiAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgc3RyaW5nVG9DaHVuayhpZC50b1N0cmluZygxNikpKTtcbiAgICAgICAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIHN0YXJ0U2VnbWVudEhUTUwyKTtcbiAgICAgIH1cblxuICAgIGNhc2UgU1ZHX01PREU6XG4gICAgICB7XG4gICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0YXJ0U2VnbWVudFNWRyk7XG4gICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUuc2VnbWVudFByZWZpeCk7XG4gICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0cmluZ1RvQ2h1bmsoaWQudG9TdHJpbmcoMTYpKSk7XG4gICAgICAgIHJldHVybiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRTVkcyKTtcbiAgICAgIH1cblxuICAgIGNhc2UgTUFUSE1MX01PREU6XG4gICAgICB7XG4gICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0YXJ0U2VnbWVudE1hdGhNTCk7XG4gICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUuc2VnbWVudFByZWZpeCk7XG4gICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0cmluZ1RvQ2h1bmsoaWQudG9TdHJpbmcoMTYpKSk7XG4gICAgICAgIHJldHVybiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRNYXRoTUwyKTtcbiAgICAgIH1cblxuICAgIGNhc2UgSFRNTF9UQUJMRV9NT0RFOlxuICAgICAge1xuICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRUYWJsZSk7XG4gICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUuc2VnbWVudFByZWZpeCk7XG4gICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0cmluZ1RvQ2h1bmsoaWQudG9TdHJpbmcoMTYpKSk7XG4gICAgICAgIHJldHVybiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRUYWJsZTIpO1xuICAgICAgfVxuICAgIC8vIFRPRE86IEZvciB0aGUgcmVzdCBvZiB0aGVzZSwgdGhlcmUgd2lsbCBiZSBleHRyYSB3cmFwcGVyIG5vZGVzIHRoYXQgbmV2ZXJcbiAgICAvLyBnZXQgZGVsZXRlZCBmcm9tIHRoZSBkb2N1bWVudC4gV2UgbmVlZCB0byBkZWxldGUgdGhlIHRhYmxlIHRvbyBhcyBwYXJ0XG4gICAgLy8gb2YgdGhlIGluamVjdGVkIHNjcmlwdHMuIFRoZXkgYXJlIGludmlzaWJsZSB0aG91Z2ggc28gaXQncyBub3QgdG9vIHRlcnJpYmxlXG4gICAgLy8gYW5kIGl0J3Mga2luZCBvZiBhbiBlZGdlIGNhc2UgdG8gc3VzcGVuZCBpbiBhIHRhYmxlLiBUb3RhbGx5IHN1cHBvcnRlZCB0aG91Z2guXG5cbiAgICBjYXNlIEhUTUxfVEFCTEVfQk9EWV9NT0RFOlxuICAgICAge1xuICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBzdGFydFNlZ21lbnRUYWJsZUJvZHkpO1xuICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCByZXNwb25zZVN0YXRlLnNlZ21lbnRQcmVmaXgpO1xuICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBzdHJpbmdUb0NodW5rKGlkLnRvU3RyaW5nKDE2KSkpO1xuICAgICAgICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgc3RhcnRTZWdtZW50VGFibGVCb2R5Mik7XG4gICAgICB9XG5cbiAgICBjYXNlIEhUTUxfVEFCTEVfUk9XX01PREU6XG4gICAgICB7XG4gICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHN0YXJ0U2VnbWVudFRhYmxlUm93KTtcbiAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZS5zZWdtZW50UHJlZml4KTtcbiAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgc3RyaW5nVG9DaHVuayhpZC50b1N0cmluZygxNikpKTtcbiAgICAgICAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIHN0YXJ0U2VnbWVudFRhYmxlUm93Mik7XG4gICAgICB9XG5cbiAgICBjYXNlIEhUTUxfQ09MR1JPVVBfTU9ERTpcbiAgICAgIHtcbiAgICAgICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgc3RhcnRTZWdtZW50Q29sR3JvdXApO1xuICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCByZXNwb25zZVN0YXRlLnNlZ21lbnRQcmVmaXgpO1xuICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBzdHJpbmdUb0NodW5rKGlkLnRvU3RyaW5nKDE2KSkpO1xuICAgICAgICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgc3RhcnRTZWdtZW50Q29sR3JvdXAyKTtcbiAgICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBpbnNlcnRpb24gbW9kZS4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC4nKTtcbiAgICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gd3JpdGVFbmRTZWdtZW50KGRlc3RpbmF0aW9uLCBmb3JtYXRDb250ZXh0KSB7XG4gIHN3aXRjaCAoZm9ybWF0Q29udGV4dC5pbnNlcnRpb25Nb2RlKSB7XG4gICAgY2FzZSBST09UX0hUTUxfTU9ERTpcbiAgICBjYXNlIEhUTUxfTU9ERTpcbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGVuZFNlZ21lbnRIVE1MKTtcbiAgICAgIH1cblxuICAgIGNhc2UgU1ZHX01PREU6XG4gICAgICB7XG4gICAgICAgIHJldHVybiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBlbmRTZWdtZW50U1ZHKTtcbiAgICAgIH1cblxuICAgIGNhc2UgTUFUSE1MX01PREU6XG4gICAgICB7XG4gICAgICAgIHJldHVybiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBlbmRTZWdtZW50TWF0aE1MKTtcbiAgICAgIH1cblxuICAgIGNhc2UgSFRNTF9UQUJMRV9NT0RFOlxuICAgICAge1xuICAgICAgICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgZW5kU2VnbWVudFRhYmxlKTtcbiAgICAgIH1cblxuICAgIGNhc2UgSFRNTF9UQUJMRV9CT0RZX01PREU6XG4gICAgICB7XG4gICAgICAgIHJldHVybiB3cml0ZUNodW5rQW5kUmV0dXJuKGRlc3RpbmF0aW9uLCBlbmRTZWdtZW50VGFibGVCb2R5KTtcbiAgICAgIH1cblxuICAgIGNhc2UgSFRNTF9UQUJMRV9ST1dfTU9ERTpcbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGVuZFNlZ21lbnRUYWJsZVJvdyk7XG4gICAgICB9XG5cbiAgICBjYXNlIEhUTUxfQ09MR1JPVVBfTU9ERTpcbiAgICAgIHtcbiAgICAgICAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGVuZFNlZ21lbnRDb2xHcm91cCk7XG4gICAgICB9XG5cbiAgICBkZWZhdWx0OlxuICAgICAge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gaW5zZXJ0aW9uIG1vZGUuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuJyk7XG4gICAgICB9XG4gIH1cbn0gLy8gSW5zdHJ1Y3Rpb24gU2V0XG4vLyBUaGUgZm9sbG93aW5nIGNvZGUgaXMgdGhlIHNvdXJjZSBzY3JpcHRzIHRoYXQgd2UgdGhlbiBtaW5pZnkgYW5kIGlubGluZSBiZWxvdyxcbi8vIHdpdGggcmVuYW1lZCBmdW5jdGlvbiBuYW1lcyB0aGF0IHdlIGhvcGUgZG9uJ3QgY29sbGlkZTpcbi8vIGNvbnN0IENPTU1FTlRfTk9ERSA9IDg7XG4vLyBjb25zdCBTVVNQRU5TRV9TVEFSVF9EQVRBID0gJyQnO1xuLy8gY29uc3QgU1VTUEVOU0VfRU5EX0RBVEEgPSAnLyQnO1xuLy8gY29uc3QgU1VTUEVOU0VfUEVORElOR19TVEFSVF9EQVRBID0gJyQ/Jztcbi8vIGNvbnN0IFNVU1BFTlNFX0ZBTExCQUNLX1NUQVJUX0RBVEEgPSAnJCEnO1xuLy9cbi8vIGZ1bmN0aW9uIGNsaWVudFJlbmRlckJvdW5kYXJ5KHN1c3BlbnNlQm91bmRhcnlJRCkge1xuLy8gICAvLyBGaW5kIHRoZSBmYWxsYmFjaydzIGZpcnN0IGVsZW1lbnQuXG4vLyAgIGNvbnN0IHN1c3BlbnNlSWROb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3VzcGVuc2VCb3VuZGFyeUlEKTtcbi8vICAgaWYgKCFzdXNwZW5zZUlkTm9kZSkge1xuLy8gICAgIC8vIFRoZSB1c2VyIG11c3QgaGF2ZSBhbHJlYWR5IG5hdmlnYXRlZCBhd2F5IGZyb20gdGhpcyB0cmVlLlxuLy8gICAgIC8vIEUuZy4gYmVjYXVzZSB0aGUgcGFyZW50IHdhcyBoeWRyYXRlZC5cbi8vICAgICByZXR1cm47XG4vLyAgIH1cbi8vICAgLy8gRmluZCB0aGUgYm91bmRhcnkgYXJvdW5kIHRoZSBmYWxsYmFjay4gVGhpcyBpcyBhbHdheXMgdGhlIHByZXZpb3VzIG5vZGUuXG4vLyAgIGNvbnN0IHN1c3BlbnNlTm9kZSA9IHN1c3BlbnNlSWROb2RlLnByZXZpb3VzU2libGluZztcbi8vICAgLy8gVGFnIGl0IHRvIGJlIGNsaWVudCByZW5kZXJlZC5cbi8vICAgc3VzcGVuc2VOb2RlLmRhdGEgPSBTVVNQRU5TRV9GQUxMQkFDS19TVEFSVF9EQVRBO1xuLy8gICAvLyBUZWxsIFJlYWN0IHRvIHJldHJ5IGl0IGlmIHRoZSBwYXJlbnQgYWxyZWFkeSBoeWRyYXRlZC5cbi8vICAgaWYgKHN1c3BlbnNlTm9kZS5fcmVhY3RSZXRyeSkge1xuLy8gICAgIHN1c3BlbnNlTm9kZS5fcmVhY3RSZXRyeSgpO1xuLy8gICB9XG4vLyB9XG4vL1xuLy8gZnVuY3Rpb24gY29tcGxldGVCb3VuZGFyeShzdXNwZW5zZUJvdW5kYXJ5SUQsIGNvbnRlbnRJRCkge1xuLy8gICAvLyBGaW5kIHRoZSBmYWxsYmFjaydzIGZpcnN0IGVsZW1lbnQuXG4vLyAgIGNvbnN0IHN1c3BlbnNlSWROb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3VzcGVuc2VCb3VuZGFyeUlEKTtcbi8vICAgY29uc3QgY29udGVudE5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjb250ZW50SUQpO1xuLy8gICAvLyBXZSdsbCBkZXRhY2ggdGhlIGNvbnRlbnQgbm9kZSBzbyB0aGF0IHJlZ2FyZGxlc3Mgb2Ygd2hhdCBoYXBwZW5zIG5leHQgd2UgZG9uJ3QgbGVhdmUgaW4gdGhlIHRyZWUuXG4vLyAgIC8vIFRoaXMgbWlnaHQgYWxzbyBoZWxwIGJ5IG5vdCBjYXVzaW5nIHJlY2FsY2luZyBlYWNoIHRpbWUgd2UgbW92ZSBhIGNoaWxkIGZyb20gaGVyZSB0byB0aGUgdGFyZ2V0LlxuLy8gICBjb250ZW50Tm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNvbnRlbnROb2RlKTtcbi8vICAgaWYgKCFzdXNwZW5zZUlkTm9kZSkge1xuLy8gICAgIC8vIFRoZSB1c2VyIG11c3QgaGF2ZSBhbHJlYWR5IG5hdmlnYXRlZCBhd2F5IGZyb20gdGhpcyB0cmVlLlxuLy8gICAgIC8vIEUuZy4gYmVjYXVzZSB0aGUgcGFyZW50IHdhcyBoeWRyYXRlZC4gVGhhdCdzIGZpbmUgdGhlcmUncyBub3RoaW5nIHRvIGRvXG4vLyAgICAgLy8gYnV0IHdlIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgd2UgYWxyZWFkeSBkZWxldGVkIHRoZSBjb250YWluZXIgbm9kZS5cbi8vICAgICByZXR1cm47XG4vLyAgIH1cbi8vICAgLy8gRmluZCB0aGUgYm91bmRhcnkgYXJvdW5kIHRoZSBmYWxsYmFjay4gVGhpcyBpcyBhbHdheXMgdGhlIHByZXZpb3VzIG5vZGUuXG4vLyAgIGNvbnN0IHN1c3BlbnNlTm9kZSA9IHN1c3BlbnNlSWROb2RlLnByZXZpb3VzU2libGluZztcbi8vXG4vLyAgIC8vIENsZWFyIGFsbCB0aGUgZXhpc3RpbmcgY2hpbGRyZW4uIFRoaXMgaXMgY29tcGxpY2F0ZWQgYmVjYXVzZVxuLy8gICAvLyB0aGVyZSBjYW4gYmUgZW1iZWRkZWQgU3VzcGVuc2UgYm91bmRhcmllcyBpbiB0aGUgZmFsbGJhY2suXG4vLyAgIC8vIFRoaXMgaXMgc2ltaWxhciB0byBjbGVhclN1c3BlbnNlQm91bmRhcnkgaW4gUmVhY3RET01Ib3N0Q29uZmlnLlxuLy8gICAvLyBUT0RPOiBXZSBjb3VsZCBhdm9pZCB0aGlzIGlmIHdlIG5ldmVyIGVtaXR0ZWQgc3VzcGVuc2UgYm91bmRhcmllcyBpbiBmYWxsYmFjayB0cmVlcy5cbi8vICAgLy8gVGhleSBuZXZlciBoeWRyYXRlIGFueXdheS4gSG93ZXZlciwgY3VycmVudGx5IHdlIHN1cHBvcnQgaW5jcmVtZW50YWxseSBsb2FkaW5nIHRoZSBmYWxsYmFjay5cbi8vICAgY29uc3QgcGFyZW50SW5zdGFuY2UgPSBzdXNwZW5zZU5vZGUucGFyZW50Tm9kZTtcbi8vICAgbGV0IG5vZGUgPSBzdXNwZW5zZU5vZGUubmV4dFNpYmxpbmc7XG4vLyAgIGxldCBkZXB0aCA9IDA7XG4vLyAgIGRvIHtcbi8vICAgICBpZiAobm9kZSAmJiBub2RlLm5vZGVUeXBlID09PSBDT01NRU5UX05PREUpIHtcbi8vICAgICAgIGNvbnN0IGRhdGEgPSBub2RlLmRhdGE7XG4vLyAgICAgICBpZiAoZGF0YSA9PT0gU1VTUEVOU0VfRU5EX0RBVEEpIHtcbi8vICAgICAgICAgaWYgKGRlcHRoID09PSAwKSB7XG4vLyAgICAgICAgICAgYnJlYWs7XG4vLyAgICAgICAgIH0gZWxzZSB7XG4vLyAgICAgICAgICAgZGVwdGgtLTtcbi8vICAgICAgICAgfVxuLy8gICAgICAgfSBlbHNlIGlmIChcbi8vICAgICAgICAgZGF0YSA9PT0gU1VTUEVOU0VfU1RBUlRfREFUQSB8fFxuLy8gICAgICAgICBkYXRhID09PSBTVVNQRU5TRV9QRU5ESU5HX1NUQVJUX0RBVEEgfHxcbi8vICAgICAgICAgZGF0YSA9PT0gU1VTUEVOU0VfRkFMTEJBQ0tfU1RBUlRfREFUQVxuLy8gICAgICAgKSB7XG4vLyAgICAgICAgIGRlcHRoKys7XG4vLyAgICAgICB9XG4vLyAgICAgfVxuLy9cbi8vICAgICBjb25zdCBuZXh0Tm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7XG4vLyAgICAgcGFyZW50SW5zdGFuY2UucmVtb3ZlQ2hpbGQobm9kZSk7XG4vLyAgICAgbm9kZSA9IG5leHROb2RlO1xuLy8gICB9IHdoaWxlIChub2RlKTtcbi8vXG4vLyAgIGNvbnN0IGVuZE9mQm91bmRhcnkgPSBub2RlO1xuLy9cbi8vICAgLy8gSW5zZXJ0IGFsbCB0aGUgY2hpbGRyZW4gZnJvbSB0aGUgY29udGVudE5vZGUgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZCBvZiBzdXNwZW5zZSBib3VuZGFyeS5cbi8vICAgd2hpbGUgKGNvbnRlbnROb2RlLmZpcnN0Q2hpbGQpIHtcbi8vICAgICBwYXJlbnRJbnN0YW5jZS5pbnNlcnRCZWZvcmUoY29udGVudE5vZGUuZmlyc3RDaGlsZCwgZW5kT2ZCb3VuZGFyeSk7XG4vLyAgIH1cbi8vICAgc3VzcGVuc2VOb2RlLmRhdGEgPSBTVVNQRU5TRV9TVEFSVF9EQVRBO1xuLy8gICBpZiAoc3VzcGVuc2VOb2RlLl9yZWFjdFJldHJ5KSB7XG4vLyAgICAgc3VzcGVuc2VOb2RlLl9yZWFjdFJldHJ5KCk7XG4vLyAgIH1cbi8vIH1cbi8vXG4vLyBmdW5jdGlvbiBjb21wbGV0ZVNlZ21lbnQoY29udGFpbmVySUQsIHBsYWNlaG9sZGVySUQpIHtcbi8vICAgY29uc3Qgc2VnbWVudENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lcklEKTtcbi8vICAgY29uc3QgcGxhY2Vob2xkZXJOb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocGxhY2Vob2xkZXJJRCk7XG4vLyAgIC8vIFdlIGFsd2F5cyBleHBlY3QgYm90aCBub2RlcyB0byBleGlzdCBoZXJlIGJlY2F1c2UsIHdoaWxlIHdlIG1pZ2h0XG4vLyAgIC8vIGhhdmUgbmF2aWdhdGVkIGF3YXkgZnJvbSB0aGUgbWFpbiB0cmVlLCB3ZSBzdGlsbCBleHBlY3QgdGhlIGRldGFjaGVkXG4vLyAgIC8vIHRyZWUgdG8gZXhpc3QuXG4vLyAgIHNlZ21lbnRDb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzZWdtZW50Q29udGFpbmVyKTtcbi8vICAgd2hpbGUgKHNlZ21lbnRDb250YWluZXIuZmlyc3RDaGlsZCkge1xuLy8gICAgIHBsYWNlaG9sZGVyTm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShcbi8vICAgICAgIHNlZ21lbnRDb250YWluZXIuZmlyc3RDaGlsZCxcbi8vICAgICAgIHBsYWNlaG9sZGVyTm9kZSxcbi8vICAgICApO1xuLy8gICB9XG4vLyAgIHBsYWNlaG9sZGVyTm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHBsYWNlaG9sZGVyTm9kZSk7XG4vLyB9XG5cbnZhciBjb21wbGV0ZVNlZ21lbnRGdW5jdGlvbiA9ICdmdW5jdGlvbiAkUlMoYSxiKXthPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpO2I9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYik7Zm9yKGEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKTthLmZpcnN0Q2hpbGQ7KWIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYS5maXJzdENoaWxkLGIpO2IucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX0nO1xudmFyIGNvbXBsZXRlQm91bmRhcnlGdW5jdGlvbiA9ICdmdW5jdGlvbiAkUkMoYSxiKXthPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpO2I9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYik7Yi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpO2lmKGEpe2E9YS5wcmV2aW91c1NpYmxpbmc7dmFyIGY9YS5wYXJlbnROb2RlLGM9YS5uZXh0U2libGluZyxlPTA7ZG97aWYoYyYmOD09PWMubm9kZVR5cGUpe3ZhciBkPWMuZGF0YTtpZihcIi8kXCI9PT1kKWlmKDA9PT1lKWJyZWFrO2Vsc2UgZS0tO2Vsc2VcIiRcIiE9PWQmJlwiJD9cIiE9PWQmJlwiJCFcIiE9PWR8fGUrK31kPWMubmV4dFNpYmxpbmc7Zi5yZW1vdmVDaGlsZChjKTtjPWR9d2hpbGUoYyk7Zm9yKDtiLmZpcnN0Q2hpbGQ7KWYuaW5zZXJ0QmVmb3JlKGIuZmlyc3RDaGlsZCxjKTthLmRhdGE9XCIkXCI7YS5fcmVhY3RSZXRyeSYmYS5fcmVhY3RSZXRyeSgpfX0nO1xudmFyIGNsaWVudFJlbmRlckZ1bmN0aW9uID0gJ2Z1bmN0aW9uICRSWChhKXtpZihhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpKWE9YS5wcmV2aW91c1NpYmxpbmcsYS5kYXRhPVwiJCFcIixhLl9yZWFjdFJldHJ5JiZhLl9yZWFjdFJldHJ5KCl9JztcbnZhciBjb21wbGV0ZVNlZ21lbnRTY3JpcHQxRnVsbCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuayhjb21wbGV0ZVNlZ21lbnRGdW5jdGlvbiArICc7JFJTKFwiJyk7XG52YXIgY29tcGxldGVTZWdtZW50U2NyaXB0MVBhcnRpYWwgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJyRSUyhcIicpO1xudmFyIGNvbXBsZXRlU2VnbWVudFNjcmlwdDIgPSBzdHJpbmdUb1ByZWNvbXB1dGVkQ2h1bmsoJ1wiLFwiJyk7XG52YXIgY29tcGxldGVTZWdtZW50U2NyaXB0MyA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCIpPC9zY3JpcHQ+Jyk7XG5mdW5jdGlvbiB3cml0ZUNvbXBsZXRlZFNlZ21lbnRJbnN0cnVjdGlvbihkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZSwgY29udGVudFNlZ21lbnRJRCkge1xuICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCByZXNwb25zZVN0YXRlLnN0YXJ0SW5saW5lU2NyaXB0KTtcblxuICBpZiAoIXJlc3BvbnNlU3RhdGUuc2VudENvbXBsZXRlU2VnbWVudEZ1bmN0aW9uKSB7XG4gICAgLy8gVGhlIGZpcnN0IHRpbWUgd2Ugd3JpdGUgdGhpcywgd2UnbGwgbmVlZCB0byBpbmNsdWRlIHRoZSBmdWxsIGltcGxlbWVudGF0aW9uLlxuICAgIHJlc3BvbnNlU3RhdGUuc2VudENvbXBsZXRlU2VnbWVudEZ1bmN0aW9uID0gdHJ1ZTtcbiAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjb21wbGV0ZVNlZ21lbnRTY3JpcHQxRnVsbCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gRnV0dXJlIGNhbGxzIGNhbiBqdXN0IHJldXNlIHRoZSBzYW1lIGZ1bmN0aW9uLlxuICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGNvbXBsZXRlU2VnbWVudFNjcmlwdDFQYXJ0aWFsKTtcbiAgfVxuXG4gIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUuc2VnbWVudFByZWZpeCk7XG4gIHZhciBmb3JtYXR0ZWRJRCA9IHN0cmluZ1RvQ2h1bmsoY29udGVudFNlZ21lbnRJRC50b1N0cmluZygxNikpO1xuICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBmb3JtYXR0ZWRJRCk7XG4gIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGNvbXBsZXRlU2VnbWVudFNjcmlwdDIpO1xuICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCByZXNwb25zZVN0YXRlLnBsYWNlaG9sZGVyUHJlZml4KTtcbiAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgZm9ybWF0dGVkSUQpO1xuICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgY29tcGxldGVTZWdtZW50U2NyaXB0Myk7XG59XG52YXIgY29tcGxldGVCb3VuZGFyeVNjcmlwdDFGdWxsID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKGNvbXBsZXRlQm91bmRhcnlGdW5jdGlvbiArICc7JFJDKFwiJyk7XG52YXIgY29tcGxldGVCb3VuZGFyeVNjcmlwdDFQYXJ0aWFsID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKCckUkMoXCInKTtcbnZhciBjb21wbGV0ZUJvdW5kYXJ5U2NyaXB0MiA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCIsXCInKTtcbnZhciBjb21wbGV0ZUJvdW5kYXJ5U2NyaXB0MyA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCIpPC9zY3JpcHQ+Jyk7XG5mdW5jdGlvbiB3cml0ZUNvbXBsZXRlZEJvdW5kYXJ5SW5zdHJ1Y3Rpb24oZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUsIGJvdW5kYXJ5SUQsIGNvbnRlbnRTZWdtZW50SUQpIHtcbiAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZS5zdGFydElubGluZVNjcmlwdCk7XG5cbiAgaWYgKCFyZXNwb25zZVN0YXRlLnNlbnRDb21wbGV0ZUJvdW5kYXJ5RnVuY3Rpb24pIHtcbiAgICAvLyBUaGUgZmlyc3QgdGltZSB3ZSB3cml0ZSB0aGlzLCB3ZSdsbCBuZWVkIHRvIGluY2x1ZGUgdGhlIGZ1bGwgaW1wbGVtZW50YXRpb24uXG4gICAgcmVzcG9uc2VTdGF0ZS5zZW50Q29tcGxldGVCb3VuZGFyeUZ1bmN0aW9uID0gdHJ1ZTtcbiAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjb21wbGV0ZUJvdW5kYXJ5U2NyaXB0MUZ1bGwpO1xuICB9IGVsc2Uge1xuICAgIC8vIEZ1dHVyZSBjYWxscyBjYW4ganVzdCByZXVzZSB0aGUgc2FtZSBmdW5jdGlvbi5cbiAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjb21wbGV0ZUJvdW5kYXJ5U2NyaXB0MVBhcnRpYWwpO1xuICB9XG5cbiAgaWYgKGJvdW5kYXJ5SUQgPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0FuIElEIG11c3QgaGF2ZSBiZWVuIGFzc2lnbmVkIGJlZm9yZSB3ZSBjYW4gY29tcGxldGUgdGhlIGJvdW5kYXJ5LicpO1xuICB9XG5cbiAgdmFyIGZvcm1hdHRlZENvbnRlbnRJRCA9IHN0cmluZ1RvQ2h1bmsoY29udGVudFNlZ21lbnRJRC50b1N0cmluZygxNikpO1xuICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBib3VuZGFyeUlEKTtcbiAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgY29tcGxldGVCb3VuZGFyeVNjcmlwdDIpO1xuICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCByZXNwb25zZVN0YXRlLnNlZ21lbnRQcmVmaXgpO1xuICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBmb3JtYXR0ZWRDb250ZW50SUQpO1xuICByZXR1cm4gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgY29tcGxldGVCb3VuZGFyeVNjcmlwdDMpO1xufVxudmFyIGNsaWVudFJlbmRlclNjcmlwdDFGdWxsID0gc3RyaW5nVG9QcmVjb21wdXRlZENodW5rKGNsaWVudFJlbmRlckZ1bmN0aW9uICsgJzskUlgoXCInKTtcbnZhciBjbGllbnRSZW5kZXJTY3JpcHQxUGFydGlhbCA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnJFJYKFwiJyk7XG52YXIgY2xpZW50UmVuZGVyU2NyaXB0MiA9IHN0cmluZ1RvUHJlY29tcHV0ZWRDaHVuaygnXCIpPC9zY3JpcHQ+Jyk7XG5mdW5jdGlvbiB3cml0ZUNsaWVudFJlbmRlckJvdW5kYXJ5SW5zdHJ1Y3Rpb24oZGVzdGluYXRpb24sIHJlc3BvbnNlU3RhdGUsIGJvdW5kYXJ5SUQpIHtcbiAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgcmVzcG9uc2VTdGF0ZS5zdGFydElubGluZVNjcmlwdCk7XG5cbiAgaWYgKCFyZXNwb25zZVN0YXRlLnNlbnRDbGllbnRSZW5kZXJGdW5jdGlvbikge1xuICAgIC8vIFRoZSBmaXJzdCB0aW1lIHdlIHdyaXRlIHRoaXMsIHdlJ2xsIG5lZWQgdG8gaW5jbHVkZSB0aGUgZnVsbCBpbXBsZW1lbnRhdGlvbi5cbiAgICByZXNwb25zZVN0YXRlLnNlbnRDbGllbnRSZW5kZXJGdW5jdGlvbiA9IHRydWU7XG4gICAgd3JpdGVDaHVuayhkZXN0aW5hdGlvbiwgY2xpZW50UmVuZGVyU2NyaXB0MUZ1bGwpO1xuICB9IGVsc2Uge1xuICAgIC8vIEZ1dHVyZSBjYWxscyBjYW4ganVzdCByZXVzZSB0aGUgc2FtZSBmdW5jdGlvbi5cbiAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjbGllbnRSZW5kZXJTY3JpcHQxUGFydGlhbCk7XG4gIH1cblxuICBpZiAoYm91bmRhcnlJRCA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQW4gSUQgbXVzdCBoYXZlIGJlZW4gYXNzaWduZWQgYmVmb3JlIHdlIGNhbiBjb21wbGV0ZSB0aGUgYm91bmRhcnkuJyk7XG4gIH1cblxuICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBib3VuZGFyeUlEKTtcbiAgcmV0dXJuIHdyaXRlQ2h1bmtBbmRSZXR1cm4oZGVzdGluYXRpb24sIGNsaWVudFJlbmRlclNjcmlwdDIpO1xufVxuXG52YXIgYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcblxuLy8gQVRURU5USU9OXG4vLyBXaGVuIGFkZGluZyBuZXcgc3ltYm9scyB0byB0aGlzIGZpbGUsXG4vLyBQbGVhc2UgY29uc2lkZXIgYWxzbyBhZGRpbmcgdG8gJ3JlYWN0LWRldnRvb2xzLXNoYXJlZC9zcmMvYmFja2VuZC9SZWFjdFN5bWJvbHMnXG4vLyBUaGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBSZWFjdEVsZW1lbnQtbGlrZSB0eXBlcy5cbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50Jyk7XG52YXIgUkVBQ1RfUE9SVEFMX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wb3J0YWwnKTtcbnZhciBSRUFDVF9GUkFHTUVOVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QuZnJhZ21lbnQnKTtcbnZhciBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3RyaWN0X21vZGUnKTtcbnZhciBSRUFDVF9QUk9GSUxFUl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QucHJvZmlsZXInKTtcbnZhciBSRUFDVF9QUk9WSURFUl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QucHJvdmlkZXInKTtcbnZhciBSRUFDVF9DT05URVhUX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5jb250ZXh0Jyk7XG52YXIgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmZvcndhcmRfcmVmJyk7XG52YXIgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnN1c3BlbnNlJyk7XG52YXIgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2VfbGlzdCcpO1xudmFyIFJFQUNUX01FTU9fVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0Lm1lbW8nKTtcbnZhciBSRUFDVF9MQVpZX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5sYXp5Jyk7XG52YXIgUkVBQ1RfU0NPUEVfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnNjb3BlJyk7XG52YXIgUkVBQ1RfREVCVUdfVFJBQ0lOR19NT0RFX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5kZWJ1Z190cmFjZV9tb2RlJyk7XG52YXIgUkVBQ1RfTEVHQUNZX0hJRERFTl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QubGVnYWN5X2hpZGRlbicpO1xudmFyIFJFQUNUX1NFUlZFUl9DT05URVhUX0RFRkFVTFRfVkFMVUVfTk9UX0xPQURFRCA9IFN5bWJvbC5mb3IoJ3JlYWN0LmRlZmF1bHRfdmFsdWUnKTtcbnZhciBNQVlCRV9JVEVSQVRPUl9TWU1CT0wgPSBTeW1ib2wuaXRlcmF0b3I7XG52YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7XG5mdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcbiAgaWYgKG1heWJlSXRlcmFibGUgPT09IG51bGwgfHwgdHlwZW9mIG1heWJlSXRlcmFibGUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2YXIgbWF5YmVJdGVyYXRvciA9IE1BWUJFX0lURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW01BWUJFX0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF07XG5cbiAgaWYgKHR5cGVvZiBtYXliZUl0ZXJhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG1heWJlSXRlcmF0b3I7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0V3JhcHBlZE5hbWUob3V0ZXJUeXBlLCBpbm5lclR5cGUsIHdyYXBwZXJOYW1lKSB7XG4gIHZhciBkaXNwbGF5TmFtZSA9IG91dGVyVHlwZS5kaXNwbGF5TmFtZTtcblxuICBpZiAoZGlzcGxheU5hbWUpIHtcbiAgICByZXR1cm4gZGlzcGxheU5hbWU7XG4gIH1cblxuICB2YXIgZnVuY3Rpb25OYW1lID0gaW5uZXJUeXBlLmRpc3BsYXlOYW1lIHx8IGlubmVyVHlwZS5uYW1lIHx8ICcnO1xuICByZXR1cm4gZnVuY3Rpb25OYW1lICE9PSAnJyA/IHdyYXBwZXJOYW1lICsgXCIoXCIgKyBmdW5jdGlvbk5hbWUgKyBcIilcIiA6IHdyYXBwZXJOYW1lO1xufSAvLyBLZWVwIGluIHN5bmMgd2l0aCByZWFjdC1yZWNvbmNpbGVyL2dldENvbXBvbmVudE5hbWVGcm9tRmliZXJcblxuXG5mdW5jdGlvbiBnZXRDb250ZXh0TmFtZSh0eXBlKSB7XG4gIHJldHVybiB0eXBlLmRpc3BsYXlOYW1lIHx8ICdDb250ZXh0Jztcbn0gLy8gTm90ZSB0aGF0IHRoZSByZWNvbmNpbGVyIHBhY2thZ2Ugc2hvdWxkIGdlbmVyYWxseSBwcmVmZXIgdG8gdXNlIGdldENvbXBvbmVudE5hbWVGcm9tRmliZXIoKSBpbnN0ZWFkLlxuXG5cbmZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB7XG4gIGlmICh0eXBlID09IG51bGwpIHtcbiAgICAvLyBIb3N0IHJvb3QsIHRleHQgbm9kZSBvciBqdXN0IGludmFsaWQgdHlwZS5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHtcbiAgICBpZiAodHlwZW9mIHR5cGUudGFnID09PSAnbnVtYmVyJykge1xuICAgICAgZXJyb3IoJ1JlY2VpdmVkIGFuIHVuZXhwZWN0ZWQgb2JqZWN0IGluIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSgpLiAnICsgJ1RoaXMgaXMgbGlrZWx5IGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgbnVsbDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUkVBQ1RfRlJBR01FTlRfVFlQRTpcbiAgICAgIHJldHVybiAnRnJhZ21lbnQnO1xuXG4gICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgIHJldHVybiAnUG9ydGFsJztcblxuICAgIGNhc2UgUkVBQ1RfUFJPRklMRVJfVFlQRTpcbiAgICAgIHJldHVybiAnUHJvZmlsZXInO1xuXG4gICAgY2FzZSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFOlxuICAgICAgcmV0dXJuICdTdHJpY3RNb2RlJztcblxuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgIHJldHVybiAnU3VzcGVuc2UnO1xuXG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICByZXR1cm4gJ1N1c3BlbnNlTGlzdCc7XG5cbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICBzd2l0Y2ggKHR5cGUuJCR0eXBlb2YpIHtcbiAgICAgIGNhc2UgUkVBQ1RfQ09OVEVYVF9UWVBFOlxuICAgICAgICB2YXIgY29udGV4dCA9IHR5cGU7XG4gICAgICAgIHJldHVybiBnZXRDb250ZXh0TmFtZShjb250ZXh0KSArICcuQ29uc3VtZXInO1xuXG4gICAgICBjYXNlIFJFQUNUX1BST1ZJREVSX1RZUEU6XG4gICAgICAgIHZhciBwcm92aWRlciA9IHR5cGU7XG4gICAgICAgIHJldHVybiBnZXRDb250ZXh0TmFtZShwcm92aWRlci5fY29udGV4dCkgKyAnLlByb3ZpZGVyJztcblxuICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICByZXR1cm4gZ2V0V3JhcHBlZE5hbWUodHlwZSwgdHlwZS5yZW5kZXIsICdGb3J3YXJkUmVmJyk7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICB2YXIgb3V0ZXJOYW1lID0gdHlwZS5kaXNwbGF5TmFtZSB8fCBudWxsO1xuXG4gICAgICAgIGlmIChvdXRlck5hbWUgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gb3V0ZXJOYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlLnR5cGUpIHx8ICdNZW1vJztcblxuICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgbGF6eUNvbXBvbmVudCA9IHR5cGU7XG4gICAgICAgICAgdmFyIHBheWxvYWQgPSBsYXp5Q29tcG9uZW50Ll9wYXlsb2FkO1xuICAgICAgICAgIHZhciBpbml0ID0gbGF6eUNvbXBvbmVudC5faW5pdDtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGluaXQocGF5bG9hZCkpO1xuICAgICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gSGVscGVycyB0byBwYXRjaCBjb25zb2xlLmxvZ3MgdG8gYXZvaWQgbG9nZ2luZyBkdXJpbmcgc2lkZS1lZmZlY3QgZnJlZVxuLy8gcmVwbGF5aW5nIG9uIHJlbmRlciBmdW5jdGlvbi4gVGhpcyBjdXJyZW50bHkgb25seSBwYXRjaGVzIHRoZSBvYmplY3Rcbi8vIGxhemlseSB3aGljaCB3b24ndCBjb3ZlciBpZiB0aGUgbG9nIGZ1bmN0aW9uIHdhcyBleHRyYWN0ZWQgZWFnZXJseS5cbi8vIFdlIGNvdWxkIGFsc28gZWFnZXJseSBwYXRjaCB0aGUgbWV0aG9kLlxudmFyIGRpc2FibGVkRGVwdGggPSAwO1xudmFyIHByZXZMb2c7XG52YXIgcHJldkluZm87XG52YXIgcHJldldhcm47XG52YXIgcHJldkVycm9yO1xudmFyIHByZXZHcm91cDtcbnZhciBwcmV2R3JvdXBDb2xsYXBzZWQ7XG52YXIgcHJldkdyb3VwRW5kO1xuXG5mdW5jdGlvbiBkaXNhYmxlZExvZygpIHt9XG5cbmRpc2FibGVkTG9nLl9fcmVhY3REaXNhYmxlZExvZyA9IHRydWU7XG5mdW5jdGlvbiBkaXNhYmxlTG9ncygpIHtcbiAge1xuICAgIGlmIChkaXNhYmxlZERlcHRoID09PSAwKSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICAgIHByZXZMb2cgPSBjb25zb2xlLmxvZztcbiAgICAgIHByZXZJbmZvID0gY29uc29sZS5pbmZvO1xuICAgICAgcHJldldhcm4gPSBjb25zb2xlLndhcm47XG4gICAgICBwcmV2RXJyb3IgPSBjb25zb2xlLmVycm9yO1xuICAgICAgcHJldkdyb3VwID0gY29uc29sZS5ncm91cDtcbiAgICAgIHByZXZHcm91cENvbGxhcHNlZCA9IGNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQ7XG4gICAgICBwcmV2R3JvdXBFbmQgPSBjb25zb2xlLmdyb3VwRW5kOyAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE5MDk5XG5cbiAgICAgIHZhciBwcm9wcyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogZGlzYWJsZWRMb2csXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICB9OyAvLyAkRmxvd0ZpeE1lIEZsb3cgdGhpbmtzIGNvbnNvbGUgaXMgaW1tdXRhYmxlLlxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjb25zb2xlLCB7XG4gICAgICAgIGluZm86IHByb3BzLFxuICAgICAgICBsb2c6IHByb3BzLFxuICAgICAgICB3YXJuOiBwcm9wcyxcbiAgICAgICAgZXJyb3I6IHByb3BzLFxuICAgICAgICBncm91cDogcHJvcHMsXG4gICAgICAgIGdyb3VwQ29sbGFwc2VkOiBwcm9wcyxcbiAgICAgICAgZ3JvdXBFbmQ6IHByb3BzXG4gICAgICB9KTtcbiAgICAgIC8qIGVzbGludC1lbmFibGUgcmVhY3QtaW50ZXJuYWwvbm8tcHJvZHVjdGlvbi1sb2dnaW5nICovXG4gICAgfVxuXG4gICAgZGlzYWJsZWREZXB0aCsrO1xuICB9XG59XG5mdW5jdGlvbiByZWVuYWJsZUxvZ3MoKSB7XG4gIHtcbiAgICBkaXNhYmxlZERlcHRoLS07XG5cbiAgICBpZiAoZGlzYWJsZWREZXB0aCA9PT0gMCkge1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgcmVhY3QtaW50ZXJuYWwvbm8tcHJvZHVjdGlvbi1sb2dnaW5nICovXG4gICAgICB2YXIgcHJvcHMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgIH07IC8vICRGbG93Rml4TWUgRmxvdyB0aGlua3MgY29uc29sZSBpcyBpbW11dGFibGUuXG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGNvbnNvbGUsIHtcbiAgICAgICAgbG9nOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZMb2dcbiAgICAgICAgfSksXG4gICAgICAgIGluZm86IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkluZm9cbiAgICAgICAgfSksXG4gICAgICAgIHdhcm46IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldldhcm5cbiAgICAgICAgfSksXG4gICAgICAgIGVycm9yOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZFcnJvclxuICAgICAgICB9KSxcbiAgICAgICAgZ3JvdXA6IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkdyb3VwXG4gICAgICAgIH0pLFxuICAgICAgICBncm91cENvbGxhcHNlZDogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2R3JvdXBDb2xsYXBzZWRcbiAgICAgICAgfSksXG4gICAgICAgIGdyb3VwRW5kOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZHcm91cEVuZFxuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgIH1cblxuICAgIGlmIChkaXNhYmxlZERlcHRoIDwgMCkge1xuICAgICAgZXJyb3IoJ2Rpc2FibGVkRGVwdGggZmVsbCBiZWxvdyB6ZXJvLiAnICsgJ1RoaXMgaXMgYSBidWcgaW4gUmVhY3QuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLicpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgUmVhY3RDdXJyZW50RGlzcGF0Y2hlciA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0Q3VycmVudERpc3BhdGNoZXI7XG52YXIgcHJlZml4O1xuZnVuY3Rpb24gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUobmFtZSwgc291cmNlLCBvd25lckZuKSB7XG4gIHtcbiAgICBpZiAocHJlZml4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEV4dHJhY3QgdGhlIFZNIHNwZWNpZmljIHByZWZpeCB1c2VkIGJ5IGVhY2ggbGluZS5cbiAgICAgIHRyeSB7XG4gICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgIHZhciBtYXRjaCA9IHguc3RhY2sudHJpbSgpLm1hdGNoKC9cXG4oICooYXQgKT8pLyk7XG4gICAgICAgIHByZWZpeCA9IG1hdGNoICYmIG1hdGNoWzFdIHx8ICcnO1xuICAgICAgfVxuICAgIH0gLy8gV2UgdXNlIHRoZSBwcmVmaXggdG8gZW5zdXJlIG91ciBzdGFja3MgbGluZSB1cCB3aXRoIG5hdGl2ZSBzdGFjayBmcmFtZXMuXG5cblxuICAgIHJldHVybiAnXFxuJyArIHByZWZpeCArIG5hbWU7XG4gIH1cbn1cbnZhciByZWVudHJ5ID0gZmFsc2U7XG52YXIgY29tcG9uZW50RnJhbWVDYWNoZTtcblxue1xuICB2YXIgUG9zc2libHlXZWFrTWFwID0gdHlwZW9mIFdlYWtNYXAgPT09ICdmdW5jdGlvbicgPyBXZWFrTWFwIDogTWFwO1xuICBjb21wb25lbnRGcmFtZUNhY2hlID0gbmV3IFBvc3NpYmx5V2Vha01hcCgpO1xufVxuXG5mdW5jdGlvbiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKGZuLCBjb25zdHJ1Y3QpIHtcbiAgLy8gSWYgc29tZXRoaW5nIGFza2VkIGZvciBhIHN0YWNrIGluc2lkZSBhIGZha2UgcmVuZGVyLCBpdCBzaG91bGQgZ2V0IGlnbm9yZWQuXG4gIGlmICggIWZuIHx8IHJlZW50cnkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICB7XG4gICAgdmFyIGZyYW1lID0gY29tcG9uZW50RnJhbWVDYWNoZS5nZXQoZm4pO1xuXG4gICAgaWYgKGZyYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmcmFtZTtcbiAgICB9XG4gIH1cblxuICB2YXIgY29udHJvbDtcbiAgcmVlbnRyeSA9IHRydWU7XG4gIHZhciBwcmV2aW91c1ByZXBhcmVTdGFja1RyYWNlID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7IC8vICRGbG93Rml4TWUgSXQgZG9lcyBhY2NlcHQgdW5kZWZpbmVkLlxuXG4gIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gdW5kZWZpbmVkO1xuICB2YXIgcHJldmlvdXNEaXNwYXRjaGVyO1xuXG4gIHtcbiAgICBwcmV2aW91c0Rpc3BhdGNoZXIgPSBSZWFjdEN1cnJlbnREaXNwYXRjaGVyLmN1cnJlbnQ7IC8vIFNldCB0aGUgZGlzcGF0Y2hlciBpbiBERVYgYmVjYXVzZSB0aGlzIG1pZ2h0IGJlIGNhbGwgaW4gdGhlIHJlbmRlciBmdW5jdGlvblxuICAgIC8vIGZvciB3YXJuaW5ncy5cblxuICAgIFJlYWN0Q3VycmVudERpc3BhdGNoZXIuY3VycmVudCA9IG51bGw7XG4gICAgZGlzYWJsZUxvZ3MoKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgLy8gVGhpcyBzaG91bGQgdGhyb3cuXG4gICAgaWYgKGNvbnN0cnVjdCkge1xuICAgICAgLy8gU29tZXRoaW5nIHNob3VsZCBiZSBzZXR0aW5nIHRoZSBwcm9wcyBpbiB0aGUgY29uc3RydWN0b3IuXG4gICAgICB2YXIgRmFrZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgIH07IC8vICRGbG93Rml4TWVcblxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRmFrZS5wcm90b3R5cGUsICdwcm9wcycsIHtcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLy8gV2UgdXNlIGEgdGhyb3dpbmcgc2V0dGVyIGluc3RlYWQgb2YgZnJvemVuIG9yIG5vbi13cml0YWJsZSBwcm9wc1xuICAgICAgICAgIC8vIGJlY2F1c2UgdGhhdCB3b24ndCB0aHJvdyBpbiBhIG5vbi1zdHJpY3QgbW9kZSBmdW5jdGlvbi5cbiAgICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSAnb2JqZWN0JyAmJiBSZWZsZWN0LmNvbnN0cnVjdCkge1xuICAgICAgICAvLyBXZSBjb25zdHJ1Y3QgYSBkaWZmZXJlbnQgY29udHJvbCBmb3IgdGhpcyBjYXNlIHRvIGluY2x1ZGUgYW55IGV4dHJhXG4gICAgICAgIC8vIGZyYW1lcyBhZGRlZCBieSB0aGUgY29uc3RydWN0IGNhbGwuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgUmVmbGVjdC5jb25zdHJ1Y3QoRmFrZSwgW10pO1xuICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgY29udHJvbCA9IHg7XG4gICAgICAgIH1cblxuICAgICAgICBSZWZsZWN0LmNvbnN0cnVjdChmbiwgW10sIEZha2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBGYWtlLmNhbGwoKTtcbiAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgIGNvbnRyb2wgPSB4O1xuICAgICAgICB9XG5cbiAgICAgICAgZm4uY2FsbChGYWtlLnByb3RvdHlwZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgIGNvbnRyb2wgPSB4O1xuICAgICAgfVxuXG4gICAgICBmbigpO1xuICAgIH1cbiAgfSBjYXRjaCAoc2FtcGxlKSB7XG4gICAgLy8gVGhpcyBpcyBpbmxpbmVkIG1hbnVhbGx5IGJlY2F1c2UgY2xvc3VyZSBkb2Vzbid0IGRvIGl0IGZvciB1cy5cbiAgICBpZiAoc2FtcGxlICYmIGNvbnRyb2wgJiYgdHlwZW9mIHNhbXBsZS5zdGFjayA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIFRoaXMgZXh0cmFjdHMgdGhlIGZpcnN0IGZyYW1lIGZyb20gdGhlIHNhbXBsZSB0aGF0IGlzbid0IGFsc28gaW4gdGhlIGNvbnRyb2wuXG4gICAgICAvLyBTa2lwcGluZyBvbmUgZnJhbWUgdGhhdCB3ZSBhc3N1bWUgaXMgdGhlIGZyYW1lIHRoYXQgY2FsbHMgdGhlIHR3by5cbiAgICAgIHZhciBzYW1wbGVMaW5lcyA9IHNhbXBsZS5zdGFjay5zcGxpdCgnXFxuJyk7XG4gICAgICB2YXIgY29udHJvbExpbmVzID0gY29udHJvbC5zdGFjay5zcGxpdCgnXFxuJyk7XG4gICAgICB2YXIgcyA9IHNhbXBsZUxpbmVzLmxlbmd0aCAtIDE7XG4gICAgICB2YXIgYyA9IGNvbnRyb2xMaW5lcy5sZW5ndGggLSAxO1xuXG4gICAgICB3aGlsZSAocyA+PSAxICYmIGMgPj0gMCAmJiBzYW1wbGVMaW5lc1tzXSAhPT0gY29udHJvbExpbmVzW2NdKSB7XG4gICAgICAgIC8vIFdlIGV4cGVjdCBhdCBsZWFzdCBvbmUgc3RhY2sgZnJhbWUgdG8gYmUgc2hhcmVkLlxuICAgICAgICAvLyBUeXBpY2FsbHkgdGhpcyB3aWxsIGJlIHRoZSByb290IG1vc3Qgb25lLiBIb3dldmVyLCBzdGFjayBmcmFtZXMgbWF5IGJlXG4gICAgICAgIC8vIGN1dCBvZmYgZHVlIHRvIG1heGltdW0gc3RhY2sgbGltaXRzLiBJbiB0aGlzIGNhc2UsIG9uZSBtYXliZSBjdXQgb2ZmXG4gICAgICAgIC8vIGVhcmxpZXIgdGhhbiB0aGUgb3RoZXIuIFdlIGFzc3VtZSB0aGF0IHRoZSBzYW1wbGUgaXMgbG9uZ2VyIG9yIHRoZSBzYW1lXG4gICAgICAgIC8vIGFuZCB0aGVyZSBmb3IgY3V0IG9mZiBlYXJsaWVyLiBTbyB3ZSBzaG91bGQgZmluZCB0aGUgcm9vdCBtb3N0IGZyYW1lIGluXG4gICAgICAgIC8vIHRoZSBzYW1wbGUgc29tZXdoZXJlIGluIHRoZSBjb250cm9sLlxuICAgICAgICBjLS07XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBzID49IDEgJiYgYyA+PSAwOyBzLS0sIGMtLSkge1xuICAgICAgICAvLyBOZXh0IHdlIGZpbmQgdGhlIGZpcnN0IG9uZSB0aGF0IGlzbid0IHRoZSBzYW1lIHdoaWNoIHNob3VsZCBiZSB0aGVcbiAgICAgICAgLy8gZnJhbWUgdGhhdCBjYWxsZWQgb3VyIHNhbXBsZSBmdW5jdGlvbiBhbmQgdGhlIGNvbnRyb2wuXG4gICAgICAgIGlmIChzYW1wbGVMaW5lc1tzXSAhPT0gY29udHJvbExpbmVzW2NdKSB7XG4gICAgICAgICAgLy8gSW4gVjgsIHRoZSBmaXJzdCBsaW5lIGlzIGRlc2NyaWJpbmcgdGhlIG1lc3NhZ2UgYnV0IG90aGVyIFZNcyBkb24ndC5cbiAgICAgICAgICAvLyBJZiB3ZSdyZSBhYm91dCB0byByZXR1cm4gdGhlIGZpcnN0IGxpbmUsIGFuZCB0aGUgY29udHJvbCBpcyBhbHNvIG9uIHRoZSBzYW1lXG4gICAgICAgICAgLy8gbGluZSwgdGhhdCdzIGEgcHJldHR5IGdvb2QgaW5kaWNhdG9yIHRoYXQgb3VyIHNhbXBsZSB0aHJldyBhdCBzYW1lIGxpbmUgYXNcbiAgICAgICAgICAvLyB0aGUgY29udHJvbC4gSS5lLiBiZWZvcmUgd2UgZW50ZXJlZCB0aGUgc2FtcGxlIGZyYW1lLiBTbyB3ZSBpZ25vcmUgdGhpcyByZXN1bHQuXG4gICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHlvdSBwYXNzZWQgYSBjbGFzcyB0byBmdW5jdGlvbiBjb21wb25lbnQsIG9yIG5vbi1mdW5jdGlvbi5cbiAgICAgICAgICBpZiAocyAhPT0gMSB8fCBjICE9PSAxKSB7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgIHMtLTtcbiAgICAgICAgICAgICAgYy0tOyAvLyBXZSBtYXkgc3RpbGwgaGF2ZSBzaW1pbGFyIGludGVybWVkaWF0ZSBmcmFtZXMgZnJvbSB0aGUgY29uc3RydWN0IGNhbGwuXG4gICAgICAgICAgICAgIC8vIFRoZSBuZXh0IG9uZSB0aGF0IGlzbid0IHRoZSBzYW1lIHNob3VsZCBiZSBvdXIgbWF0Y2ggdGhvdWdoLlxuXG4gICAgICAgICAgICAgIGlmIChjIDwgMCB8fCBzYW1wbGVMaW5lc1tzXSAhPT0gY29udHJvbExpbmVzW2NdKSB7XG4gICAgICAgICAgICAgICAgLy8gVjggYWRkcyBhIFwibmV3XCIgcHJlZml4IGZvciBuYXRpdmUgY2xhc3Nlcy4gTGV0J3MgcmVtb3ZlIGl0IHRvIG1ha2UgaXQgcHJldHRpZXIuXG4gICAgICAgICAgICAgICAgdmFyIF9mcmFtZSA9ICdcXG4nICsgc2FtcGxlTGluZXNbc10ucmVwbGFjZSgnIGF0IG5ldyAnLCAnIGF0ICcpOyAvLyBJZiBvdXIgY29tcG9uZW50IGZyYW1lIGlzIGxhYmVsZWQgXCI8YW5vbnltb3VzPlwiXG4gICAgICAgICAgICAgICAgLy8gYnV0IHdlIGhhdmUgYSB1c2VyLXByb3ZpZGVkIFwiZGlzcGxheU5hbWVcIlxuICAgICAgICAgICAgICAgIC8vIHNwbGljZSBpdCBpbiB0byBtYWtlIHRoZSBzdGFjayBtb3JlIHJlYWRhYmxlLlxuXG5cbiAgICAgICAgICAgICAgICBpZiAoZm4uZGlzcGxheU5hbWUgJiYgX2ZyYW1lLmluY2x1ZGVzKCc8YW5vbnltb3VzPicpKSB7XG4gICAgICAgICAgICAgICAgICBfZnJhbWUgPSBfZnJhbWUucmVwbGFjZSgnPGFub255bW91cz4nLCBmbi5kaXNwbGF5TmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgX2ZyYW1lKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IC8vIFJldHVybiB0aGUgbGluZSB3ZSBmb3VuZC5cblxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9mcmFtZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSB3aGlsZSAocyA+PSAxICYmIGMgPj0gMCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgcmVlbnRyeSA9IGZhbHNlO1xuXG4gICAge1xuICAgICAgUmVhY3RDdXJyZW50RGlzcGF0Y2hlci5jdXJyZW50ID0gcHJldmlvdXNEaXNwYXRjaGVyO1xuICAgICAgcmVlbmFibGVMb2dzKCk7XG4gICAgfVxuXG4gICAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBwcmV2aW91c1ByZXBhcmVTdGFja1RyYWNlO1xuICB9IC8vIEZhbGxiYWNrIHRvIGp1c3QgdXNpbmcgdGhlIG5hbWUgaWYgd2UgY291bGRuJ3QgbWFrZSBpdCB0aHJvdy5cblxuXG4gIHZhciBuYW1lID0gZm4gPyBmbi5kaXNwbGF5TmFtZSB8fCBmbi5uYW1lIDogJyc7XG4gIHZhciBzeW50aGV0aWNGcmFtZSA9IG5hbWUgPyBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShuYW1lKSA6ICcnO1xuXG4gIHtcbiAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgc3ludGhldGljRnJhbWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzeW50aGV0aWNGcmFtZTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVDbGFzc0NvbXBvbmVudEZyYW1lKGN0b3IsIHNvdXJjZSwgb3duZXJGbikge1xuICB7XG4gICAgcmV0dXJuIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUoY3RvciwgdHJ1ZSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGRlc2NyaWJlRnVuY3Rpb25Db21wb25lbnRGcmFtZShmbiwgc291cmNlLCBvd25lckZuKSB7XG4gIHtcbiAgICByZXR1cm4gZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZShmbiwgZmFsc2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNob3VsZENvbnN0cnVjdChDb21wb25lbnQpIHtcbiAgdmFyIHByb3RvdHlwZSA9IENvbXBvbmVudC5wcm90b3R5cGU7XG4gIHJldHVybiAhIShwcm90b3R5cGUgJiYgcHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpO1xufVxuXG5mdW5jdGlvbiBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYodHlwZSwgc291cmNlLCBvd25lckZuKSB7XG5cbiAgaWYgKHR5cGUgPT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHtcbiAgICAgIHJldHVybiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKHR5cGUsIHNob3VsZENvbnN0cnVjdCh0eXBlKSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZSh0eXBlKTtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZSgnU3VzcGVuc2UnKTtcblxuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFOlxuICAgICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKCdTdXNwZW5zZUxpc3QnKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICBzd2l0Y2ggKHR5cGUuJCR0eXBlb2YpIHtcbiAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgcmV0dXJuIGRlc2NyaWJlRnVuY3Rpb25Db21wb25lbnRGcmFtZSh0eXBlLnJlbmRlcik7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICAvLyBNZW1vIG1heSBjb250YWluIGFueSBjb21wb25lbnQgdHlwZSBzbyB3ZSByZWN1cnNpdmVseSByZXNvbHZlIGl0LlxuICAgICAgICByZXR1cm4gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKHR5cGUudHlwZSwgc291cmNlLCBvd25lckZuKTtcblxuICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgbGF6eUNvbXBvbmVudCA9IHR5cGU7XG4gICAgICAgICAgdmFyIHBheWxvYWQgPSBsYXp5Q29tcG9uZW50Ll9wYXlsb2FkO1xuICAgICAgICAgIHZhciBpbml0ID0gbGF6eUNvbXBvbmVudC5faW5pdDtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBMYXp5IG1heSBjb250YWluIGFueSBjb21wb25lbnQgdHlwZSBzbyB3ZSByZWN1cnNpdmVseSByZXNvbHZlIGl0LlxuICAgICAgICAgICAgcmV0dXJuIGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVihpbml0KHBheWxvYWQpLCBzb3VyY2UsIG93bmVyRm4pO1xuICAgICAgICAgIH0gY2F0Y2ggKHgpIHt9XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG5cbnZhciBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcbnZhciBSZWFjdERlYnVnQ3VycmVudEZyYW1lID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZTtcblxuZnVuY3Rpb24gc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQoZWxlbWVudCkge1xuICB7XG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHZhciBvd25lciA9IGVsZW1lbnQuX293bmVyO1xuICAgICAgdmFyIHN0YWNrID0gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKGVsZW1lbnQudHlwZSwgZWxlbWVudC5fc291cmNlLCBvd25lciA/IG93bmVyLnR5cGUgOiBudWxsKTtcbiAgICAgIFJlYWN0RGVidWdDdXJyZW50RnJhbWUuc2V0RXh0cmFTdGFja0ZyYW1lKHN0YWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZS5zZXRFeHRyYVN0YWNrRnJhbWUobnVsbCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrUHJvcFR5cGVzKHR5cGVTcGVjcywgdmFsdWVzLCBsb2NhdGlvbiwgY29tcG9uZW50TmFtZSwgZWxlbWVudCkge1xuICB7XG4gICAgLy8gJEZsb3dGaXhNZSBUaGlzIGlzIG9rYXkgYnV0IEZsb3cgZG9lc24ndCBrbm93IGl0LlxuICAgIHZhciBoYXMgPSBGdW5jdGlvbi5jYWxsLmJpbmQoaGFzT3duUHJvcGVydHkpO1xuXG4gICAgZm9yICh2YXIgdHlwZVNwZWNOYW1lIGluIHR5cGVTcGVjcykge1xuICAgICAgaWYgKGhhcyh0eXBlU3BlY3MsIHR5cGVTcGVjTmFtZSkpIHtcbiAgICAgICAgdmFyIGVycm9yJDEgPSB2b2lkIDA7IC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1heSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50IHRvXG4gICAgICAgIC8vIGZhaWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxvZyBpdC5cbiAgICAgICAgLy8gQWZ0ZXIgdGhlc2UgaGF2ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93LlxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGFuIGludmFyaWFudCB0aGF0IGdldHMgY2F1Z2h0LiBJdCdzIHRoZSBzYW1lXG4gICAgICAgICAgLy8gYmVoYXZpb3IgYXMgd2l0aG91dCB0aGlzIHN0YXRlbWVudCBleGNlcHQgd2l0aCBhIGJldHRlciBtZXNzYWdlLlxuICAgICAgICAgIGlmICh0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9wcm9kLWVycm9yLWNvZGVzXG4gICAgICAgICAgICB2YXIgZXJyID0gRXJyb3IoKGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJykgKyAnOiAnICsgbG9jYXRpb24gKyAnIHR5cGUgYCcgKyB0eXBlU3BlY05hbWUgKyAnYCBpcyBpbnZhbGlkOyAnICsgJ2l0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tIHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZSwgYnV0IHJlY2VpdmVkIGAnICsgdHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdICsgJ2AuJyArICdUaGlzIG9mdGVuIGhhcHBlbnMgYmVjYXVzZSBvZiB0eXBvcyBzdWNoIGFzIGBQcm9wVHlwZXMuZnVuY3Rpb25gIGluc3RlYWQgb2YgYFByb3BUeXBlcy5mdW5jYC4nKTtcbiAgICAgICAgICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGVycm9yJDEgPSB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSh2YWx1ZXMsIHR5cGVTcGVjTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIG51bGwsICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCcpO1xuICAgICAgICB9IGNhdGNoIChleCkge1xuICAgICAgICAgIGVycm9yJDEgPSBleDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvciQxICYmICEoZXJyb3IkMSBpbnN0YW5jZW9mIEVycm9yKSkge1xuICAgICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KGVsZW1lbnQpO1xuXG4gICAgICAgICAgZXJyb3IoJyVzOiB0eXBlIHNwZWNpZmljYXRpb24gb2YgJXMnICsgJyBgJXNgIGlzIGludmFsaWQ7IHRoZSB0eXBlIGNoZWNrZXIgJyArICdmdW5jdGlvbiBtdXN0IHJldHVybiBgbnVsbGAgb3IgYW4gYEVycm9yYCBidXQgcmV0dXJuZWQgYSAlcy4gJyArICdZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIHBhc3MgYW4gYXJndW1lbnQgdG8gdGhlIHR5cGUgY2hlY2tlciAnICsgJ2NyZWF0b3IgKGFycmF5T2YsIGluc3RhbmNlT2YsIG9iamVjdE9mLCBvbmVPZiwgb25lT2ZUeXBlLCBhbmQgJyArICdzaGFwZSBhbGwgcmVxdWlyZSBhbiBhcmd1bWVudCkuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBsb2NhdGlvbiwgdHlwZVNwZWNOYW1lLCB0eXBlb2YgZXJyb3IkMSk7XG5cbiAgICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvciQxIGluc3RhbmNlb2YgRXJyb3IgJiYgIShlcnJvciQxLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuICAgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAgICAgICAgIC8vIHNhbWUgZXJyb3IuXG4gICAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yJDEubWVzc2FnZV0gPSB0cnVlO1xuICAgICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KGVsZW1lbnQpO1xuXG4gICAgICAgICAgZXJyb3IoJ0ZhaWxlZCAlcyB0eXBlOiAlcycsIGxvY2F0aW9uLCBlcnJvciQxLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQobnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxudmFyIHdhcm5lZEFib3V0TWlzc2luZ0dldENoaWxkQ29udGV4dDtcblxue1xuICB3YXJuZWRBYm91dE1pc3NpbmdHZXRDaGlsZENvbnRleHQgPSB7fTtcbn1cblxudmFyIGVtcHR5Q29udGV4dE9iamVjdCA9IHt9O1xuXG57XG4gIE9iamVjdC5mcmVlemUoZW1wdHlDb250ZXh0T2JqZWN0KTtcbn1cblxuZnVuY3Rpb24gZ2V0TWFza2VkQ29udGV4dCh0eXBlLCB1bm1hc2tlZENvbnRleHQpIHtcbiAge1xuICAgIHZhciBjb250ZXh0VHlwZXMgPSB0eXBlLmNvbnRleHRUeXBlcztcblxuICAgIGlmICghY29udGV4dFR5cGVzKSB7XG4gICAgICByZXR1cm4gZW1wdHlDb250ZXh0T2JqZWN0O1xuICAgIH1cblxuICAgIHZhciBjb250ZXh0ID0ge307XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gY29udGV4dFR5cGVzKSB7XG4gICAgICBjb250ZXh0W2tleV0gPSB1bm1hc2tlZENvbnRleHRba2V5XTtcbiAgICB9XG5cbiAgICB7XG4gICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCAnVW5rbm93bic7XG4gICAgICBjaGVja1Byb3BUeXBlcyhjb250ZXh0VHlwZXMsIGNvbnRleHQsICdjb250ZXh0JywgbmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRleHQ7XG4gIH1cbn1cbmZ1bmN0aW9uIHByb2Nlc3NDaGlsZENvbnRleHQoaW5zdGFuY2UsIHR5cGUsIHBhcmVudENvbnRleHQsIGNoaWxkQ29udGV4dFR5cGVzKSB7XG4gIHtcbiAgICAvLyBUT0RPIChidmF1Z2huKSBSZXBsYWNlIHRoaXMgYmVoYXZpb3Igd2l0aCBhbiBpbnZhcmlhbnQoKSBpbiB0aGUgZnV0dXJlLlxuICAgIC8vIEl0IGhhcyBvbmx5IGJlZW4gYWRkZWQgaW4gRmliZXIgdG8gbWF0Y2ggdGhlICh1bmludGVudGlvbmFsKSBiZWhhdmlvciBpbiBTdGFjay5cbiAgICBpZiAodHlwZW9mIGluc3RhbmNlLmdldENoaWxkQ29udGV4dCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAge1xuICAgICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCAnVW5rbm93bic7XG5cbiAgICAgICAgaWYgKCF3YXJuZWRBYm91dE1pc3NpbmdHZXRDaGlsZENvbnRleHRbY29tcG9uZW50TmFtZV0pIHtcbiAgICAgICAgICB3YXJuZWRBYm91dE1pc3NpbmdHZXRDaGlsZENvbnRleHRbY29tcG9uZW50TmFtZV0gPSB0cnVlO1xuXG4gICAgICAgICAgZXJyb3IoJyVzLmNoaWxkQ29udGV4dFR5cGVzIGlzIHNwZWNpZmllZCBidXQgdGhlcmUgaXMgbm8gZ2V0Q2hpbGRDb250ZXh0KCkgbWV0aG9kICcgKyAnb24gdGhlIGluc3RhbmNlLiBZb3UgY2FuIGVpdGhlciBkZWZpbmUgZ2V0Q2hpbGRDb250ZXh0KCkgb24gJXMgb3IgcmVtb3ZlICcgKyAnY2hpbGRDb250ZXh0VHlwZXMgZnJvbSBpdC4nLCBjb21wb25lbnROYW1lLCBjb21wb25lbnROYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGFyZW50Q29udGV4dDtcbiAgICB9XG5cbiAgICB2YXIgY2hpbGRDb250ZXh0ID0gaW5zdGFuY2UuZ2V0Q2hpbGRDb250ZXh0KCk7XG5cbiAgICBmb3IgKHZhciBjb250ZXh0S2V5IGluIGNoaWxkQ29udGV4dCkge1xuICAgICAgaWYgKCEoY29udGV4dEtleSBpbiBjaGlsZENvbnRleHRUeXBlcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKChnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSkgfHwgJ1Vua25vd24nKSArIFwiLmdldENoaWxkQ29udGV4dCgpOiBrZXkgXFxcIlwiICsgY29udGV4dEtleSArIFwiXFxcIiBpcyBub3QgZGVmaW5lZCBpbiBjaGlsZENvbnRleHRUeXBlcy5cIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSkgfHwgJ1Vua25vd24nO1xuICAgICAgY2hlY2tQcm9wVHlwZXMoY2hpbGRDb250ZXh0VHlwZXMsIGNoaWxkQ29udGV4dCwgJ2NoaWxkIGNvbnRleHQnLCBuYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXNzaWduKHt9LCBwYXJlbnRDb250ZXh0LCBjaGlsZENvbnRleHQpO1xuICB9XG59XG5cbnZhciByZW5kZXJlclNpZ2lsO1xuXG57XG4gIC8vIFVzZSB0aGlzIHRvIGRldGVjdCBtdWx0aXBsZSByZW5kZXJlcnMgdXNpbmcgdGhlIHNhbWUgY29udGV4dFxuICByZW5kZXJlclNpZ2lsID0ge307XG59IC8vIFVzZWQgdG8gc3RvcmUgdGhlIHBhcmVudCBwYXRoIG9mIGFsbCBjb250ZXh0IG92ZXJyaWRlcyBpbiBhIHNoYXJlZCBsaW5rZWQgbGlzdC5cbi8vIEZvcm1pbmcgYSByZXZlcnNlIHRyZWUuXG5cblxudmFyIHJvb3RDb250ZXh0U25hcHNob3QgPSBudWxsOyAvLyBXZSBhc3N1bWUgdGhhdCB0aGlzIHJ1bnRpbWUgb3ducyB0aGUgXCJjdXJyZW50XCIgZmllbGQgb24gYWxsIFJlYWN0Q29udGV4dCBpbnN0YW5jZXMuXG4vLyBUaGlzIGdsb2JhbCAoYWN0dWFsbHkgdGhyZWFkIGxvY2FsKSBzdGF0ZSByZXByZXNlbnRzIHdoYXQgc3RhdGUgYWxsIHRob3NlIFwiY3VycmVudFwiLFxuLy8gZmllbGRzIGFyZSBjdXJyZW50bHkgaW4uXG5cbnZhciBjdXJyZW50QWN0aXZlU25hcHNob3QgPSBudWxsO1xuXG5mdW5jdGlvbiBwb3BOb2RlKHByZXYpIHtcbiAge1xuICAgIHByZXYuY29udGV4dC5fY3VycmVudFZhbHVlID0gcHJldi5wYXJlbnRWYWx1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwdXNoTm9kZShuZXh0KSB7XG4gIHtcbiAgICBuZXh0LmNvbnRleHQuX2N1cnJlbnRWYWx1ZSA9IG5leHQudmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9wVG9OZWFyZXN0Q29tbW9uQW5jZXN0b3IocHJldiwgbmV4dCkge1xuICBpZiAocHJldiA9PT0gbmV4dCkgOyBlbHNlIHtcbiAgICBwb3BOb2RlKHByZXYpO1xuICAgIHZhciBwYXJlbnRQcmV2ID0gcHJldi5wYXJlbnQ7XG4gICAgdmFyIHBhcmVudE5leHQgPSBuZXh0LnBhcmVudDtcblxuICAgIGlmIChwYXJlbnRQcmV2ID09PSBudWxsKSB7XG4gICAgICBpZiAocGFyZW50TmV4dCAhPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBzdGFja3MgbXVzdCByZWFjaCB0aGUgcm9vdCBhdCB0aGUgc2FtZSB0aW1lLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LicpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocGFyZW50TmV4dCA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBzdGFja3MgbXVzdCByZWFjaCB0aGUgcm9vdCBhdCB0aGUgc2FtZSB0aW1lLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LicpO1xuICAgICAgfVxuXG4gICAgICBwb3BUb05lYXJlc3RDb21tb25BbmNlc3RvcihwYXJlbnRQcmV2LCBwYXJlbnROZXh0KTtcbiAgICB9IC8vIE9uIHRoZSB3YXkgYmFjaywgd2UgcHVzaCB0aGUgbmV3IG9uZXMgdGhhdCB3ZXJlbid0IGNvbW1vbi5cblxuXG4gICAgcHVzaE5vZGUobmV4dCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9wQWxsUHJldmlvdXMocHJldikge1xuICBwb3BOb2RlKHByZXYpO1xuICB2YXIgcGFyZW50UHJldiA9IHByZXYucGFyZW50O1xuXG4gIGlmIChwYXJlbnRQcmV2ICE9PSBudWxsKSB7XG4gICAgcG9wQWxsUHJldmlvdXMocGFyZW50UHJldik7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHVzaEFsbE5leHQobmV4dCkge1xuICB2YXIgcGFyZW50TmV4dCA9IG5leHQucGFyZW50O1xuXG4gIGlmIChwYXJlbnROZXh0ICE9PSBudWxsKSB7XG4gICAgcHVzaEFsbE5leHQocGFyZW50TmV4dCk7XG4gIH1cblxuICBwdXNoTm9kZShuZXh0KTtcbn1cblxuZnVuY3Rpb24gcG9wUHJldmlvdXNUb0NvbW1vbkxldmVsKHByZXYsIG5leHQpIHtcbiAgcG9wTm9kZShwcmV2KTtcbiAgdmFyIHBhcmVudFByZXYgPSBwcmV2LnBhcmVudDtcblxuICBpZiAocGFyZW50UHJldiA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRlcHRoIG11c3QgZXF1YWwgYXQgbGVhc3QgYXQgemVybyBiZWZvcmUgcmVhY2hpbmcgdGhlIHJvb3QuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuJyk7XG4gIH1cblxuICBpZiAocGFyZW50UHJldi5kZXB0aCA9PT0gbmV4dC5kZXB0aCkge1xuICAgIC8vIFdlIGZvdW5kIHRoZSBzYW1lIGxldmVsLiBOb3cgd2UganVzdCBuZWVkIHRvIGZpbmQgYSBzaGFyZWQgYW5jZXN0b3IuXG4gICAgcG9wVG9OZWFyZXN0Q29tbW9uQW5jZXN0b3IocGFyZW50UHJldiwgbmV4dCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gV2UgbXVzdCBzdGlsbCBiZSBkZWVwZXIuXG4gICAgcG9wUHJldmlvdXNUb0NvbW1vbkxldmVsKHBhcmVudFByZXYsIG5leHQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBvcE5leHRUb0NvbW1vbkxldmVsKHByZXYsIG5leHQpIHtcbiAgdmFyIHBhcmVudE5leHQgPSBuZXh0LnBhcmVudDtcblxuICBpZiAocGFyZW50TmV4dCA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRlcHRoIG11c3QgZXF1YWwgYXQgbGVhc3QgYXQgemVybyBiZWZvcmUgcmVhY2hpbmcgdGhlIHJvb3QuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuJyk7XG4gIH1cblxuICBpZiAocHJldi5kZXB0aCA9PT0gcGFyZW50TmV4dC5kZXB0aCkge1xuICAgIC8vIFdlIGZvdW5kIHRoZSBzYW1lIGxldmVsLiBOb3cgd2UganVzdCBuZWVkIHRvIGZpbmQgYSBzaGFyZWQgYW5jZXN0b3IuXG4gICAgcG9wVG9OZWFyZXN0Q29tbW9uQW5jZXN0b3IocHJldiwgcGFyZW50TmV4dCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gV2UgbXVzdCBzdGlsbCBiZSBkZWVwZXIuXG4gICAgcG9wTmV4dFRvQ29tbW9uTGV2ZWwocHJldiwgcGFyZW50TmV4dCk7XG4gIH1cblxuICBwdXNoTm9kZShuZXh0KTtcbn0gLy8gUGVyZm9ybSBjb250ZXh0IHN3aXRjaGluZyB0byB0aGUgbmV3IHNuYXBzaG90LlxuLy8gVG8gbWFrZSBpdCBjaGVhcCB0byByZWFkIG1hbnkgY29udGV4dHMsIHdoaWxlIG5vdCBzdXNwZW5kaW5nLCB3ZSBtYWtlIHRoZSBzd2l0Y2ggZWFnZXJseSBieVxuLy8gdXBkYXRpbmcgYWxsIHRoZSBjb250ZXh0J3MgY3VycmVudCB2YWx1ZXMuIFRoYXQgd2F5IHJlYWRzLCBhbHdheXMganVzdCByZWFkIHRoZSBjdXJyZW50IHZhbHVlLlxuLy8gQXQgdGhlIGNvc3Qgb2YgdXBkYXRpbmcgY29udGV4dHMgZXZlbiBpZiB0aGV5J3JlIG5ldmVyIHJlYWQgYnkgdGhpcyBzdWJ0cmVlLlxuXG5cbmZ1bmN0aW9uIHN3aXRjaENvbnRleHQobmV3U25hcHNob3QpIHtcbiAgLy8gVGhlIGJhc2ljIGFsZ29yaXRobSB3ZSBuZWVkIHRvIGRvIGlzIHRvIHBvcCBiYWNrIGFueSBjb250ZXh0cyB0aGF0IGFyZSBubyBsb25nZXIgb24gdGhlIHN0YWNrLlxuICAvLyBXZSBhbHNvIG5lZWQgdG8gdXBkYXRlIGFueSBuZXcgY29udGV4dHMgdGhhdCBhcmUgbm93IG9uIHRoZSBzdGFjayB3aXRoIHRoZSBkZWVwZXN0IHZhbHVlLlxuICAvLyBUaGUgZWFzaWVzdCB3YXkgdG8gdXBkYXRlIG5ldyBjb250ZXh0cyBpcyB0byBqdXN0IHJlYXBwbHkgdGhlbSBpbiByZXZlcnNlIG9yZGVyIGZyb20gdGhlXG4gIC8vIHBlcnNwZWN0aXZlIG9mIHRoZSBiYWNrcG9pbnRlcnMuIFRvIGF2b2lkIGFsbG9jYXRpbmcgYSBsb3Qgd2hlbiBzd2l0Y2hpbmcsIHdlIHVzZSB0aGUgc3RhY2tcbiAgLy8gZm9yIHRoYXQuIFRoZXJlZm9yZSB0aGlzIGFsZ29yaXRobSBpcyByZWN1cnNpdmUuXG4gIC8vIDEpIEZpcnN0IHdlIHBvcCB3aGljaCBldmVyIHNuYXBzaG90IHRyZWUgd2FzIGRlZXBlc3QuIFBvcHBpbmcgb2xkIGNvbnRleHRzIGFzIHdlIGdvLlxuICAvLyAyKSBUaGVuIHdlIGZpbmQgdGhlIG5lYXJlc3QgY29tbW9uIGFuY2VzdG9yIGZyb20gdGhlcmUuIFBvcHBpbmcgb2xkIGNvbnRleHRzIGFzIHdlIGdvLlxuICAvLyAzKSBUaGVuIHdlIHJlYXBwbHkgbmV3IGNvbnRleHRzIG9uIHRoZSB3YXkgYmFjayB1cCB0aGUgc3RhY2suXG4gIHZhciBwcmV2ID0gY3VycmVudEFjdGl2ZVNuYXBzaG90O1xuICB2YXIgbmV4dCA9IG5ld1NuYXBzaG90O1xuXG4gIGlmIChwcmV2ICE9PSBuZXh0KSB7XG4gICAgaWYgKHByZXYgPT09IG51bGwpIHtcbiAgICAgIC8vICRGbG93Rml4TWU6IFRoaXMgaGFzIHRvIGJlIG5vbi1udWxsIHNpbmNlIGl0J3Mgbm90IGVxdWFsIHRvIHByZXYuXG4gICAgICBwdXNoQWxsTmV4dChuZXh0KTtcbiAgICB9IGVsc2UgaWYgKG5leHQgPT09IG51bGwpIHtcbiAgICAgIHBvcEFsbFByZXZpb3VzKHByZXYpO1xuICAgIH0gZWxzZSBpZiAocHJldi5kZXB0aCA9PT0gbmV4dC5kZXB0aCkge1xuICAgICAgcG9wVG9OZWFyZXN0Q29tbW9uQW5jZXN0b3IocHJldiwgbmV4dCk7XG4gICAgfSBlbHNlIGlmIChwcmV2LmRlcHRoID4gbmV4dC5kZXB0aCkge1xuICAgICAgcG9wUHJldmlvdXNUb0NvbW1vbkxldmVsKHByZXYsIG5leHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwb3BOZXh0VG9Db21tb25MZXZlbChwcmV2LCBuZXh0KTtcbiAgICB9XG5cbiAgICBjdXJyZW50QWN0aXZlU25hcHNob3QgPSBuZXh0O1xuICB9XG59XG5mdW5jdGlvbiBwdXNoUHJvdmlkZXIoY29udGV4dCwgbmV4dFZhbHVlKSB7XG4gIHZhciBwcmV2VmFsdWU7XG5cbiAge1xuICAgIHByZXZWYWx1ZSA9IGNvbnRleHQuX2N1cnJlbnRWYWx1ZTtcbiAgICBjb250ZXh0Ll9jdXJyZW50VmFsdWUgPSBuZXh0VmFsdWU7XG5cbiAgICB7XG4gICAgICBpZiAoY29udGV4dC5fY3VycmVudFJlbmRlcmVyICE9PSB1bmRlZmluZWQgJiYgY29udGV4dC5fY3VycmVudFJlbmRlcmVyICE9PSBudWxsICYmIGNvbnRleHQuX2N1cnJlbnRSZW5kZXJlciAhPT0gcmVuZGVyZXJTaWdpbCkge1xuICAgICAgICBlcnJvcignRGV0ZWN0ZWQgbXVsdGlwbGUgcmVuZGVyZXJzIGNvbmN1cnJlbnRseSByZW5kZXJpbmcgdGhlICcgKyAnc2FtZSBjb250ZXh0IHByb3ZpZGVyLiBUaGlzIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZC4nKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5fY3VycmVudFJlbmRlcmVyID0gcmVuZGVyZXJTaWdpbDtcbiAgICB9XG4gIH1cblxuICB2YXIgcHJldk5vZGUgPSBjdXJyZW50QWN0aXZlU25hcHNob3Q7XG4gIHZhciBuZXdOb2RlID0ge1xuICAgIHBhcmVudDogcHJldk5vZGUsXG4gICAgZGVwdGg6IHByZXZOb2RlID09PSBudWxsID8gMCA6IHByZXZOb2RlLmRlcHRoICsgMSxcbiAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgIHBhcmVudFZhbHVlOiBwcmV2VmFsdWUsXG4gICAgdmFsdWU6IG5leHRWYWx1ZVxuICB9O1xuICBjdXJyZW50QWN0aXZlU25hcHNob3QgPSBuZXdOb2RlO1xuICByZXR1cm4gbmV3Tm9kZTtcbn1cbmZ1bmN0aW9uIHBvcFByb3ZpZGVyKGNvbnRleHQpIHtcbiAgdmFyIHByZXZTbmFwc2hvdCA9IGN1cnJlbnRBY3RpdmVTbmFwc2hvdDtcblxuICBpZiAocHJldlNuYXBzaG90ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUcmllZCB0byBwb3AgYSBDb250ZXh0IGF0IHRoZSByb290IG9mIHRoZSBhcHAuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuJyk7XG4gIH1cblxuICB7XG4gICAgaWYgKHByZXZTbmFwc2hvdC5jb250ZXh0ICE9PSBjb250ZXh0KSB7XG4gICAgICBlcnJvcignVGhlIHBhcmVudCBjb250ZXh0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgY29udGV4dC4gVGhpcyBpcyBwcm9iYWJseSBhIGJ1ZyBpbiBSZWFjdC4nKTtcbiAgICB9XG4gIH1cblxuICB7XG4gICAgdmFyIHZhbHVlID0gcHJldlNuYXBzaG90LnBhcmVudFZhbHVlO1xuXG4gICAgaWYgKHZhbHVlID09PSBSRUFDVF9TRVJWRVJfQ09OVEVYVF9ERUZBVUxUX1ZBTFVFX05PVF9MT0FERUQpIHtcbiAgICAgIHByZXZTbmFwc2hvdC5jb250ZXh0Ll9jdXJyZW50VmFsdWUgPSBwcmV2U25hcHNob3QuY29udGV4dC5fZGVmYXVsdFZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmV2U25hcHNob3QuY29udGV4dC5fY3VycmVudFZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAge1xuICAgICAgaWYgKGNvbnRleHQuX2N1cnJlbnRSZW5kZXJlciAhPT0gdW5kZWZpbmVkICYmIGNvbnRleHQuX2N1cnJlbnRSZW5kZXJlciAhPT0gbnVsbCAmJiBjb250ZXh0Ll9jdXJyZW50UmVuZGVyZXIgIT09IHJlbmRlcmVyU2lnaWwpIHtcbiAgICAgICAgZXJyb3IoJ0RldGVjdGVkIG11bHRpcGxlIHJlbmRlcmVycyBjb25jdXJyZW50bHkgcmVuZGVyaW5nIHRoZSAnICsgJ3NhbWUgY29udGV4dCBwcm92aWRlci4gVGhpcyBpcyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQuJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQuX2N1cnJlbnRSZW5kZXJlciA9IHJlbmRlcmVyU2lnaWw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGN1cnJlbnRBY3RpdmVTbmFwc2hvdCA9IHByZXZTbmFwc2hvdC5wYXJlbnQ7XG59XG5mdW5jdGlvbiBnZXRBY3RpdmVDb250ZXh0KCkge1xuICByZXR1cm4gY3VycmVudEFjdGl2ZVNuYXBzaG90O1xufVxuZnVuY3Rpb24gcmVhZENvbnRleHQoY29udGV4dCkge1xuICB2YXIgdmFsdWUgPSAgY29udGV4dC5fY3VycmVudFZhbHVlIDtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIGBSZWFjdEluc3RhbmNlTWFwYCBtYWludGFpbnMgYSBtYXBwaW5nIGZyb20gYSBwdWJsaWMgZmFjaW5nIHN0YXRlZnVsXG4gKiBpbnN0YW5jZSAoa2V5KSBhbmQgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uICh2YWx1ZSkuIFRoaXMgYWxsb3dzIHB1YmxpY1xuICogbWV0aG9kcyB0byBhY2NlcHQgdGhlIHVzZXIgZmFjaW5nIGluc3RhbmNlIGFzIGFuIGFyZ3VtZW50IGFuZCBtYXAgdGhlbSBiYWNrXG4gKiB0byBpbnRlcm5hbCBtZXRob2RzLlxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIG1vZHVsZSBpcyBjdXJyZW50bHkgc2hhcmVkIGFuZCBhc3N1bWVkIHRvIGJlIHN0YXRlbGVzcy5cbiAqIElmIHRoaXMgYmVjb21lcyBhbiBhY3R1YWwgTWFwLCB0aGF0IHdpbGwgYnJlYWsuXG4gKi9cbmZ1bmN0aW9uIGdldChrZXkpIHtcbiAgcmV0dXJuIGtleS5fcmVhY3RJbnRlcm5hbHM7XG59XG5mdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkge1xuICBrZXkuX3JlYWN0SW50ZXJuYWxzID0gdmFsdWU7XG59XG5cbnZhciBkaWRXYXJuQWJvdXROb29wVXBkYXRlRm9yQ29tcG9uZW50ID0ge307XG52YXIgZGlkV2FybkFib3V0RGVwcmVjYXRlZFdpbGxNb3VudCA9IHt9O1xudmFyIGRpZFdhcm5BYm91dFVuaW5pdGlhbGl6ZWRTdGF0ZTtcbnZhciBkaWRXYXJuQWJvdXRHZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZVdpdGhvdXREaWRVcGRhdGU7XG52YXIgZGlkV2FybkFib3V0TGVnYWN5TGlmZWN5Y2xlc0FuZERlcml2ZWRTdGF0ZTtcbnZhciBkaWRXYXJuQWJvdXRVbmRlZmluZWREZXJpdmVkU3RhdGU7XG52YXIgd2Fybk9uVW5kZWZpbmVkRGVyaXZlZFN0YXRlO1xudmFyIHdhcm5PbkludmFsaWRDYWxsYmFjaztcbnZhciBkaWRXYXJuQWJvdXREaXJlY3RseUFzc2lnbmluZ1Byb3BzVG9TdGF0ZTtcbnZhciBkaWRXYXJuQWJvdXRDb250ZXh0VHlwZUFuZENvbnRleHRUeXBlcztcbnZhciBkaWRXYXJuQWJvdXRJbnZhbGlkYXRlQ29udGV4dFR5cGU7XG5cbntcbiAgZGlkV2FybkFib3V0VW5pbml0aWFsaXplZFN0YXRlID0gbmV3IFNldCgpO1xuICBkaWRXYXJuQWJvdXRHZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZVdpdGhvdXREaWRVcGRhdGUgPSBuZXcgU2V0KCk7XG4gIGRpZFdhcm5BYm91dExlZ2FjeUxpZmVjeWNsZXNBbmREZXJpdmVkU3RhdGUgPSBuZXcgU2V0KCk7XG4gIGRpZFdhcm5BYm91dERpcmVjdGx5QXNzaWduaW5nUHJvcHNUb1N0YXRlID0gbmV3IFNldCgpO1xuICBkaWRXYXJuQWJvdXRVbmRlZmluZWREZXJpdmVkU3RhdGUgPSBuZXcgU2V0KCk7XG4gIGRpZFdhcm5BYm91dENvbnRleHRUeXBlQW5kQ29udGV4dFR5cGVzID0gbmV3IFNldCgpO1xuICBkaWRXYXJuQWJvdXRJbnZhbGlkYXRlQ29udGV4dFR5cGUgPSBuZXcgU2V0KCk7XG4gIHZhciBkaWRXYXJuT25JbnZhbGlkQ2FsbGJhY2sgPSBuZXcgU2V0KCk7XG5cbiAgd2Fybk9uSW52YWxpZENhbGxiYWNrID0gZnVuY3Rpb24gKGNhbGxiYWNrLCBjYWxsZXJOYW1lKSB7XG4gICAgaWYgKGNhbGxiYWNrID09PSBudWxsIHx8IHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBrZXkgPSBjYWxsZXJOYW1lICsgJ18nICsgY2FsbGJhY2s7XG5cbiAgICBpZiAoIWRpZFdhcm5PbkludmFsaWRDYWxsYmFjay5oYXMoa2V5KSkge1xuICAgICAgZGlkV2Fybk9uSW52YWxpZENhbGxiYWNrLmFkZChrZXkpO1xuXG4gICAgICBlcnJvcignJXMoLi4uKTogRXhwZWN0ZWQgdGhlIGxhc3Qgb3B0aW9uYWwgYGNhbGxiYWNrYCBhcmd1bWVudCB0byBiZSBhICcgKyAnZnVuY3Rpb24uIEluc3RlYWQgcmVjZWl2ZWQ6ICVzLicsIGNhbGxlck5hbWUsIGNhbGxiYWNrKTtcbiAgICB9XG4gIH07XG5cbiAgd2Fybk9uVW5kZWZpbmVkRGVyaXZlZFN0YXRlID0gZnVuY3Rpb24gKHR5cGUsIHBhcnRpYWxTdGF0ZSkge1xuICAgIGlmIChwYXJ0aWFsU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSkgfHwgJ0NvbXBvbmVudCc7XG5cbiAgICAgIGlmICghZGlkV2FybkFib3V0VW5kZWZpbmVkRGVyaXZlZFN0YXRlLmhhcyhjb21wb25lbnROYW1lKSkge1xuICAgICAgICBkaWRXYXJuQWJvdXRVbmRlZmluZWREZXJpdmVkU3RhdGUuYWRkKGNvbXBvbmVudE5hbWUpO1xuXG4gICAgICAgIGVycm9yKCclcy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoKTogQSB2YWxpZCBzdGF0ZSBvYmplY3QgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQuICcgKyAnWW91IGhhdmUgcmV0dXJuZWQgdW5kZWZpbmVkLicsIGNvbXBvbmVudE5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gd2Fybk5vb3AocHVibGljSW5zdGFuY2UsIGNhbGxlck5hbWUpIHtcbiAge1xuICAgIHZhciBfY29uc3RydWN0b3IgPSBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3RvcjtcbiAgICB2YXIgY29tcG9uZW50TmFtZSA9IF9jb25zdHJ1Y3RvciAmJiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoX2NvbnN0cnVjdG9yKSB8fCAnUmVhY3RDbGFzcyc7XG4gICAgdmFyIHdhcm5pbmdLZXkgPSBjb21wb25lbnROYW1lICsgJy4nICsgY2FsbGVyTmFtZTtcblxuICAgIGlmIChkaWRXYXJuQWJvdXROb29wVXBkYXRlRm9yQ29tcG9uZW50W3dhcm5pbmdLZXldKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXJyb3IoJyVzKC4uLik6IENhbiBvbmx5IHVwZGF0ZSBhIG1vdW50aW5nIGNvbXBvbmVudC4gJyArICdUaGlzIHVzdWFsbHkgbWVhbnMgeW91IGNhbGxlZCAlcygpIG91dHNpZGUgY29tcG9uZW50V2lsbE1vdW50KCkgb24gdGhlIHNlcnZlci4gJyArICdUaGlzIGlzIGEgbm8tb3AuXFxuXFxuUGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUsIGNhbGxlck5hbWUsIGNvbXBvbmVudE5hbWUpO1xuXG4gICAgZGlkV2FybkFib3V0Tm9vcFVwZGF0ZUZvckNvbXBvbmVudFt3YXJuaW5nS2V5XSA9IHRydWU7XG4gIH1cbn1cblxudmFyIGNsYXNzQ29tcG9uZW50VXBkYXRlciA9IHtcbiAgaXNNb3VudGVkOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcbiAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAoaW5zdCwgcGF5bG9hZCwgY2FsbGJhY2spIHtcbiAgICB2YXIgaW50ZXJuYWxzID0gZ2V0KGluc3QpO1xuXG4gICAgaWYgKGludGVybmFscy5xdWV1ZSA9PT0gbnVsbCkge1xuICAgICAgd2Fybk5vb3AoaW5zdCwgJ3NldFN0YXRlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGludGVybmFscy5xdWV1ZS5wdXNoKHBheWxvYWQpO1xuXG4gICAgICB7XG4gICAgICAgIGlmIChjYWxsYmFjayAhPT0gdW5kZWZpbmVkICYmIGNhbGxiYWNrICE9PSBudWxsKSB7XG4gICAgICAgICAgd2Fybk9uSW52YWxpZENhbGxiYWNrKGNhbGxiYWNrLCAnc2V0U3RhdGUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKGluc3QsIHBheWxvYWQsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGludGVybmFscyA9IGdldChpbnN0KTtcbiAgICBpbnRlcm5hbHMucmVwbGFjZSA9IHRydWU7XG4gICAgaW50ZXJuYWxzLnF1ZXVlID0gW3BheWxvYWRdO1xuXG4gICAge1xuICAgICAgaWYgKGNhbGxiYWNrICE9PSB1bmRlZmluZWQgJiYgY2FsbGJhY2sgIT09IG51bGwpIHtcbiAgICAgICAgd2Fybk9uSW52YWxpZENhbGxiYWNrKGNhbGxiYWNrLCAnc2V0U3RhdGUnKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGVucXVldWVGb3JjZVVwZGF0ZTogZnVuY3Rpb24gKGluc3QsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGludGVybmFscyA9IGdldChpbnN0KTtcblxuICAgIGlmIChpbnRlcm5hbHMucXVldWUgPT09IG51bGwpIHtcbiAgICAgIHdhcm5Ob29wKGluc3QsICdmb3JjZVVwZGF0ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB7XG4gICAgICAgIGlmIChjYWxsYmFjayAhPT0gdW5kZWZpbmVkICYmIGNhbGxiYWNrICE9PSBudWxsKSB7XG4gICAgICAgICAgd2Fybk9uSW52YWxpZENhbGxiYWNrKGNhbGxiYWNrLCAnc2V0U3RhdGUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gYXBwbHlEZXJpdmVkU3RhdGVGcm9tUHJvcHMoaW5zdGFuY2UsIGN0b3IsIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcywgcHJldlN0YXRlLCBuZXh0UHJvcHMpIHtcbiAgdmFyIHBhcnRpYWxTdGF0ZSA9IGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhuZXh0UHJvcHMsIHByZXZTdGF0ZSk7XG5cbiAge1xuICAgIHdhcm5PblVuZGVmaW5lZERlcml2ZWRTdGF0ZShjdG9yLCBwYXJ0aWFsU3RhdGUpO1xuICB9IC8vIE1lcmdlIHRoZSBwYXJ0aWFsIHN0YXRlIGFuZCB0aGUgcHJldmlvdXMgc3RhdGUuXG5cblxuICB2YXIgbmV3U3RhdGUgPSBwYXJ0aWFsU3RhdGUgPT09IG51bGwgfHwgcGFydGlhbFN0YXRlID09PSB1bmRlZmluZWQgPyBwcmV2U3RhdGUgOiBhc3NpZ24oe30sIHByZXZTdGF0ZSwgcGFydGlhbFN0YXRlKTtcbiAgcmV0dXJuIG5ld1N0YXRlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RDbGFzc0luc3RhbmNlKGN0b3IsIHByb3BzLCBtYXNrZWRMZWdhY3lDb250ZXh0KSB7XG4gIHZhciBjb250ZXh0ID0gZW1wdHlDb250ZXh0T2JqZWN0O1xuICB2YXIgY29udGV4dFR5cGUgPSBjdG9yLmNvbnRleHRUeXBlO1xuXG4gIHtcbiAgICBpZiAoJ2NvbnRleHRUeXBlJyBpbiBjdG9yKSB7XG4gICAgICB2YXIgaXNWYWxpZCA9IC8vIEFsbG93IG51bGwgZm9yIGNvbmRpdGlvbmFsIGRlY2xhcmF0aW9uXG4gICAgICBjb250ZXh0VHlwZSA9PT0gbnVsbCB8fCBjb250ZXh0VHlwZSAhPT0gdW5kZWZpbmVkICYmIGNvbnRleHRUeXBlLiQkdHlwZW9mID09PSBSRUFDVF9DT05URVhUX1RZUEUgJiYgY29udGV4dFR5cGUuX2NvbnRleHQgPT09IHVuZGVmaW5lZDsgLy8gTm90IGEgPENvbnRleHQuQ29uc3VtZXI+XG5cbiAgICAgIGlmICghaXNWYWxpZCAmJiAhZGlkV2FybkFib3V0SW52YWxpZGF0ZUNvbnRleHRUeXBlLmhhcyhjdG9yKSkge1xuICAgICAgICBkaWRXYXJuQWJvdXRJbnZhbGlkYXRlQ29udGV4dFR5cGUuYWRkKGN0b3IpO1xuICAgICAgICB2YXIgYWRkZW5kdW0gPSAnJztcblxuICAgICAgICBpZiAoY29udGV4dFR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFkZGVuZHVtID0gJyBIb3dldmVyLCBpdCBpcyBzZXQgdG8gdW5kZWZpbmVkLiAnICsgJ1RoaXMgY2FuIGJlIGNhdXNlZCBieSBhIHR5cG8gb3IgYnkgbWl4aW5nIHVwIG5hbWVkIGFuZCBkZWZhdWx0IGltcG9ydHMuICcgKyAnVGhpcyBjYW4gYWxzbyBoYXBwZW4gZHVlIHRvIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSwgc28gJyArICd0cnkgbW92aW5nIHRoZSBjcmVhdGVDb250ZXh0KCkgY2FsbCB0byBhIHNlcGFyYXRlIGZpbGUuJztcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY29udGV4dFR5cGUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgYWRkZW5kdW0gPSAnIEhvd2V2ZXIsIGl0IGlzIHNldCB0byBhICcgKyB0eXBlb2YgY29udGV4dFR5cGUgKyAnLic7XG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dFR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX1BST1ZJREVSX1RZUEUpIHtcbiAgICAgICAgICBhZGRlbmR1bSA9ICcgRGlkIHlvdSBhY2NpZGVudGFsbHkgcGFzcyB0aGUgQ29udGV4dC5Qcm92aWRlciBpbnN0ZWFkPyc7XG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dFR5cGUuX2NvbnRleHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIDxDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgIGFkZGVuZHVtID0gJyBEaWQgeW91IGFjY2lkZW50YWxseSBwYXNzIHRoZSBDb250ZXh0LkNvbnN1bWVyIGluc3RlYWQ/JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRlbmR1bSA9ICcgSG93ZXZlciwgaXQgaXMgc2V0IHRvIGFuIG9iamVjdCB3aXRoIGtleXMgeycgKyBPYmplY3Qua2V5cyhjb250ZXh0VHlwZSkuam9pbignLCAnKSArICd9Lic7XG4gICAgICAgIH1cblxuICAgICAgICBlcnJvcignJXMgZGVmaW5lcyBhbiBpbnZhbGlkIGNvbnRleHRUeXBlLiAnICsgJ2NvbnRleHRUeXBlIHNob3VsZCBwb2ludCB0byB0aGUgQ29udGV4dCBvYmplY3QgcmV0dXJuZWQgYnkgUmVhY3QuY3JlYXRlQ29udGV4dCgpLiVzJywgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGN0b3IpIHx8ICdDb21wb25lbnQnLCBhZGRlbmR1bSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBjb250ZXh0VHlwZSA9PT0gJ29iamVjdCcgJiYgY29udGV4dFR5cGUgIT09IG51bGwpIHtcbiAgICBjb250ZXh0ID0gcmVhZENvbnRleHQoY29udGV4dFR5cGUpO1xuICB9IGVsc2Uge1xuICAgIGNvbnRleHQgPSBtYXNrZWRMZWdhY3lDb250ZXh0O1xuICB9XG5cbiAgdmFyIGluc3RhbmNlID0gbmV3IGN0b3IocHJvcHMsIGNvbnRleHQpO1xuXG4gIHtcbiAgICBpZiAodHlwZW9mIGN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID09PSAnZnVuY3Rpb24nICYmIChpbnN0YW5jZS5zdGF0ZSA9PT0gbnVsbCB8fCBpbnN0YW5jZS5zdGF0ZSA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoY3RvcikgfHwgJ0NvbXBvbmVudCc7XG5cbiAgICAgIGlmICghZGlkV2FybkFib3V0VW5pbml0aWFsaXplZFN0YXRlLmhhcyhjb21wb25lbnROYW1lKSkge1xuICAgICAgICBkaWRXYXJuQWJvdXRVbmluaXRpYWxpemVkU3RhdGUuYWRkKGNvbXBvbmVudE5hbWUpO1xuXG4gICAgICAgIGVycm9yKCdgJXNgIHVzZXMgYGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc2AgYnV0IGl0cyBpbml0aWFsIHN0YXRlIGlzICcgKyAnJXMuIFRoaXMgaXMgbm90IHJlY29tbWVuZGVkLiBJbnN0ZWFkLCBkZWZpbmUgdGhlIGluaXRpYWwgc3RhdGUgYnkgJyArICdhc3NpZ25pbmcgYW4gb2JqZWN0IHRvIGB0aGlzLnN0YXRlYCBpbiB0aGUgY29uc3RydWN0b3Igb2YgYCVzYC4gJyArICdUaGlzIGVuc3VyZXMgdGhhdCBgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzYCBhcmd1bWVudHMgaGF2ZSBhIGNvbnNpc3RlbnQgc2hhcGUuJywgY29tcG9uZW50TmFtZSwgaW5zdGFuY2Uuc3RhdGUgPT09IG51bGwgPyAnbnVsbCcgOiAndW5kZWZpbmVkJywgY29tcG9uZW50TmFtZSk7XG4gICAgICB9XG4gICAgfSAvLyBJZiBuZXcgY29tcG9uZW50IEFQSXMgYXJlIGRlZmluZWQsIFwidW5zYWZlXCIgbGlmZWN5Y2xlcyB3b24ndCBiZSBjYWxsZWQuXG4gICAgLy8gV2FybiBhYm91dCB0aGVzZSBsaWZlY3ljbGVzIGlmIHRoZXkgYXJlIHByZXNlbnQuXG4gICAgLy8gRG9uJ3Qgd2FybiBhYm91dCByZWFjdC1saWZlY3ljbGVzLWNvbXBhdCBwb2x5ZmlsbGVkIG1ldGhvZHMgdGhvdWdoLlxuXG5cbiAgICBpZiAodHlwZW9mIGN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID09PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBpbnN0YW5jZS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdmFyIGZvdW5kV2lsbE1vdW50TmFtZSA9IG51bGw7XG4gICAgICB2YXIgZm91bmRXaWxsUmVjZWl2ZVByb3BzTmFtZSA9IG51bGw7XG4gICAgICB2YXIgZm91bmRXaWxsVXBkYXRlTmFtZSA9IG51bGw7XG5cbiAgICAgIGlmICh0eXBlb2YgaW5zdGFuY2UuY29tcG9uZW50V2lsbE1vdW50ID09PSAnZnVuY3Rpb24nICYmIGluc3RhbmNlLmNvbXBvbmVudFdpbGxNb3VudC5fX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nICE9PSB0cnVlKSB7XG4gICAgICAgIGZvdW5kV2lsbE1vdW50TmFtZSA9ICdjb21wb25lbnRXaWxsTW91bnQnO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaW5zdGFuY2UuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBmb3VuZFdpbGxNb3VudE5hbWUgPSAnVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCc7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgaW5zdGFuY2UuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyA9PT0gJ2Z1bmN0aW9uJyAmJiBpbnN0YW5jZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzLl9fc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmcgIT09IHRydWUpIHtcbiAgICAgICAgZm91bmRXaWxsUmVjZWl2ZVByb3BzTmFtZSA9ICdjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJztcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGluc3RhbmNlLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGZvdW5kV2lsbFJlY2VpdmVQcm9wc05hbWUgPSAnVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMnO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGluc3RhbmNlLmNvbXBvbmVudFdpbGxVcGRhdGUgPT09ICdmdW5jdGlvbicgJiYgaW5zdGFuY2UuY29tcG9uZW50V2lsbFVwZGF0ZS5fX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nICE9PSB0cnVlKSB7XG4gICAgICAgIGZvdW5kV2lsbFVwZGF0ZU5hbWUgPSAnY29tcG9uZW50V2lsbFVwZGF0ZSc7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnN0YW5jZS5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBmb3VuZFdpbGxVcGRhdGVOYW1lID0gJ1VOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJztcbiAgICAgIH1cblxuICAgICAgaWYgKGZvdW5kV2lsbE1vdW50TmFtZSAhPT0gbnVsbCB8fCBmb3VuZFdpbGxSZWNlaXZlUHJvcHNOYW1lICE9PSBudWxsIHx8IGZvdW5kV2lsbFVwZGF0ZU5hbWUgIT09IG51bGwpIHtcbiAgICAgICAgdmFyIF9jb21wb25lbnROYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGN0b3IpIHx8ICdDb21wb25lbnQnO1xuXG4gICAgICAgIHZhciBuZXdBcGlOYW1lID0gdHlwZW9mIGN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID09PSAnZnVuY3Rpb24nID8gJ2dldERlcml2ZWRTdGF0ZUZyb21Qcm9wcygpJyA6ICdnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSgpJztcblxuICAgICAgICBpZiAoIWRpZFdhcm5BYm91dExlZ2FjeUxpZmVjeWNsZXNBbmREZXJpdmVkU3RhdGUuaGFzKF9jb21wb25lbnROYW1lKSkge1xuICAgICAgICAgIGRpZFdhcm5BYm91dExlZ2FjeUxpZmVjeWNsZXNBbmREZXJpdmVkU3RhdGUuYWRkKF9jb21wb25lbnROYW1lKTtcblxuICAgICAgICAgIGVycm9yKCdVbnNhZmUgbGVnYWN5IGxpZmVjeWNsZXMgd2lsbCBub3QgYmUgY2FsbGVkIGZvciBjb21wb25lbnRzIHVzaW5nIG5ldyBjb21wb25lbnQgQVBJcy5cXG5cXG4nICsgJyVzIHVzZXMgJXMgYnV0IGFsc28gY29udGFpbnMgdGhlIGZvbGxvd2luZyBsZWdhY3kgbGlmZWN5Y2xlczolcyVzJXNcXG5cXG4nICsgJ1RoZSBhYm92ZSBsaWZlY3ljbGVzIHNob3VsZCBiZSByZW1vdmVkLiBMZWFybiBtb3JlIGFib3V0IHRoaXMgd2FybmluZyBoZXJlOlxcbicgKyAnaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3Vuc2FmZS1jb21wb25lbnQtbGlmZWN5Y2xlcycsIF9jb21wb25lbnROYW1lLCBuZXdBcGlOYW1lLCBmb3VuZFdpbGxNb3VudE5hbWUgIT09IG51bGwgPyBcIlxcbiAgXCIgKyBmb3VuZFdpbGxNb3VudE5hbWUgOiAnJywgZm91bmRXaWxsUmVjZWl2ZVByb3BzTmFtZSAhPT0gbnVsbCA/IFwiXFxuICBcIiArIGZvdW5kV2lsbFJlY2VpdmVQcm9wc05hbWUgOiAnJywgZm91bmRXaWxsVXBkYXRlTmFtZSAhPT0gbnVsbCA/IFwiXFxuICBcIiArIGZvdW5kV2lsbFVwZGF0ZU5hbWUgOiAnJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbmZ1bmN0aW9uIGNoZWNrQ2xhc3NJbnN0YW5jZShpbnN0YW5jZSwgY3RvciwgbmV3UHJvcHMpIHtcbiAge1xuICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGN0b3IpIHx8ICdDb21wb25lbnQnO1xuICAgIHZhciByZW5kZXJQcmVzZW50ID0gaW5zdGFuY2UucmVuZGVyO1xuXG4gICAgaWYgKCFyZW5kZXJQcmVzZW50KSB7XG4gICAgICBpZiAoY3Rvci5wcm90b3R5cGUgJiYgdHlwZW9mIGN0b3IucHJvdG90eXBlLnJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBlcnJvcignJXMoLi4uKTogTm8gYHJlbmRlcmAgbWV0aG9kIGZvdW5kIG9uIHRoZSByZXR1cm5lZCBjb21wb25lbnQgJyArICdpbnN0YW5jZTogZGlkIHlvdSBhY2NpZGVudGFsbHkgcmV0dXJuIGFuIG9iamVjdCBmcm9tIHRoZSBjb25zdHJ1Y3Rvcj8nLCBuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yKCclcyguLi4pOiBObyBgcmVuZGVyYCBtZXRob2QgZm91bmQgb24gdGhlIHJldHVybmVkIGNvbXBvbmVudCAnICsgJ2luc3RhbmNlOiB5b3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIGRlZmluZSBgcmVuZGVyYC4nLCBuYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5zdGFuY2UuZ2V0SW5pdGlhbFN0YXRlICYmICFpbnN0YW5jZS5nZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNzQXBwcm92ZWQgJiYgIWluc3RhbmNlLnN0YXRlKSB7XG4gICAgICBlcnJvcignZ2V0SW5pdGlhbFN0YXRlIHdhcyBkZWZpbmVkIG9uICVzLCBhIHBsYWluIEphdmFTY3JpcHQgY2xhc3MuICcgKyAnVGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgY2xhc3NlcyBjcmVhdGVkIHVzaW5nIFJlYWN0LmNyZWF0ZUNsYXNzLiAnICsgJ0RpZCB5b3UgbWVhbiB0byBkZWZpbmUgYSBzdGF0ZSBwcm9wZXJ0eSBpbnN0ZWFkPycsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChpbnN0YW5jZS5nZXREZWZhdWx0UHJvcHMgJiYgIWluc3RhbmNlLmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCkge1xuICAgICAgZXJyb3IoJ2dldERlZmF1bHRQcm9wcyB3YXMgZGVmaW5lZCBvbiAlcywgYSBwbGFpbiBKYXZhU2NyaXB0IGNsYXNzLiAnICsgJ1RoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNsYXNzZXMgY3JlYXRlZCB1c2luZyBSZWFjdC5jcmVhdGVDbGFzcy4gJyArICdVc2UgYSBzdGF0aWMgcHJvcGVydHkgdG8gZGVmaW5lIGRlZmF1bHRQcm9wcyBpbnN0ZWFkLicsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChpbnN0YW5jZS5wcm9wVHlwZXMpIHtcbiAgICAgIGVycm9yKCdwcm9wVHlwZXMgd2FzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgb24gJXMuIFVzZSBhIHN0YXRpYyAnICsgJ3Byb3BlcnR5IHRvIGRlZmluZSBwcm9wVHlwZXMgaW5zdGVhZC4nLCBuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoaW5zdGFuY2UuY29udGV4dFR5cGUpIHtcbiAgICAgIGVycm9yKCdjb250ZXh0VHlwZSB3YXMgZGVmaW5lZCBhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBvbiAlcy4gVXNlIGEgc3RhdGljICcgKyAncHJvcGVydHkgdG8gZGVmaW5lIGNvbnRleHRUeXBlIGluc3RlYWQuJywgbmFtZSk7XG4gICAgfVxuXG4gICAge1xuICAgICAgaWYgKGluc3RhbmNlLmNvbnRleHRUeXBlcykge1xuICAgICAgICBlcnJvcignY29udGV4dFR5cGVzIHdhcyBkZWZpbmVkIGFzIGFuIGluc3RhbmNlIHByb3BlcnR5IG9uICVzLiBVc2UgYSBzdGF0aWMgJyArICdwcm9wZXJ0eSB0byBkZWZpbmUgY29udGV4dFR5cGVzIGluc3RlYWQuJywgbmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjdG9yLmNvbnRleHRUeXBlICYmIGN0b3IuY29udGV4dFR5cGVzICYmICFkaWRXYXJuQWJvdXRDb250ZXh0VHlwZUFuZENvbnRleHRUeXBlcy5oYXMoY3RvcikpIHtcbiAgICAgICAgZGlkV2FybkFib3V0Q29udGV4dFR5cGVBbmRDb250ZXh0VHlwZXMuYWRkKGN0b3IpO1xuXG4gICAgICAgIGVycm9yKCclcyBkZWNsYXJlcyBib3RoIGNvbnRleHRUeXBlcyBhbmQgY29udGV4dFR5cGUgc3RhdGljIHByb3BlcnRpZXMuICcgKyAnVGhlIGxlZ2FjeSBjb250ZXh0VHlwZXMgcHJvcGVydHkgd2lsbCBiZSBpZ25vcmVkLicsIG5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgaW5zdGFuY2UuY29tcG9uZW50U2hvdWxkVXBkYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBlcnJvcignJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudFNob3VsZFVwZGF0ZSgpLiBEaWQgeW91IG1lYW4gc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk/ICcgKyAnVGhlIG5hbWUgaXMgcGhyYXNlZCBhcyBhIHF1ZXN0aW9uIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzICcgKyAnZXhwZWN0ZWQgdG8gcmV0dXJuIGEgdmFsdWUuJywgbmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKGN0b3IucHJvdG90eXBlICYmIGN0b3IucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50ICYmIHR5cGVvZiBpbnN0YW5jZS5zaG91bGRDb21wb25lbnRVcGRhdGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBlcnJvcignJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCBzaG91bGRDb21wb25lbnRVcGRhdGUoKS4gJyArICdzaG91bGRDb21wb25lbnRVcGRhdGUgc2hvdWxkIG5vdCBiZSB1c2VkIHdoZW4gZXh0ZW5kaW5nIFJlYWN0LlB1cmVDb21wb25lbnQuICcgKyAnUGxlYXNlIGV4dGVuZCBSZWFjdC5Db21wb25lbnQgaWYgc2hvdWxkQ29tcG9uZW50VXBkYXRlIGlzIHVzZWQuJywgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGN0b3IpIHx8ICdBIHB1cmUgY29tcG9uZW50Jyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpbnN0YW5jZS5jb21wb25lbnREaWRVbm1vdW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBlcnJvcignJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVudERpZFVubW91bnQoKS4gQnV0IHRoZXJlIGlzIG5vIHN1Y2ggbGlmZWN5Y2xlIG1ldGhvZC4gJyArICdEaWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFVubW91bnQoKT8nLCBuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGluc3RhbmNlLmNvbXBvbmVudERpZFJlY2VpdmVQcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZXJyb3IoJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnREaWRSZWNlaXZlUHJvcHMoKS4gQnV0IHRoZXJlIGlzIG5vIHN1Y2ggbGlmZWN5Y2xlIG1ldGhvZC4gJyArICdJZiB5b3UgbWVhbnQgdG8gdXBkYXRlIHRoZSBzdGF0ZSBpbiByZXNwb25zZSB0byBjaGFuZ2luZyBwcm9wcywgJyArICd1c2UgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpLiBJZiB5b3UgbWVhbnQgdG8gZmV0Y2ggZGF0YSBvciAnICsgJ3J1biBzaWRlLWVmZmVjdHMgb3IgbXV0YXRpb25zIGFmdGVyIFJlYWN0IGhhcyB1cGRhdGVkIHRoZSBVSSwgdXNlIGNvbXBvbmVudERpZFVwZGF0ZSgpLicsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgaW5zdGFuY2UuY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZXJyb3IoJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/JywgbmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpbnN0YW5jZS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZXJyb3IoJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdVTlNBRkVfY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcygpLiBEaWQgeW91IG1lYW4gVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoKT8nLCBuYW1lKTtcbiAgICB9XG5cbiAgICB2YXIgaGFzTXV0YXRlZFByb3BzID0gaW5zdGFuY2UucHJvcHMgIT09IG5ld1Byb3BzO1xuXG4gICAgaWYgKGluc3RhbmNlLnByb3BzICE9PSB1bmRlZmluZWQgJiYgaGFzTXV0YXRlZFByb3BzKSB7XG4gICAgICBlcnJvcignJXMoLi4uKTogV2hlbiBjYWxsaW5nIHN1cGVyKCkgaW4gYCVzYCwgbWFrZSBzdXJlIHRvIHBhc3MgJyArIFwidXAgdGhlIHNhbWUgcHJvcHMgdGhhdCB5b3VyIGNvbXBvbmVudCdzIGNvbnN0cnVjdG9yIHdhcyBwYXNzZWQuXCIsIG5hbWUsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChpbnN0YW5jZS5kZWZhdWx0UHJvcHMpIHtcbiAgICAgIGVycm9yKCdTZXR0aW5nIGRlZmF1bHRQcm9wcyBhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBvbiAlcyBpcyBub3Qgc3VwcG9ydGVkIGFuZCB3aWxsIGJlIGlnbm9yZWQuJyArICcgSW5zdGVhZCwgZGVmaW5lIGRlZmF1bHRQcm9wcyBhcyBhIHN0YXRpYyBwcm9wZXJ0eSBvbiAlcy4nLCBuYW1lLCBuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGluc3RhbmNlLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0YW5jZS5jb21wb25lbnREaWRVcGRhdGUgIT09ICdmdW5jdGlvbicgJiYgIWRpZFdhcm5BYm91dEdldFNuYXBzaG90QmVmb3JlVXBkYXRlV2l0aG91dERpZFVwZGF0ZS5oYXMoY3RvcikpIHtcbiAgICAgIGRpZFdhcm5BYm91dEdldFNuYXBzaG90QmVmb3JlVXBkYXRlV2l0aG91dERpZFVwZGF0ZS5hZGQoY3Rvcik7XG5cbiAgICAgIGVycm9yKCclczogZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoKSBzaG91bGQgYmUgdXNlZCB3aXRoIGNvbXBvbmVudERpZFVwZGF0ZSgpLiAnICsgJ1RoaXMgY29tcG9uZW50IGRlZmluZXMgZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoKSBvbmx5LicsIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShjdG9yKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpbnN0YW5jZS5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGVycm9yKCclczogZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKCkgaXMgZGVmaW5lZCBhcyBhbiBpbnN0YW5jZSBtZXRob2QgJyArICdhbmQgd2lsbCBiZSBpZ25vcmVkLiBJbnN0ZWFkLCBkZWNsYXJlIGl0IGFzIGEgc3RhdGljIG1ldGhvZC4nLCBuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGluc3RhbmNlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZXJyb3IoJyVzOiBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoKSBpcyBkZWZpbmVkIGFzIGFuIGluc3RhbmNlIG1ldGhvZCAnICsgJ2FuZCB3aWxsIGJlIGlnbm9yZWQuIEluc3RlYWQsIGRlY2xhcmUgaXQgYXMgYSBzdGF0aWMgbWV0aG9kLicsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY3Rvci5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZXJyb3IoJyVzOiBnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSgpIGlzIGRlZmluZWQgYXMgYSBzdGF0aWMgbWV0aG9kICcgKyAnYW5kIHdpbGwgYmUgaWdub3JlZC4gSW5zdGVhZCwgZGVjbGFyZSBpdCBhcyBhbiBpbnN0YW5jZSBtZXRob2QuJywgbmFtZSk7XG4gICAgfVxuXG4gICAgdmFyIF9zdGF0ZSA9IGluc3RhbmNlLnN0YXRlO1xuXG4gICAgaWYgKF9zdGF0ZSAmJiAodHlwZW9mIF9zdGF0ZSAhPT0gJ29iamVjdCcgfHwgaXNBcnJheShfc3RhdGUpKSkge1xuICAgICAgZXJyb3IoJyVzLnN0YXRlOiBtdXN0IGJlIHNldCB0byBhbiBvYmplY3Qgb3IgbnVsbCcsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgaW5zdGFuY2UuZ2V0Q2hpbGRDb250ZXh0ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBjdG9yLmNoaWxkQ29udGV4dFR5cGVzICE9PSAnb2JqZWN0Jykge1xuICAgICAgZXJyb3IoJyVzLmdldENoaWxkQ29udGV4dCgpOiBjaGlsZENvbnRleHRUeXBlcyBtdXN0IGJlIGRlZmluZWQgaW4gb3JkZXIgdG8gJyArICd1c2UgZ2V0Q2hpbGRDb250ZXh0KCkuJywgbmFtZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGxDb21wb25lbnRXaWxsTW91bnQodHlwZSwgaW5zdGFuY2UpIHtcbiAgdmFyIG9sZFN0YXRlID0gaW5zdGFuY2Uuc3RhdGU7XG5cbiAgaWYgKHR5cGVvZiBpbnN0YW5jZS5jb21wb25lbnRXaWxsTW91bnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICB7XG4gICAgICBpZiAoIGluc3RhbmNlLmNvbXBvbmVudFdpbGxNb3VudC5fX3N1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5nICE9PSB0cnVlKSB7XG4gICAgICAgIHZhciBjb21wb25lbnROYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHx8ICdVbmtub3duJztcblxuICAgICAgICBpZiAoIWRpZFdhcm5BYm91dERlcHJlY2F0ZWRXaWxsTW91bnRbY29tcG9uZW50TmFtZV0pIHtcbiAgICAgICAgICB3YXJuKCAvLyBrZWVwIHRoaXMgd2FybmluZyBpbiBzeW5jIHdpdGggUmVhY3RTdHJpY3RNb2RlV2FybmluZy5qc1xuICAgICAgICAgICdjb21wb25lbnRXaWxsTW91bnQgaGFzIGJlZW4gcmVuYW1lZCwgYW5kIGlzIG5vdCByZWNvbW1lbmRlZCBmb3IgdXNlLiAnICsgJ1NlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvdW5zYWZlLWNvbXBvbmVudC1saWZlY3ljbGVzIGZvciBkZXRhaWxzLlxcblxcbicgKyAnKiBNb3ZlIGNvZGUgZnJvbSBjb21wb25lbnRXaWxsTW91bnQgdG8gY29tcG9uZW50RGlkTW91bnQgKHByZWZlcnJlZCBpbiBtb3N0IGNhc2VzKSAnICsgJ29yIHRoZSBjb25zdHJ1Y3Rvci5cXG4nICsgJ1xcblBsZWFzZSB1cGRhdGUgdGhlIGZvbGxvd2luZyBjb21wb25lbnRzOiAlcycsIGNvbXBvbmVudE5hbWUpO1xuXG4gICAgICAgICAgZGlkV2FybkFib3V0RGVwcmVjYXRlZFdpbGxNb3VudFtjb21wb25lbnROYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbnN0YW5jZS5jb21wb25lbnRXaWxsTW91bnQoKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgaW5zdGFuY2UuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGluc3RhbmNlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKTtcbiAgfVxuXG4gIGlmIChvbGRTdGF0ZSAhPT0gaW5zdGFuY2Uuc3RhdGUpIHtcbiAgICB7XG4gICAgICBlcnJvcignJXMuY29tcG9uZW50V2lsbE1vdW50KCk6IEFzc2lnbmluZyBkaXJlY3RseSB0byB0aGlzLnN0YXRlIGlzICcgKyBcImRlcHJlY2F0ZWQgKGV4Y2VwdCBpbnNpZGUgYSBjb21wb25lbnQncyBcIiArICdjb25zdHJ1Y3RvcikuIFVzZSBzZXRTdGF0ZSBpbnN0ZWFkLicsIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB8fCAnQ29tcG9uZW50Jyk7XG4gICAgfVxuXG4gICAgY2xhc3NDb21wb25lbnRVcGRhdGVyLmVucXVldWVSZXBsYWNlU3RhdGUoaW5zdGFuY2UsIGluc3RhbmNlLnN0YXRlLCBudWxsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzVXBkYXRlUXVldWUoaW50ZXJuYWxJbnN0YW5jZSwgaW5zdCwgcHJvcHMsIG1hc2tlZExlZ2FjeUNvbnRleHQpIHtcbiAgaWYgKGludGVybmFsSW5zdGFuY2UucXVldWUgIT09IG51bGwgJiYgaW50ZXJuYWxJbnN0YW5jZS5xdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgdmFyIG9sZFF1ZXVlID0gaW50ZXJuYWxJbnN0YW5jZS5xdWV1ZTtcbiAgICB2YXIgb2xkUmVwbGFjZSA9IGludGVybmFsSW5zdGFuY2UucmVwbGFjZTtcbiAgICBpbnRlcm5hbEluc3RhbmNlLnF1ZXVlID0gbnVsbDtcbiAgICBpbnRlcm5hbEluc3RhbmNlLnJlcGxhY2UgPSBmYWxzZTtcblxuICAgIGlmIChvbGRSZXBsYWNlICYmIG9sZFF1ZXVlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaW5zdC5zdGF0ZSA9IG9sZFF1ZXVlWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbmV4dFN0YXRlID0gb2xkUmVwbGFjZSA/IG9sZFF1ZXVlWzBdIDogaW5zdC5zdGF0ZTtcbiAgICAgIHZhciBkb250TXV0YXRlID0gdHJ1ZTtcblxuICAgICAgZm9yICh2YXIgaSA9IG9sZFJlcGxhY2UgPyAxIDogMDsgaSA8IG9sZFF1ZXVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBwYXJ0aWFsID0gb2xkUXVldWVbaV07XG4gICAgICAgIHZhciBwYXJ0aWFsU3RhdGUgPSB0eXBlb2YgcGFydGlhbCA9PT0gJ2Z1bmN0aW9uJyA/IHBhcnRpYWwuY2FsbChpbnN0LCBuZXh0U3RhdGUsIHByb3BzLCBtYXNrZWRMZWdhY3lDb250ZXh0KSA6IHBhcnRpYWw7XG5cbiAgICAgICAgaWYgKHBhcnRpYWxTdGF0ZSAhPSBudWxsKSB7XG4gICAgICAgICAgaWYgKGRvbnRNdXRhdGUpIHtcbiAgICAgICAgICAgIGRvbnRNdXRhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIG5leHRTdGF0ZSA9IGFzc2lnbih7fSwgbmV4dFN0YXRlLCBwYXJ0aWFsU3RhdGUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhc3NpZ24obmV4dFN0YXRlLCBwYXJ0aWFsU3RhdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpbnN0LnN0YXRlID0gbmV4dFN0YXRlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpbnRlcm5hbEluc3RhbmNlLnF1ZXVlID0gbnVsbDtcbiAgfVxufSAvLyBJbnZva2VzIHRoZSBtb3VudCBsaWZlLWN5Y2xlcyBvbiBhIHByZXZpb3VzbHkgbmV2ZXIgcmVuZGVyZWQgaW5zdGFuY2UuXG5cblxuZnVuY3Rpb24gbW91bnRDbGFzc0luc3RhbmNlKGluc3RhbmNlLCBjdG9yLCBuZXdQcm9wcywgbWFza2VkTGVnYWN5Q29udGV4dCkge1xuICB7XG4gICAgY2hlY2tDbGFzc0luc3RhbmNlKGluc3RhbmNlLCBjdG9yLCBuZXdQcm9wcyk7XG4gIH1cblxuICB2YXIgaW5pdGlhbFN0YXRlID0gaW5zdGFuY2Uuc3RhdGUgIT09IHVuZGVmaW5lZCA/IGluc3RhbmNlLnN0YXRlIDogbnVsbDtcbiAgaW5zdGFuY2UudXBkYXRlciA9IGNsYXNzQ29tcG9uZW50VXBkYXRlcjtcbiAgaW5zdGFuY2UucHJvcHMgPSBuZXdQcm9wcztcbiAgaW5zdGFuY2Uuc3RhdGUgPSBpbml0aWFsU3RhdGU7IC8vIFdlIGRvbid0IGJvdGhlciBpbml0aWFsaXppbmcgdGhlIHJlZnMgb2JqZWN0IG9uIHRoZSBzZXJ2ZXIsIHNpbmNlIHdlJ3JlIG5vdCBnb2luZyB0byByZXNvbHZlIHRoZW0gYW55d2F5LlxuICAvLyBUaGUgaW50ZXJuYWwgaW5zdGFuY2Ugd2lsbCBiZSB1c2VkIHRvIG1hbmFnZSB1cGRhdGVzIHRoYXQgaGFwcGVuIGR1cmluZyB0aGlzIG1vdW50LlxuXG4gIHZhciBpbnRlcm5hbEluc3RhbmNlID0ge1xuICAgIHF1ZXVlOiBbXSxcbiAgICByZXBsYWNlOiBmYWxzZVxuICB9O1xuICBzZXQoaW5zdGFuY2UsIGludGVybmFsSW5zdGFuY2UpO1xuICB2YXIgY29udGV4dFR5cGUgPSBjdG9yLmNvbnRleHRUeXBlO1xuXG4gIGlmICh0eXBlb2YgY29udGV4dFR5cGUgPT09ICdvYmplY3QnICYmIGNvbnRleHRUeXBlICE9PSBudWxsKSB7XG4gICAgaW5zdGFuY2UuY29udGV4dCA9IHJlYWRDb250ZXh0KGNvbnRleHRUeXBlKTtcbiAgfSBlbHNlIHtcbiAgICBpbnN0YW5jZS5jb250ZXh0ID0gbWFza2VkTGVnYWN5Q29udGV4dDtcbiAgfVxuXG4gIHtcbiAgICBpZiAoaW5zdGFuY2Uuc3RhdGUgPT09IG5ld1Byb3BzKSB7XG4gICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShjdG9yKSB8fCAnQ29tcG9uZW50JztcblxuICAgICAgaWYgKCFkaWRXYXJuQWJvdXREaXJlY3RseUFzc2lnbmluZ1Byb3BzVG9TdGF0ZS5oYXMoY29tcG9uZW50TmFtZSkpIHtcbiAgICAgICAgZGlkV2FybkFib3V0RGlyZWN0bHlBc3NpZ25pbmdQcm9wc1RvU3RhdGUuYWRkKGNvbXBvbmVudE5hbWUpO1xuXG4gICAgICAgIGVycm9yKCclczogSXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIGFzc2lnbiBwcm9wcyBkaXJlY3RseSB0byBzdGF0ZSAnICsgXCJiZWNhdXNlIHVwZGF0ZXMgdG8gcHJvcHMgd29uJ3QgYmUgcmVmbGVjdGVkIGluIHN0YXRlLiBcIiArICdJbiBtb3N0IGNhc2VzLCBpdCBpcyBiZXR0ZXIgdG8gdXNlIHByb3BzIGRpcmVjdGx5LicsIGNvbXBvbmVudE5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPSBjdG9yLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcztcblxuICBpZiAodHlwZW9mIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGluc3RhbmNlLnN0YXRlID0gYXBwbHlEZXJpdmVkU3RhdGVGcm9tUHJvcHMoaW5zdGFuY2UsIGN0b3IsIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcywgaW5pdGlhbFN0YXRlLCBuZXdQcm9wcyk7XG4gIH0gLy8gSW4gb3JkZXIgdG8gc3VwcG9ydCByZWFjdC1saWZlY3ljbGVzLWNvbXBhdCBwb2x5ZmlsbGVkIGNvbXBvbmVudHMsXG4gIC8vIFVuc2FmZSBsaWZlY3ljbGVzIHNob3VsZCBub3QgYmUgaW52b2tlZCBmb3IgY29tcG9uZW50cyB1c2luZyB0aGUgbmV3IEFQSXMuXG5cblxuICBpZiAodHlwZW9mIGN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzICE9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0YW5jZS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSAhPT0gJ2Z1bmN0aW9uJyAmJiAodHlwZW9mIGluc3RhbmNlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIGluc3RhbmNlLmNvbXBvbmVudFdpbGxNb3VudCA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICBjYWxsQ29tcG9uZW50V2lsbE1vdW50KGN0b3IsIGluc3RhbmNlKTsgLy8gSWYgd2UgaGFkIGFkZGl0aW9uYWwgc3RhdGUgdXBkYXRlcyBkdXJpbmcgdGhpcyBsaWZlLWN5Y2xlLCBsZXQnc1xuICAgIC8vIHByb2Nlc3MgdGhlbSBub3cuXG5cbiAgICBwcm9jZXNzVXBkYXRlUXVldWUoaW50ZXJuYWxJbnN0YW5jZSwgaW5zdGFuY2UsIG5ld1Byb3BzLCBtYXNrZWRMZWdhY3lDb250ZXh0KTtcbiAgfVxufVxuXG4vLyBJZHMgYXJlIGJhc2UgMzIgc3RyaW5ncyB3aG9zZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gY29ycmVzcG9uZHMgdG8gdGhlXG4vLyBwb3NpdGlvbiBvZiBhIG5vZGUgaW4gYSB0cmVlLlxuLy8gRXZlcnkgdGltZSB0aGUgdHJlZSBmb3JrcyBpbnRvIG11bHRpcGxlIGNoaWxkcmVuLCB3ZSBhZGQgYWRkaXRpb25hbCBiaXRzIHRvXG4vLyB0aGUgbGVmdCBvZiB0aGUgc2VxdWVuY2UgdGhhdCByZXByZXNlbnQgdGhlIHBvc2l0aW9uIG9mIHRoZSBjaGlsZCB3aXRoaW4gdGhlXG4vLyBjdXJyZW50IGxldmVsIG9mIGNoaWxkcmVuLlxuLy9cbi8vICAgICAgMDAxMDEgICAgICAgMDAwMTAwMDEwMTEwMTAxMDFcbi8vICAgICAg4pWw4pSA4pSs4pSA4pWvICAgICAgIOKVsOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKVr1xuLy8gICBGb3JrIDUgb2YgMjAgICAgICAgUGFyZW50IGlkXG4vL1xuLy8gVGhlIGxlYWRpbmcgMHMgYXJlIGltcG9ydGFudC4gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHlvdSBvbmx5IG5lZWQgMyBiaXRzIHRvXG4vLyByZXByZXNlbnQgc2xvdCA1LiBIb3dldmVyLCB5b3UgbmVlZCA1IGJpdHMgdG8gcmVwcmVzZW50IGFsbCB0aGUgZm9ya3MgYXRcbi8vIHRoZSBjdXJyZW50IGxldmVsLCBzbyB3ZSBtdXN0IGFjY291bnQgZm9yIHRoZSBlbXB0eSBiaXRzIGF0IHRoZSBlbmQuXG4vL1xuLy8gRm9yIHRoaXMgc2FtZSByZWFzb24sIHNsb3RzIGFyZSAxLWluZGV4ZWQgaW5zdGVhZCBvZiAwLWluZGV4ZWQuIE90aGVyd2lzZSxcbi8vIHRoZSB6ZXJvdGggaWQgYXQgYSBsZXZlbCB3b3VsZCBiZSBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGl0cyBwYXJlbnQuXG4vL1xuLy8gSWYgYSBub2RlIGhhcyBvbmx5IG9uZSBjaGlsZCwgYW5kIGRvZXMgbm90IG1hdGVyaWFsaXplIGFuIGlkIChpLmUuIGRvZXMgbm90XG4vLyBjb250YWluIGEgdXNlSWQgaG9vayksIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBhbGxvY2F0ZSBhbnkgc3BhY2UgaW4gdGhlXG4vLyBzZXF1ZW5jZS4gSXQncyB0cmVhdGVkIGFzIGEgdHJhbnNwYXJlbnQgaW5kaXJlY3Rpb24uIEZvciBleGFtcGxlLCB0aGVzZSB0d29cbi8vIHRyZWVzIHByb2R1Y2UgdGhlIHNhbWUgaWRzOlxuLy9cbi8vIDw+ICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuLy8gICA8SW5kaXJlY3Rpb24+ICAgICAgICAgICAgICAgPEEgLz5cbi8vICAgICA8QSAvPiAgICAgICAgICAgICAgICAgICAgIDxCIC8+XG4vLyAgIDwvSW5kaXJlY3Rpb24+ICAgICAgICAgICAgPC8+XG4vLyAgIDxCIC8+XG4vLyA8Lz5cbi8vXG4vLyBIb3dldmVyLCB3ZSBjYW5ub3Qgc2tpcCBhbnkgbm9kZSB0aGF0IG1hdGVyaWFsaXplcyBhbiBpZC4gT3RoZXJ3aXNlLCBhIHBhcmVudFxuLy8gaWQgdGhhdCBkb2VzIG5vdCBmb3JrIHdvdWxkIGJlIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gaXRzIGNoaWxkIGlkLiBGb3Jcbi8vIGV4YW1wbGUsIHRoaXMgdHJlZSBkb2VzIG5vdCBmb3JrLCBidXQgdGhlIHBhcmVudCBhbmQgY2hpbGQgbXVzdCBoYXZlXG4vLyBkaWZmZXJlbnQgaWRzLlxuLy9cbi8vIDxQYXJlbnQ+XG4vLyAgIDxDaGlsZCAvPlxuLy8gPC9QYXJlbnQ+XG4vL1xuLy8gVG8gaGFuZGxlIHRoaXMgc2NlbmFyaW8sIGV2ZXJ5IHRpbWUgd2UgbWF0ZXJpYWxpemUgYW4gaWQsIHdlIGFsbG9jYXRlIGFcbi8vIG5ldyBsZXZlbCB3aXRoIGEgc2luZ2xlIHNsb3QuIFlvdSBjYW4gdGhpbmsgb2YgdGhpcyBhcyBhIGZvcmsgd2l0aCBvbmx5IG9uZVxuLy8gcHJvbmcsIG9yIGFuIGFycmF5IG9mIGNoaWxkcmVuIHdpdGggbGVuZ3RoIDEuXG4vL1xuLy8gSXQncyBwb3NzaWJsZSBmb3IgdGhlIHNpemUgb2YgdGhlIHNlcXVlbmNlIHRvIGV4Y2VlZCAzMiBiaXRzLCB0aGUgbWF4XG4vLyBzaXplIGZvciBiaXR3aXNlIG9wZXJhdGlvbnMuIFdoZW4gdGhpcyBoYXBwZW5zLCB3ZSBtYWtlIG1vcmUgcm9vbSBieVxuLy8gY29udmVydGluZyB0aGUgcmlnaHQgcGFydCBvZiB0aGUgaWQgdG8gYSBzdHJpbmcgYW5kIHN0b3JpbmcgaXQgaW4gYW4gb3ZlcmZsb3dcbi8vIHZhcmlhYmxlLiBXZSB1c2UgYSBiYXNlIDMyIHN0cmluZyByZXByZXNlbnRhdGlvbiwgYmVjYXVzZSAzMiBpcyB0aGUgbGFyZ2VzdFxuLy8gcG93ZXIgb2YgMiB0aGF0IGlzIHN1cHBvcnRlZCBieSB0b1N0cmluZygpLiBXZSB3YW50IHRoZSBiYXNlIHRvIGJlIGxhcmdlIHNvXG4vLyB0aGF0IHRoZSByZXN1bHRpbmcgaWRzIGFyZSBjb21wYWN0LCBhbmQgd2Ugd2FudCB0aGUgYmFzZSB0byBiZSBhIHBvd2VyIG9mIDJcbi8vIGJlY2F1c2UgZXZlcnkgbG9nMihiYXNlKSBiaXRzIGNvcnJlc3BvbmRzIHRvIGEgc2luZ2xlIGNoYXJhY3RlciwgaS5lLiBldmVyeVxuLy8gbG9nMigzMikgPSA1IGJpdHMuIFRoYXQgbWVhbnMgd2UgY2FuIGxvcCBiaXRzIG9mZiB0aGUgZW5kIDUgYXQgYSB0aW1lIHdpdGhvdXRcbi8vIGFmZmVjdGluZyB0aGUgZmluYWwgcmVzdWx0LlxudmFyIGVtcHR5VHJlZUNvbnRleHQgPSB7XG4gIGlkOiAxLFxuICBvdmVyZmxvdzogJydcbn07XG5mdW5jdGlvbiBnZXRUcmVlSWQoY29udGV4dCkge1xuICB2YXIgb3ZlcmZsb3cgPSBjb250ZXh0Lm92ZXJmbG93O1xuICB2YXIgaWRXaXRoTGVhZGluZ0JpdCA9IGNvbnRleHQuaWQ7XG4gIHZhciBpZCA9IGlkV2l0aExlYWRpbmdCaXQgJiB+Z2V0TGVhZGluZ0JpdChpZFdpdGhMZWFkaW5nQml0KTtcbiAgcmV0dXJuIGlkLnRvU3RyaW5nKDMyKSArIG92ZXJmbG93O1xufVxuZnVuY3Rpb24gcHVzaFRyZWVDb250ZXh0KGJhc2VDb250ZXh0LCB0b3RhbENoaWxkcmVuLCBpbmRleCkge1xuICB2YXIgYmFzZUlkV2l0aExlYWRpbmdCaXQgPSBiYXNlQ29udGV4dC5pZDtcbiAgdmFyIGJhc2VPdmVyZmxvdyA9IGJhc2VDb250ZXh0Lm92ZXJmbG93OyAvLyBUaGUgbGVmdG1vc3QgMSBtYXJrcyB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZSwgbm9uLWluY2x1c2l2ZS4gSXQncyBub3QgcGFydFxuICAvLyBvZiB0aGUgaWQ7IHdlIHVzZSBpdCB0byBhY2NvdW50IGZvciBsZWFkaW5nIDBzLlxuXG4gIHZhciBiYXNlTGVuZ3RoID0gZ2V0Qml0TGVuZ3RoKGJhc2VJZFdpdGhMZWFkaW5nQml0KSAtIDE7XG4gIHZhciBiYXNlSWQgPSBiYXNlSWRXaXRoTGVhZGluZ0JpdCAmIH4oMSA8PCBiYXNlTGVuZ3RoKTtcbiAgdmFyIHNsb3QgPSBpbmRleCArIDE7XG4gIHZhciBsZW5ndGggPSBnZXRCaXRMZW5ndGgodG90YWxDaGlsZHJlbikgKyBiYXNlTGVuZ3RoOyAvLyAzMCBpcyB0aGUgbWF4IGxlbmd0aCB3ZSBjYW4gc3RvcmUgd2l0aG91dCBvdmVyZmxvd2luZywgdGFraW5nIGludG9cbiAgLy8gY29uc2lkZXJhdGlvbiB0aGUgbGVhZGluZyAxIHdlIHVzZSB0byBtYXJrIHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlLlxuXG4gIGlmIChsZW5ndGggPiAzMCkge1xuICAgIC8vIFdlIG92ZXJmbG93ZWQgdGhlIGJpdHdpc2Utc2FmZSByYW5nZS4gRmFsbCBiYWNrIHRvIHNsb3dlciBhbGdvcml0aG0uXG4gICAgLy8gVGhpcyBicmFuY2ggYXNzdW1lcyB0aGUgbGVuZ3RoIG9mIHRoZSBiYXNlIGlkIGlzIGdyZWF0ZXIgdGhhbiA1OyBpdCB3b24ndFxuICAgIC8vIHdvcmsgZm9yIHNtYWxsZXIgaWRzLCBiZWNhdXNlIHlvdSBuZWVkIDUgYml0cyBwZXIgY2hhcmFjdGVyLlxuICAgIC8vXG4gICAgLy8gV2UgZW5jb2RlIHRoZSBpZCBpbiBtdWx0aXBsZSBzdGVwczogZmlyc3QgdGhlIGJhc2UgaWQsIHRoZW4gdGhlXG4gICAgLy8gcmVtYWluaW5nIGRpZ2l0cy5cbiAgICAvL1xuICAgIC8vIEVhY2ggNSBiaXQgc2VxdWVuY2UgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgYmFzZSAzMiBjaGFyYWN0ZXIuIFNvIGZvclxuICAgIC8vIGV4YW1wbGUsIGlmIHRoZSBjdXJyZW50IGlkIGlzIDIzIGJpdHMgbG9uZywgd2UgY2FuIGNvbnZlcnQgMjAgb2YgdGhvc2VcbiAgICAvLyBiaXRzIGludG8gYSBzdHJpbmcgb2YgNCBjaGFyYWN0ZXJzLCB3aXRoIDMgYml0cyBsZWZ0IG92ZXIuXG4gICAgLy9cbiAgICAvLyBGaXJzdCBjYWxjdWxhdGUgaG93IG1hbnkgYml0cyBpbiB0aGUgYmFzZSBpZCByZXByZXNlbnQgYSBjb21wbGV0ZVxuICAgIC8vIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMuXG4gICAgdmFyIG51bWJlck9mT3ZlcmZsb3dCaXRzID0gYmFzZUxlbmd0aCAtIGJhc2VMZW5ndGggJSA1OyAvLyBUaGVuIGNyZWF0ZSBhIGJpdG1hc2sgdGhhdCBzZWxlY3RzIG9ubHkgdGhvc2UgYml0cy5cblxuICAgIHZhciBuZXdPdmVyZmxvd0JpdHMgPSAoMSA8PCBudW1iZXJPZk92ZXJmbG93Qml0cykgLSAxOyAvLyBTZWxlY3QgdGhlIGJpdHMsIGFuZCBjb252ZXJ0IHRoZW0gdG8gYSBiYXNlIDMyIHN0cmluZy5cblxuICAgIHZhciBuZXdPdmVyZmxvdyA9IChiYXNlSWQgJiBuZXdPdmVyZmxvd0JpdHMpLnRvU3RyaW5nKDMyKTsgLy8gTm93IHdlIGNhbiByZW1vdmUgdGhvc2UgYml0cyBmcm9tIHRoZSBiYXNlIGlkLlxuXG4gICAgdmFyIHJlc3RPZkJhc2VJZCA9IGJhc2VJZCA+PiBudW1iZXJPZk92ZXJmbG93Qml0cztcbiAgICB2YXIgcmVzdE9mQmFzZUxlbmd0aCA9IGJhc2VMZW5ndGggLSBudW1iZXJPZk92ZXJmbG93Qml0czsgLy8gRmluYWxseSwgZW5jb2RlIHRoZSByZXN0IG9mIHRoZSBiaXRzIHVzaW5nIHRoZSBub3JtYWwgYWxnb3JpdGhtLiBCZWNhdXNlXG4gICAgLy8gd2UgbWFkZSBtb3JlIHJvb20sIHRoaXMgdGltZSBpdCB3b24ndCBvdmVyZmxvdy5cblxuICAgIHZhciByZXN0T2ZMZW5ndGggPSBnZXRCaXRMZW5ndGgodG90YWxDaGlsZHJlbikgKyByZXN0T2ZCYXNlTGVuZ3RoO1xuICAgIHZhciByZXN0T2ZOZXdCaXRzID0gc2xvdCA8PCByZXN0T2ZCYXNlTGVuZ3RoO1xuICAgIHZhciBpZCA9IHJlc3RPZk5ld0JpdHMgfCByZXN0T2ZCYXNlSWQ7XG4gICAgdmFyIG92ZXJmbG93ID0gbmV3T3ZlcmZsb3cgKyBiYXNlT3ZlcmZsb3c7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiAxIDw8IHJlc3RPZkxlbmd0aCB8IGlkLFxuICAgICAgb3ZlcmZsb3c6IG92ZXJmbG93XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICAvLyBOb3JtYWwgcGF0aFxuICAgIHZhciBuZXdCaXRzID0gc2xvdCA8PCBiYXNlTGVuZ3RoO1xuXG4gICAgdmFyIF9pZCA9IG5ld0JpdHMgfCBiYXNlSWQ7XG5cbiAgICB2YXIgX292ZXJmbG93ID0gYmFzZU92ZXJmbG93O1xuICAgIHJldHVybiB7XG4gICAgICBpZDogMSA8PCBsZW5ndGggfCBfaWQsXG4gICAgICBvdmVyZmxvdzogX292ZXJmbG93XG4gICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRCaXRMZW5ndGgobnVtYmVyKSB7XG4gIHJldHVybiAzMiAtIGNsejMyKG51bWJlcik7XG59XG5cbmZ1bmN0aW9uIGdldExlYWRpbmdCaXQoaWQpIHtcbiAgcmV0dXJuIDEgPDwgZ2V0Qml0TGVuZ3RoKGlkKSAtIDE7XG59IC8vIFRPRE86IE1hdGguY2x6MzIgaXMgc3VwcG9ydGVkIGluIE5vZGUgMTIrLiBNYXliZSB3ZSBjYW4gZHJvcCB0aGUgZmFsbGJhY2suXG5cblxudmFyIGNsejMyID0gTWF0aC5jbHozMiA/IE1hdGguY2x6MzIgOiBjbHozMkZhbGxiYWNrOyAvLyBDb3VudCBsZWFkaW5nIHplcm9zLlxuLy8gQmFzZWQgb246XG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9NYXRoL2NsejMyXG5cbnZhciBsb2cgPSBNYXRoLmxvZztcbnZhciBMTjIgPSBNYXRoLkxOMjtcblxuZnVuY3Rpb24gY2x6MzJGYWxsYmFjayh4KSB7XG4gIHZhciBhc1VpbnQgPSB4ID4+PiAwO1xuXG4gIGlmIChhc1VpbnQgPT09IDApIHtcbiAgICByZXR1cm4gMzI7XG4gIH1cblxuICByZXR1cm4gMzEgLSAobG9nKGFzVWludCkgLyBMTjIgfCAwKSB8IDA7XG59XG5cbi8qKlxuICogaW5saW5lZCBPYmplY3QuaXMgcG9seWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1bWVycyBzaGlwIHRoZWlyIG93blxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzXG4gKi9cbmZ1bmN0aW9uIGlzKHgsIHkpIHtcbiAgcmV0dXJuIHggPT09IHkgJiYgKHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5KSB8fCB4ICE9PSB4ICYmIHkgIT09IHkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgO1xufVxuXG52YXIgb2JqZWN0SXMgPSB0eXBlb2YgT2JqZWN0LmlzID09PSAnZnVuY3Rpb24nID8gT2JqZWN0LmlzIDogaXM7XG5cbnZhciBjdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQgPSBudWxsO1xudmFyIGN1cnJlbnRseVJlbmRlcmluZ1Rhc2sgPSBudWxsO1xudmFyIGZpcnN0V29ya0luUHJvZ3Jlc3NIb29rID0gbnVsbDtcbnZhciB3b3JrSW5Qcm9ncmVzc0hvb2sgPSBudWxsOyAvLyBXaGV0aGVyIHRoZSB3b3JrLWluLXByb2dyZXNzIGhvb2sgaXMgYSByZS1yZW5kZXJlZCBob29rXG5cbnZhciBpc1JlUmVuZGVyID0gZmFsc2U7IC8vIFdoZXRoZXIgYW4gdXBkYXRlIHdhcyBzY2hlZHVsZWQgZHVyaW5nIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHJlbmRlciBwYXNzLlxuXG52YXIgZGlkU2NoZWR1bGVSZW5kZXJQaGFzZVVwZGF0ZSA9IGZhbHNlOyAvLyBDb3VudHMgdGhlIG51bWJlciBvZiB1c2VJZCBob29rcyBpbiB0aGlzIGNvbXBvbmVudFxuXG52YXIgbG9jYWxJZENvdW50ZXIgPSAwOyAvLyBMYXppbHkgY3JlYXRlZCBtYXAgb2YgcmVuZGVyLXBoYXNlIHVwZGF0ZXNcblxudmFyIHJlbmRlclBoYXNlVXBkYXRlcyA9IG51bGw7IC8vIENvdW50ZXIgdG8gcHJldmVudCBpbmZpbml0ZSBsb29wcy5cblxudmFyIG51bWJlck9mUmVSZW5kZXJzID0gMDtcbnZhciBSRV9SRU5ERVJfTElNSVQgPSAyNTtcbnZhciBpc0luSG9va1VzZXJDb2RlSW5EZXYgPSBmYWxzZTsgLy8gSW4gREVWLCB0aGlzIGlzIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHByaW1pdGl2ZSBob29rXG5cbnZhciBjdXJyZW50SG9va05hbWVJbkRldjtcblxuZnVuY3Rpb24gcmVzb2x2ZUN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCgpIHtcbiAgaWYgKGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBob29rIGNhbGwuIEhvb2tzIGNhbiBvbmx5IGJlIGNhbGxlZCBpbnNpZGUgb2YgdGhlIGJvZHkgb2YgYSBmdW5jdGlvbiBjb21wb25lbnQuIFRoaXMgY291bGQgaGFwcGVuIGZvcicgKyAnIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJlYXNvbnM6XFxuJyArICcxLiBZb3UgbWlnaHQgaGF2ZSBtaXNtYXRjaGluZyB2ZXJzaW9ucyBvZiBSZWFjdCBhbmQgdGhlIHJlbmRlcmVyIChzdWNoIGFzIFJlYWN0IERPTSlcXG4nICsgJzIuIFlvdSBtaWdodCBiZSBicmVha2luZyB0aGUgUnVsZXMgb2YgSG9va3NcXG4nICsgJzMuIFlvdSBtaWdodCBoYXZlIG1vcmUgdGhhbiBvbmUgY29weSBvZiBSZWFjdCBpbiB0aGUgc2FtZSBhcHBcXG4nICsgJ1NlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvaW52YWxpZC1ob29rLWNhbGwgZm9yIHRpcHMgYWJvdXQgaG93IHRvIGRlYnVnIGFuZCBmaXggdGhpcyBwcm9ibGVtLicpO1xuICB9XG5cbiAge1xuICAgIGlmIChpc0luSG9va1VzZXJDb2RlSW5EZXYpIHtcbiAgICAgIGVycm9yKCdEbyBub3QgY2FsbCBIb29rcyBpbnNpZGUgdXNlRWZmZWN0KC4uLiksIHVzZU1lbW8oLi4uKSwgb3Igb3RoZXIgYnVpbHQtaW4gSG9va3MuICcgKyAnWW91IGNhbiBvbmx5IGNhbGwgSG9va3MgYXQgdGhlIHRvcCBsZXZlbCBvZiB5b3VyIFJlYWN0IGZ1bmN0aW9uLiAnICsgJ0ZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgJyArICdodHRwczovL3JlYWN0anMub3JnL2xpbmsvcnVsZXMtb2YtaG9va3MnKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50O1xufVxuXG5mdW5jdGlvbiBhcmVIb29rSW5wdXRzRXF1YWwobmV4dERlcHMsIHByZXZEZXBzKSB7XG4gIGlmIChwcmV2RGVwcyA9PT0gbnVsbCkge1xuICAgIHtcbiAgICAgIGVycm9yKCclcyByZWNlaXZlZCBhIGZpbmFsIGFyZ3VtZW50IGR1cmluZyB0aGlzIHJlbmRlciwgYnV0IG5vdCBkdXJpbmcgJyArICd0aGUgcHJldmlvdXMgcmVuZGVyLiBFdmVuIHRob3VnaCB0aGUgZmluYWwgYXJndW1lbnQgaXMgb3B0aW9uYWwsICcgKyAnaXRzIHR5cGUgY2Fubm90IGNoYW5nZSBiZXR3ZWVuIHJlbmRlcnMuJywgY3VycmVudEhvb2tOYW1lSW5EZXYpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHtcbiAgICAvLyBEb24ndCBib3RoZXIgY29tcGFyaW5nIGxlbmd0aHMgaW4gcHJvZCBiZWNhdXNlIHRoZXNlIGFycmF5cyBzaG91bGQgYmVcbiAgICAvLyBwYXNzZWQgaW5saW5lLlxuICAgIGlmIChuZXh0RGVwcy5sZW5ndGggIT09IHByZXZEZXBzLmxlbmd0aCkge1xuICAgICAgZXJyb3IoJ1RoZSBmaW5hbCBhcmd1bWVudCBwYXNzZWQgdG8gJXMgY2hhbmdlZCBzaXplIGJldHdlZW4gcmVuZGVycy4gVGhlICcgKyAnb3JkZXIgYW5kIHNpemUgb2YgdGhpcyBhcnJheSBtdXN0IHJlbWFpbiBjb25zdGFudC5cXG5cXG4nICsgJ1ByZXZpb3VzOiAlc1xcbicgKyAnSW5jb21pbmc6ICVzJywgY3VycmVudEhvb2tOYW1lSW5EZXYsIFwiW1wiICsgbmV4dERlcHMuam9pbignLCAnKSArIFwiXVwiLCBcIltcIiArIHByZXZEZXBzLmpvaW4oJywgJykgKyBcIl1cIik7XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmV2RGVwcy5sZW5ndGggJiYgaSA8IG5leHREZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKG9iamVjdElzKG5leHREZXBzW2ldLCBwcmV2RGVwc1tpXSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVIb29rKCkge1xuICBpZiAobnVtYmVyT2ZSZVJlbmRlcnMgPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZW5kZXJlZCBtb3JlIGhvb2tzIHRoYW4gZHVyaW5nIHRoZSBwcmV2aW91cyByZW5kZXInKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVtb2l6ZWRTdGF0ZTogbnVsbCxcbiAgICBxdWV1ZTogbnVsbCxcbiAgICBuZXh0OiBudWxsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVdvcmtJblByb2dyZXNzSG9vaygpIHtcbiAgaWYgKHdvcmtJblByb2dyZXNzSG9vayA9PT0gbnVsbCkge1xuICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IGhvb2sgaW4gdGhlIGxpc3RcbiAgICBpZiAoZmlyc3RXb3JrSW5Qcm9ncmVzc0hvb2sgPT09IG51bGwpIHtcbiAgICAgIGlzUmVSZW5kZXIgPSBmYWxzZTtcbiAgICAgIGZpcnN0V29ya0luUHJvZ3Jlc3NIb29rID0gd29ya0luUHJvZ3Jlc3NIb29rID0gY3JlYXRlSG9vaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGVyZSdzIGFscmVhZHkgYSB3b3JrLWluLXByb2dyZXNzLiBSZXVzZSBpdC5cbiAgICAgIGlzUmVSZW5kZXIgPSB0cnVlO1xuICAgICAgd29ya0luUHJvZ3Jlc3NIb29rID0gZmlyc3RXb3JrSW5Qcm9ncmVzc0hvb2s7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh3b3JrSW5Qcm9ncmVzc0hvb2submV4dCA9PT0gbnVsbCkge1xuICAgICAgaXNSZVJlbmRlciA9IGZhbHNlOyAvLyBBcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdFxuXG4gICAgICB3b3JrSW5Qcm9ncmVzc0hvb2sgPSB3b3JrSW5Qcm9ncmVzc0hvb2submV4dCA9IGNyZWF0ZUhvb2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhlcmUncyBhbHJlYWR5IGEgd29yay1pbi1wcm9ncmVzcy4gUmV1c2UgaXQuXG4gICAgICBpc1JlUmVuZGVyID0gdHJ1ZTtcbiAgICAgIHdvcmtJblByb2dyZXNzSG9vayA9IHdvcmtJblByb2dyZXNzSG9vay5uZXh0O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB3b3JrSW5Qcm9ncmVzc0hvb2s7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVUb1VzZUhvb2tzKHRhc2ssIGNvbXBvbmVudElkZW50aXR5KSB7XG4gIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCA9IGNvbXBvbmVudElkZW50aXR5O1xuICBjdXJyZW50bHlSZW5kZXJpbmdUYXNrID0gdGFzaztcblxuICB7XG4gICAgaXNJbkhvb2tVc2VyQ29kZUluRGV2ID0gZmFsc2U7XG4gIH0gLy8gVGhlIGZvbGxvd2luZyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gcmVzZXRcbiAgLy8gZGlkU2NoZWR1bGVSZW5kZXJQaGFzZVVwZGF0ZSA9IGZhbHNlO1xuICAvLyBsb2NhbElkQ291bnRlciA9IDA7XG4gIC8vIGZpcnN0V29ya0luUHJvZ3Jlc3NIb29rID0gbnVsbDtcbiAgLy8gbnVtYmVyT2ZSZVJlbmRlcnMgPSAwO1xuICAvLyByZW5kZXJQaGFzZVVwZGF0ZXMgPSBudWxsO1xuICAvLyB3b3JrSW5Qcm9ncmVzc0hvb2sgPSBudWxsO1xuXG5cbiAgbG9jYWxJZENvdW50ZXIgPSAwO1xufVxuZnVuY3Rpb24gZmluaXNoSG9va3MoQ29tcG9uZW50LCBwcm9wcywgY2hpbGRyZW4sIHJlZk9yQ29udGV4dCkge1xuICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIGFmdGVyIGV2ZXJ5IGZ1bmN0aW9uIGNvbXBvbmVudCB0byBwcmV2ZW50IGhvb2tzIGZyb21cbiAgLy8gYmVpbmcgdXNlZCBpbiBjbGFzc2VzLlxuICB3aGlsZSAoZGlkU2NoZWR1bGVSZW5kZXJQaGFzZVVwZGF0ZSkge1xuICAgIC8vIFVwZGF0ZXMgd2VyZSBzY2hlZHVsZWQgZHVyaW5nIHRoZSByZW5kZXIgcGhhc2UuIFRoZXkgYXJlIHN0b3JlZCBpblxuICAgIC8vIHRoZSBgcmVuZGVyUGhhc2VVcGRhdGVzYCBtYXAuIENhbGwgdGhlIGNvbXBvbmVudCBhZ2FpbiwgcmV1c2luZyB0aGVcbiAgICAvLyB3b3JrLWluLXByb2dyZXNzIGhvb2tzIGFuZCBhcHBseWluZyB0aGUgYWRkaXRpb25hbCB1cGRhdGVzIG9uIHRvcC4gS2VlcFxuICAgIC8vIHJlc3RhcnRpbmcgdW50aWwgbm8gbW9yZSB1cGRhdGVzIGFyZSBzY2hlZHVsZWQuXG4gICAgZGlkU2NoZWR1bGVSZW5kZXJQaGFzZVVwZGF0ZSA9IGZhbHNlO1xuICAgIGxvY2FsSWRDb3VudGVyID0gMDtcbiAgICBudW1iZXJPZlJlUmVuZGVycyArPSAxOyAvLyBTdGFydCBvdmVyIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgbGlzdFxuXG4gICAgd29ya0luUHJvZ3Jlc3NIb29rID0gbnVsbDtcbiAgICBjaGlsZHJlbiA9IENvbXBvbmVudChwcm9wcywgcmVmT3JDb250ZXh0KTtcbiAgfVxuXG4gIHJlc2V0SG9va3NTdGF0ZSgpO1xuICByZXR1cm4gY2hpbGRyZW47XG59XG5mdW5jdGlvbiBjaGVja0RpZFJlbmRlcklkSG9vaygpIHtcbiAgLy8gVGhpcyBzaG91bGQgYmUgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIGV2ZXJ5IGZpbmlzaEhvb2tzIGNhbGwuXG4gIC8vIENvbmNlcHR1YWxseSwgaXQncyBwYXJ0IG9mIHRoZSByZXR1cm4gdmFsdWUgb2YgZmluaXNoSG9va3M7IGl0J3Mgb25seSBhXG4gIC8vIHNlcGFyYXRlIGZ1bmN0aW9uIHRvIGF2b2lkIHVzaW5nIGFuIGFycmF5IHR1cGxlLlxuICB2YXIgZGlkUmVuZGVySWRIb29rID0gbG9jYWxJZENvdW50ZXIgIT09IDA7XG4gIHJldHVybiBkaWRSZW5kZXJJZEhvb2s7XG59IC8vIFJlc2V0IHRoZSBpbnRlcm5hbCBob29rcyBzdGF0ZSBpZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgcmVuZGVyaW5nIGEgY29tcG9uZW50XG5cbmZ1bmN0aW9uIHJlc2V0SG9va3NTdGF0ZSgpIHtcbiAge1xuICAgIGlzSW5Ib29rVXNlckNvZGVJbkRldiA9IGZhbHNlO1xuICB9XG5cbiAgY3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50ID0gbnVsbDtcbiAgY3VycmVudGx5UmVuZGVyaW5nVGFzayA9IG51bGw7XG4gIGRpZFNjaGVkdWxlUmVuZGVyUGhhc2VVcGRhdGUgPSBmYWxzZTtcbiAgZmlyc3RXb3JrSW5Qcm9ncmVzc0hvb2sgPSBudWxsO1xuICBudW1iZXJPZlJlUmVuZGVycyA9IDA7XG4gIHJlbmRlclBoYXNlVXBkYXRlcyA9IG51bGw7XG4gIHdvcmtJblByb2dyZXNzSG9vayA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIHJlYWRDb250ZXh0JDEoY29udGV4dCkge1xuICB7XG4gICAgaWYgKGlzSW5Ib29rVXNlckNvZGVJbkRldikge1xuICAgICAgZXJyb3IoJ0NvbnRleHQgY2FuIG9ubHkgYmUgcmVhZCB3aGlsZSBSZWFjdCBpcyByZW5kZXJpbmcuICcgKyAnSW4gY2xhc3NlcywgeW91IGNhbiByZWFkIGl0IGluIHRoZSByZW5kZXIgbWV0aG9kIG9yIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcy4gJyArICdJbiBmdW5jdGlvbiBjb21wb25lbnRzLCB5b3UgY2FuIHJlYWQgaXQgZGlyZWN0bHkgaW4gdGhlIGZ1bmN0aW9uIGJvZHksIGJ1dCBub3QgJyArICdpbnNpZGUgSG9va3MgbGlrZSB1c2VSZWR1Y2VyKCkgb3IgdXNlTWVtbygpLicpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWFkQ29udGV4dChjb250ZXh0KTtcbn1cblxuZnVuY3Rpb24gdXNlQ29udGV4dChjb250ZXh0KSB7XG4gIHtcbiAgICBjdXJyZW50SG9va05hbWVJbkRldiA9ICd1c2VDb250ZXh0JztcbiAgfVxuXG4gIHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgcmV0dXJuIHJlYWRDb250ZXh0KGNvbnRleHQpO1xufVxuXG5mdW5jdGlvbiBiYXNpY1N0YXRlUmVkdWNlcihzdGF0ZSwgYWN0aW9uKSB7XG4gIC8vICRGbG93Rml4TWU6IEZsb3cgZG9lc24ndCBsaWtlIG1peGVkIHR5cGVzXG4gIHJldHVybiB0eXBlb2YgYWN0aW9uID09PSAnZnVuY3Rpb24nID8gYWN0aW9uKHN0YXRlKSA6IGFjdGlvbjtcbn1cblxuZnVuY3Rpb24gdXNlU3RhdGUoaW5pdGlhbFN0YXRlKSB7XG4gIHtcbiAgICBjdXJyZW50SG9va05hbWVJbkRldiA9ICd1c2VTdGF0ZSc7XG4gIH1cblxuICByZXR1cm4gdXNlUmVkdWNlcihiYXNpY1N0YXRlUmVkdWNlciwgLy8gdXNlUmVkdWNlciBoYXMgYSBzcGVjaWFsIGNhc2UgdG8gc3VwcG9ydCBsYXp5IHVzZVN0YXRlIGluaXRpYWxpemVyc1xuICBpbml0aWFsU3RhdGUpO1xufVxuZnVuY3Rpb24gdXNlUmVkdWNlcihyZWR1Y2VyLCBpbml0aWFsQXJnLCBpbml0KSB7XG4gIHtcbiAgICBpZiAocmVkdWNlciAhPT0gYmFzaWNTdGF0ZVJlZHVjZXIpIHtcbiAgICAgIGN1cnJlbnRIb29rTmFtZUluRGV2ID0gJ3VzZVJlZHVjZXInO1xuICAgIH1cbiAgfVxuXG4gIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCA9IHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgd29ya0luUHJvZ3Jlc3NIb29rID0gY3JlYXRlV29ya0luUHJvZ3Jlc3NIb29rKCk7XG5cbiAgaWYgKGlzUmVSZW5kZXIpIHtcbiAgICAvLyBUaGlzIGlzIGEgcmUtcmVuZGVyLiBBcHBseSB0aGUgbmV3IHJlbmRlciBwaGFzZSB1cGRhdGVzIHRvIHRoZSBwcmV2aW91c1xuICAgIC8vIGN1cnJlbnQgaG9vay5cbiAgICB2YXIgcXVldWUgPSB3b3JrSW5Qcm9ncmVzc0hvb2sucXVldWU7XG4gICAgdmFyIGRpc3BhdGNoID0gcXVldWUuZGlzcGF0Y2g7XG5cbiAgICBpZiAocmVuZGVyUGhhc2VVcGRhdGVzICE9PSBudWxsKSB7XG4gICAgICAvLyBSZW5kZXIgcGhhc2UgdXBkYXRlcyBhcmUgc3RvcmVkIGluIGEgbWFwIG9mIHF1ZXVlIC0+IGxpbmtlZCBsaXN0XG4gICAgICB2YXIgZmlyc3RSZW5kZXJQaGFzZVVwZGF0ZSA9IHJlbmRlclBoYXNlVXBkYXRlcy5nZXQocXVldWUpO1xuXG4gICAgICBpZiAoZmlyc3RSZW5kZXJQaGFzZVVwZGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlbmRlclBoYXNlVXBkYXRlcy5kZWxldGUocXVldWUpO1xuICAgICAgICB2YXIgbmV3U3RhdGUgPSB3b3JrSW5Qcm9ncmVzc0hvb2subWVtb2l6ZWRTdGF0ZTtcbiAgICAgICAgdmFyIHVwZGF0ZSA9IGZpcnN0UmVuZGVyUGhhc2VVcGRhdGU7XG5cbiAgICAgICAgZG8ge1xuICAgICAgICAgIC8vIFByb2Nlc3MgdGhpcyByZW5kZXIgcGhhc2UgdXBkYXRlLiBXZSBkb24ndCBoYXZlIHRvIGNoZWNrIHRoZVxuICAgICAgICAgIC8vIHByaW9yaXR5IGJlY2F1c2UgaXQgd2lsbCBhbHdheXMgYmUgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnRcbiAgICAgICAgICAvLyByZW5kZXIncy5cbiAgICAgICAgICB2YXIgYWN0aW9uID0gdXBkYXRlLmFjdGlvbjtcblxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlzSW5Ib29rVXNlckNvZGVJbkRldiA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV3U3RhdGUgPSByZWR1Y2VyKG5ld1N0YXRlLCBhY3Rpb24pO1xuXG4gICAgICAgICAge1xuICAgICAgICAgICAgaXNJbkhvb2tVc2VyQ29kZUluRGV2ID0gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdXBkYXRlID0gdXBkYXRlLm5leHQ7XG4gICAgICAgIH0gd2hpbGUgKHVwZGF0ZSAhPT0gbnVsbCk7XG5cbiAgICAgICAgd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGUgPSBuZXdTdGF0ZTtcbiAgICAgICAgcmV0dXJuIFtuZXdTdGF0ZSwgZGlzcGF0Y2hdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBbd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGUsIGRpc3BhdGNoXTtcbiAgfSBlbHNlIHtcbiAgICB7XG4gICAgICBpc0luSG9va1VzZXJDb2RlSW5EZXYgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBpbml0aWFsU3RhdGU7XG5cbiAgICBpZiAocmVkdWNlciA9PT0gYmFzaWNTdGF0ZVJlZHVjZXIpIHtcbiAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgYHVzZVN0YXRlYC5cbiAgICAgIGluaXRpYWxTdGF0ZSA9IHR5cGVvZiBpbml0aWFsQXJnID09PSAnZnVuY3Rpb24nID8gaW5pdGlhbEFyZygpIDogaW5pdGlhbEFyZztcbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdGlhbFN0YXRlID0gaW5pdCAhPT0gdW5kZWZpbmVkID8gaW5pdChpbml0aWFsQXJnKSA6IGluaXRpYWxBcmc7XG4gICAgfVxuXG4gICAge1xuICAgICAgaXNJbkhvb2tVc2VyQ29kZUluRGV2ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGUgPSBpbml0aWFsU3RhdGU7XG5cbiAgICB2YXIgX3F1ZXVlID0gd29ya0luUHJvZ3Jlc3NIb29rLnF1ZXVlID0ge1xuICAgICAgbGFzdDogbnVsbCxcbiAgICAgIGRpc3BhdGNoOiBudWxsXG4gICAgfTtcblxuICAgIHZhciBfZGlzcGF0Y2ggPSBfcXVldWUuZGlzcGF0Y2ggPSBkaXNwYXRjaEFjdGlvbi5iaW5kKG51bGwsIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCwgX3F1ZXVlKTtcblxuICAgIHJldHVybiBbd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGUsIF9kaXNwYXRjaF07XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlTWVtbyhuZXh0Q3JlYXRlLCBkZXBzKSB7XG4gIGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCA9IHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgd29ya0luUHJvZ3Jlc3NIb29rID0gY3JlYXRlV29ya0luUHJvZ3Jlc3NIb29rKCk7XG4gIHZhciBuZXh0RGVwcyA9IGRlcHMgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBkZXBzO1xuXG4gIGlmICh3b3JrSW5Qcm9ncmVzc0hvb2sgIT09IG51bGwpIHtcbiAgICB2YXIgcHJldlN0YXRlID0gd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGU7XG5cbiAgICBpZiAocHJldlN0YXRlICE9PSBudWxsKSB7XG4gICAgICBpZiAobmV4dERlcHMgIT09IG51bGwpIHtcbiAgICAgICAgdmFyIHByZXZEZXBzID0gcHJldlN0YXRlWzFdO1xuXG4gICAgICAgIGlmIChhcmVIb29rSW5wdXRzRXF1YWwobmV4dERlcHMsIHByZXZEZXBzKSkge1xuICAgICAgICAgIHJldHVybiBwcmV2U3RhdGVbMF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB7XG4gICAgaXNJbkhvb2tVc2VyQ29kZUluRGV2ID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBuZXh0VmFsdWUgPSBuZXh0Q3JlYXRlKCk7XG5cbiAge1xuICAgIGlzSW5Ib29rVXNlckNvZGVJbkRldiA9IGZhbHNlO1xuICB9XG5cbiAgd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGUgPSBbbmV4dFZhbHVlLCBuZXh0RGVwc107XG4gIHJldHVybiBuZXh0VmFsdWU7XG59XG5cbmZ1bmN0aW9uIHVzZVJlZihpbml0aWFsVmFsdWUpIHtcbiAgY3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50ID0gcmVzb2x2ZUN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCgpO1xuICB3b3JrSW5Qcm9ncmVzc0hvb2sgPSBjcmVhdGVXb3JrSW5Qcm9ncmVzc0hvb2soKTtcbiAgdmFyIHByZXZpb3VzUmVmID0gd29ya0luUHJvZ3Jlc3NIb29rLm1lbW9pemVkU3RhdGU7XG5cbiAgaWYgKHByZXZpb3VzUmVmID09PSBudWxsKSB7XG4gICAgdmFyIHJlZiA9IHtcbiAgICAgIGN1cnJlbnQ6IGluaXRpYWxWYWx1ZVxuICAgIH07XG5cbiAgICB7XG4gICAgICBPYmplY3Quc2VhbChyZWYpO1xuICAgIH1cblxuICAgIHdvcmtJblByb2dyZXNzSG9vay5tZW1vaXplZFN0YXRlID0gcmVmO1xuICAgIHJldHVybiByZWY7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHByZXZpb3VzUmVmO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVzZUxheW91dEVmZmVjdChjcmVhdGUsIGlucHV0cykge1xuICB7XG4gICAgY3VycmVudEhvb2tOYW1lSW5EZXYgPSAndXNlTGF5b3V0RWZmZWN0JztcblxuICAgIGVycm9yKCd1c2VMYXlvdXRFZmZlY3QgZG9lcyBub3RoaW5nIG9uIHRoZSBzZXJ2ZXIsIGJlY2F1c2UgaXRzIGVmZmVjdCBjYW5ub3QgJyArIFwiYmUgZW5jb2RlZCBpbnRvIHRoZSBzZXJ2ZXIgcmVuZGVyZXIncyBvdXRwdXQgZm9ybWF0LiBUaGlzIHdpbGwgbGVhZCBcIiArICd0byBhIG1pc21hdGNoIGJldHdlZW4gdGhlIGluaXRpYWwsIG5vbi1oeWRyYXRlZCBVSSBhbmQgdGhlIGludGVuZGVkICcgKyAnVUkuIFRvIGF2b2lkIHRoaXMsIHVzZUxheW91dEVmZmVjdCBzaG91bGQgb25seSBiZSB1c2VkIGluICcgKyAnY29tcG9uZW50cyB0aGF0IHJlbmRlciBleGNsdXNpdmVseSBvbiB0aGUgY2xpZW50LiAnICsgJ1NlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvdXNlbGF5b3V0ZWZmZWN0LXNzciBmb3IgY29tbW9uIGZpeGVzLicpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoQWN0aW9uKGNvbXBvbmVudElkZW50aXR5LCBxdWV1ZSwgYWN0aW9uKSB7XG4gIGlmIChudW1iZXJPZlJlUmVuZGVycyA+PSBSRV9SRU5ERVJfTElNSVQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RvbyBtYW55IHJlLXJlbmRlcnMuIFJlYWN0IGxpbWl0cyB0aGUgbnVtYmVyIG9mIHJlbmRlcnMgdG8gcHJldmVudCAnICsgJ2FuIGluZmluaXRlIGxvb3AuJyk7XG4gIH1cblxuICBpZiAoY29tcG9uZW50SWRlbnRpdHkgPT09IGN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCkge1xuICAgIC8vIFRoaXMgaXMgYSByZW5kZXIgcGhhc2UgdXBkYXRlLiBTdGFzaCBpdCBpbiBhIGxhemlseS1jcmVhdGVkIG1hcCBvZlxuICAgIC8vIHF1ZXVlIC0+IGxpbmtlZCBsaXN0IG9mIHVwZGF0ZXMuIEFmdGVyIHRoaXMgcmVuZGVyIHBhc3MsIHdlJ2xsIHJlc3RhcnRcbiAgICAvLyBhbmQgYXBwbHkgdGhlIHN0YXNoZWQgdXBkYXRlcyBvbiB0b3Agb2YgdGhlIHdvcmstaW4tcHJvZ3Jlc3MgaG9vay5cbiAgICBkaWRTY2hlZHVsZVJlbmRlclBoYXNlVXBkYXRlID0gdHJ1ZTtcbiAgICB2YXIgdXBkYXRlID0ge1xuICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICBuZXh0OiBudWxsXG4gICAgfTtcblxuICAgIGlmIChyZW5kZXJQaGFzZVVwZGF0ZXMgPT09IG51bGwpIHtcbiAgICAgIHJlbmRlclBoYXNlVXBkYXRlcyA9IG5ldyBNYXAoKTtcbiAgICB9XG5cbiAgICB2YXIgZmlyc3RSZW5kZXJQaGFzZVVwZGF0ZSA9IHJlbmRlclBoYXNlVXBkYXRlcy5nZXQocXVldWUpO1xuXG4gICAgaWYgKGZpcnN0UmVuZGVyUGhhc2VVcGRhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVuZGVyUGhhc2VVcGRhdGVzLnNldChxdWV1ZSwgdXBkYXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQXBwZW5kIHRoZSB1cGRhdGUgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC5cbiAgICAgIHZhciBsYXN0UmVuZGVyUGhhc2VVcGRhdGUgPSBmaXJzdFJlbmRlclBoYXNlVXBkYXRlO1xuXG4gICAgICB3aGlsZSAobGFzdFJlbmRlclBoYXNlVXBkYXRlLm5leHQgIT09IG51bGwpIHtcbiAgICAgICAgbGFzdFJlbmRlclBoYXNlVXBkYXRlID0gbGFzdFJlbmRlclBoYXNlVXBkYXRlLm5leHQ7XG4gICAgICB9XG5cbiAgICAgIGxhc3RSZW5kZXJQaGFzZVVwZGF0ZS5uZXh0ID0gdXBkYXRlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB1c2VDYWxsYmFjayhjYWxsYmFjaywgZGVwcykge1xuICByZXR1cm4gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrO1xuICB9LCBkZXBzKTtcbn0gLy8gVE9ETyBEZWNpZGUgb24gaG93IHRvIGltcGxlbWVudCB0aGlzIGhvb2sgZm9yIHNlcnZlciByZW5kZXJpbmcuXG4vLyBJZiBhIG11dGF0aW9uIG9jY3VycyBkdXJpbmcgcmVuZGVyLCBjb25zaWRlciB0cmlnZ2VyaW5nIGEgU3VzcGVuc2UgYm91bmRhcnlcbi8vIGFuZCBmYWxsaW5nIGJhY2sgdG8gY2xpZW50IHJlbmRlcmluZy5cblxuZnVuY3Rpb24gdXNlTXV0YWJsZVNvdXJjZShzb3VyY2UsIGdldFNuYXBzaG90LCBzdWJzY3JpYmUpIHtcbiAgcmVzb2x2ZUN1cnJlbnRseVJlbmRlcmluZ0NvbXBvbmVudCgpO1xuICByZXR1cm4gZ2V0U25hcHNob3Qoc291cmNlLl9zb3VyY2UpO1xufVxuXG5mdW5jdGlvbiB1c2VTeW5jRXh0ZXJuYWxTdG9yZShzdWJzY3JpYmUsIGdldFNuYXBzaG90LCBnZXRTZXJ2ZXJTbmFwc2hvdCkge1xuICBpZiAoZ2V0U2VydmVyU25hcHNob3QgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBnZXRTZXJ2ZXJTbmFwc2hvdCwgd2hpY2ggaXMgcmVxdWlyZWQgZm9yICcgKyAnc2VydmVyLXJlbmRlcmVkIGNvbnRlbnQuIFdpbGwgcmV2ZXJ0IHRvIGNsaWVudCByZW5kZXJpbmcuJyk7XG4gIH1cblxuICByZXR1cm4gZ2V0U2VydmVyU25hcHNob3QoKTtcbn1cblxuZnVuY3Rpb24gdXNlRGVmZXJyZWRWYWx1ZSh2YWx1ZSkge1xuICByZXNvbHZlQ3VycmVudGx5UmVuZGVyaW5nQ29tcG9uZW50KCk7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gdW5zdXBwb3J0ZWRTdGFydFRyYW5zaXRpb24oKSB7XG4gIHRocm93IG5ldyBFcnJvcignc3RhcnRUcmFuc2l0aW9uIGNhbm5vdCBiZSBjYWxsZWQgZHVyaW5nIHNlcnZlciByZW5kZXJpbmcuJyk7XG59XG5cbmZ1bmN0aW9uIHVzZVRyYW5zaXRpb24oKSB7XG4gIHJlc29sdmVDdXJyZW50bHlSZW5kZXJpbmdDb21wb25lbnQoKTtcbiAgcmV0dXJuIFtmYWxzZSwgdW5zdXBwb3J0ZWRTdGFydFRyYW5zaXRpb25dO1xufVxuXG5mdW5jdGlvbiB1c2VJZCgpIHtcbiAgdmFyIHRhc2sgPSBjdXJyZW50bHlSZW5kZXJpbmdUYXNrO1xuICB2YXIgdHJlZUlkID0gZ2V0VHJlZUlkKHRhc2sudHJlZUNvbnRleHQpO1xuICB2YXIgcmVzcG9uc2VTdGF0ZSA9IGN1cnJlbnRSZXNwb25zZVN0YXRlO1xuXG4gIGlmIChyZXNwb25zZVN0YXRlID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGhvb2sgY2FsbC4gSG9va3MgY2FuIG9ubHkgYmUgY2FsbGVkIGluc2lkZSBvZiB0aGUgYm9keSBvZiBhIGZ1bmN0aW9uIGNvbXBvbmVudC4nKTtcbiAgfVxuXG4gIHZhciBsb2NhbElkID0gbG9jYWxJZENvdW50ZXIrKztcbiAgcmV0dXJuIG1ha2VJZChyZXNwb25zZVN0YXRlLCB0cmVlSWQsIGxvY2FsSWQpO1xufVxuXG5mdW5jdGlvbiBub29wKCkge31cblxudmFyIERpc3BhdGNoZXIgPSB7XG4gIHJlYWRDb250ZXh0OiByZWFkQ29udGV4dCQxLFxuICB1c2VDb250ZXh0OiB1c2VDb250ZXh0LFxuICB1c2VNZW1vOiB1c2VNZW1vLFxuICB1c2VSZWR1Y2VyOiB1c2VSZWR1Y2VyLFxuICB1c2VSZWY6IHVzZVJlZixcbiAgdXNlU3RhdGU6IHVzZVN0YXRlLFxuICB1c2VJbnNlcnRpb25FZmZlY3Q6IG5vb3AsXG4gIHVzZUxheW91dEVmZmVjdDogdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VDYWxsYmFjazogdXNlQ2FsbGJhY2ssXG4gIC8vIHVzZUltcGVyYXRpdmVIYW5kbGUgaXMgbm90IHJ1biBpbiB0aGUgc2VydmVyIGVudmlyb25tZW50XG4gIHVzZUltcGVyYXRpdmVIYW5kbGU6IG5vb3AsXG4gIC8vIEVmZmVjdHMgYXJlIG5vdCBydW4gaW4gdGhlIHNlcnZlciBlbnZpcm9ubWVudC5cbiAgdXNlRWZmZWN0OiBub29wLFxuICAvLyBEZWJ1Z2dpbmcgZWZmZWN0XG4gIHVzZURlYnVnVmFsdWU6IG5vb3AsXG4gIHVzZURlZmVycmVkVmFsdWU6IHVzZURlZmVycmVkVmFsdWUsXG4gIHVzZVRyYW5zaXRpb246IHVzZVRyYW5zaXRpb24sXG4gIHVzZUlkOiB1c2VJZCxcbiAgLy8gU3Vic2NyaXB0aW9ucyBhcmUgbm90IHNldHVwIGluIGEgc2VydmVyIGVudmlyb25tZW50LlxuICB1c2VNdXRhYmxlU291cmNlOiB1c2VNdXRhYmxlU291cmNlLFxuICB1c2VTeW5jRXh0ZXJuYWxTdG9yZTogdXNlU3luY0V4dGVybmFsU3RvcmVcbn07XG5cbnZhciBjdXJyZW50UmVzcG9uc2VTdGF0ZSA9IG51bGw7XG5mdW5jdGlvbiBzZXRDdXJyZW50UmVzcG9uc2VTdGF0ZShyZXNwb25zZVN0YXRlKSB7XG4gIGN1cnJlbnRSZXNwb25zZVN0YXRlID0gcmVzcG9uc2VTdGF0ZTtcbn1cblxuZnVuY3Rpb24gZ2V0U3RhY2tCeUNvbXBvbmVudFN0YWNrTm9kZShjb21wb25lbnRTdGFjaykge1xuICB0cnkge1xuICAgIHZhciBpbmZvID0gJyc7XG4gICAgdmFyIG5vZGUgPSBjb21wb25lbnRTdGFjaztcblxuICAgIGRvIHtcbiAgICAgIHN3aXRjaCAobm9kZS50YWcpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgIGluZm8gKz0gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUobm9kZS50eXBlLCBudWxsLCBudWxsKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaW5mbyArPSBkZXNjcmliZUZ1bmN0aW9uQ29tcG9uZW50RnJhbWUobm9kZS50eXBlLCBudWxsLCBudWxsKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaW5mbyArPSBkZXNjcmliZUNsYXNzQ29tcG9uZW50RnJhbWUobm9kZS50eXBlLCBudWxsLCBudWxsKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgbm9kZSA9IG5vZGUucGFyZW50O1xuICAgIH0gd2hpbGUgKG5vZGUpO1xuXG4gICAgcmV0dXJuIGluZm87XG4gIH0gY2F0Y2ggKHgpIHtcbiAgICByZXR1cm4gJ1xcbkVycm9yIGdlbmVyYXRpbmcgc3RhY2s6ICcgKyB4Lm1lc3NhZ2UgKyAnXFxuJyArIHguc3RhY2s7XG4gIH1cbn1cblxudmFyIFJlYWN0Q3VycmVudERpc3BhdGNoZXIkMSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0Q3VycmVudERpc3BhdGNoZXI7XG52YXIgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSQxID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZTtcbnZhciBQRU5ESU5HID0gMDtcbnZhciBDT01QTEVURUQgPSAxO1xudmFyIEZMVVNIRUQgPSAyO1xudmFyIEFCT1JURUQgPSAzO1xudmFyIEVSUk9SRUQgPSA0O1xudmFyIE9QRU4gPSAwO1xudmFyIENMT1NJTkcgPSAxO1xudmFyIENMT1NFRCA9IDI7XG4vLyBUaGlzIGlzIGEgZGVmYXVsdCBoZXVyaXN0aWMgZm9yIGhvdyB0byBzcGxpdCB1cCB0aGUgSFRNTCBjb250ZW50IGludG8gcHJvZ3Jlc3NpdmVcbi8vIGxvYWRpbmcuIE91ciBnb2FsIGlzIHRvIGJlIGFibGUgdG8gZGlzcGxheSBhZGRpdGlvbmFsIG5ldyBjb250ZW50IGFib3V0IGV2ZXJ5IDUwMG1zLlxuLy8gRmFzdGVyIHRoYW4gdGhhdCBpcyB1bm5lY2Vzc2FyeSBhbmQgc2hvdWxkIGJlIHRocm90dGxlZCBvbiB0aGUgY2xpZW50LiBJdCBhbHNvXG4vLyBhZGRzIHVubmVjZXNzYXJ5IG92ZXJoZWFkIHRvIGRvIG1vcmUgc3BsaXRzLiBXZSBkb24ndCBrbm93IGlmIGl0J3MgYSBoaWdoZXIgb3IgbG93ZXJcbi8vIGVuZCBkZXZpY2UgYnV0IGhpZ2hlciBlbmQgc3VmZmVyIGxlc3MgZnJvbSB0aGUgb3ZlcmhlYWQgdGhhbiBsb3dlciBlbmQgZG9lcyBmcm9tXG4vLyBub3QgZ2V0dGluZyBzbWFsbCBlbm91Z2ggcGllY2VzLiBXZSBlcnJvciBvbiB0aGUgc2lkZSBvZiBsb3cgZW5kLlxuLy8gV2UgYmFzZSB0aGlzIG9uIGxvdyBlbmQgM0cgc3BlZWRzIHdoaWNoIGlzIGFib3V0IDUwMGtiaXRzIHBlciBzZWNvbmQuIFdlIGFzc3VtZVxuLy8gdGhhdCB0aGVyZSBjYW4gYmUgYSByZWFzb25hYmxlIGRyb3Agb2ZmIGZyb20gbWF4IGJhbmR3aWR0aCB3aGljaCBsZWF2ZXMgeW91IHdpdGhcbi8vIGFzIGxpdHRsZSBhcyA4MCUuIFdlIGNhbiByZWNlaXZlIGhhbGYgb2YgdGhhdCBlYWNoIDUwMG1zIC0gYXQgYmVzdC4gSW4gcHJhY3RpY2UsXG4vLyBhIGxpdHRsZSBiYW5kd2lkdGggaXMgbG9zdCB0byBwcm9jZXNzaW5nIGFuZCBjb250ZW50aW9uIC0gZS5nLiBDU1MgYW5kIGltYWdlcyB0aGF0XG4vLyBhcmUgZG93bmxvYWRlZCBhbG9uZyB3aXRoIHRoZSBtYWluIGNvbnRlbnQuIFNvIHdlIGVzdGltYXRlIGFib3V0IGhhbGYgb2YgdGhhdCB0byBiZVxuLy8gdGhlIGxvd2VyIGVuZCB0aHJvdWdocHV0LiBJbiBvdGhlciB3b3Jkcywgd2UgZXhwZWN0IHRoYXQgeW91IGNhbiBhdCBsZWFzdCBzaG93XG4vLyBhYm91dCAxMi41a2Igb2YgY29udGVudCBwZXIgNTAwbXMuIE5vdCBjb3VudGluZyBzdGFydGluZyBsYXRlbmN5IGZvciB0aGUgZmlyc3Rcbi8vIHBhaW50LlxuLy8gNTAwICogMTAyNCAvIDggKiAuOCAqIDAuNSAvIDJcbnZhciBERUZBVUxUX1BST0dSRVNTSVZFX0NIVU5LX1NJWkUgPSAxMjgwMDtcblxuZnVuY3Rpb24gZGVmYXVsdEVycm9ySGFuZGxlcihlcnJvcikge1xuICBjb25zb2xlWydlcnJvciddKGVycm9yKTsgLy8gRG9uJ3QgdHJhbnNmb3JtIHRvIG91ciB3cmFwcGVyXG59XG5cbmZ1bmN0aW9uIG5vb3AkMSgpIHt9XG5cbmZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3QoY2hpbGRyZW4sIHJlc3BvbnNlU3RhdGUsIHJvb3RGb3JtYXRDb250ZXh0LCBwcm9ncmVzc2l2ZUNodW5rU2l6ZSwgb25FcnJvciwgb25BbGxSZWFkeSwgb25TaGVsbFJlYWR5LCBvblNoZWxsRXJyb3IsIG9uRmF0YWxFcnJvcikge1xuICB2YXIgcGluZ2VkVGFza3MgPSBbXTtcbiAgdmFyIGFib3J0U2V0ID0gbmV3IFNldCgpO1xuICB2YXIgcmVxdWVzdCA9IHtcbiAgICBkZXN0aW5hdGlvbjogbnVsbCxcbiAgICByZXNwb25zZVN0YXRlOiByZXNwb25zZVN0YXRlLFxuICAgIHByb2dyZXNzaXZlQ2h1bmtTaXplOiBwcm9ncmVzc2l2ZUNodW5rU2l6ZSA9PT0gdW5kZWZpbmVkID8gREVGQVVMVF9QUk9HUkVTU0lWRV9DSFVOS19TSVpFIDogcHJvZ3Jlc3NpdmVDaHVua1NpemUsXG4gICAgc3RhdHVzOiBPUEVOLFxuICAgIGZhdGFsRXJyb3I6IG51bGwsXG4gICAgbmV4dFNlZ21lbnRJZDogMCxcbiAgICBhbGxQZW5kaW5nVGFza3M6IDAsXG4gICAgcGVuZGluZ1Jvb3RUYXNrczogMCxcbiAgICBjb21wbGV0ZWRSb290U2VnbWVudDogbnVsbCxcbiAgICBhYm9ydGFibGVUYXNrczogYWJvcnRTZXQsXG4gICAgcGluZ2VkVGFza3M6IHBpbmdlZFRhc2tzLFxuICAgIGNsaWVudFJlbmRlcmVkQm91bmRhcmllczogW10sXG4gICAgY29tcGxldGVkQm91bmRhcmllczogW10sXG4gICAgcGFydGlhbEJvdW5kYXJpZXM6IFtdLFxuICAgIG9uRXJyb3I6IG9uRXJyb3IgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRFcnJvckhhbmRsZXIgOiBvbkVycm9yLFxuICAgIG9uQWxsUmVhZHk6IG9uQWxsUmVhZHkgPT09IHVuZGVmaW5lZCA/IG5vb3AkMSA6IG9uQWxsUmVhZHksXG4gICAgb25TaGVsbFJlYWR5OiBvblNoZWxsUmVhZHkgPT09IHVuZGVmaW5lZCA/IG5vb3AkMSA6IG9uU2hlbGxSZWFkeSxcbiAgICBvblNoZWxsRXJyb3I6IG9uU2hlbGxFcnJvciA9PT0gdW5kZWZpbmVkID8gbm9vcCQxIDogb25TaGVsbEVycm9yLFxuICAgIG9uRmF0YWxFcnJvcjogb25GYXRhbEVycm9yID09PSB1bmRlZmluZWQgPyBub29wJDEgOiBvbkZhdGFsRXJyb3JcbiAgfTsgLy8gVGhpcyBzZWdtZW50IHJlcHJlc2VudHMgdGhlIHJvb3QgZmFsbGJhY2suXG5cbiAgdmFyIHJvb3RTZWdtZW50ID0gY3JlYXRlUGVuZGluZ1NlZ21lbnQocmVxdWVzdCwgMCwgbnVsbCwgcm9vdEZvcm1hdENvbnRleHQpOyAvLyBUaGVyZSBpcyBubyBwYXJlbnQgc28gY29uY2VwdHVhbGx5LCB3ZSdyZSB1bmJsb2NrZWQgdG8gZmx1c2ggdGhpcyBzZWdtZW50LlxuXG4gIHJvb3RTZWdtZW50LnBhcmVudEZsdXNoZWQgPSB0cnVlO1xuICB2YXIgcm9vdFRhc2sgPSBjcmVhdGVUYXNrKHJlcXVlc3QsIGNoaWxkcmVuLCBudWxsLCByb290U2VnbWVudCwgYWJvcnRTZXQsIGVtcHR5Q29udGV4dE9iamVjdCwgcm9vdENvbnRleHRTbmFwc2hvdCwgZW1wdHlUcmVlQ29udGV4dCk7XG4gIHBpbmdlZFRhc2tzLnB1c2gocm9vdFRhc2spO1xuICByZXR1cm4gcmVxdWVzdDtcbn1cblxuZnVuY3Rpb24gcGluZ1Rhc2socmVxdWVzdCwgdGFzaykge1xuICB2YXIgcGluZ2VkVGFza3MgPSByZXF1ZXN0LnBpbmdlZFRhc2tzO1xuICBwaW5nZWRUYXNrcy5wdXNoKHRhc2spO1xuXG4gIGlmIChwaW5nZWRUYXNrcy5sZW5ndGggPT09IDEpIHtcbiAgICBzY2hlZHVsZVdvcmsoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHBlcmZvcm1Xb3JrKHJlcXVlc3QpO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN1c3BlbnNlQm91bmRhcnkocmVxdWVzdCwgZmFsbGJhY2tBYm9ydGFibGVUYXNrcykge1xuICByZXR1cm4ge1xuICAgIGlkOiBVTklOSVRJQUxJWkVEX1NVU1BFTlNFX0JPVU5EQVJZX0lELFxuICAgIHJvb3RTZWdtZW50SUQ6IC0xLFxuICAgIHBhcmVudEZsdXNoZWQ6IGZhbHNlLFxuICAgIHBlbmRpbmdUYXNrczogMCxcbiAgICBmb3JjZUNsaWVudFJlbmRlcjogZmFsc2UsXG4gICAgY29tcGxldGVkU2VnbWVudHM6IFtdLFxuICAgIGJ5dGVTaXplOiAwLFxuICAgIGZhbGxiYWNrQWJvcnRhYmxlVGFza3M6IGZhbGxiYWNrQWJvcnRhYmxlVGFza3NcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVGFzayhyZXF1ZXN0LCBub2RlLCBibG9ja2VkQm91bmRhcnksIGJsb2NrZWRTZWdtZW50LCBhYm9ydFNldCwgbGVnYWN5Q29udGV4dCwgY29udGV4dCwgdHJlZUNvbnRleHQpIHtcbiAgcmVxdWVzdC5hbGxQZW5kaW5nVGFza3MrKztcblxuICBpZiAoYmxvY2tlZEJvdW5kYXJ5ID09PSBudWxsKSB7XG4gICAgcmVxdWVzdC5wZW5kaW5nUm9vdFRhc2tzKys7XG4gIH0gZWxzZSB7XG4gICAgYmxvY2tlZEJvdW5kYXJ5LnBlbmRpbmdUYXNrcysrO1xuICB9XG5cbiAgdmFyIHRhc2sgPSB7XG4gICAgbm9kZTogbm9kZSxcbiAgICBwaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gcGluZ1Rhc2socmVxdWVzdCwgdGFzayk7XG4gICAgfSxcbiAgICBibG9ja2VkQm91bmRhcnk6IGJsb2NrZWRCb3VuZGFyeSxcbiAgICBibG9ja2VkU2VnbWVudDogYmxvY2tlZFNlZ21lbnQsXG4gICAgYWJvcnRTZXQ6IGFib3J0U2V0LFxuICAgIGxlZ2FjeUNvbnRleHQ6IGxlZ2FjeUNvbnRleHQsXG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICB0cmVlQ29udGV4dDogdHJlZUNvbnRleHRcbiAgfTtcblxuICB7XG4gICAgdGFzay5jb21wb25lbnRTdGFjayA9IG51bGw7XG4gIH1cblxuICBhYm9ydFNldC5hZGQodGFzayk7XG4gIHJldHVybiB0YXNrO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVQZW5kaW5nU2VnbWVudChyZXF1ZXN0LCBpbmRleCwgYm91bmRhcnksIGZvcm1hdENvbnRleHQpIHtcbiAgcmV0dXJuIHtcbiAgICBzdGF0dXM6IFBFTkRJTkcsXG4gICAgaWQ6IC0xLFxuICAgIC8vIGxhemlseSBhc3NpZ25lZCBsYXRlclxuICAgIGluZGV4OiBpbmRleCxcbiAgICBwYXJlbnRGbHVzaGVkOiBmYWxzZSxcbiAgICBjaHVua3M6IFtdLFxuICAgIGNoaWxkcmVuOiBbXSxcbiAgICBmb3JtYXRDb250ZXh0OiBmb3JtYXRDb250ZXh0LFxuICAgIGJvdW5kYXJ5OiBib3VuZGFyeVxuICB9O1xufSAvLyBERVYtb25seSBnbG9iYWwgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2tcblxuXG52YXIgY3VycmVudFRhc2tJbkRFViA9IG51bGw7XG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRTdGFja0luREVWKCkge1xuICB7XG4gICAgaWYgKGN1cnJlbnRUYXNrSW5ERVYgPT09IG51bGwgfHwgY3VycmVudFRhc2tJbkRFVi5jb21wb25lbnRTdGFjayA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRTdGFja0J5Q29tcG9uZW50U3RhY2tOb2RlKGN1cnJlbnRUYXNrSW5ERVYuY29tcG9uZW50U3RhY2spO1xuICB9XG59XG5cbmZ1bmN0aW9uIHB1c2hCdWlsdEluQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrLCB0eXBlKSB7XG4gIHtcbiAgICB0YXNrLmNvbXBvbmVudFN0YWNrID0ge1xuICAgICAgdGFnOiAwLFxuICAgICAgcGFyZW50OiB0YXNrLmNvbXBvbmVudFN0YWNrLFxuICAgICAgdHlwZTogdHlwZVxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gcHVzaEZ1bmN0aW9uQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrLCB0eXBlKSB7XG4gIHtcbiAgICB0YXNrLmNvbXBvbmVudFN0YWNrID0ge1xuICAgICAgdGFnOiAxLFxuICAgICAgcGFyZW50OiB0YXNrLmNvbXBvbmVudFN0YWNrLFxuICAgICAgdHlwZTogdHlwZVxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gcHVzaENsYXNzQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrLCB0eXBlKSB7XG4gIHtcbiAgICB0YXNrLmNvbXBvbmVudFN0YWNrID0ge1xuICAgICAgdGFnOiAyLFxuICAgICAgcGFyZW50OiB0YXNrLmNvbXBvbmVudFN0YWNrLFxuICAgICAgdHlwZTogdHlwZVxuICAgIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gcG9wQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrKSB7XG4gIHtcbiAgICBpZiAodGFzay5jb21wb25lbnRTdGFjayA9PT0gbnVsbCkge1xuICAgICAgZXJyb3IoJ1VuZXhwZWN0ZWRseSBwb3BwZWQgdG9vIG1hbnkgc3RhY2sgZnJhbWVzLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXNrLmNvbXBvbmVudFN0YWNrID0gdGFzay5jb21wb25lbnRTdGFjay5wYXJlbnQ7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGxvZ1JlY292ZXJhYmxlRXJyb3IocmVxdWVzdCwgZXJyb3IpIHtcbiAgLy8gSWYgdGhpcyBjYWxsYmFjayBlcnJvcnMsIHdlIGludGVudGlvbmFsbHkgbGV0IHRoYXQgZXJyb3IgYnViYmxlIHVwIHRvIGJlY29tZSBhIGZhdGFsIGVycm9yXG4gIC8vIHNvIHRoYXQgc29tZW9uZSBmaXhlcyB0aGUgZXJyb3IgcmVwb3J0aW5nIGluc3RlYWQgb2YgaGlkaW5nIGl0LlxuICB2YXIgb25FcnJvciA9IHJlcXVlc3Qub25FcnJvcjtcbiAgb25FcnJvcihlcnJvcik7XG59XG5cbmZ1bmN0aW9uIGZhdGFsRXJyb3IocmVxdWVzdCwgZXJyb3IpIHtcbiAgLy8gVGhpcyBpcyBjYWxsZWQgb3V0c2lkZSBlcnJvciBoYW5kbGluZyBjb2RlIHN1Y2ggYXMgaWYgdGhlIHJvb3QgZXJyb3JzIG91dHNpZGVcbiAgLy8gYSBzdXNwZW5zZSBib3VuZGFyeSBvciBpZiB0aGUgcm9vdCBzdXNwZW5zZSBib3VuZGFyeSdzIGZhbGxiYWNrIGVycm9ycy5cbiAgLy8gSXQncyBhbHNvIGNhbGxlZCBpZiBSZWFjdCBpdHNlbGYgb3IgaXRzIGhvc3QgY29uZmlncyBlcnJvcnMuXG4gIHZhciBvblNoZWxsRXJyb3IgPSByZXF1ZXN0Lm9uU2hlbGxFcnJvcjtcbiAgb25TaGVsbEVycm9yKGVycm9yKTtcbiAgdmFyIG9uRmF0YWxFcnJvciA9IHJlcXVlc3Qub25GYXRhbEVycm9yO1xuICBvbkZhdGFsRXJyb3IoZXJyb3IpO1xuXG4gIGlmIChyZXF1ZXN0LmRlc3RpbmF0aW9uICE9PSBudWxsKSB7XG4gICAgcmVxdWVzdC5zdGF0dXMgPSBDTE9TRUQ7XG4gICAgY2xvc2VXaXRoRXJyb3IocmVxdWVzdC5kZXN0aW5hdGlvbiwgZXJyb3IpO1xuICB9IGVsc2Uge1xuICAgIHJlcXVlc3Quc3RhdHVzID0gQ0xPU0lORztcbiAgICByZXF1ZXN0LmZhdGFsRXJyb3IgPSBlcnJvcjtcbiAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXJTdXNwZW5zZUJvdW5kYXJ5KHJlcXVlc3QsIHRhc2ssIHByb3BzKSB7XG4gIHB1c2hCdWlsdEluQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrLCAnU3VzcGVuc2UnKTtcbiAgdmFyIHBhcmVudEJvdW5kYXJ5ID0gdGFzay5ibG9ja2VkQm91bmRhcnk7XG4gIHZhciBwYXJlbnRTZWdtZW50ID0gdGFzay5ibG9ja2VkU2VnbWVudDsgLy8gRWFjaCB0aW1lIHdlIGVudGVyIGEgc3VzcGVuc2UgYm91bmRhcnksIHdlIHNwbGl0IG91dCBpbnRvIGEgbmV3IHNlZ21lbnQgZm9yXG4gIC8vIHRoZSBmYWxsYmFjayBzbyB0aGF0IHdlIGNhbiBsYXRlciByZXBsYWNlIHRoYXQgc2VnbWVudCB3aXRoIHRoZSBjb250ZW50LlxuICAvLyBUaGlzIGFsc28gbGV0cyB1cyBzcGxpdCBvdXQgdGhlIG1haW4gY29udGVudCBldmVuIGlmIGl0IGRvZXNuJ3Qgc3VzcGVuZCxcbiAgLy8gaW4gY2FzZSBpdCBlbmRzIHVwIGdlbmVyYXRpbmcgYSBsYXJnZSBzdWJ0cmVlIG9mIGNvbnRlbnQuXG5cbiAgdmFyIGZhbGxiYWNrID0gcHJvcHMuZmFsbGJhY2s7XG4gIHZhciBjb250ZW50ID0gcHJvcHMuY2hpbGRyZW47XG4gIHZhciBmYWxsYmFja0Fib3J0U2V0ID0gbmV3IFNldCgpO1xuICB2YXIgbmV3Qm91bmRhcnkgPSBjcmVhdGVTdXNwZW5zZUJvdW5kYXJ5KHJlcXVlc3QsIGZhbGxiYWNrQWJvcnRTZXQpO1xuICB2YXIgaW5zZXJ0aW9uSW5kZXggPSBwYXJlbnRTZWdtZW50LmNodW5rcy5sZW5ndGg7IC8vIFRoZSBjaGlsZHJlbiBvZiB0aGUgYm91bmRhcnkgc2VnbWVudCBpcyBhY3R1YWxseSB0aGUgZmFsbGJhY2suXG5cbiAgdmFyIGJvdW5kYXJ5U2VnbWVudCA9IGNyZWF0ZVBlbmRpbmdTZWdtZW50KHJlcXVlc3QsIGluc2VydGlvbkluZGV4LCBuZXdCb3VuZGFyeSwgcGFyZW50U2VnbWVudC5mb3JtYXRDb250ZXh0KTtcbiAgcGFyZW50U2VnbWVudC5jaGlsZHJlbi5wdXNoKGJvdW5kYXJ5U2VnbWVudCk7IC8vIFRoaXMgc2VnbWVudCBpcyB0aGUgYWN0dWFsIGNoaWxkIGNvbnRlbnQuIFdlIGNhbiBzdGFydCByZW5kZXJpbmcgdGhhdCBpbW1lZGlhdGVseS5cblxuICB2YXIgY29udGVudFJvb3RTZWdtZW50ID0gY3JlYXRlUGVuZGluZ1NlZ21lbnQocmVxdWVzdCwgMCwgbnVsbCwgcGFyZW50U2VnbWVudC5mb3JtYXRDb250ZXh0KTsgLy8gV2UgbWFyayB0aGUgcm9vdCBzZWdtZW50IGFzIGhhdmluZyBpdHMgcGFyZW50IGZsdXNoZWQuIEl0J3Mgbm90IHJlYWxseSBmbHVzaGVkIGJ1dCB0aGVyZSBpc1xuICAvLyBubyBwYXJlbnQgc2VnbWVudCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gd2FpdCBvbi5cblxuICBjb250ZW50Um9vdFNlZ21lbnQucGFyZW50Rmx1c2hlZCA9IHRydWU7IC8vIEN1cnJlbnRseSB0aGlzIGlzIHJ1bm5pbmcgc3luY2hyb25vdXNseS4gV2UgY291bGQgaW5zdGVhZCBzY2hlZHVsZSB0aGlzIHRvIHBpbmdlZFRhc2tzLlxuICAvLyBJIHN1c3BlY3QgdGhhdCB0aGVyZSBtaWdodCBiZSBzb21lIGVmZmljaWVuY3kgYmVuZWZpdHMgZnJvbSBub3QgY3JlYXRpbmcgdGhlIHN1c3BlbmRlZCB0YXNrXG4gIC8vIGFuZCBpbnN0ZWFkIGp1c3QgdXNpbmcgdGhlIHN0YWNrIGlmIHBvc3NpYmxlLlxuICAvLyBUT0RPOiBDYWxsIHRoaXMgZGlyZWN0bHkgaW5zdGVhZCBvZiBtZXNzaW5nIHdpdGggc2F2aW5nIGFuZCByZXN0b3JpbmcgY29udGV4dHMuXG4gIC8vIFdlIGNhbiByZXVzZSB0aGUgY3VycmVudCBjb250ZXh0IGFuZCB0YXNrIHRvIHJlbmRlciB0aGUgY29udGVudCBpbW1lZGlhdGVseSB3aXRob3V0XG4gIC8vIGNvbnRleHQgc3dpdGNoaW5nLiBXZSBqdXN0IG5lZWQgdG8gdGVtcG9yYXJpbHkgc3dpdGNoIHdoaWNoIGJvdW5kYXJ5IGFuZCB3aGljaCBzZWdtZW50XG4gIC8vIHdlJ3JlIHdyaXRpbmcgdG8uIElmIHNvbWV0aGluZyBzdXNwZW5kcywgaXQnbGwgc3Bhd24gbmV3IHN1c3BlbmRlZCB0YXNrIHdpdGggdGhhdCBjb250ZXh0LlxuXG4gIHRhc2suYmxvY2tlZEJvdW5kYXJ5ID0gbmV3Qm91bmRhcnk7XG4gIHRhc2suYmxvY2tlZFNlZ21lbnQgPSBjb250ZW50Um9vdFNlZ21lbnQ7XG5cbiAgdHJ5IHtcbiAgICAvLyBXZSB1c2UgdGhlIHNhZmUgZm9ybSBiZWNhdXNlIHdlIGRvbid0IGhhbmRsZSBzdXNwZW5kaW5nIGhlcmUuIE9ubHkgZXJyb3IgaGFuZGxpbmcuXG4gICAgcmVuZGVyTm9kZShyZXF1ZXN0LCB0YXNrLCBjb250ZW50KTtcbiAgICBjb250ZW50Um9vdFNlZ21lbnQuc3RhdHVzID0gQ09NUExFVEVEO1xuICAgIHF1ZXVlQ29tcGxldGVkU2VnbWVudChuZXdCb3VuZGFyeSwgY29udGVudFJvb3RTZWdtZW50KTtcblxuICAgIGlmIChuZXdCb3VuZGFyeS5wZW5kaW5nVGFza3MgPT09IDApIHtcbiAgICAgIC8vIFRoaXMgbXVzdCBoYXZlIGJlZW4gdGhlIGxhc3Qgc2VnbWVudCB3ZSB3ZXJlIHdhaXRpbmcgb24uIFRoaXMgYm91bmRhcnkgaXMgbm93IGNvbXBsZXRlLlxuICAgICAgLy8gVGhlcmVmb3JlIHdlIHdvbid0IG5lZWQgdGhlIGZhbGxiYWNrLiBXZSBlYXJseSByZXR1cm4gc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGNyZWF0ZVxuICAgICAgLy8gdGhlIGZhbGxiYWNrLlxuICAgICAgcG9wQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29udGVudFJvb3RTZWdtZW50LnN0YXR1cyA9IEVSUk9SRUQ7XG4gICAgbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0LCBlcnJvcik7XG4gICAgbmV3Qm91bmRhcnkuZm9yY2VDbGllbnRSZW5kZXIgPSB0cnVlOyAvLyBXZSBkb24ndCBuZWVkIHRvIGRlY3JlbWVudCBhbnkgdGFzayBudW1iZXJzIGJlY2F1c2Ugd2UgZGlkbid0IHNwYXduIGFueSBuZXcgdGFzay5cbiAgICAvLyBXZSBkb24ndCBuZWVkIHRvIHNjaGVkdWxlIGFueSB0YXNrIGJlY2F1c2Ugd2Uga25vdyB0aGUgcGFyZW50IGhhcyB3cml0dGVuIHlldC5cbiAgICAvLyBXZSBkbyBuZWVkIHRvIGZhbGx0aHJvdWdoIHRvIGNyZWF0ZSB0aGUgZmFsbGJhY2sgdGhvdWdoLlxuICB9IGZpbmFsbHkge1xuICAgIHRhc2suYmxvY2tlZEJvdW5kYXJ5ID0gcGFyZW50Qm91bmRhcnk7XG4gICAgdGFzay5ibG9ja2VkU2VnbWVudCA9IHBhcmVudFNlZ21lbnQ7XG4gIH0gLy8gV2UgY3JlYXRlIHN1c3BlbmRlZCB0YXNrIGZvciB0aGUgZmFsbGJhY2sgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGFjdHVhbGx5IHdvcmtcbiAgLy8gb24gaXQgeWV0IGluIGNhc2Ugd2UgZmluaXNoIHRoZSBtYWluIGNvbnRlbnQsIHNvIHdlIHF1ZXVlIGZvciBsYXRlci5cblxuXG4gIHZhciBzdXNwZW5kZWRGYWxsYmFja1Rhc2sgPSBjcmVhdGVUYXNrKHJlcXVlc3QsIGZhbGxiYWNrLCBwYXJlbnRCb3VuZGFyeSwgYm91bmRhcnlTZWdtZW50LCBmYWxsYmFja0Fib3J0U2V0LCB0YXNrLmxlZ2FjeUNvbnRleHQsIHRhc2suY29udGV4dCwgdGFzay50cmVlQ29udGV4dCk7XG5cbiAge1xuICAgIHN1c3BlbmRlZEZhbGxiYWNrVGFzay5jb21wb25lbnRTdGFjayA9IHRhc2suY29tcG9uZW50U3RhY2s7XG4gIH0gLy8gVE9ETzogVGhpcyBzaG91bGQgYmUgcXVldWVkIGF0IGEgc2VwYXJhdGUgbG93ZXIgcHJpb3JpdHkgcXVldWUgc28gdGhhdCB3ZSBvbmx5IHdvcmtcbiAgLy8gb24gcHJlcGFyaW5nIGZhbGxiYWNrcyBpZiB3ZSBkb24ndCBoYXZlIGFueSBtb3JlIG1haW4gY29udGVudCB0byB0YXNrIG9uLlxuXG5cbiAgcmVxdWVzdC5waW5nZWRUYXNrcy5wdXNoKHN1c3BlbmRlZEZhbGxiYWNrVGFzayk7XG4gIHBvcENvbXBvbmVudFN0YWNrSW5ERVYodGFzayk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckhvc3RFbGVtZW50KHJlcXVlc3QsIHRhc2ssIHR5cGUsIHByb3BzKSB7XG4gIHB1c2hCdWlsdEluQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrLCB0eXBlKTtcbiAgdmFyIHNlZ21lbnQgPSB0YXNrLmJsb2NrZWRTZWdtZW50O1xuICB2YXIgY2hpbGRyZW4gPSBwdXNoU3RhcnRJbnN0YW5jZShzZWdtZW50LmNodW5rcywgdHlwZSwgcHJvcHMsIHJlcXVlc3QucmVzcG9uc2VTdGF0ZSwgc2VnbWVudC5mb3JtYXRDb250ZXh0KTtcbiAgdmFyIHByZXZDb250ZXh0ID0gc2VnbWVudC5mb3JtYXRDb250ZXh0O1xuICBzZWdtZW50LmZvcm1hdENvbnRleHQgPSBnZXRDaGlsZEZvcm1hdENvbnRleHQocHJldkNvbnRleHQsIHR5cGUsIHByb3BzKTsgLy8gV2UgdXNlIHRoZSBub24tZGVzdHJ1Y3RpdmUgZm9ybSBiZWNhdXNlIGlmIHNvbWV0aGluZyBzdXNwZW5kcywgd2Ugc3RpbGxcbiAgLy8gbmVlZCB0byBwb3AgYmFjayB1cCBhbmQgZmluaXNoIHRoaXMgc3VidHJlZSBvZiBIVE1MLlxuXG4gIHJlbmRlck5vZGUocmVxdWVzdCwgdGFzaywgY2hpbGRyZW4pOyAvLyBXZSBleHBlY3QgdGhhdCBlcnJvcnMgd2lsbCBmYXRhbCB0aGUgd2hvbGUgdGFzayBhbmQgdGhhdCB3ZSBkb24ndCBuZWVkXG4gIC8vIHRoZSBjb3JyZWN0IGNvbnRleHQuIFRoZXJlZm9yZSB0aGlzIGlzIG5vdCBpbiBhIGZpbmFsbHkuXG5cbiAgc2VnbWVudC5mb3JtYXRDb250ZXh0ID0gcHJldkNvbnRleHQ7XG4gIHB1c2hFbmRJbnN0YW5jZShzZWdtZW50LmNodW5rcywgdHlwZSk7XG4gIHBvcENvbXBvbmVudFN0YWNrSW5ERVYodGFzayk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZENvbnN0cnVjdCQxKENvbXBvbmVudCkge1xuICByZXR1cm4gQ29tcG9uZW50LnByb3RvdHlwZSAmJiBDb21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ7XG59XG5cbmZ1bmN0aW9uIHJlbmRlcldpdGhIb29rcyhyZXF1ZXN0LCB0YXNrLCBDb21wb25lbnQsIHByb3BzLCBzZWNvbmRBcmcpIHtcbiAgdmFyIGNvbXBvbmVudElkZW50aXR5ID0ge307XG4gIHByZXBhcmVUb1VzZUhvb2tzKHRhc2ssIGNvbXBvbmVudElkZW50aXR5KTtcbiAgdmFyIHJlc3VsdCA9IENvbXBvbmVudChwcm9wcywgc2Vjb25kQXJnKTtcbiAgcmV0dXJuIGZpbmlzaEhvb2tzKENvbXBvbmVudCwgcHJvcHMsIHJlc3VsdCwgc2Vjb25kQXJnKTtcbn1cblxuZnVuY3Rpb24gZmluaXNoQ2xhc3NDb21wb25lbnQocmVxdWVzdCwgdGFzaywgaW5zdGFuY2UsIENvbXBvbmVudCwgcHJvcHMpIHtcbiAgdmFyIG5leHRDaGlsZHJlbiA9IGluc3RhbmNlLnJlbmRlcigpO1xuXG4gIHtcbiAgICBpZiAoaW5zdGFuY2UucHJvcHMgIT09IHByb3BzKSB7XG4gICAgICBpZiAoIWRpZFdhcm5BYm91dFJlYXNzaWduaW5nUHJvcHMpIHtcbiAgICAgICAgZXJyb3IoJ0l0IGxvb2tzIGxpa2UgJXMgaXMgcmVhc3NpZ25pbmcgaXRzIG93biBgdGhpcy5wcm9wc2Agd2hpbGUgcmVuZGVyaW5nLiAnICsgJ1RoaXMgaXMgbm90IHN1cHBvcnRlZCBhbmQgY2FuIGxlYWQgdG8gY29uZnVzaW5nIGJ1Z3MuJywgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKENvbXBvbmVudCkgfHwgJ2EgY29tcG9uZW50Jyk7XG4gICAgICB9XG5cbiAgICAgIGRpZFdhcm5BYm91dFJlYXNzaWduaW5nUHJvcHMgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHtcbiAgICB2YXIgY2hpbGRDb250ZXh0VHlwZXMgPSBDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXM7XG5cbiAgICBpZiAoY2hpbGRDb250ZXh0VHlwZXMgIT09IG51bGwgJiYgY2hpbGRDb250ZXh0VHlwZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIHByZXZpb3VzQ29udGV4dCA9IHRhc2subGVnYWN5Q29udGV4dDtcbiAgICAgIHZhciBtZXJnZWRDb250ZXh0ID0gcHJvY2Vzc0NoaWxkQ29udGV4dChpbnN0YW5jZSwgQ29tcG9uZW50LCBwcmV2aW91c0NvbnRleHQsIGNoaWxkQ29udGV4dFR5cGVzKTtcbiAgICAgIHRhc2subGVnYWN5Q29udGV4dCA9IG1lcmdlZENvbnRleHQ7XG4gICAgICByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgbmV4dENoaWxkcmVuKTtcbiAgICAgIHRhc2subGVnYWN5Q29udGV4dCA9IHByZXZpb3VzQ29udGV4dDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgbmV4dENoaWxkcmVuKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyQ2xhc3NDb21wb25lbnQocmVxdWVzdCwgdGFzaywgQ29tcG9uZW50LCBwcm9wcykge1xuICBwdXNoQ2xhc3NDb21wb25lbnRTdGFja0luREVWKHRhc2ssIENvbXBvbmVudCk7XG4gIHZhciBtYXNrZWRDb250ZXh0ID0gIGdldE1hc2tlZENvbnRleHQoQ29tcG9uZW50LCB0YXNrLmxlZ2FjeUNvbnRleHQpIDtcbiAgdmFyIGluc3RhbmNlID0gY29uc3RydWN0Q2xhc3NJbnN0YW5jZShDb21wb25lbnQsIHByb3BzLCBtYXNrZWRDb250ZXh0KTtcbiAgbW91bnRDbGFzc0luc3RhbmNlKGluc3RhbmNlLCBDb21wb25lbnQsIHByb3BzLCBtYXNrZWRDb250ZXh0KTtcbiAgZmluaXNoQ2xhc3NDb21wb25lbnQocmVxdWVzdCwgdGFzaywgaW5zdGFuY2UsIENvbXBvbmVudCwgcHJvcHMpO1xuICBwb3BDb21wb25lbnRTdGFja0luREVWKHRhc2spO1xufVxuXG52YXIgZGlkV2FybkFib3V0QmFkQ2xhc3MgPSB7fTtcbnZhciBkaWRXYXJuQWJvdXRNb2R1bGVQYXR0ZXJuQ29tcG9uZW50ID0ge307XG52YXIgZGlkV2FybkFib3V0Q29udGV4dFR5cGVPbkZ1bmN0aW9uQ29tcG9uZW50ID0ge307XG52YXIgZGlkV2FybkFib3V0R2V0RGVyaXZlZFN0YXRlT25GdW5jdGlvbkNvbXBvbmVudCA9IHt9O1xudmFyIGRpZFdhcm5BYm91dFJlYXNzaWduaW5nUHJvcHMgPSBmYWxzZTtcbnZhciBkaWRXYXJuQWJvdXRHZW5lcmF0b3JzID0gZmFsc2U7XG52YXIgZGlkV2FybkFib3V0TWFwcyA9IGZhbHNlO1xudmFyIGhhc1dhcm5lZEFib3V0VXNpbmdDb250ZXh0QXNDb25zdW1lciA9IGZhbHNlOyAvLyBUaGlzIHdvdWxkIHR5cGljYWxseSBiZSBhIGZ1bmN0aW9uIGNvbXBvbmVudCBidXQgd2Ugc3RpbGwgc3VwcG9ydCBtb2R1bGUgcGF0dGVyblxuLy8gY29tcG9uZW50cyBmb3Igc29tZSByZWFzb24uXG5cbmZ1bmN0aW9uIHJlbmRlckluZGV0ZXJtaW5hdGVDb21wb25lbnQocmVxdWVzdCwgdGFzaywgQ29tcG9uZW50LCBwcm9wcykge1xuICB2YXIgbGVnYWN5Q29udGV4dDtcblxuICB7XG4gICAgbGVnYWN5Q29udGV4dCA9IGdldE1hc2tlZENvbnRleHQoQ29tcG9uZW50LCB0YXNrLmxlZ2FjeUNvbnRleHQpO1xuICB9XG5cbiAgcHVzaEZ1bmN0aW9uQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrLCBDb21wb25lbnQpO1xuXG4gIHtcbiAgICBpZiAoQ29tcG9uZW50LnByb3RvdHlwZSAmJiB0eXBlb2YgQ29tcG9uZW50LnByb3RvdHlwZS5yZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHZhciBjb21wb25lbnROYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKENvbXBvbmVudCkgfHwgJ1Vua25vd24nO1xuXG4gICAgICBpZiAoIWRpZFdhcm5BYm91dEJhZENsYXNzW2NvbXBvbmVudE5hbWVdKSB7XG4gICAgICAgIGVycm9yKFwiVGhlIDwlcyAvPiBjb21wb25lbnQgYXBwZWFycyB0byBoYXZlIGEgcmVuZGVyIG1ldGhvZCwgYnV0IGRvZXNuJ3QgZXh0ZW5kIFJlYWN0LkNvbXBvbmVudC4gXCIgKyAnVGhpcyBpcyBsaWtlbHkgdG8gY2F1c2UgZXJyb3JzLiBDaGFuZ2UgJXMgdG8gZXh0ZW5kIFJlYWN0LkNvbXBvbmVudCBpbnN0ZWFkLicsIGNvbXBvbmVudE5hbWUsIGNvbXBvbmVudE5hbWUpO1xuXG4gICAgICAgIGRpZFdhcm5BYm91dEJhZENsYXNzW2NvbXBvbmVudE5hbWVdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgdmFsdWUgPSByZW5kZXJXaXRoSG9va3MocmVxdWVzdCwgdGFzaywgQ29tcG9uZW50LCBwcm9wcywgbGVnYWN5Q29udGV4dCk7XG4gIHZhciBoYXNJZCA9IGNoZWNrRGlkUmVuZGVySWRIb29rKCk7XG5cbiAge1xuICAgIC8vIFN1cHBvcnQgZm9yIG1vZHVsZSBjb21wb25lbnRzIGlzIGRlcHJlY2F0ZWQgYW5kIGlzIHJlbW92ZWQgYmVoaW5kIGEgZmxhZy5cbiAgICAvLyBXaGV0aGVyIG9yIG5vdCBpdCB3b3VsZCBjcmFzaCBsYXRlciwgd2Ugd2FudCB0byBzaG93IGEgZ29vZCBtZXNzYWdlIGluIERFViBmaXJzdC5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUucmVuZGVyID09PSAnZnVuY3Rpb24nICYmIHZhbHVlLiQkdHlwZW9mID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBfY29tcG9uZW50TmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShDb21wb25lbnQpIHx8ICdVbmtub3duJztcblxuICAgICAgaWYgKCFkaWRXYXJuQWJvdXRNb2R1bGVQYXR0ZXJuQ29tcG9uZW50W19jb21wb25lbnROYW1lXSkge1xuICAgICAgICBlcnJvcignVGhlIDwlcyAvPiBjb21wb25lbnQgYXBwZWFycyB0byBiZSBhIGZ1bmN0aW9uIGNvbXBvbmVudCB0aGF0IHJldHVybnMgYSBjbGFzcyBpbnN0YW5jZS4gJyArICdDaGFuZ2UgJXMgdG8gYSBjbGFzcyB0aGF0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IGluc3RlYWQuICcgKyBcIklmIHlvdSBjYW4ndCB1c2UgYSBjbGFzcyB0cnkgYXNzaWduaW5nIHRoZSBwcm90b3R5cGUgb24gdGhlIGZ1bmN0aW9uIGFzIGEgd29ya2Fyb3VuZC4gXCIgKyBcImAlcy5wcm90b3R5cGUgPSBSZWFjdC5Db21wb25lbnQucHJvdG90eXBlYC4gRG9uJ3QgdXNlIGFuIGFycm93IGZ1bmN0aW9uIHNpbmNlIGl0IFwiICsgJ2Nhbm5vdCBiZSBjYWxsZWQgd2l0aCBgbmV3YCBieSBSZWFjdC4nLCBfY29tcG9uZW50TmFtZSwgX2NvbXBvbmVudE5hbWUsIF9jb21wb25lbnROYW1lKTtcblxuICAgICAgICBkaWRXYXJuQWJvdXRNb2R1bGVQYXR0ZXJuQ29tcG9uZW50W19jb21wb25lbnROYW1lXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCAvLyBSdW4gdGhlc2UgY2hlY2tzIGluIHByb2R1Y3Rpb24gb25seSBpZiB0aGUgZmxhZyBpcyBvZmYuXG4gIC8vIEV2ZW50dWFsbHkgd2UnbGwgZGVsZXRlIHRoaXMgYnJhbmNoIGFsdG9nZXRoZXIuXG4gICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZS5yZW5kZXIgPT09ICdmdW5jdGlvbicgJiYgdmFsdWUuJCR0eXBlb2YgPT09IHVuZGVmaW5lZCkge1xuICAgIHtcbiAgICAgIHZhciBfY29tcG9uZW50TmFtZTIgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoQ29tcG9uZW50KSB8fCAnVW5rbm93bic7XG5cbiAgICAgIGlmICghZGlkV2FybkFib3V0TW9kdWxlUGF0dGVybkNvbXBvbmVudFtfY29tcG9uZW50TmFtZTJdKSB7XG4gICAgICAgIGVycm9yKCdUaGUgPCVzIC8+IGNvbXBvbmVudCBhcHBlYXJzIHRvIGJlIGEgZnVuY3Rpb24gY29tcG9uZW50IHRoYXQgcmV0dXJucyBhIGNsYXNzIGluc3RhbmNlLiAnICsgJ0NoYW5nZSAlcyB0byBhIGNsYXNzIHRoYXQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgaW5zdGVhZC4gJyArIFwiSWYgeW91IGNhbid0IHVzZSBhIGNsYXNzIHRyeSBhc3NpZ25pbmcgdGhlIHByb3RvdHlwZSBvbiB0aGUgZnVuY3Rpb24gYXMgYSB3b3JrYXJvdW5kLiBcIiArIFwiYCVzLnByb3RvdHlwZSA9IFJlYWN0LkNvbXBvbmVudC5wcm90b3R5cGVgLiBEb24ndCB1c2UgYW4gYXJyb3cgZnVuY3Rpb24gc2luY2UgaXQgXCIgKyAnY2Fubm90IGJlIGNhbGxlZCB3aXRoIGBuZXdgIGJ5IFJlYWN0LicsIF9jb21wb25lbnROYW1lMiwgX2NvbXBvbmVudE5hbWUyLCBfY29tcG9uZW50TmFtZTIpO1xuXG4gICAgICAgIGRpZFdhcm5BYm91dE1vZHVsZVBhdHRlcm5Db21wb25lbnRbX2NvbXBvbmVudE5hbWUyXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbW91bnRDbGFzc0luc3RhbmNlKHZhbHVlLCBDb21wb25lbnQsIHByb3BzLCBsZWdhY3lDb250ZXh0KTtcbiAgICBmaW5pc2hDbGFzc0NvbXBvbmVudChyZXF1ZXN0LCB0YXNrLCB2YWx1ZSwgQ29tcG9uZW50LCBwcm9wcyk7XG4gIH0gZWxzZSB7XG5cbiAgICB7XG4gICAgICB2YWxpZGF0ZUZ1bmN0aW9uQ29tcG9uZW50SW5EZXYoQ29tcG9uZW50KTtcbiAgICB9IC8vIFdlJ3JlIG5vdyBzdWNjZXNzZnVsbHkgcGFzdCB0aGlzIHRhc2ssIGFuZCB3ZSBkb24ndCBoYXZlIHRvIHBvcCBiYWNrIHRvXG4gICAgLy8gdGhlIHByZXZpb3VzIHRhc2sgZXZlcnkgYWdhaW4sIHNvIHdlIGNhbiB1c2UgdGhlIGRlc3RydWN0aXZlIHJlY3Vyc2l2ZSBmb3JtLlxuXG5cbiAgICBpZiAoaGFzSWQpIHtcbiAgICAgIC8vIFRoaXMgY29tcG9uZW50IG1hdGVyaWFsaXplZCBhbiBpZC4gV2UgdHJlYXQgdGhpcyBhcyBpdHMgb3duIGxldmVsLCB3aXRoXG4gICAgICAvLyBhIHNpbmdsZSBcImNoaWxkXCIgc2xvdC5cbiAgICAgIHZhciBwcmV2VHJlZUNvbnRleHQgPSB0YXNrLnRyZWVDb250ZXh0O1xuICAgICAgdmFyIHRvdGFsQ2hpbGRyZW4gPSAxO1xuICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgIHRhc2sudHJlZUNvbnRleHQgPSBwdXNoVHJlZUNvbnRleHQocHJldlRyZWVDb250ZXh0LCB0b3RhbENoaWxkcmVuLCBpbmRleCk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJlbmRlck5vZGVEZXN0cnVjdGl2ZShyZXF1ZXN0LCB0YXNrLCB2YWx1ZSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0YXNrLnRyZWVDb250ZXh0ID0gcHJldlRyZWVDb250ZXh0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHBvcENvbXBvbmVudFN0YWNrSW5ERVYodGFzayk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRnVuY3Rpb25Db21wb25lbnRJbkRldihDb21wb25lbnQpIHtcbiAge1xuICAgIGlmIChDb21wb25lbnQpIHtcbiAgICAgIGlmIChDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMpIHtcbiAgICAgICAgZXJyb3IoJyVzKC4uLik6IGNoaWxkQ29udGV4dFR5cGVzIGNhbm5vdCBiZSBkZWZpbmVkIG9uIGEgZnVuY3Rpb24gY29tcG9uZW50LicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBDb21wb25lbnQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB2YXIgX2NvbXBvbmVudE5hbWUzID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKENvbXBvbmVudCkgfHwgJ1Vua25vd24nO1xuXG4gICAgICBpZiAoIWRpZFdhcm5BYm91dEdldERlcml2ZWRTdGF0ZU9uRnVuY3Rpb25Db21wb25lbnRbX2NvbXBvbmVudE5hbWUzXSkge1xuICAgICAgICBlcnJvcignJXM6IEZ1bmN0aW9uIGNvbXBvbmVudHMgZG8gbm90IHN1cHBvcnQgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLicsIF9jb21wb25lbnROYW1lMyk7XG5cbiAgICAgICAgZGlkV2FybkFib3V0R2V0RGVyaXZlZFN0YXRlT25GdW5jdGlvbkNvbXBvbmVudFtfY29tcG9uZW50TmFtZTNdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIENvbXBvbmVudC5jb250ZXh0VHlwZSA9PT0gJ29iamVjdCcgJiYgQ29tcG9uZW50LmNvbnRleHRUeXBlICE9PSBudWxsKSB7XG4gICAgICB2YXIgX2NvbXBvbmVudE5hbWU0ID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKENvbXBvbmVudCkgfHwgJ1Vua25vd24nO1xuXG4gICAgICBpZiAoIWRpZFdhcm5BYm91dENvbnRleHRUeXBlT25GdW5jdGlvbkNvbXBvbmVudFtfY29tcG9uZW50TmFtZTRdKSB7XG4gICAgICAgIGVycm9yKCclczogRnVuY3Rpb24gY29tcG9uZW50cyBkbyBub3Qgc3VwcG9ydCBjb250ZXh0VHlwZS4nLCBfY29tcG9uZW50TmFtZTQpO1xuXG4gICAgICAgIGRpZFdhcm5BYm91dENvbnRleHRUeXBlT25GdW5jdGlvbkNvbXBvbmVudFtfY29tcG9uZW50TmFtZTRdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZURlZmF1bHRQcm9wcyhDb21wb25lbnQsIGJhc2VQcm9wcykge1xuICBpZiAoQ29tcG9uZW50ICYmIENvbXBvbmVudC5kZWZhdWx0UHJvcHMpIHtcbiAgICAvLyBSZXNvbHZlIGRlZmF1bHQgcHJvcHMuIFRha2VuIGZyb20gUmVhY3RFbGVtZW50XG4gICAgdmFyIHByb3BzID0gYXNzaWduKHt9LCBiYXNlUHJvcHMpO1xuICAgIHZhciBkZWZhdWx0UHJvcHMgPSBDb21wb25lbnQuZGVmYXVsdFByb3BzO1xuXG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gZGVmYXVsdFByb3BzKSB7XG4gICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHM7XG4gIH1cblxuICByZXR1cm4gYmFzZVByb3BzO1xufVxuXG5mdW5jdGlvbiByZW5kZXJGb3J3YXJkUmVmKHJlcXVlc3QsIHRhc2ssIHR5cGUsIHByb3BzLCByZWYpIHtcbiAgcHVzaEZ1bmN0aW9uQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrLCB0eXBlLnJlbmRlcik7XG4gIHZhciBjaGlsZHJlbiA9IHJlbmRlcldpdGhIb29rcyhyZXF1ZXN0LCB0YXNrLCB0eXBlLnJlbmRlciwgcHJvcHMsIHJlZik7XG4gIHZhciBoYXNJZCA9IGNoZWNrRGlkUmVuZGVySWRIb29rKCk7XG5cbiAgaWYgKGhhc0lkKSB7XG4gICAgLy8gVGhpcyBjb21wb25lbnQgbWF0ZXJpYWxpemVkIGFuIGlkLiBXZSB0cmVhdCB0aGlzIGFzIGl0cyBvd24gbGV2ZWwsIHdpdGhcbiAgICAvLyBhIHNpbmdsZSBcImNoaWxkXCIgc2xvdC5cbiAgICB2YXIgcHJldlRyZWVDb250ZXh0ID0gdGFzay50cmVlQ29udGV4dDtcbiAgICB2YXIgdG90YWxDaGlsZHJlbiA9IDE7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB0YXNrLnRyZWVDb250ZXh0ID0gcHVzaFRyZWVDb250ZXh0KHByZXZUcmVlQ29udGV4dCwgdG90YWxDaGlsZHJlbiwgaW5kZXgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlbmRlck5vZGVEZXN0cnVjdGl2ZShyZXF1ZXN0LCB0YXNrLCBjaGlsZHJlbik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRhc2sudHJlZUNvbnRleHQgPSBwcmV2VHJlZUNvbnRleHQ7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJlbmRlck5vZGVEZXN0cnVjdGl2ZShyZXF1ZXN0LCB0YXNrLCBjaGlsZHJlbik7XG4gIH1cblxuICBwb3BDb21wb25lbnRTdGFja0luREVWKHRhc2spO1xufVxuXG5mdW5jdGlvbiByZW5kZXJNZW1vKHJlcXVlc3QsIHRhc2ssIHR5cGUsIHByb3BzLCByZWYpIHtcbiAgdmFyIGlubmVyVHlwZSA9IHR5cGUudHlwZTtcbiAgdmFyIHJlc29sdmVkUHJvcHMgPSByZXNvbHZlRGVmYXVsdFByb3BzKGlubmVyVHlwZSwgcHJvcHMpO1xuICByZW5kZXJFbGVtZW50KHJlcXVlc3QsIHRhc2ssIGlubmVyVHlwZSwgcmVzb2x2ZWRQcm9wcywgcmVmKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyQ29udGV4dENvbnN1bWVyKHJlcXVlc3QsIHRhc2ssIGNvbnRleHQsIHByb3BzKSB7XG4gIC8vIFRoZSBsb2dpYyBiZWxvdyBmb3IgQ29udGV4dCBkaWZmZXJzIGRlcGVuZGluZyBvbiBQUk9EIG9yIERFViBtb2RlLiBJblxuICAvLyBERVYgbW9kZSwgd2UgY3JlYXRlIGEgc2VwYXJhdGUgb2JqZWN0IGZvciBDb250ZXh0LkNvbnN1bWVyIHRoYXQgYWN0c1xuICAvLyBsaWtlIGEgcHJveHkgdG8gQ29udGV4dC4gVGhpcyBwcm94eSBvYmplY3QgYWRkcyB1bm5lY2Vzc2FyeSBjb2RlIGluIFBST0RcbiAgLy8gc28gd2UgdXNlIHRoZSBvbGQgYmVoYXZpb3VyIChDb250ZXh0LkNvbnN1bWVyIHJlZmVyZW5jZXMgQ29udGV4dCkgdG9cbiAgLy8gcmVkdWNlIHNpemUgYW5kIG92ZXJoZWFkLiBUaGUgc2VwYXJhdGUgb2JqZWN0IHJlZmVyZW5jZXMgY29udGV4dCB2aWFcbiAgLy8gYSBwcm9wZXJ0eSBjYWxsZWQgXCJfY29udGV4dFwiLCB3aGljaCBhbHNvIGdpdmVzIHVzIHRoZSBhYmlsaXR5IHRvIGNoZWNrXG4gIC8vIGluIERFViBtb2RlIGlmIHRoaXMgcHJvcGVydHkgZXhpc3RzIG9yIG5vdCBhbmQgd2FybiBpZiBpdCBkb2VzIG5vdC5cbiAge1xuICAgIGlmIChjb250ZXh0Ll9jb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFRoaXMgbWF5IGJlIGJlY2F1c2UgaXQncyBhIENvbnRleHQgKHJhdGhlciB0aGFuIGEgQ29uc3VtZXIpLlxuICAgICAgLy8gT3IgaXQgbWF5IGJlIGJlY2F1c2UgaXQncyBvbGRlciBSZWFjdCB3aGVyZSB0aGV5J3JlIHRoZSBzYW1lIHRoaW5nLlxuICAgICAgLy8gV2Ugb25seSB3YW50IHRvIHdhcm4gaWYgd2UncmUgc3VyZSBpdCdzIGEgbmV3IFJlYWN0LlxuICAgICAgaWYgKGNvbnRleHQgIT09IGNvbnRleHQuQ29uc3VtZXIpIHtcbiAgICAgICAgaWYgKCFoYXNXYXJuZWRBYm91dFVzaW5nQ29udGV4dEFzQ29uc3VtZXIpIHtcbiAgICAgICAgICBoYXNXYXJuZWRBYm91dFVzaW5nQ29udGV4dEFzQ29uc3VtZXIgPSB0cnVlO1xuXG4gICAgICAgICAgZXJyb3IoJ1JlbmRlcmluZyA8Q29udGV4dD4gZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluICcgKyAnYSBmdXR1cmUgbWFqb3IgcmVsZWFzZS4gRGlkIHlvdSBtZWFuIHRvIHJlbmRlciA8Q29udGV4dC5Db25zdW1lcj4gaW5zdGVhZD8nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0ID0gY29udGV4dC5fY29udGV4dDtcbiAgICB9XG4gIH1cblxuICB2YXIgcmVuZGVyID0gcHJvcHMuY2hpbGRyZW47XG5cbiAge1xuICAgIGlmICh0eXBlb2YgcmVuZGVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBlcnJvcignQSBjb250ZXh0IGNvbnN1bWVyIHdhcyByZW5kZXJlZCB3aXRoIG11bHRpcGxlIGNoaWxkcmVuLCBvciBhIGNoaWxkICcgKyBcInRoYXQgaXNuJ3QgYSBmdW5jdGlvbi4gQSBjb250ZXh0IGNvbnN1bWVyIGV4cGVjdHMgYSBzaW5nbGUgY2hpbGQgXCIgKyAndGhhdCBpcyBhIGZ1bmN0aW9uLiBJZiB5b3UgZGlkIHBhc3MgYSBmdW5jdGlvbiwgbWFrZSBzdXJlIHRoZXJlICcgKyAnaXMgbm8gdHJhaWxpbmcgb3IgbGVhZGluZyB3aGl0ZXNwYWNlIGFyb3VuZCBpdC4nKTtcbiAgICB9XG4gIH1cblxuICB2YXIgbmV3VmFsdWUgPSByZWFkQ29udGV4dChjb250ZXh0KTtcbiAgdmFyIG5ld0NoaWxkcmVuID0gcmVuZGVyKG5ld1ZhbHVlKTtcbiAgcmVuZGVyTm9kZURlc3RydWN0aXZlKHJlcXVlc3QsIHRhc2ssIG5ld0NoaWxkcmVuKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyQ29udGV4dFByb3ZpZGVyKHJlcXVlc3QsIHRhc2ssIHR5cGUsIHByb3BzKSB7XG4gIHZhciBjb250ZXh0ID0gdHlwZS5fY29udGV4dDtcbiAgdmFyIHZhbHVlID0gcHJvcHMudmFsdWU7XG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuO1xuICB2YXIgcHJldlNuYXBzaG90O1xuXG4gIHtcbiAgICBwcmV2U25hcHNob3QgPSB0YXNrLmNvbnRleHQ7XG4gIH1cblxuICB0YXNrLmNvbnRleHQgPSBwdXNoUHJvdmlkZXIoY29udGV4dCwgdmFsdWUpO1xuICByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgY2hpbGRyZW4pO1xuICB0YXNrLmNvbnRleHQgPSBwb3BQcm92aWRlcihjb250ZXh0KTtcblxuICB7XG4gICAgaWYgKHByZXZTbmFwc2hvdCAhPT0gdGFzay5jb250ZXh0KSB7XG4gICAgICBlcnJvcignUG9wcGluZyB0aGUgY29udGV4dCBwcm92aWRlciBkaWQgbm90IHJldHVybiBiYWNrIHRvIHRoZSBvcmlnaW5hbCBzbmFwc2hvdC4gVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC4nKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVuZGVyTGF6eUNvbXBvbmVudChyZXF1ZXN0LCB0YXNrLCBsYXp5Q29tcG9uZW50LCBwcm9wcywgcmVmKSB7XG4gIHB1c2hCdWlsdEluQ29tcG9uZW50U3RhY2tJbkRFVih0YXNrLCAnTGF6eScpO1xuICB2YXIgcGF5bG9hZCA9IGxhenlDb21wb25lbnQuX3BheWxvYWQ7XG4gIHZhciBpbml0ID0gbGF6eUNvbXBvbmVudC5faW5pdDtcbiAgdmFyIENvbXBvbmVudCA9IGluaXQocGF5bG9hZCk7XG4gIHZhciByZXNvbHZlZFByb3BzID0gcmVzb2x2ZURlZmF1bHRQcm9wcyhDb21wb25lbnQsIHByb3BzKTtcbiAgcmVuZGVyRWxlbWVudChyZXF1ZXN0LCB0YXNrLCBDb21wb25lbnQsIHJlc29sdmVkUHJvcHMsIHJlZik7XG4gIHBvcENvbXBvbmVudFN0YWNrSW5ERVYodGFzayk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckVsZW1lbnQocmVxdWVzdCwgdGFzaywgdHlwZSwgcHJvcHMsIHJlZikge1xuICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoc2hvdWxkQ29uc3RydWN0JDEodHlwZSkpIHtcbiAgICAgIHJlbmRlckNsYXNzQ29tcG9uZW50KHJlcXVlc3QsIHRhc2ssIHR5cGUsIHByb3BzKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVuZGVySW5kZXRlcm1pbmF0ZUNvbXBvbmVudChyZXF1ZXN0LCB0YXNrLCB0eXBlLCBwcm9wcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykge1xuICAgIHJlbmRlckhvc3RFbGVtZW50KHJlcXVlc3QsIHRhc2ssIHR5cGUsIHByb3BzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAvLyBUT0RPOiBMZWdhY3lIaWRkZW4gYWN0cyB0aGUgc2FtZSBhcyBhIGZyYWdtZW50LiBUaGlzIG9ubHkgd29ya3NcbiAgICAvLyBiZWNhdXNlIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCBldmVyeSBpbnN0YW5jZSBvZiBMZWdhY3lIaWRkZW4gaXNcbiAgICAvLyBhY2NvbXBhbmllZCBieSBhIGhvc3QgY29tcG9uZW50IHdyYXBwZXIuIEluIHRoZSBoaWRkZW4gbW9kZSwgdGhlIGhvc3RcbiAgICAvLyBjb21wb25lbnQgaXMgZ2l2ZW4gYSBgaGlkZGVuYCBhdHRyaWJ1dGUsIHdoaWNoIGVuc3VyZXMgdGhhdCB0aGVcbiAgICAvLyBpbml0aWFsIEhUTUwgaXMgbm90IHZpc2libGUuIFRvIHN1cHBvcnQgdGhlIHVzZSBvZiBMZWdhY3lIaWRkZW4gYXMgYVxuICAgIC8vIHRydWUgZnJhZ21lbnQsIHdpdGhvdXQgYW4gZXh0cmEgRE9NIG5vZGUsIHdlIHdvdWxkIGhhdmUgdG8gaGlkZSB0aGVcbiAgICAvLyBpbml0aWFsIEhUTUwgaW4gc29tZSBvdGhlciB3YXkuXG4gICAgLy8gVE9ETzogQWRkIFJFQUNUX09GRlNDUkVFTl9UWVBFIGhlcmUgdG9vIHdpdGggdGhlIHNhbWUgY2FwYWJpbGl0eS5cbiAgICBjYXNlIFJFQUNUX0xFR0FDWV9ISURERU5fVFlQRTpcbiAgICBjYXNlIFJFQUNUX0RFQlVHX1RSQUNJTkdfTU9ERV9UWVBFOlxuICAgIGNhc2UgUkVBQ1RfU1RSSUNUX01PREVfVFlQRTpcbiAgICBjYXNlIFJFQUNUX1BST0ZJTEVSX1RZUEU6XG4gICAgY2FzZSBSRUFDVF9GUkFHTUVOVF9UWVBFOlxuICAgICAge1xuICAgICAgICByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgcHJvcHMuY2hpbGRyZW4pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTpcbiAgICAgIHtcbiAgICAgICAgcHVzaEJ1aWx0SW5Db21wb25lbnRTdGFja0luREVWKHRhc2ssICdTdXNwZW5zZUxpc3QnKTsgLy8gVE9ETzogU3VzcGVuc2VMaXN0IHNob3VsZCBjb250cm9sIHRoZSBib3VuZGFyaWVzLlxuXG4gICAgICAgIHJlbmRlck5vZGVEZXN0cnVjdGl2ZShyZXF1ZXN0LCB0YXNrLCBwcm9wcy5jaGlsZHJlbik7XG4gICAgICAgIHBvcENvbXBvbmVudFN0YWNrSW5ERVYodGFzayk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgIGNhc2UgUkVBQ1RfU0NPUEVfVFlQRTpcbiAgICAgIHtcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlYWN0RE9NU2VydmVyIGRvZXMgbm90IHlldCBzdXBwb3J0IHNjb3BlIGNvbXBvbmVudHMuJyk7XG4gICAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lLW5vLWZhbGx0aHJvdWdoXG5cbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICB7XG4gICAgICAgIHtcbiAgICAgICAgICByZW5kZXJTdXNwZW5zZUJvdW5kYXJ5KHJlcXVlc3QsIHRhc2ssIHByb3BzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gbnVsbCkge1xuICAgIHN3aXRjaCAodHlwZS4kJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgcmVuZGVyRm9yd2FyZFJlZihyZXF1ZXN0LCB0YXNrLCB0eXBlLCBwcm9wcywgcmVmKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgIHtcbiAgICAgICAgICByZW5kZXJNZW1vKHJlcXVlc3QsIHRhc2ssIHR5cGUsIHByb3BzLCByZWYpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFJFQUNUX1BST1ZJREVSX1RZUEU6XG4gICAgICAgIHtcbiAgICAgICAgICByZW5kZXJDb250ZXh0UHJvdmlkZXIocmVxdWVzdCwgdGFzaywgdHlwZSwgcHJvcHMpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAge1xuICAgICAgICAgIHJlbmRlckNvbnRleHRDb25zdW1lcihyZXF1ZXN0LCB0YXNrLCB0eXBlLCBwcm9wcyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgcmVuZGVyTGF6eUNvbXBvbmVudChyZXF1ZXN0LCB0YXNrLCB0eXBlLCBwcm9wcyk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIGluZm8gPSAnJztcblxuICB7XG4gICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyh0eXBlKS5sZW5ndGggPT09IDApIHtcbiAgICAgIGluZm8gKz0gJyBZb3UgbGlrZWx5IGZvcmdvdCB0byBleHBvcnQgeW91ciBjb21wb25lbnQgZnJvbSB0aGUgZmlsZSAnICsgXCJpdCdzIGRlZmluZWQgaW4sIG9yIHlvdSBtaWdodCBoYXZlIG1peGVkIHVwIGRlZmF1bHQgYW5kIFwiICsgJ25hbWVkIGltcG9ydHMuJztcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ0VsZW1lbnQgdHlwZSBpcyBpbnZhbGlkOiBleHBlY3RlZCBhIHN0cmluZyAoZm9yIGJ1aWx0LWluICcgKyAnY29tcG9uZW50cykgb3IgYSBjbGFzcy9mdW5jdGlvbiAoZm9yIGNvbXBvc2l0ZSBjb21wb25lbnRzKSAnICsgKFwiYnV0IGdvdDogXCIgKyAodHlwZSA9PSBudWxsID8gdHlwZSA6IHR5cGVvZiB0eXBlKSArIFwiLlwiICsgaW5mbykpO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUl0ZXJhYmxlKGl0ZXJhYmxlLCBpdGVyYXRvckZuKSB7XG4gIHtcbiAgICAvLyBXZSBkb24ndCBzdXBwb3J0IHJlbmRlcmluZyBHZW5lcmF0b3JzIGJlY2F1c2UgaXQncyBhIG11dGF0aW9uLlxuICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzEyOTk1XG4gICAgaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgLy8gJEZsb3dGaXhNZSBGbG93IGRvZXNuJ3Qga25vdyBhYm91dCB0b1N0cmluZ1RhZ1xuICAgIGl0ZXJhYmxlW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09ICdHZW5lcmF0b3InKSB7XG4gICAgICBpZiAoIWRpZFdhcm5BYm91dEdlbmVyYXRvcnMpIHtcbiAgICAgICAgZXJyb3IoJ1VzaW5nIEdlbmVyYXRvcnMgYXMgY2hpbGRyZW4gaXMgdW5zdXBwb3J0ZWQgYW5kIHdpbGwgbGlrZWx5IHlpZWxkICcgKyAndW5leHBlY3RlZCByZXN1bHRzIGJlY2F1c2UgZW51bWVyYXRpbmcgYSBnZW5lcmF0b3IgbXV0YXRlcyBpdC4gJyArICdZb3UgbWF5IGNvbnZlcnQgaXQgdG8gYW4gYXJyYXkgd2l0aCBgQXJyYXkuZnJvbSgpYCBvciB0aGUgJyArICdgWy4uLnNwcmVhZF1gIG9wZXJhdG9yIGJlZm9yZSByZW5kZXJpbmcuIEtlZXAgaW4gbWluZCAnICsgJ3lvdSBtaWdodCBuZWVkIHRvIHBvbHlmaWxsIHRoZXNlIGZlYXR1cmVzIGZvciBvbGRlciBicm93c2Vycy4nKTtcbiAgICAgIH1cblxuICAgICAgZGlkV2FybkFib3V0R2VuZXJhdG9ycyA9IHRydWU7XG4gICAgfSAvLyBXYXJuIGFib3V0IHVzaW5nIE1hcHMgYXMgY2hpbGRyZW5cblxuXG4gICAgaWYgKGl0ZXJhYmxlLmVudHJpZXMgPT09IGl0ZXJhdG9yRm4pIHtcbiAgICAgIGlmICghZGlkV2FybkFib3V0TWFwcykge1xuICAgICAgICBlcnJvcignVXNpbmcgTWFwcyBhcyBjaGlsZHJlbiBpcyBub3Qgc3VwcG9ydGVkLiAnICsgJ1VzZSBhbiBhcnJheSBvZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJyk7XG4gICAgICB9XG5cbiAgICAgIGRpZFdhcm5BYm91dE1hcHMgPSB0cnVlO1xuICAgIH1cbiAgfVxufSAvLyBUaGlzIGZ1bmN0aW9uIGJ5IGl0IHNlbGYgcmVuZGVycyBhIG5vZGUgYW5kIGNvbnN1bWVzIHRoZSB0YXNrIGJ5IG11dGF0aW5nIGl0XG4vLyB0byB1cGRhdGUgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIHN0YXRlLlxuXG5cbmZ1bmN0aW9uIHJlbmRlck5vZGVEZXN0cnVjdGl2ZShyZXF1ZXN0LCB0YXNrLCBub2RlKSB7XG4gIC8vIFN0YXNoIHRoZSBub2RlIHdlJ3JlIHdvcmtpbmcgb24uIFdlJ2xsIHBpY2sgdXAgZnJvbSB0aGlzIHRhc2sgaW4gY2FzZVxuICAvLyBzb21ldGhpbmcgc3VzcGVuZHMuXG4gIHRhc2subm9kZSA9IG5vZGU7IC8vIEhhbmRsZSBvYmplY3QgdHlwZXNcblxuICBpZiAodHlwZW9mIG5vZGUgPT09ICdvYmplY3QnICYmIG5vZGUgIT09IG51bGwpIHtcbiAgICBzd2l0Y2ggKG5vZGUuJCR0eXBlb2YpIHtcbiAgICAgIGNhc2UgUkVBQ1RfRUxFTUVOVF9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGVsZW1lbnQgPSBub2RlO1xuICAgICAgICAgIHZhciB0eXBlID0gZWxlbWVudC50eXBlO1xuICAgICAgICAgIHZhciBwcm9wcyA9IGVsZW1lbnQucHJvcHM7XG4gICAgICAgICAgdmFyIHJlZiA9IGVsZW1lbnQucmVmO1xuICAgICAgICAgIHJlbmRlckVsZW1lbnQocmVxdWVzdCwgdGFzaywgdHlwZSwgcHJvcHMsIHJlZik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgUkVBQ1RfUE9SVEFMX1RZUEU6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUG9ydGFscyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlciByZW5kZXJlci4gJyArICdSZW5kZXIgdGhlbSBjb25kaXRpb25hbGx5IHNvIHRoYXQgdGhleSBvbmx5IGFwcGVhciBvbiB0aGUgY2xpZW50IHJlbmRlci4nKTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZS1uby1mYWxsdGhyb3VnaFxuXG4gICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAge1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhciBsYXp5Tm9kZSA9IG5vZGU7XG4gICAgICAgICAgICB2YXIgcGF5bG9hZCA9IGxhenlOb2RlLl9wYXlsb2FkO1xuICAgICAgICAgICAgdmFyIGluaXQgPSBsYXp5Tm9kZS5faW5pdDtcbiAgICAgICAgICAgIHZhciByZXNvbHZlZE5vZGUgPSBpbml0KHBheWxvYWQpO1xuICAgICAgICAgICAgcmVuZGVyTm9kZURlc3RydWN0aXZlKHJlcXVlc3QsIHRhc2ssIHJlc29sdmVkTm9kZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzQXJyYXkobm9kZSkpIHtcbiAgICAgIHJlbmRlckNoaWxkcmVuQXJyYXkocmVxdWVzdCwgdGFzaywgbm9kZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKG5vZGUpO1xuXG4gICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICAgIHtcbiAgICAgICAgdmFsaWRhdGVJdGVyYWJsZShub2RlLCBpdGVyYXRvckZuKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG5vZGUpO1xuXG4gICAgICBpZiAoaXRlcmF0b3IpIHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byBrbm93IGhvdyBtYW55IHRvdGFsIGNoaWxkcmVuIGFyZSBpbiB0aGlzIHNldCwgc28gdGhhdCB3ZVxuICAgICAgICAvLyBjYW4gYWxsb2NhdGUgZW5vdWdoIGlkIHNsb3RzIHRvIGFjb21tb2RhdGUgdGhlbS4gU28gd2UgbXVzdCBleGhhdXN0XG4gICAgICAgIC8vIHRoZSBpdGVyYXRvciBiZWZvcmUgd2Ugc3RhcnQgcmVjdXJzaXZlbHkgcmVuZGVyaW5nIHRoZSBjaGlsZHJlbi5cbiAgICAgICAgLy8gVE9ETzogVGhpcyBpcyBub3QgZ3JlYXQgYnV0IEkgdGhpbmsgaXQncyBpbmhlcmVudCB0byB0aGUgaWRcbiAgICAgICAgLy8gZ2VuZXJhdGlvbiBhbGdvcml0aG0uXG4gICAgICAgIHZhciBzdGVwID0gaXRlcmF0b3IubmV4dCgpOyAvLyBJZiB0aGVyZSBhcmUgbm90IGVudHJpZXMsIHdlIG5lZWQgdG8gcHVzaCBhbiBlbXB0eSBzbyB3ZSBzdGFydCBieSBjaGVja2luZyB0aGF0LlxuXG4gICAgICAgIGlmICghc3RlcC5kb25lKSB7XG4gICAgICAgICAgdmFyIGNoaWxkcmVuID0gW107XG5cbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBjaGlsZHJlbi5wdXNoKHN0ZXAudmFsdWUpO1xuICAgICAgICAgICAgc3RlcCA9IGl0ZXJhdG9yLm5leHQoKTtcbiAgICAgICAgICB9IHdoaWxlICghc3RlcC5kb25lKTtcblxuICAgICAgICAgIHJlbmRlckNoaWxkcmVuQXJyYXkocmVxdWVzdCwgdGFzaywgY2hpbGRyZW4pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgY2hpbGRTdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobm9kZSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiBcIiArIChjaGlsZFN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVjdC5rZXlzKG5vZGUpLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZFN0cmluZykgKyBcIikuIFwiICsgJ0lmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJyYXkgJyArICdpbnN0ZWFkLicpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBub2RlID09PSAnc3RyaW5nJykge1xuICAgIHB1c2hUZXh0SW5zdGFuY2UodGFzay5ibG9ja2VkU2VnbWVudC5jaHVua3MsIG5vZGUsIHJlcXVlc3QucmVzcG9uc2VTdGF0ZSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBub2RlID09PSAnbnVtYmVyJykge1xuICAgIHB1c2hUZXh0SW5zdGFuY2UodGFzay5ibG9ja2VkU2VnbWVudC5jaHVua3MsICcnICsgbm9kZSwgcmVxdWVzdC5yZXNwb25zZVN0YXRlKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB7XG4gICAgaWYgKHR5cGVvZiBub2RlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBlcnJvcignRnVuY3Rpb25zIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZC4gVGhpcyBtYXkgaGFwcGVuIGlmICcgKyAneW91IHJldHVybiBhIENvbXBvbmVudCBpbnN0ZWFkIG9mIDxDb21wb25lbnQgLz4gZnJvbSByZW5kZXIuICcgKyAnT3IgbWF5YmUgeW91IG1lYW50IHRvIGNhbGwgdGhpcyBmdW5jdGlvbiByYXRoZXIgdGhhbiByZXR1cm4gaXQuJyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlbmRlckNoaWxkcmVuQXJyYXkocmVxdWVzdCwgdGFzaywgY2hpbGRyZW4pIHtcbiAgdmFyIHRvdGFsQ2hpbGRyZW4gPSBjaGlsZHJlbi5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b3RhbENoaWxkcmVuOyBpKyspIHtcbiAgICB2YXIgcHJldlRyZWVDb250ZXh0ID0gdGFzay50cmVlQ29udGV4dDtcbiAgICB0YXNrLnRyZWVDb250ZXh0ID0gcHVzaFRyZWVDb250ZXh0KHByZXZUcmVlQ29udGV4dCwgdG90YWxDaGlsZHJlbiwgaSk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gV2UgbmVlZCB0byB1c2UgdGhlIG5vbi1kZXN0cnVjdGl2ZSBmb3JtIHNvIHRoYXQgd2UgY2FuIHNhZmVseSBwb3AgYmFja1xuICAgICAgLy8gdXAgYW5kIHJlbmRlciB0aGUgc2libGluZyBpZiBzb21ldGhpbmcgc3VzcGVuZHMuXG4gICAgICByZW5kZXJOb2RlKHJlcXVlc3QsIHRhc2ssIGNoaWxkcmVuW2ldKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGFzay50cmVlQ29udGV4dCA9IHByZXZUcmVlQ29udGV4dDtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc3Bhd25OZXdTdXNwZW5kZWRUYXNrKHJlcXVlc3QsIHRhc2ssIHgpIHtcbiAgLy8gU29tZXRoaW5nIHN1c3BlbmRlZCwgd2UnbGwgbmVlZCB0byBjcmVhdGUgYSBuZXcgc2VnbWVudCBhbmQgcmVzb2x2ZSBpdCBsYXRlci5cbiAgdmFyIHNlZ21lbnQgPSB0YXNrLmJsb2NrZWRTZWdtZW50O1xuICB2YXIgaW5zZXJ0aW9uSW5kZXggPSBzZWdtZW50LmNodW5rcy5sZW5ndGg7XG4gIHZhciBuZXdTZWdtZW50ID0gY3JlYXRlUGVuZGluZ1NlZ21lbnQocmVxdWVzdCwgaW5zZXJ0aW9uSW5kZXgsIG51bGwsIHNlZ21lbnQuZm9ybWF0Q29udGV4dCk7XG4gIHNlZ21lbnQuY2hpbGRyZW4ucHVzaChuZXdTZWdtZW50KTtcbiAgdmFyIG5ld1Rhc2sgPSBjcmVhdGVUYXNrKHJlcXVlc3QsIHRhc2subm9kZSwgdGFzay5ibG9ja2VkQm91bmRhcnksIG5ld1NlZ21lbnQsIHRhc2suYWJvcnRTZXQsIHRhc2subGVnYWN5Q29udGV4dCwgdGFzay5jb250ZXh0LCB0YXNrLnRyZWVDb250ZXh0KTtcblxuICB7XG4gICAgaWYgKHRhc2suY29tcG9uZW50U3RhY2sgIT09IG51bGwpIHtcbiAgICAgIC8vIFdlIHBvcCBvbmUgdGFzayBvZmYgdGhlIHN0YWNrIGJlY2F1c2UgdGhlIG5vZGUgdGhhdCBzdXNwZW5kZWQgd2lsbCBiZSB0cmllZCBhZ2FpbixcbiAgICAgIC8vIHdoaWNoIHdpbGwgYWRkIGl0IGJhY2sgb250byB0aGUgc3RhY2suXG4gICAgICBuZXdUYXNrLmNvbXBvbmVudFN0YWNrID0gdGFzay5jb21wb25lbnRTdGFjay5wYXJlbnQ7XG4gICAgfVxuICB9XG5cbiAgdmFyIHBpbmcgPSBuZXdUYXNrLnBpbmc7XG4gIHgudGhlbihwaW5nLCBwaW5nKTtcbn0gLy8gVGhpcyBpcyBhIG5vbi1kZXN0cnVjdGl2ZSBmb3JtIG9mIHJlbmRlcmluZyBhIG5vZGUuIElmIGl0IHN1c3BlbmRzIGl0IHNwYXduc1xuLy8gYSBuZXcgdGFzayBhbmQgcmVzdG9yZXMgdGhlIGNvbnRleHQgb2YgdGhpcyB0YXNrIHRvIHdoYXQgaXQgd2FzIGJlZm9yZS5cblxuXG5mdW5jdGlvbiByZW5kZXJOb2RlKHJlcXVlc3QsIHRhc2ssIG5vZGUpIHtcbiAgLy8gVE9ETzogU3RvcmUgc2VnbWVudC5jaGlsZHJlbi5sZW5ndGggaGVyZSBhbmQgcmVzZXQgaXQgaW4gY2FzZSBzb21ldGhpbmdcbiAgLy8gc3VzcGVuZGVkIHBhcnRpYWxseSB0aHJvdWdoIHdyaXRpbmcgc29tZXRoaW5nLlxuICAvLyBTbmFwc2hvdCB0aGUgY3VycmVudCBjb250ZXh0IGluIGNhc2Ugc29tZXRoaW5nIHRocm93cyB0byBpbnRlcnJ1cHQgdGhlXG4gIC8vIHByb2Nlc3MuXG4gIHZhciBwcmV2aW91c0Zvcm1hdENvbnRleHQgPSB0YXNrLmJsb2NrZWRTZWdtZW50LmZvcm1hdENvbnRleHQ7XG4gIHZhciBwcmV2aW91c0xlZ2FjeUNvbnRleHQgPSB0YXNrLmxlZ2FjeUNvbnRleHQ7XG4gIHZhciBwcmV2aW91c0NvbnRleHQgPSB0YXNrLmNvbnRleHQ7XG4gIHZhciBwcmV2aW91c0NvbXBvbmVudFN0YWNrID0gbnVsbDtcblxuICB7XG4gICAgcHJldmlvdXNDb21wb25lbnRTdGFjayA9IHRhc2suY29tcG9uZW50U3RhY2s7XG4gIH1cblxuICB0cnkge1xuICAgIHJldHVybiByZW5kZXJOb2RlRGVzdHJ1Y3RpdmUocmVxdWVzdCwgdGFzaywgbm9kZSk7XG4gIH0gY2F0Y2ggKHgpIHtcbiAgICByZXNldEhvb2tzU3RhdGUoKTtcblxuICAgIGlmICh0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeCAhPT0gbnVsbCAmJiB0eXBlb2YgeC50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBzcGF3bk5ld1N1c3BlbmRlZFRhc2socmVxdWVzdCwgdGFzaywgeCk7IC8vIFJlc3RvcmUgdGhlIGNvbnRleHQuIFdlIGFzc3VtZSB0aGF0IHRoaXMgd2lsbCBiZSByZXN0b3JlZCBieSB0aGUgaW5uZXJcbiAgICAgIC8vIGZ1bmN0aW9ucyBpbiBjYXNlIG5vdGhpbmcgdGhyb3dzIHNvIHdlIGRvbid0IHVzZSBcImZpbmFsbHlcIiBoZXJlLlxuXG4gICAgICB0YXNrLmJsb2NrZWRTZWdtZW50LmZvcm1hdENvbnRleHQgPSBwcmV2aW91c0Zvcm1hdENvbnRleHQ7XG4gICAgICB0YXNrLmxlZ2FjeUNvbnRleHQgPSBwcmV2aW91c0xlZ2FjeUNvbnRleHQ7XG4gICAgICB0YXNrLmNvbnRleHQgPSBwcmV2aW91c0NvbnRleHQ7IC8vIFJlc3RvcmUgYWxsIGFjdGl2ZSBSZWFjdENvbnRleHRzIHRvIHdoYXQgdGhleSB3ZXJlIGJlZm9yZS5cblxuICAgICAgc3dpdGNoQ29udGV4dChwcmV2aW91c0NvbnRleHQpO1xuXG4gICAgICB7XG4gICAgICAgIHRhc2suY29tcG9uZW50U3RhY2sgPSBwcmV2aW91c0NvbXBvbmVudFN0YWNrO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlc3RvcmUgdGhlIGNvbnRleHQuIFdlIGFzc3VtZSB0aGF0IHRoaXMgd2lsbCBiZSByZXN0b3JlZCBieSB0aGUgaW5uZXJcbiAgICAgIC8vIGZ1bmN0aW9ucyBpbiBjYXNlIG5vdGhpbmcgdGhyb3dzIHNvIHdlIGRvbid0IHVzZSBcImZpbmFsbHlcIiBoZXJlLlxuICAgICAgdGFzay5ibG9ja2VkU2VnbWVudC5mb3JtYXRDb250ZXh0ID0gcHJldmlvdXNGb3JtYXRDb250ZXh0O1xuICAgICAgdGFzay5sZWdhY3lDb250ZXh0ID0gcHJldmlvdXNMZWdhY3lDb250ZXh0O1xuICAgICAgdGFzay5jb250ZXh0ID0gcHJldmlvdXNDb250ZXh0OyAvLyBSZXN0b3JlIGFsbCBhY3RpdmUgUmVhY3RDb250ZXh0cyB0byB3aGF0IHRoZXkgd2VyZSBiZWZvcmUuXG5cbiAgICAgIHN3aXRjaENvbnRleHQocHJldmlvdXNDb250ZXh0KTtcblxuICAgICAge1xuICAgICAgICB0YXNrLmNvbXBvbmVudFN0YWNrID0gcHJldmlvdXNDb21wb25lbnRTdGFjaztcbiAgICAgIH0gLy8gV2UgYXNzdW1lIHRoYXQgd2UgZG9uJ3QgbmVlZCB0aGUgY29ycmVjdCBjb250ZXh0LlxuICAgICAgLy8gTGV0J3MgdGVybWluYXRlIHRoZSByZXN0IG9mIHRoZSB0cmVlIGFuZCBkb24ndCByZW5kZXIgYW55IHNpYmxpbmdzLlxuXG5cbiAgICAgIHRocm93IHg7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGVycm9yZWRUYXNrKHJlcXVlc3QsIGJvdW5kYXJ5LCBzZWdtZW50LCBlcnJvcikge1xuICAvLyBSZXBvcnQgdGhlIGVycm9yIHRvIGEgZ2xvYmFsIGhhbmRsZXIuXG4gIGxvZ1JlY292ZXJhYmxlRXJyb3IocmVxdWVzdCwgZXJyb3IpO1xuXG4gIGlmIChib3VuZGFyeSA9PT0gbnVsbCkge1xuICAgIGZhdGFsRXJyb3IocmVxdWVzdCwgZXJyb3IpO1xuICB9IGVsc2Uge1xuICAgIGJvdW5kYXJ5LnBlbmRpbmdUYXNrcy0tO1xuXG4gICAgaWYgKCFib3VuZGFyeS5mb3JjZUNsaWVudFJlbmRlcikge1xuICAgICAgYm91bmRhcnkuZm9yY2VDbGllbnRSZW5kZXIgPSB0cnVlOyAvLyBSZWdhcmRsZXNzIG9mIHdoYXQgaGFwcGVucyBuZXh0LCB0aGlzIGJvdW5kYXJ5IHdvbid0IGJlIGRpc3BsYXllZCxcbiAgICAgIC8vIHNvIHdlIGNhbiBmbHVzaCBpdCwgaWYgdGhlIHBhcmVudCBhbHJlYWR5IGZsdXNoZWQuXG5cbiAgICAgIGlmIChib3VuZGFyeS5wYXJlbnRGbHVzaGVkKSB7XG4gICAgICAgIC8vIFdlIGRvbid0IGhhdmUgYSBwcmVmZXJlbmNlIHdoZXJlIGluIHRoZSBxdWV1ZSB0aGlzIGdvZXMgc2luY2UgaXQncyBsaWtlbHlcbiAgICAgICAgLy8gdG8gZXJyb3Igb24gdGhlIGNsaWVudCBhbnl3YXkuIEhvd2V2ZXIsIGludGVudGlvbmFsbHkgY2xpZW50LXJlbmRlcmVkXG4gICAgICAgIC8vIGJvdW5kYXJpZXMgc2hvdWxkIGJlIGZsdXNoZWQgZWFybGllciBzbyB0aGF0IHRoZXkgY2FuIHN0YXJ0IG9uIHRoZSBjbGllbnQuXG4gICAgICAgIC8vIFdlIHJldXNlIHRoZSBzYW1lIHF1ZXVlIGZvciBlcnJvcnMuXG4gICAgICAgIHJlcXVlc3QuY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzLnB1c2goYm91bmRhcnkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3QuYWxsUGVuZGluZ1Rhc2tzLS07XG5cbiAgaWYgKHJlcXVlc3QuYWxsUGVuZGluZ1Rhc2tzID09PSAwKSB7XG4gICAgdmFyIG9uQWxsUmVhZHkgPSByZXF1ZXN0Lm9uQWxsUmVhZHk7XG4gICAgb25BbGxSZWFkeSgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFib3J0VGFza1NvZnQodGFzaykge1xuICAvLyBUaGlzIGFib3J0cyB0YXNrIHdpdGhvdXQgYWJvcnRpbmcgdGhlIHBhcmVudCBib3VuZGFyeSB0aGF0IGl0IGJsb2Nrcy5cbiAgLy8gSXQncyB1c2VkIGZvciB3aGVuIHdlIGRpZG4ndCBuZWVkIHRoaXMgdGFzayB0byBjb21wbGV0ZSB0aGUgdHJlZS5cbiAgLy8gSWYgdGFzayB3YXMgbmVlZGVkLCB0aGVuIGl0IHNob3VsZCB1c2UgYWJvcnRUYXNrIGluc3RlYWQuXG4gIHZhciByZXF1ZXN0ID0gdGhpcztcbiAgdmFyIGJvdW5kYXJ5ID0gdGFzay5ibG9ja2VkQm91bmRhcnk7XG4gIHZhciBzZWdtZW50ID0gdGFzay5ibG9ja2VkU2VnbWVudDtcbiAgc2VnbWVudC5zdGF0dXMgPSBBQk9SVEVEO1xuICBmaW5pc2hlZFRhc2socmVxdWVzdCwgYm91bmRhcnksIHNlZ21lbnQpO1xufVxuXG5mdW5jdGlvbiBhYm9ydFRhc2sodGFzaykge1xuICAvLyBUaGlzIGFib3J0cyB0aGUgdGFzayBhbmQgYWJvcnRzIHRoZSBwYXJlbnQgdGhhdCBpdCBibG9ja3MsIHB1dHRpbmcgaXQgaW50b1xuICAvLyBjbGllbnQgcmVuZGVyZWQgbW9kZS5cbiAgdmFyIHJlcXVlc3QgPSB0aGlzO1xuICB2YXIgYm91bmRhcnkgPSB0YXNrLmJsb2NrZWRCb3VuZGFyeTtcbiAgdmFyIHNlZ21lbnQgPSB0YXNrLmJsb2NrZWRTZWdtZW50O1xuICBzZWdtZW50LnN0YXR1cyA9IEFCT1JURUQ7XG5cbiAgaWYgKGJvdW5kYXJ5ID09PSBudWxsKSB7XG4gICAgcmVxdWVzdC5hbGxQZW5kaW5nVGFza3MtLTsgLy8gV2UgZGlkbid0IGNvbXBsZXRlIHRoZSByb290IHNvIHdlIGhhdmUgbm90aGluZyB0byBzaG93LiBXZSBjYW4gY2xvc2VcbiAgICAvLyB0aGUgcmVxdWVzdDtcblxuICAgIGlmIChyZXF1ZXN0LnN0YXR1cyAhPT0gQ0xPU0VEKSB7XG4gICAgICByZXF1ZXN0LnN0YXR1cyA9IENMT1NFRDtcblxuICAgICAgaWYgKHJlcXVlc3QuZGVzdGluYXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgY2xvc2UocmVxdWVzdC5kZXN0aW5hdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGJvdW5kYXJ5LnBlbmRpbmdUYXNrcy0tO1xuXG4gICAgaWYgKCFib3VuZGFyeS5mb3JjZUNsaWVudFJlbmRlcikge1xuICAgICAgYm91bmRhcnkuZm9yY2VDbGllbnRSZW5kZXIgPSB0cnVlO1xuXG4gICAgICBpZiAoYm91bmRhcnkucGFyZW50Rmx1c2hlZCkge1xuICAgICAgICByZXF1ZXN0LmNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5wdXNoKGJvdW5kYXJ5KTtcbiAgICAgIH1cbiAgICB9IC8vIElmIHRoaXMgYm91bmRhcnkgd2FzIHN0aWxsIHBlbmRpbmcgdGhlbiB3ZSBoYXZlbid0IGFscmVhZHkgY2FuY2VsbGVkIGl0cyBmYWxsYmFja3MuXG4gICAgLy8gV2UnbGwgbmVlZCB0byBhYm9ydCB0aGUgZmFsbGJhY2tzLCB3aGljaCB3aWxsIGFsc28gZXJyb3IgdGhhdCBwYXJlbnQgYm91bmRhcnkuXG5cblxuICAgIGJvdW5kYXJ5LmZhbGxiYWNrQWJvcnRhYmxlVGFza3MuZm9yRWFjaChhYm9ydFRhc2ssIHJlcXVlc3QpO1xuICAgIGJvdW5kYXJ5LmZhbGxiYWNrQWJvcnRhYmxlVGFza3MuY2xlYXIoKTtcbiAgICByZXF1ZXN0LmFsbFBlbmRpbmdUYXNrcy0tO1xuXG4gICAgaWYgKHJlcXVlc3QuYWxsUGVuZGluZ1Rhc2tzID09PSAwKSB7XG4gICAgICB2YXIgb25BbGxSZWFkeSA9IHJlcXVlc3Qub25BbGxSZWFkeTtcbiAgICAgIG9uQWxsUmVhZHkoKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcXVldWVDb21wbGV0ZWRTZWdtZW50KGJvdW5kYXJ5LCBzZWdtZW50KSB7XG4gIGlmIChzZWdtZW50LmNodW5rcy5sZW5ndGggPT09IDAgJiYgc2VnbWVudC5jaGlsZHJlbi5sZW5ndGggPT09IDEgJiYgc2VnbWVudC5jaGlsZHJlblswXS5ib3VuZGFyeSA9PT0gbnVsbCkge1xuICAgIC8vIFRoaXMgaXMgYW4gZW1wdHkgc2VnbWVudC4gVGhlcmUncyBub3RoaW5nIHRvIHdyaXRlLCBzbyB3ZSBjYW4gaW5zdGVhZCB0cmFuc2ZlciB0aGUgSURcbiAgICAvLyB0byB0aGUgY2hpbGQuIFRoYXQgd2F5IGFueSBleGlzdGluZyByZWZlcmVuY2VzIHBvaW50IHRvIHRoZSBjaGlsZC5cbiAgICB2YXIgY2hpbGRTZWdtZW50ID0gc2VnbWVudC5jaGlsZHJlblswXTtcbiAgICBjaGlsZFNlZ21lbnQuaWQgPSBzZWdtZW50LmlkO1xuICAgIGNoaWxkU2VnbWVudC5wYXJlbnRGbHVzaGVkID0gdHJ1ZTtcblxuICAgIGlmIChjaGlsZFNlZ21lbnQuc3RhdHVzID09PSBDT01QTEVURUQpIHtcbiAgICAgIHF1ZXVlQ29tcGxldGVkU2VnbWVudChib3VuZGFyeSwgY2hpbGRTZWdtZW50KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGNvbXBsZXRlZFNlZ21lbnRzID0gYm91bmRhcnkuY29tcGxldGVkU2VnbWVudHM7XG4gICAgY29tcGxldGVkU2VnbWVudHMucHVzaChzZWdtZW50KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5pc2hlZFRhc2socmVxdWVzdCwgYm91bmRhcnksIHNlZ21lbnQpIHtcbiAgaWYgKGJvdW5kYXJ5ID09PSBudWxsKSB7XG4gICAgaWYgKHNlZ21lbnQucGFyZW50Rmx1c2hlZCkge1xuICAgICAgaWYgKHJlcXVlc3QuY29tcGxldGVkUm9vdFNlZ21lbnQgIT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGVyZSBjYW4gb25seSBiZSBvbmUgcm9vdCBzZWdtZW50LiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LicpO1xuICAgICAgfVxuXG4gICAgICByZXF1ZXN0LmNvbXBsZXRlZFJvb3RTZWdtZW50ID0gc2VnbWVudDtcbiAgICB9XG5cbiAgICByZXF1ZXN0LnBlbmRpbmdSb290VGFza3MtLTtcblxuICAgIGlmIChyZXF1ZXN0LnBlbmRpbmdSb290VGFza3MgPT09IDApIHtcbiAgICAgIC8vIFdlIGhhdmUgY29tcGxldGVkIHRoZSBzaGVsbCBzbyB0aGUgc2hlbGwgY2FuJ3QgZXJyb3IgYW55bW9yZS5cbiAgICAgIHJlcXVlc3Qub25TaGVsbEVycm9yID0gbm9vcCQxO1xuICAgICAgdmFyIG9uU2hlbGxSZWFkeSA9IHJlcXVlc3Qub25TaGVsbFJlYWR5O1xuICAgICAgb25TaGVsbFJlYWR5KCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGJvdW5kYXJ5LnBlbmRpbmdUYXNrcy0tO1xuXG4gICAgaWYgKGJvdW5kYXJ5LmZvcmNlQ2xpZW50UmVuZGVyKSA7IGVsc2UgaWYgKGJvdW5kYXJ5LnBlbmRpbmdUYXNrcyA9PT0gMCkge1xuICAgICAgLy8gVGhpcyBtdXN0IGhhdmUgYmVlbiB0aGUgbGFzdCBzZWdtZW50IHdlIHdlcmUgd2FpdGluZyBvbi4gVGhpcyBib3VuZGFyeSBpcyBub3cgY29tcGxldGUuXG4gICAgICBpZiAoc2VnbWVudC5wYXJlbnRGbHVzaGVkKSB7XG4gICAgICAgIC8vIE91ciBwYXJlbnQgc2VnbWVudCBhbHJlYWR5IGZsdXNoZWQsIHNvIHdlIG5lZWQgdG8gc2NoZWR1bGUgdGhpcyBzZWdtZW50IHRvIGJlIGVtaXR0ZWQuXG4gICAgICAgIC8vIElmIGl0IGlzIGEgc2VnbWVudCB0aGF0IHdhcyBhYm9ydGVkLCB3ZSdsbCB3cml0ZSBvdGhlciBjb250ZW50IGluc3RlYWQgc28gd2UgZG9uJ3QgbmVlZFxuICAgICAgICAvLyB0byBlbWl0IGl0LlxuICAgICAgICBpZiAoc2VnbWVudC5zdGF0dXMgPT09IENPTVBMRVRFRCkge1xuICAgICAgICAgIHF1ZXVlQ29tcGxldGVkU2VnbWVudChib3VuZGFyeSwgc2VnbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGJvdW5kYXJ5LnBhcmVudEZsdXNoZWQpIHtcbiAgICAgICAgLy8gVGhlIHNlZ21lbnQgbWlnaHQgYmUgcGFydCBvZiBhIHNlZ21lbnQgdGhhdCBkaWRuJ3QgZmx1c2ggeWV0LCBidXQgaWYgdGhlIGJvdW5kYXJ5J3NcbiAgICAgICAgLy8gcGFyZW50IGZsdXNoZWQsIHdlIG5lZWQgdG8gc2NoZWR1bGUgdGhlIGJvdW5kYXJ5IHRvIGJlIGVtaXR0ZWQuXG4gICAgICAgIHJlcXVlc3QuY29tcGxldGVkQm91bmRhcmllcy5wdXNoKGJvdW5kYXJ5KTtcbiAgICAgIH0gLy8gV2UgY2FuIG5vdyBjYW5jZWwgYW55IHBlbmRpbmcgdGFzayBvbiB0aGUgZmFsbGJhY2sgc2luY2Ugd2Ugd29uJ3QgbmVlZCB0byBzaG93IGl0IGFueW1vcmUuXG4gICAgICAvLyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB3ZSByZWFkIHRoZSBwYXJlbnRGbHVzaGVkIGZsYWdzIGJlY2F1c2UgYWJvcnRpbmcgY2FuIGZpbmlzaFxuICAgICAgLy8gd29yayB3aGljaCBjYW4gdHJpZ2dlciB1c2VyIGNvZGUsIHdoaWNoIGNhbiBzdGFydCBmbHVzaGluZywgd2hpY2ggY2FuIGNoYW5nZSB0aG9zZSBmbGFncy5cblxuXG4gICAgICBib3VuZGFyeS5mYWxsYmFja0Fib3J0YWJsZVRhc2tzLmZvckVhY2goYWJvcnRUYXNrU29mdCwgcmVxdWVzdCk7XG4gICAgICBib3VuZGFyeS5mYWxsYmFja0Fib3J0YWJsZVRhc2tzLmNsZWFyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzZWdtZW50LnBhcmVudEZsdXNoZWQpIHtcbiAgICAgICAgLy8gT3VyIHBhcmVudCBhbHJlYWR5IGZsdXNoZWQsIHNvIHdlIG5lZWQgdG8gc2NoZWR1bGUgdGhpcyBzZWdtZW50IHRvIGJlIGVtaXR0ZWQuXG4gICAgICAgIC8vIElmIGl0IGlzIGEgc2VnbWVudCB0aGF0IHdhcyBhYm9ydGVkLCB3ZSdsbCB3cml0ZSBvdGhlciBjb250ZW50IGluc3RlYWQgc28gd2UgZG9uJ3QgbmVlZFxuICAgICAgICAvLyB0byBlbWl0IGl0LlxuICAgICAgICBpZiAoc2VnbWVudC5zdGF0dXMgPT09IENPTVBMRVRFRCkge1xuICAgICAgICAgIHF1ZXVlQ29tcGxldGVkU2VnbWVudChib3VuZGFyeSwgc2VnbWVudCk7XG4gICAgICAgICAgdmFyIGNvbXBsZXRlZFNlZ21lbnRzID0gYm91bmRhcnkuY29tcGxldGVkU2VnbWVudHM7XG5cbiAgICAgICAgICBpZiAoY29tcGxldGVkU2VnbWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCB0aW1lIHNpbmNlIHdlIGxhc3QgZmx1c2hlZCB0aGF0IHdlIGNvbXBsZXRlZCBhbnl0aGluZy5cbiAgICAgICAgICAgIC8vIFdlIGNhbiBzY2hlZHVsZSB0aGlzIGJvdW5kYXJ5IHRvIGVtaXQgaXRzIHBhcnRpYWxseSBjb21wbGV0ZWQgc2VnbWVudHMgZWFybHlcbiAgICAgICAgICAgIC8vIGluIGNhc2UgdGhlIHBhcmVudCBoYXMgYWxyZWFkeSBiZWVuIGZsdXNoZWQuXG4gICAgICAgICAgICBpZiAoYm91bmRhcnkucGFyZW50Rmx1c2hlZCkge1xuICAgICAgICAgICAgICByZXF1ZXN0LnBhcnRpYWxCb3VuZGFyaWVzLnB1c2goYm91bmRhcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3QuYWxsUGVuZGluZ1Rhc2tzLS07XG5cbiAgaWYgKHJlcXVlc3QuYWxsUGVuZGluZ1Rhc2tzID09PSAwKSB7XG4gICAgLy8gVGhpcyBuZWVkcyB0byBiZSBjYWxsZWQgYXQgdGhlIHZlcnkgZW5kIHNvIHRoYXQgd2UgY2FuIHN5bmNocm9ub3VzbHkgd3JpdGUgdGhlIHJlc3VsdFxuICAgIC8vIGluIHRoZSBjYWxsYmFjayBpZiBuZWVkZWQuXG4gICAgdmFyIG9uQWxsUmVhZHkgPSByZXF1ZXN0Lm9uQWxsUmVhZHk7XG4gICAgb25BbGxSZWFkeSgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJldHJ5VGFzayhyZXF1ZXN0LCB0YXNrKSB7XG4gIHZhciBzZWdtZW50ID0gdGFzay5ibG9ja2VkU2VnbWVudDtcblxuICBpZiAoc2VnbWVudC5zdGF0dXMgIT09IFBFTkRJTkcpIHtcbiAgICAvLyBXZSBjb21wbGV0ZWQgdGhpcyBieSBvdGhlciBtZWFucyBiZWZvcmUgd2UgaGFkIGEgY2hhbmNlIHRvIHJldHJ5IGl0LlxuICAgIHJldHVybjtcbiAgfSAvLyBXZSByZXN0b3JlIHRoZSBjb250ZXh0IHRvIHdoYXQgaXQgd2FzIHdoZW4gd2Ugc3VzcGVuZGVkLlxuICAvLyBXZSBkb24ndCByZXN0b3JlIGl0IGFmdGVyIHdlIGxlYXZlIGJlY2F1c2UgaXQncyBsaWtlbHkgdGhhdCB3ZSdsbCBlbmQgdXBcbiAgLy8gbmVlZGluZyBhIHZlcnkgc2ltaWxhciBjb250ZXh0IHNvb24gYWdhaW4uXG5cblxuICBzd2l0Y2hDb250ZXh0KHRhc2suY29udGV4dCk7XG4gIHZhciBwcmV2VGFza0luREVWID0gbnVsbDtcblxuICB7XG4gICAgcHJldlRhc2tJbkRFViA9IGN1cnJlbnRUYXNrSW5ERVY7XG4gICAgY3VycmVudFRhc2tJbkRFViA9IHRhc2s7XG4gIH1cblxuICB0cnkge1xuICAgIC8vIFdlIGNhbGwgdGhlIGRlc3RydWN0aXZlIGZvcm0gdGhhdCBtdXRhdGVzIHRoaXMgdGFzay4gVGhhdCB3YXkgaWYgc29tZXRoaW5nXG4gICAgLy8gc3VzcGVuZHMgYWdhaW4sIHdlIGNhbiByZXVzZSB0aGUgc2FtZSB0YXNrIGluc3RlYWQgb2Ygc3Bhd25pbmcgYSBuZXcgb25lLlxuICAgIHJlbmRlck5vZGVEZXN0cnVjdGl2ZShyZXF1ZXN0LCB0YXNrLCB0YXNrLm5vZGUpO1xuICAgIHRhc2suYWJvcnRTZXQuZGVsZXRlKHRhc2spO1xuICAgIHNlZ21lbnQuc3RhdHVzID0gQ09NUExFVEVEO1xuICAgIGZpbmlzaGVkVGFzayhyZXF1ZXN0LCB0YXNrLmJsb2NrZWRCb3VuZGFyeSwgc2VnbWVudCk7XG4gIH0gY2F0Y2ggKHgpIHtcbiAgICByZXNldEhvb2tzU3RhdGUoKTtcblxuICAgIGlmICh0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeCAhPT0gbnVsbCAmJiB0eXBlb2YgeC50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBTb21ldGhpbmcgc3VzcGVuZGVkIGFnYWluLCBsZXQncyBwaWNrIGl0IGJhY2sgdXAgbGF0ZXIuXG4gICAgICB2YXIgcGluZyA9IHRhc2sucGluZztcbiAgICAgIHgudGhlbihwaW5nLCBwaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFzay5hYm9ydFNldC5kZWxldGUodGFzayk7XG4gICAgICBzZWdtZW50LnN0YXR1cyA9IEVSUk9SRUQ7XG4gICAgICBlcnJvcmVkVGFzayhyZXF1ZXN0LCB0YXNrLmJsb2NrZWRCb3VuZGFyeSwgc2VnbWVudCwgeCk7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIHtcbiAgICAgIGN1cnJlbnRUYXNrSW5ERVYgPSBwcmV2VGFza0luREVWO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwZXJmb3JtV29yayhyZXF1ZXN0KSB7XG4gIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gQ0xPU0VEKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHByZXZDb250ZXh0ID0gZ2V0QWN0aXZlQ29udGV4dCgpO1xuICB2YXIgcHJldkRpc3BhdGNoZXIgPSBSZWFjdEN1cnJlbnREaXNwYXRjaGVyJDEuY3VycmVudDtcbiAgUmVhY3RDdXJyZW50RGlzcGF0Y2hlciQxLmN1cnJlbnQgPSBEaXNwYXRjaGVyO1xuICB2YXIgcHJldkdldEN1cnJlbnRTdGFja0ltcGw7XG5cbiAge1xuICAgIHByZXZHZXRDdXJyZW50U3RhY2tJbXBsID0gUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSQxLmdldEN1cnJlbnRTdGFjaztcbiAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lJDEuZ2V0Q3VycmVudFN0YWNrID0gZ2V0Q3VycmVudFN0YWNrSW5ERVY7XG4gIH1cblxuICB2YXIgcHJldlJlc3BvbnNlU3RhdGUgPSBjdXJyZW50UmVzcG9uc2VTdGF0ZTtcbiAgc2V0Q3VycmVudFJlc3BvbnNlU3RhdGUocmVxdWVzdC5yZXNwb25zZVN0YXRlKTtcblxuICB0cnkge1xuICAgIHZhciBwaW5nZWRUYXNrcyA9IHJlcXVlc3QucGluZ2VkVGFza3M7XG4gICAgdmFyIGk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgcGluZ2VkVGFza3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB0YXNrID0gcGluZ2VkVGFza3NbaV07XG4gICAgICByZXRyeVRhc2socmVxdWVzdCwgdGFzayk7XG4gICAgfVxuXG4gICAgcGluZ2VkVGFza3Muc3BsaWNlKDAsIGkpO1xuXG4gICAgaWYgKHJlcXVlc3QuZGVzdGluYXRpb24gIT09IG51bGwpIHtcbiAgICAgIGZsdXNoQ29tcGxldGVkUXVldWVzKHJlcXVlc3QsIHJlcXVlc3QuZGVzdGluYXRpb24pO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2dSZWNvdmVyYWJsZUVycm9yKHJlcXVlc3QsIGVycm9yKTtcbiAgICBmYXRhbEVycm9yKHJlcXVlc3QsIGVycm9yKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBzZXRDdXJyZW50UmVzcG9uc2VTdGF0ZShwcmV2UmVzcG9uc2VTdGF0ZSk7XG4gICAgUmVhY3RDdXJyZW50RGlzcGF0Y2hlciQxLmN1cnJlbnQgPSBwcmV2RGlzcGF0Y2hlcjtcblxuICAgIHtcbiAgICAgIFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMS5nZXRDdXJyZW50U3RhY2sgPSBwcmV2R2V0Q3VycmVudFN0YWNrSW1wbDtcbiAgICB9XG5cbiAgICBpZiAocHJldkRpc3BhdGNoZXIgPT09IERpc3BhdGNoZXIpIHtcbiAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB3ZSB3ZXJlIGluIGEgcmVlbnRyYW50IHdvcmsgbG9vcC4gVGhpcyBjb3VsZCBoYXBwZW5cbiAgICAgIC8vIGluIGEgcmVuZGVyZXIgdGhhdCBzdXBwb3J0cyBzeW5jaHJvbm91cyB3b3JrIGxpa2UgcmVuZGVyVG9TdHJpbmcsXG4gICAgICAvLyB3aGVuIGl0J3MgY2FsbGVkIGZyb20gd2l0aGluIGFub3RoZXIgcmVuZGVyZXIuXG4gICAgICAvLyBOb3JtYWxseSB3ZSBkb24ndCBib3RoZXIgc3dpdGNoaW5nIHRoZSBjb250ZXh0cyB0byB0aGVpciByb290L2RlZmF1bHRcbiAgICAgIC8vIHZhbHVlcyB3aGVuIGxlYXZpbmcgYmVjYXVzZSB3ZSdsbCBsaWtlbHkgbmVlZCB0aGUgc2FtZSBvciBzaW1pbGFyXG4gICAgICAvLyBjb250ZXh0IGFnYWluLiBIb3dldmVyLCB3aGVuIHdlJ3JlIGluc2lkZSBhIHN5bmNocm9ub3VzIGxvb3AgbGlrZSB0aGlzXG4gICAgICAvLyB3ZSdsbCB0byByZXN0b3JlIHRoZSBjb250ZXh0IHRvIHdoYXQgaXQgd2FzIGJlZm9yZSByZXR1cm5pbmcuXG4gICAgICBzd2l0Y2hDb250ZXh0KHByZXZDb250ZXh0KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmx1c2hTdWJ0cmVlKHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBzZWdtZW50KSB7XG4gIHNlZ21lbnQucGFyZW50Rmx1c2hlZCA9IHRydWU7XG5cbiAgc3dpdGNoIChzZWdtZW50LnN0YXR1cykge1xuICAgIGNhc2UgUEVORElORzpcbiAgICAgIHtcbiAgICAgICAgLy8gV2UncmUgZW1pdHRpbmcgYSBwbGFjZWhvbGRlciBmb3IgdGhpcyBzZWdtZW50IHRvIGJlIGZpbGxlZCBpbiBsYXRlci5cbiAgICAgICAgLy8gVGhlcmVmb3JlIHdlJ2xsIG5lZWQgdG8gYXNzaWduIGl0IGFuIElEIC0gdG8gcmVmZXIgdG8gaXQgYnkuXG4gICAgICAgIHZhciBzZWdtZW50SUQgPSBzZWdtZW50LmlkID0gcmVxdWVzdC5uZXh0U2VnbWVudElkKys7XG4gICAgICAgIHJldHVybiB3cml0ZVBsYWNlaG9sZGVyKGRlc3RpbmF0aW9uLCByZXF1ZXN0LnJlc3BvbnNlU3RhdGUsIHNlZ21lbnRJRCk7XG4gICAgICB9XG5cbiAgICBjYXNlIENPTVBMRVRFRDpcbiAgICAgIHtcbiAgICAgICAgc2VnbWVudC5zdGF0dXMgPSBGTFVTSEVEO1xuICAgICAgICB2YXIgciA9IHRydWU7XG4gICAgICAgIHZhciBjaHVua3MgPSBzZWdtZW50LmNodW5rcztcbiAgICAgICAgdmFyIGNodW5rSWR4ID0gMDtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gc2VnbWVudC5jaGlsZHJlbjtcblxuICAgICAgICBmb3IgKHZhciBjaGlsZElkeCA9IDA7IGNoaWxkSWR4IDwgY2hpbGRyZW4ubGVuZ3RoOyBjaGlsZElkeCsrKSB7XG4gICAgICAgICAgdmFyIG5leHRDaGlsZCA9IGNoaWxkcmVuW2NoaWxkSWR4XTsgLy8gV3JpdGUgYWxsIHRoZSBjaHVua3MgdXAgdW50aWwgdGhlIG5leHQgY2hpbGQuXG5cbiAgICAgICAgICBmb3IgKDsgY2h1bmtJZHggPCBuZXh0Q2hpbGQuaW5kZXg7IGNodW5rSWR4KyspIHtcbiAgICAgICAgICAgIHdyaXRlQ2h1bmsoZGVzdGluYXRpb24sIGNodW5rc1tjaHVua0lkeF0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHIgPSBmbHVzaFNlZ21lbnQocmVxdWVzdCwgZGVzdGluYXRpb24sIG5leHRDaGlsZCk7XG4gICAgICAgIH0gLy8gRmluYWxseSBqdXN0IHdyaXRlIGFsbCB0aGUgcmVtYWluaW5nIGNodW5rc1xuXG5cbiAgICAgICAgZm9yICg7IGNodW5rSWR4IDwgY2h1bmtzLmxlbmd0aCAtIDE7IGNodW5rSWR4KyspIHtcbiAgICAgICAgICB3cml0ZUNodW5rKGRlc3RpbmF0aW9uLCBjaHVua3NbY2h1bmtJZHhdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaHVua0lkeCA8IGNodW5rcy5sZW5ndGgpIHtcbiAgICAgICAgICByID0gd3JpdGVDaHVua0FuZFJldHVybihkZXN0aW5hdGlvbiwgY2h1bmtzW2NodW5rSWR4XSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQWJvcnRlZCwgZXJyb3JlZCBvciBhbHJlYWR5IGZsdXNoZWQgYm91bmRhcmllcyBzaG91bGQgbm90IGJlIGZsdXNoZWQgYWdhaW4uIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuJyk7XG4gICAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmx1c2hTZWdtZW50KHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBzZWdtZW50KSB7XG4gIHZhciBib3VuZGFyeSA9IHNlZ21lbnQuYm91bmRhcnk7XG5cbiAgaWYgKGJvdW5kYXJ5ID09PSBudWxsKSB7XG4gICAgLy8gTm90IGEgc3VzcGVuc2UgYm91bmRhcnkuXG4gICAgcmV0dXJuIGZsdXNoU3VidHJlZShyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgc2VnbWVudCk7XG4gIH1cblxuICBib3VuZGFyeS5wYXJlbnRGbHVzaGVkID0gdHJ1ZTsgLy8gVGhpcyBzZWdtZW50IGlzIGEgU3VzcGVuc2UgYm91bmRhcnkuIFdlIG5lZWQgdG8gZGVjaWRlIHdoZXRoZXIgdG9cbiAgLy8gZW1pdCB0aGUgY29udGVudCBvciB0aGUgZmFsbGJhY2sgbm93LlxuXG4gIGlmIChib3VuZGFyeS5mb3JjZUNsaWVudFJlbmRlcikge1xuICAgIC8vIEVtaXQgYSBjbGllbnQgcmVuZGVyZWQgc3VzcGVuc2UgYm91bmRhcnkgd3JhcHBlci5cbiAgICAvLyBXZSBuZXZlciBxdWV1ZSB0aGUgaW5uZXIgYm91bmRhcnkgc28gd2UnbGwgbmV2ZXIgZW1pdCBpdHMgY29udGVudCBvciBwYXJ0aWFsIHNlZ21lbnRzLlxuICAgIHdyaXRlU3RhcnRDbGllbnRSZW5kZXJlZFN1c3BlbnNlQm91bmRhcnkoZGVzdGluYXRpb24sIHJlcXVlc3QucmVzcG9uc2VTdGF0ZSk7IC8vIEZsdXNoIHRoZSBmYWxsYmFjay5cblxuICAgIGZsdXNoU3VidHJlZShyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgc2VnbWVudCk7XG4gICAgcmV0dXJuIHdyaXRlRW5kQ2xpZW50UmVuZGVyZWRTdXNwZW5zZUJvdW5kYXJ5KGRlc3RpbmF0aW9uLCByZXF1ZXN0LnJlc3BvbnNlU3RhdGUpO1xuICB9IGVsc2UgaWYgKGJvdW5kYXJ5LnBlbmRpbmdUYXNrcyA+IDApIHtcbiAgICAvLyBUaGlzIGJvdW5kYXJ5IGlzIHN0aWxsIGxvYWRpbmcuIEVtaXQgYSBwZW5kaW5nIHN1c3BlbnNlIGJvdW5kYXJ5IHdyYXBwZXIuXG4gICAgLy8gQXNzaWduIGFuIElEIHRvIHJlZmVyIHRvIHRoZSBmdXR1cmUgY29udGVudCBieS5cbiAgICBib3VuZGFyeS5yb290U2VnbWVudElEID0gcmVxdWVzdC5uZXh0U2VnbWVudElkKys7XG5cbiAgICBpZiAoYm91bmRhcnkuY29tcGxldGVkU2VnbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gSWYgdGhpcyBpcyBhdCBsZWFzdCBwYXJ0aWFsbHkgY29tcGxldGUsIHdlIGNhbiBxdWV1ZSBpdCB0byBiZSBwYXJ0aWFsbHkgZW1pdHRlZCBlYXJseS5cbiAgICAgIHJlcXVlc3QucGFydGlhbEJvdW5kYXJpZXMucHVzaChib3VuZGFyeSk7XG4gICAgfSAvLy8gVGhpcyBpcyB0aGUgZmlyc3QgdGltZSB3ZSBzaG91bGQgaGF2ZSByZWZlcmVuY2VkIHRoaXMgSUQuXG5cblxuICAgIHZhciBpZCA9IGJvdW5kYXJ5LmlkID0gYXNzaWduU3VzcGVuc2VCb3VuZGFyeUlEKHJlcXVlc3QucmVzcG9uc2VTdGF0ZSk7XG4gICAgd3JpdGVTdGFydFBlbmRpbmdTdXNwZW5zZUJvdW5kYXJ5KGRlc3RpbmF0aW9uLCByZXF1ZXN0LnJlc3BvbnNlU3RhdGUsIGlkKTsgLy8gRmx1c2ggdGhlIGZhbGxiYWNrLlxuXG4gICAgZmx1c2hTdWJ0cmVlKHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBzZWdtZW50KTtcbiAgICByZXR1cm4gd3JpdGVFbmRQZW5kaW5nU3VzcGVuc2VCb3VuZGFyeShkZXN0aW5hdGlvbiwgcmVxdWVzdC5yZXNwb25zZVN0YXRlKTtcbiAgfSBlbHNlIGlmIChib3VuZGFyeS5ieXRlU2l6ZSA+IHJlcXVlc3QucHJvZ3Jlc3NpdmVDaHVua1NpemUpIHtcbiAgICAvLyBUaGlzIGJvdW5kYXJ5IGlzIGxhcmdlIGFuZCB3aWxsIGJlIGVtaXR0ZWQgc2VwYXJhdGVseSBzbyB0aGF0IHdlIGNhbiBwcm9ncmVzc2l2ZWx5IHNob3dcbiAgICAvLyBvdGhlciBjb250ZW50LiBXZSBhZGQgaXQgdG8gdGhlIHF1ZXVlIGR1cmluZyB0aGUgZmx1c2ggYmVjYXVzZSB3ZSBoYXZlIHRvIGVuc3VyZSB0aGF0XG4gICAgLy8gdGhlIHBhcmVudCBmbHVzaGVzIGZpcnN0IHNvIHRoYXQgdGhlcmUncyBzb21ldGhpbmcgdG8gaW5qZWN0IGl0IGludG8uXG4gICAgLy8gV2UgYWxzbyBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IGl0J3MgZW1pdHRlZCBpbnRvIHRoZSBxdWV1ZSBpbiBhIGRldGVybWluaXN0aWMgc2xvdC5cbiAgICAvLyBJLmUuIHdlIGNhbid0IGluc2VydCBpdCBoZXJlIHdoZW4gaXQgY29tcGxldGVzLlxuICAgIC8vIEFzc2lnbiBhbiBJRCB0byByZWZlciB0byB0aGUgZnV0dXJlIGNvbnRlbnQgYnkuXG4gICAgYm91bmRhcnkucm9vdFNlZ21lbnRJRCA9IHJlcXVlc3QubmV4dFNlZ21lbnRJZCsrO1xuICAgIHJlcXVlc3QuY29tcGxldGVkQm91bmRhcmllcy5wdXNoKGJvdW5kYXJ5KTsgLy8gRW1pdCBhIHBlbmRpbmcgcmVuZGVyZWQgc3VzcGVuc2UgYm91bmRhcnkgd3JhcHBlci5cblxuICAgIHdyaXRlU3RhcnRQZW5kaW5nU3VzcGVuc2VCb3VuZGFyeShkZXN0aW5hdGlvbiwgcmVxdWVzdC5yZXNwb25zZVN0YXRlLCBib3VuZGFyeS5pZCk7IC8vIEZsdXNoIHRoZSBmYWxsYmFjay5cblxuICAgIGZsdXNoU3VidHJlZShyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgc2VnbWVudCk7XG4gICAgcmV0dXJuIHdyaXRlRW5kUGVuZGluZ1N1c3BlbnNlQm91bmRhcnkoZGVzdGluYXRpb24sIHJlcXVlc3QucmVzcG9uc2VTdGF0ZSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gV2UgY2FuIGlubGluZSB0aGlzIGJvdW5kYXJ5J3MgY29udGVudCBhcyBhIGNvbXBsZXRlIGJvdW5kYXJ5LlxuICAgIHdyaXRlU3RhcnRDb21wbGV0ZWRTdXNwZW5zZUJvdW5kYXJ5KGRlc3RpbmF0aW9uLCByZXF1ZXN0LnJlc3BvbnNlU3RhdGUpO1xuICAgIHZhciBjb21wbGV0ZWRTZWdtZW50cyA9IGJvdW5kYXJ5LmNvbXBsZXRlZFNlZ21lbnRzO1xuXG4gICAgaWYgKGNvbXBsZXRlZFNlZ21lbnRzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBIHByZXZpb3VzbHkgdW52aXNpdGVkIGJvdW5kYXJ5IG11c3QgaGF2ZSBleGFjdGx5IG9uZSByb290IHNlZ21lbnQuIFRoaXMgaXMgYSBidWcgaW4gUmVhY3QuJyk7XG4gICAgfVxuXG4gICAgdmFyIGNvbnRlbnRTZWdtZW50ID0gY29tcGxldGVkU2VnbWVudHNbMF07XG4gICAgZmx1c2hTZWdtZW50KHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBjb250ZW50U2VnbWVudCk7XG4gICAgcmV0dXJuIHdyaXRlRW5kQ29tcGxldGVkU3VzcGVuc2VCb3VuZGFyeShkZXN0aW5hdGlvbiwgcmVxdWVzdC5yZXNwb25zZVN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmbHVzaENsaWVudFJlbmRlcmVkQm91bmRhcnkocmVxdWVzdCwgZGVzdGluYXRpb24sIGJvdW5kYXJ5KSB7XG4gIHJldHVybiB3cml0ZUNsaWVudFJlbmRlckJvdW5kYXJ5SW5zdHJ1Y3Rpb24oZGVzdGluYXRpb24sIHJlcXVlc3QucmVzcG9uc2VTdGF0ZSwgYm91bmRhcnkuaWQpO1xufVxuXG5mdW5jdGlvbiBmbHVzaFNlZ21lbnRDb250YWluZXIocmVxdWVzdCwgZGVzdGluYXRpb24sIHNlZ21lbnQpIHtcbiAgd3JpdGVTdGFydFNlZ21lbnQoZGVzdGluYXRpb24sIHJlcXVlc3QucmVzcG9uc2VTdGF0ZSwgc2VnbWVudC5mb3JtYXRDb250ZXh0LCBzZWdtZW50LmlkKTtcbiAgZmx1c2hTZWdtZW50KHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBzZWdtZW50KTtcbiAgcmV0dXJuIHdyaXRlRW5kU2VnbWVudChkZXN0aW5hdGlvbiwgc2VnbWVudC5mb3JtYXRDb250ZXh0KTtcbn1cblxuZnVuY3Rpb24gZmx1c2hDb21wbGV0ZWRCb3VuZGFyeShyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgYm91bmRhcnkpIHtcbiAgdmFyIGNvbXBsZXRlZFNlZ21lbnRzID0gYm91bmRhcnkuY29tcGxldGVkU2VnbWVudHM7XG4gIHZhciBpID0gMDtcblxuICBmb3IgKDsgaSA8IGNvbXBsZXRlZFNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNlZ21lbnQgPSBjb21wbGV0ZWRTZWdtZW50c1tpXTtcbiAgICBmbHVzaFBhcnRpYWxseUNvbXBsZXRlZFNlZ21lbnQocmVxdWVzdCwgZGVzdGluYXRpb24sIGJvdW5kYXJ5LCBzZWdtZW50KTtcbiAgfVxuXG4gIGNvbXBsZXRlZFNlZ21lbnRzLmxlbmd0aCA9IDA7XG4gIHJldHVybiB3cml0ZUNvbXBsZXRlZEJvdW5kYXJ5SW5zdHJ1Y3Rpb24oZGVzdGluYXRpb24sIHJlcXVlc3QucmVzcG9uc2VTdGF0ZSwgYm91bmRhcnkuaWQsIGJvdW5kYXJ5LnJvb3RTZWdtZW50SUQpO1xufVxuXG5mdW5jdGlvbiBmbHVzaFBhcnRpYWxCb3VuZGFyeShyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgYm91bmRhcnkpIHtcbiAgdmFyIGNvbXBsZXRlZFNlZ21lbnRzID0gYm91bmRhcnkuY29tcGxldGVkU2VnbWVudHM7XG4gIHZhciBpID0gMDtcblxuICBmb3IgKDsgaSA8IGNvbXBsZXRlZFNlZ21lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNlZ21lbnQgPSBjb21wbGV0ZWRTZWdtZW50c1tpXTtcblxuICAgIGlmICghZmx1c2hQYXJ0aWFsbHlDb21wbGV0ZWRTZWdtZW50KHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBib3VuZGFyeSwgc2VnbWVudCkpIHtcbiAgICAgIGkrKztcbiAgICAgIGNvbXBsZXRlZFNlZ21lbnRzLnNwbGljZSgwLCBpKTsgLy8gT25seSB3cml0ZSBhcyBtdWNoIGFzIHRoZSBidWZmZXIgd2FudHMuIFNvbWV0aGluZyBoaWdoZXIgcHJpb3JpdHlcbiAgICAgIC8vIG1pZ2h0IHdhbnQgdG8gd3JpdGUgbGF0ZXIuXG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBjb21wbGV0ZWRTZWdtZW50cy5zcGxpY2UoMCwgaSk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBmbHVzaFBhcnRpYWxseUNvbXBsZXRlZFNlZ21lbnQocmVxdWVzdCwgZGVzdGluYXRpb24sIGJvdW5kYXJ5LCBzZWdtZW50KSB7XG4gIGlmIChzZWdtZW50LnN0YXR1cyA9PT0gRkxVU0hFRCkge1xuICAgIC8vIFdlJ3ZlIGFscmVhZHkgZmx1c2hlZCB0aGlzIGlubGluZS5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhciBzZWdtZW50SUQgPSBzZWdtZW50LmlkO1xuXG4gIGlmIChzZWdtZW50SUQgPT09IC0xKSB7XG4gICAgLy8gVGhpcyBzZWdtZW50IHdhc24ndCBwcmV2aW91c2x5IHJlZmVycmVkIHRvLiBUaGlzIGhhcHBlbnMgYXQgdGhlIHJvb3Qgb2ZcbiAgICAvLyBhIGJvdW5kYXJ5LiBXZSBtYWtlIGtpbmQgb2YgYSBsZWFwIGhlcmUgYW5kIGFzc3VtZSB0aGlzIGlzIHRoZSByb290LlxuICAgIHZhciByb290U2VnbWVudElEID0gc2VnbWVudC5pZCA9IGJvdW5kYXJ5LnJvb3RTZWdtZW50SUQ7XG5cbiAgICBpZiAocm9vdFNlZ21lbnRJRCA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQSByb290IHNlZ21lbnQgSUQgbXVzdCBoYXZlIGJlZW4gYXNzaWduZWQgYnkgbm93LiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LicpO1xuICAgIH1cblxuICAgIHJldHVybiBmbHVzaFNlZ21lbnRDb250YWluZXIocmVxdWVzdCwgZGVzdGluYXRpb24sIHNlZ21lbnQpO1xuICB9IGVsc2Uge1xuICAgIGZsdXNoU2VnbWVudENvbnRhaW5lcihyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgc2VnbWVudCk7XG4gICAgcmV0dXJuIHdyaXRlQ29tcGxldGVkU2VnbWVudEluc3RydWN0aW9uKGRlc3RpbmF0aW9uLCByZXF1ZXN0LnJlc3BvbnNlU3RhdGUsIHNlZ21lbnRJRCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmx1c2hDb21wbGV0ZWRRdWV1ZXMocmVxdWVzdCwgZGVzdGluYXRpb24pIHtcbiAgYmVnaW5Xcml0aW5nKCk7XG5cbiAgdHJ5IHtcbiAgICAvLyBUaGUgc3RydWN0dXJlIG9mIHRoaXMgaXMgdG8gZ28gdGhyb3VnaCBlYWNoIHF1ZXVlIG9uZSBieSBvbmUgYW5kIHdyaXRlXG4gICAgLy8gdW50aWwgdGhlIHNpbmsgdGVsbHMgdXMgdG8gc3RvcC4gV2hlbiB3ZSBzaG91bGQgc3RvcCwgd2Ugc3RpbGwgZmluaXNoIHdyaXRpbmdcbiAgICAvLyB0aGF0IGl0ZW0gZnVsbHkgYW5kIHRoZW4geWllbGQuIEF0IHRoYXQgcG9pbnQgd2UgcmVtb3ZlIHRoZSBhbHJlYWR5IGNvbXBsZXRlZFxuICAgIC8vIGl0ZW1zIHVwIHVudGlsIHRoZSBwb2ludCB3ZSBjb21wbGV0ZWQgdGhlbS5cbiAgICAvLyBUT0RPOiBFbWl0IHByZWxvYWRpbmcuXG4gICAgLy8gVE9ETzogSXQncyBraW5kIG9mIHVuZm9ydHVuYXRlIHRvIGtlZXAgY2hlY2tpbmcgdGhpcyBhcnJheSBhZnRlciB3ZSd2ZSBhbHJlYWR5XG4gICAgLy8gZW1pdHRlZCB0aGUgcm9vdC5cbiAgICB2YXIgY29tcGxldGVkUm9vdFNlZ21lbnQgPSByZXF1ZXN0LmNvbXBsZXRlZFJvb3RTZWdtZW50O1xuXG4gICAgaWYgKGNvbXBsZXRlZFJvb3RTZWdtZW50ICE9PSBudWxsICYmIHJlcXVlc3QucGVuZGluZ1Jvb3RUYXNrcyA9PT0gMCkge1xuICAgICAgZmx1c2hTZWdtZW50KHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBjb21wbGV0ZWRSb290U2VnbWVudCk7XG4gICAgICByZXF1ZXN0LmNvbXBsZXRlZFJvb3RTZWdtZW50ID0gbnVsbDtcbiAgICAgIHdyaXRlQ29tcGxldGVkUm9vdChkZXN0aW5hdGlvbiwgcmVxdWVzdC5yZXNwb25zZVN0YXRlKTtcbiAgICB9IC8vIFdlIGVtaXQgY2xpZW50IHJlbmRlcmluZyBpbnN0cnVjdGlvbnMgZm9yIGFscmVhZHkgZW1pdHRlZCBib3VuZGFyaWVzIGZpcnN0LlxuICAgIC8vIFRoaXMgaXMgc28gdGhhdCB3ZSBjYW4gc2lnbmFsIHRvIHRoZSBjbGllbnQgdG8gc3RhcnQgY2xpZW50IHJlbmRlcmluZyB0aGVtIGFzXG4gICAgLy8gc29vbiBhcyBwb3NzaWJsZS5cblxuXG4gICAgdmFyIGNsaWVudFJlbmRlcmVkQm91bmRhcmllcyA9IHJlcXVlc3QuY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzO1xuICAgIHZhciBpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGJvdW5kYXJ5ID0gY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzW2ldO1xuXG4gICAgICBpZiAoIWZsdXNoQ2xpZW50UmVuZGVyZWRCb3VuZGFyeShyZXF1ZXN0LCBkZXN0aW5hdGlvbiwgYm91bmRhcnkpKSB7XG4gICAgICAgIHJlcXVlc3QuZGVzdGluYXRpb24gPSBudWxsO1xuICAgICAgICBpKys7XG4gICAgICAgIGNsaWVudFJlbmRlcmVkQm91bmRhcmllcy5zcGxpY2UoMCwgaSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjbGllbnRSZW5kZXJlZEJvdW5kYXJpZXMuc3BsaWNlKDAsIGkpOyAvLyBOZXh0IHdlIGVtaXQgYW55IGNvbXBsZXRlIGJvdW5kYXJpZXMuIEl0J3MgYmV0dGVyIHRvIGZhdm9yIGJvdW5kYXJpZXNcbiAgICAvLyB0aGF0IGFyZSBjb21wbGV0ZWx5IGRvbmUgc2luY2Ugd2UgY2FuIGFjdHVhbGx5IHNob3cgdGhlbSwgdGhhbiBpdCBpcyB0byBlbWl0XG4gICAgLy8gYW55IGluZGl2aWR1YWwgc2VnbWVudHMgZnJvbSBhIHBhcnRpYWxseSBjb21wbGV0ZSBib3VuZGFyeS5cblxuICAgIHZhciBjb21wbGV0ZWRCb3VuZGFyaWVzID0gcmVxdWVzdC5jb21wbGV0ZWRCb3VuZGFyaWVzO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGNvbXBsZXRlZEJvdW5kYXJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBfYm91bmRhcnkgPSBjb21wbGV0ZWRCb3VuZGFyaWVzW2ldO1xuXG4gICAgICBpZiAoIWZsdXNoQ29tcGxldGVkQm91bmRhcnkocmVxdWVzdCwgZGVzdGluYXRpb24sIF9ib3VuZGFyeSkpIHtcbiAgICAgICAgcmVxdWVzdC5kZXN0aW5hdGlvbiA9IG51bGw7XG4gICAgICAgIGkrKztcbiAgICAgICAgY29tcGxldGVkQm91bmRhcmllcy5zcGxpY2UoMCwgaSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wbGV0ZWRCb3VuZGFyaWVzLnNwbGljZSgwLCBpKTsgLy8gQWxsb3cgYW55dGhpbmcgd3JpdHRlbiBzbyBmYXIgdG8gZmx1c2ggdG8gdGhlIHVuZGVybHlpbmcgc2luayBiZWZvcmVcbiAgICAvLyB3ZSBjb250aW51ZSB3aXRoIGxvd2VyIHByaW9yaXRpZXMuXG5cbiAgICBjb21wbGV0ZVdyaXRpbmcoZGVzdGluYXRpb24pO1xuICAgIGJlZ2luV3JpdGluZyhkZXN0aW5hdGlvbik7IC8vIFRPRE86IEhlcmUgd2UnbGwgZW1pdCBkYXRhIHVzZWQgYnkgaHlkcmF0aW9uLlxuICAgIC8vIE5leHQgd2UgZW1pdCBhbnkgc2VnbWVudHMgb2YgYW55IGJvdW5kYXJpZXMgdGhhdCBhcmUgcGFydGlhbGx5IGNvbXBsZXRlXG4gICAgLy8gYnV0IG5vdCBkZWVwbHkgY29tcGxldGUuXG5cbiAgICB2YXIgcGFydGlhbEJvdW5kYXJpZXMgPSByZXF1ZXN0LnBhcnRpYWxCb3VuZGFyaWVzO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IHBhcnRpYWxCb3VuZGFyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgX2JvdW5kYXJ5MiA9IHBhcnRpYWxCb3VuZGFyaWVzW2ldO1xuXG4gICAgICBpZiAoIWZsdXNoUGFydGlhbEJvdW5kYXJ5KHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBfYm91bmRhcnkyKSkge1xuICAgICAgICByZXF1ZXN0LmRlc3RpbmF0aW9uID0gbnVsbDtcbiAgICAgICAgaSsrO1xuICAgICAgICBwYXJ0aWFsQm91bmRhcmllcy5zcGxpY2UoMCwgaSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwYXJ0aWFsQm91bmRhcmllcy5zcGxpY2UoMCwgaSk7IC8vIE5leHQgd2UgY2hlY2sgdGhlIGNvbXBsZXRlZCBib3VuZGFyaWVzIGFnYWluLiBUaGlzIG1heSBoYXZlIGhhZFxuICAgIC8vIGJvdW5kYXJpZXMgYWRkZWQgdG8gaXQgaW4gY2FzZSB0aGV5IHdlcmUgdG9vIGxhcmdlZCB0byBiZSBpbmxpbmVkLlxuICAgIC8vIE5ldyBvbmVzIG1pZ2h0IGJlIGFkZGVkIGluIHRoaXMgbG9vcC5cblxuICAgIHZhciBsYXJnZUJvdW5kYXJpZXMgPSByZXF1ZXN0LmNvbXBsZXRlZEJvdW5kYXJpZXM7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGFyZ2VCb3VuZGFyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgX2JvdW5kYXJ5MyA9IGxhcmdlQm91bmRhcmllc1tpXTtcblxuICAgICAgaWYgKCFmbHVzaENvbXBsZXRlZEJvdW5kYXJ5KHJlcXVlc3QsIGRlc3RpbmF0aW9uLCBfYm91bmRhcnkzKSkge1xuICAgICAgICByZXF1ZXN0LmRlc3RpbmF0aW9uID0gbnVsbDtcbiAgICAgICAgaSsrO1xuICAgICAgICBsYXJnZUJvdW5kYXJpZXMuc3BsaWNlKDAsIGkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGFyZ2VCb3VuZGFyaWVzLnNwbGljZSgwLCBpKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBjb21wbGV0ZVdyaXRpbmcoZGVzdGluYXRpb24pO1xuXG4gICAgaWYgKHJlcXVlc3QuYWxsUGVuZGluZ1Rhc2tzID09PSAwICYmIHJlcXVlc3QucGluZ2VkVGFza3MubGVuZ3RoID09PSAwICYmIHJlcXVlc3QuY2xpZW50UmVuZGVyZWRCb3VuZGFyaWVzLmxlbmd0aCA9PT0gMCAmJiByZXF1ZXN0LmNvbXBsZXRlZEJvdW5kYXJpZXMubGVuZ3RoID09PSAwIC8vIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgYW55IHBhcnRpYWxseSBjb21wbGV0ZWQgc2VnbWVudHMgYmVjYXVzZVxuICAgIC8vIGVpdGhlciB0aGV5IGhhdmUgcGVuZGluZyB0YXNrIG9yIHRoZXkncmUgY29tcGxldGUuXG4gICAgKSB7XG4gICAgICAgIHtcbiAgICAgICAgICBpZiAocmVxdWVzdC5hYm9ydGFibGVUYXNrcy5zaXplICE9PSAwKSB7XG4gICAgICAgICAgICBlcnJvcignVGhlcmUgd2FzIHN0aWxsIGFib3J0YWJsZSB0YXNrIGF0IHRoZSByb290IHdoZW4gd2UgY2xvc2VkLiBUaGlzIGlzIGEgYnVnIGluIFJlYWN0LicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBXZSdyZSBkb25lLlxuXG5cbiAgICAgICAgY2xvc2UoZGVzdGluYXRpb24pO1xuICAgICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHN0YXJ0V29yayhyZXF1ZXN0KSB7XG4gIHNjaGVkdWxlV29yayhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHBlcmZvcm1Xb3JrKHJlcXVlc3QpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHN0YXJ0Rmxvd2luZyhyZXF1ZXN0LCBkZXN0aW5hdGlvbikge1xuICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IENMT1NJTkcpIHtcbiAgICByZXF1ZXN0LnN0YXR1cyA9IENMT1NFRDtcbiAgICBjbG9zZVdpdGhFcnJvcihkZXN0aW5hdGlvbiwgcmVxdWVzdC5mYXRhbEVycm9yKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IENMT1NFRCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChyZXF1ZXN0LmRlc3RpbmF0aW9uICE9PSBudWxsKSB7XG4gICAgLy8gV2UncmUgYWxyZWFkeSBmbG93aW5nLlxuICAgIHJldHVybjtcbiAgfVxuXG4gIHJlcXVlc3QuZGVzdGluYXRpb24gPSBkZXN0aW5hdGlvbjtcblxuICB0cnkge1xuICAgIGZsdXNoQ29tcGxldGVkUXVldWVzKHJlcXVlc3QsIGRlc3RpbmF0aW9uKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsb2dSZWNvdmVyYWJsZUVycm9yKHJlcXVlc3QsIGVycm9yKTtcbiAgICBmYXRhbEVycm9yKHJlcXVlc3QsIGVycm9yKTtcbiAgfVxufSAvLyBUaGlzIGlzIGNhbGxlZCB0byBlYXJseSB0ZXJtaW5hdGUgYSByZXF1ZXN0LiBJdCBwdXRzIGFsbCBwZW5kaW5nIGJvdW5kYXJpZXMgaW4gY2xpZW50IHJlbmRlcmVkIHN0YXRlLlxuXG5mdW5jdGlvbiBhYm9ydChyZXF1ZXN0KSB7XG4gIHRyeSB7XG4gICAgdmFyIGFib3J0YWJsZVRhc2tzID0gcmVxdWVzdC5hYm9ydGFibGVUYXNrcztcbiAgICBhYm9ydGFibGVUYXNrcy5mb3JFYWNoKGFib3J0VGFzaywgcmVxdWVzdCk7XG4gICAgYWJvcnRhYmxlVGFza3MuY2xlYXIoKTtcblxuICAgIGlmIChyZXF1ZXN0LmRlc3RpbmF0aW9uICE9PSBudWxsKSB7XG4gICAgICBmbHVzaENvbXBsZXRlZFF1ZXVlcyhyZXF1ZXN0LCByZXF1ZXN0LmRlc3RpbmF0aW9uKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgbG9nUmVjb3ZlcmFibGVFcnJvcihyZXF1ZXN0LCBlcnJvcik7XG4gICAgZmF0YWxFcnJvcihyZXF1ZXN0LCBlcnJvcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVuZGVyVG9SZWFkYWJsZVN0cmVhbShjaGlsZHJlbiwgb3B0aW9ucykge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciBvbkZhdGFsRXJyb3I7XG4gICAgdmFyIG9uQWxsUmVhZHk7XG4gICAgdmFyIGFsbFJlYWR5ID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlcywgcmVqKSB7XG4gICAgICBvbkFsbFJlYWR5ID0gcmVzO1xuICAgICAgb25GYXRhbEVycm9yID0gcmVqO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gb25TaGVsbFJlYWR5KCkge1xuICAgICAgdmFyIHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICAgIHR5cGU6ICdieXRlcycsXG4gICAgICAgIHB1bGw6IGZ1bmN0aW9uIChjb250cm9sbGVyKSB7XG4gICAgICAgICAgc3RhcnRGbG93aW5nKHJlcXVlc3QsIGNvbnRyb2xsZXIpO1xuICAgICAgICB9LFxuICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAgICAgICBhYm9ydChyZXF1ZXN0KTtcbiAgICAgICAgfVxuICAgICAgfSk7IC8vIFRPRE86IE1vdmUgdG8gc3ViLWNsYXNzaW5nIFJlYWRhYmxlU3RyZWFtLlxuXG4gICAgICBzdHJlYW0uYWxsUmVhZHkgPSBhbGxSZWFkeTtcbiAgICAgIHJlc29sdmUoc3RyZWFtKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvblNoZWxsRXJyb3IoZXJyb3IpIHtcbiAgICAgIC8vIElmIHRoZSBzaGVsbCBlcnJvcnMgdGhlIGNhbGxlciBvZiBgcmVuZGVyVG9SZWFkYWJsZVN0cmVhbWAgd29uJ3QgaGF2ZSBhY2Nlc3MgdG8gYGFsbFJlYWR5YC5cbiAgICAgIC8vIEhvd2V2ZXIsIGBhbGxSZWFkeWAgd2lsbCBiZSByZWplY3RlZCBieSBgb25GYXRhbEVycm9yYCBhcyB3ZWxsLlxuICAgICAgLy8gU28gd2UgbmVlZCB0byBjYXRjaCB0aGUgZHVwbGljYXRlLCB1bmNhdGNoYWJsZSBmYXRhbCBlcnJvciBpbiBgYWxsUmVhZHlgIHRvIHByZXZlbnQgYSBgVW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbmAuXG4gICAgICBhbGxSZWFkeS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7XG4gICAgICByZWplY3QoZXJyb3IpO1xuICAgIH1cblxuICAgIHZhciByZXF1ZXN0ID0gY3JlYXRlUmVxdWVzdChjaGlsZHJlbiwgY3JlYXRlUmVzcG9uc2VTdGF0ZShvcHRpb25zID8gb3B0aW9ucy5pZGVudGlmaWVyUHJlZml4IDogdW5kZWZpbmVkLCBvcHRpb25zID8gb3B0aW9ucy5ub25jZSA6IHVuZGVmaW5lZCwgb3B0aW9ucyA/IG9wdGlvbnMuYm9vdHN0cmFwU2NyaXB0Q29udGVudCA6IHVuZGVmaW5lZCwgb3B0aW9ucyA/IG9wdGlvbnMuYm9vdHN0cmFwU2NyaXB0cyA6IHVuZGVmaW5lZCwgb3B0aW9ucyA/IG9wdGlvbnMuYm9vdHN0cmFwTW9kdWxlcyA6IHVuZGVmaW5lZCksIGNyZWF0ZVJvb3RGb3JtYXRDb250ZXh0KG9wdGlvbnMgPyBvcHRpb25zLm5hbWVzcGFjZVVSSSA6IHVuZGVmaW5lZCksIG9wdGlvbnMgPyBvcHRpb25zLnByb2dyZXNzaXZlQ2h1bmtTaXplIDogdW5kZWZpbmVkLCBvcHRpb25zID8gb3B0aW9ucy5vbkVycm9yIDogdW5kZWZpbmVkLCBvbkFsbFJlYWR5LCBvblNoZWxsUmVhZHksIG9uU2hlbGxFcnJvciwgb25GYXRhbEVycm9yKTtcblxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2lnbmFsKSB7XG4gICAgICB2YXIgc2lnbmFsID0gb3B0aW9ucy5zaWduYWw7XG5cbiAgICAgIHZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYWJvcnQocmVxdWVzdCk7XG4gICAgICAgIHNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGxpc3RlbmVyKTtcbiAgICAgIH07XG5cbiAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBzdGFydFdvcmsocmVxdWVzdCk7XG4gIH0pO1xufVxuXG5leHBvcnRzLnJlbmRlclRvUmVhZGFibGVTdHJlYW0gPSByZW5kZXJUb1JlYWRhYmxlU3RyZWFtO1xuZXhwb3J0cy52ZXJzaW9uID0gUmVhY3RWZXJzaW9uO1xuICB9KSgpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/react-dom/cjs/react-dom-server.browser.development.js\n");
 
/***/ }),
 
/***/ "./node_modules/react-dom/server.browser.js":
/*!**************************************************!*\
  !*** ./node_modules/react-dom/server.browser.js ***!
  \**************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
 
"use strict";
eval("\n\nvar l, s;\nif (false) {} else {\n  l = __webpack_require__(/*! ./cjs/react-dom-server-legacy.browser.development.js */ \"./node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js\");\n  s = __webpack_require__(/*! ./cjs/react-dom-server.browser.development.js */ \"./node_modules/react-dom/cjs/react-dom-server.browser.development.js\");\n}\n\nexports.version = l.version;\nexports.renderToString = l.renderToString;\nexports.renderToStaticMarkup = l.renderToStaticMarkup;\nexports.renderToNodeStream = l.renderToNodeStream;\nexports.renderToStaticNodeStream = l.renderToStaticNodeStream;\nexports.renderToReadableStream = s.renderToReadableStream;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL3NlcnZlci5icm93c2VyLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViO0FBQ0EsSUFBSSxLQUFxQyxFQUFFLEVBRzFDLENBQUM7QUFDRixNQUFNLG1CQUFPLENBQUMseUlBQXNEO0FBQ3BFLE1BQU0sbUJBQU8sQ0FBQywySEFBK0M7QUFDN0Q7O0FBRUEsZUFBZTtBQUNmLHNCQUFzQjtBQUN0Qiw0QkFBNEI7QUFDNUIsMEJBQTBCO0FBQzFCLGdDQUFnQztBQUNoQyw4QkFBOEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9zZXJ2ZXIuYnJvd3Nlci5qcz85NjYyIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIGwsIHM7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBsID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLXNlcnZlci1sZWdhY3kuYnJvd3Nlci5wcm9kdWN0aW9uLm1pbi5qcycpO1xuICBzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLXNlcnZlci5icm93c2VyLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBsID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLXNlcnZlci1sZWdhY3kuYnJvd3Nlci5kZXZlbG9wbWVudC5qcycpO1xuICBzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLXNlcnZlci5icm93c2VyLmRldmVsb3BtZW50LmpzJyk7XG59XG5cbmV4cG9ydHMudmVyc2lvbiA9IGwudmVyc2lvbjtcbmV4cG9ydHMucmVuZGVyVG9TdHJpbmcgPSBsLnJlbmRlclRvU3RyaW5nO1xuZXhwb3J0cy5yZW5kZXJUb1N0YXRpY01hcmt1cCA9IGwucmVuZGVyVG9TdGF0aWNNYXJrdXA7XG5leHBvcnRzLnJlbmRlclRvTm9kZVN0cmVhbSA9IGwucmVuZGVyVG9Ob2RlU3RyZWFtO1xuZXhwb3J0cy5yZW5kZXJUb1N0YXRpY05vZGVTdHJlYW0gPSBsLnJlbmRlclRvU3RhdGljTm9kZVN0cmVhbTtcbmV4cG9ydHMucmVuZGVyVG9SZWFkYWJsZVN0cmVhbSA9IHMucmVuZGVyVG9SZWFkYWJsZVN0cmVhbTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-dom/server.browser.js\n");
 
/***/ }),
 
/***/ "./node_modules/react-is/cjs/react-is.development.js":
/*!***********************************************************!*\
  !*** ./node_modules/react-is/cjs/react-is.development.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack_module, exports) {
 
"use strict";
eval("/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\n\n\nif (true) {\n  (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_ASYNC_MODE_TYPE:\n          case REACT_CONCURRENT_MODE_TYPE:\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n    }\n  }\n\n  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtaXMvY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7Ozs7QUFJYixJQUFJLElBQXFDO0FBQ3pDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkVBQTJFO0FBQzNFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRDs7QUFFakQ7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUI7QUFDakIsc0JBQXNCO0FBQ3RCLHVCQUF1QjtBQUN2Qix1QkFBdUI7QUFDdkIsZUFBZTtBQUNmLGtCQUFrQjtBQUNsQixnQkFBZ0I7QUFDaEIsWUFBWTtBQUNaLFlBQVk7QUFDWixjQUFjO0FBQ2QsZ0JBQWdCO0FBQ2hCLGtCQUFrQjtBQUNsQixnQkFBZ0I7QUFDaEIsbUJBQW1CO0FBQ25CLHdCQUF3QjtBQUN4Qix5QkFBeUI7QUFDekIseUJBQXlCO0FBQ3pCLGlCQUFpQjtBQUNqQixvQkFBb0I7QUFDcEIsa0JBQWtCO0FBQ2xCLGNBQWM7QUFDZCxjQUFjO0FBQ2QsZ0JBQWdCO0FBQ2hCLGtCQUFrQjtBQUNsQixvQkFBb0I7QUFDcEIsa0JBQWtCO0FBQ2xCLDBCQUEwQjtBQUMxQixjQUFjO0FBQ2QsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanM/NDk2YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGxpY2Vuc2UgUmVhY3QgdjE2LjEzLjFcbiAqIHJlYWN0LWlzLmRldmVsb3BtZW50LmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAoZnVuY3Rpb24oKSB7XG4ndXNlIHN0cmljdCc7XG5cbi8vIFRoZSBTeW1ib2wgdXNlZCB0byB0YWcgdGhlIFJlYWN0RWxlbWVudC1saWtlIHR5cGVzLiBJZiB0aGVyZSBpcyBubyBuYXRpdmUgU3ltYm9sXG4vLyBub3IgcG9seWZpbGwsIHRoZW4gYSBwbGFpbiBudW1iZXIgaXMgdXNlZCBmb3IgcGVyZm9ybWFuY2UuXG52YXIgaGFzU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuZm9yO1xudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSA6IDB4ZWFjNztcbnZhciBSRUFDVF9QT1JUQUxfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnBvcnRhbCcpIDogMHhlYWNhO1xudmFyIFJFQUNUX0ZSQUdNRU5UX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5mcmFnbWVudCcpIDogMHhlYWNiO1xudmFyIFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5zdHJpY3RfbW9kZScpIDogMHhlYWNjO1xudmFyIFJFQUNUX1BST0ZJTEVSX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5wcm9maWxlcicpIDogMHhlYWQyO1xudmFyIFJFQUNUX1BST1ZJREVSX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5wcm92aWRlcicpIDogMHhlYWNkO1xudmFyIFJFQUNUX0NPTlRFWFRfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmNvbnRleHQnKSA6IDB4ZWFjZTsgLy8gVE9ETzogV2UgZG9uJ3QgdXNlIEFzeW5jTW9kZSBvciBDb25jdXJyZW50TW9kZSBhbnltb3JlLiBUaGV5IHdlcmUgdGVtcG9yYXJ5XG4vLyAodW5zdGFibGUpIEFQSXMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZC4gQ2FuIHdlIHJlbW92ZSB0aGUgc3ltYm9scz9cblxudmFyIFJFQUNUX0FTWU5DX01PREVfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmFzeW5jX21vZGUnKSA6IDB4ZWFjZjtcbnZhciBSRUFDVF9DT05DVVJSRU5UX01PREVfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmNvbmN1cnJlbnRfbW9kZScpIDogMHhlYWNmO1xudmFyIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5mb3J3YXJkX3JlZicpIDogMHhlYWQwO1xudmFyIFJFQUNUX1NVU1BFTlNFX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5zdXNwZW5zZScpIDogMHhlYWQxO1xudmFyIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnN1c3BlbnNlX2xpc3QnKSA6IDB4ZWFkODtcbnZhciBSRUFDVF9NRU1PX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5tZW1vJykgOiAweGVhZDM7XG52YXIgUkVBQ1RfTEFaWV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QubGF6eScpIDogMHhlYWQ0O1xudmFyIFJFQUNUX0JMT0NLX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5ibG9jaycpIDogMHhlYWQ5O1xudmFyIFJFQUNUX0ZVTkRBTUVOVEFMX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5mdW5kYW1lbnRhbCcpIDogMHhlYWQ1O1xudmFyIFJFQUNUX1JFU1BPTkRFUl9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QucmVzcG9uZGVyJykgOiAweGVhZDY7XG52YXIgUkVBQ1RfU0NPUEVfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnNjb3BlJykgOiAweGVhZDc7XG5cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50VHlwZSh0eXBlKSB7XG4gIHJldHVybiB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgfHwgLy8gTm90ZTogaXRzIHR5cGVvZiBtaWdodCBiZSBvdGhlciB0aGFuICdzeW1ib2wnIG9yICdudW1iZXInIGlmIGl0J3MgYSBwb2x5ZmlsbC5cbiAgdHlwZSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9DT05DVVJSRU5UX01PREVfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9QUk9GSUxFUl9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfU1VTUEVOU0VfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgfHwgdHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmIHR5cGUgIT09IG51bGwgJiYgKHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0xBWllfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9NRU1PX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfUFJPVklERVJfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9DT05URVhUX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9GVU5EQU1FTlRBTF9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX1JFU1BPTkRFUl9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX1NDT1BFX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQkxPQ0tfVFlQRSk7XG59XG5cbmZ1bmN0aW9uIHR5cGVPZihvYmplY3QpIHtcbiAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCkge1xuICAgIHZhciAkJHR5cGVvZiA9IG9iamVjdC4kJHR5cGVvZjtcblxuICAgIHN3aXRjaCAoJCR0eXBlb2YpIHtcbiAgICAgIGNhc2UgUkVBQ1RfRUxFTUVOVF9UWVBFOlxuICAgICAgICB2YXIgdHlwZSA9IG9iamVjdC50eXBlO1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgUkVBQ1RfQVNZTkNfTU9ERV9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfQ09OQ1VSUkVOVF9NT0RFX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9GUkFHTUVOVF9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfUFJPRklMRVJfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX1NUUklDVF9NT0RFX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIHR5cGU7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdmFyICQkdHlwZW9mVHlwZSA9IHR5cGUgJiYgdHlwZS4kJHR5cGVvZjtcblxuICAgICAgICAgICAgc3dpdGNoICgkJHR5cGVvZlR5cGUpIHtcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9DT05URVhUX1RZUEU6XG4gICAgICAgICAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgICAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICAgICAgICBjYXNlIFJFQUNUX1BST1ZJREVSX1RZUEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuICQkdHlwZW9mVHlwZTtcblxuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAkJHR5cGVvZjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgIGNhc2UgUkVBQ1RfUE9SVEFMX1RZUEU6XG4gICAgICAgIHJldHVybiAkJHR5cGVvZjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufSAvLyBBc3luY01vZGUgaXMgZGVwcmVjYXRlZCBhbG9uZyB3aXRoIGlzQXN5bmNNb2RlXG5cbnZhciBBc3luY01vZGUgPSBSRUFDVF9BU1lOQ19NT0RFX1RZUEU7XG52YXIgQ29uY3VycmVudE1vZGUgPSBSRUFDVF9DT05DVVJSRU5UX01PREVfVFlQRTtcbnZhciBDb250ZXh0Q29uc3VtZXIgPSBSRUFDVF9DT05URVhUX1RZUEU7XG52YXIgQ29udGV4dFByb3ZpZGVyID0gUkVBQ1RfUFJPVklERVJfVFlQRTtcbnZhciBFbGVtZW50ID0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xudmFyIEZvcndhcmRSZWYgPSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFO1xudmFyIEZyYWdtZW50ID0gUkVBQ1RfRlJBR01FTlRfVFlQRTtcbnZhciBMYXp5ID0gUkVBQ1RfTEFaWV9UWVBFO1xudmFyIE1lbW8gPSBSRUFDVF9NRU1PX1RZUEU7XG52YXIgUG9ydGFsID0gUkVBQ1RfUE9SVEFMX1RZUEU7XG52YXIgUHJvZmlsZXIgPSBSRUFDVF9QUk9GSUxFUl9UWVBFO1xudmFyIFN0cmljdE1vZGUgPSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFO1xudmFyIFN1c3BlbnNlID0gUkVBQ1RfU1VTUEVOU0VfVFlQRTtcbnZhciBoYXNXYXJuZWRBYm91dERlcHJlY2F0ZWRJc0FzeW5jTW9kZSA9IGZhbHNlOyAvLyBBc3luY01vZGUgc2hvdWxkIGJlIGRlcHJlY2F0ZWRcblxuZnVuY3Rpb24gaXNBc3luY01vZGUob2JqZWN0KSB7XG4gIHtcbiAgICBpZiAoIWhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQXN5bmNNb2RlKSB7XG4gICAgICBoYXNXYXJuZWRBYm91dERlcHJlY2F0ZWRJc0FzeW5jTW9kZSA9IHRydWU7IC8vIFVzaW5nIGNvbnNvbGVbJ3dhcm4nXSB0byBldmFkZSBCYWJlbCBhbmQgRVNMaW50XG5cbiAgICAgIGNvbnNvbGVbJ3dhcm4nXSgnVGhlIFJlYWN0SXMuaXNBc3luY01vZGUoKSBhbGlhcyBoYXMgYmVlbiBkZXByZWNhdGVkLCAnICsgJ2FuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUmVhY3QgMTcrLiBVcGRhdGUgeW91ciBjb2RlIHRvIHVzZSAnICsgJ1JlYWN0SXMuaXNDb25jdXJyZW50TW9kZSgpIGluc3RlYWQuIEl0IGhhcyB0aGUgZXhhY3Qgc2FtZSBBUEkuJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGlzQ29uY3VycmVudE1vZGUob2JqZWN0KSB8fCB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfQVNZTkNfTU9ERV9UWVBFO1xufVxuZnVuY3Rpb24gaXNDb25jdXJyZW50TW9kZShvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9DT05DVVJSRU5UX01PREVfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzQ29udGV4dENvbnN1bWVyKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0NPTlRFWFRfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzQ29udGV4dFByb3ZpZGVyKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1BST1ZJREVSX1RZUEU7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnQob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEU7XG59XG5mdW5jdGlvbiBpc0ZvcndhcmRSZWYob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzRnJhZ21lbnQob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzTGF6eShvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9MQVpZX1RZUEU7XG59XG5mdW5jdGlvbiBpc01lbW8ob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfTUVNT19UWVBFO1xufVxuZnVuY3Rpb24gaXNQb3J0YWwob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfUE9SVEFMX1RZUEU7XG59XG5mdW5jdGlvbiBpc1Byb2ZpbGVyKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1BST0ZJTEVSX1RZUEU7XG59XG5mdW5jdGlvbiBpc1N0cmljdE1vZGUob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzU3VzcGVuc2Uob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfU1VTUEVOU0VfVFlQRTtcbn1cblxuZXhwb3J0cy5Bc3luY01vZGUgPSBBc3luY01vZGU7XG5leHBvcnRzLkNvbmN1cnJlbnRNb2RlID0gQ29uY3VycmVudE1vZGU7XG5leHBvcnRzLkNvbnRleHRDb25zdW1lciA9IENvbnRleHRDb25zdW1lcjtcbmV4cG9ydHMuQ29udGV4dFByb3ZpZGVyID0gQ29udGV4dFByb3ZpZGVyO1xuZXhwb3J0cy5FbGVtZW50ID0gRWxlbWVudDtcbmV4cG9ydHMuRm9yd2FyZFJlZiA9IEZvcndhcmRSZWY7XG5leHBvcnRzLkZyYWdtZW50ID0gRnJhZ21lbnQ7XG5leHBvcnRzLkxhenkgPSBMYXp5O1xuZXhwb3J0cy5NZW1vID0gTWVtbztcbmV4cG9ydHMuUG9ydGFsID0gUG9ydGFsO1xuZXhwb3J0cy5Qcm9maWxlciA9IFByb2ZpbGVyO1xuZXhwb3J0cy5TdHJpY3RNb2RlID0gU3RyaWN0TW9kZTtcbmV4cG9ydHMuU3VzcGVuc2UgPSBTdXNwZW5zZTtcbmV4cG9ydHMuaXNBc3luY01vZGUgPSBpc0FzeW5jTW9kZTtcbmV4cG9ydHMuaXNDb25jdXJyZW50TW9kZSA9IGlzQ29uY3VycmVudE1vZGU7XG5leHBvcnRzLmlzQ29udGV4dENvbnN1bWVyID0gaXNDb250ZXh0Q29uc3VtZXI7XG5leHBvcnRzLmlzQ29udGV4dFByb3ZpZGVyID0gaXNDb250ZXh0UHJvdmlkZXI7XG5leHBvcnRzLmlzRWxlbWVudCA9IGlzRWxlbWVudDtcbmV4cG9ydHMuaXNGb3J3YXJkUmVmID0gaXNGb3J3YXJkUmVmO1xuZXhwb3J0cy5pc0ZyYWdtZW50ID0gaXNGcmFnbWVudDtcbmV4cG9ydHMuaXNMYXp5ID0gaXNMYXp5O1xuZXhwb3J0cy5pc01lbW8gPSBpc01lbW87XG5leHBvcnRzLmlzUG9ydGFsID0gaXNQb3J0YWw7XG5leHBvcnRzLmlzUHJvZmlsZXIgPSBpc1Byb2ZpbGVyO1xuZXhwb3J0cy5pc1N0cmljdE1vZGUgPSBpc1N0cmljdE1vZGU7XG5leHBvcnRzLmlzU3VzcGVuc2UgPSBpc1N1c3BlbnNlO1xuZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGUgPSBpc1ZhbGlkRWxlbWVudFR5cGU7XG5leHBvcnRzLnR5cGVPZiA9IHR5cGVPZjtcbiAgfSkoKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-is/cjs/react-is.development.js\n");
 
/***/ }),
 
/***/ "./node_modules/react-is/index.js":
/*!****************************************!*\
  !*** ./node_modules/react-is/index.js ***!
  \****************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
 
"use strict";
eval("\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ \"./node_modules/react-is/cjs/react-is.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsSUFBSSxLQUFxQyxFQUFFLEVBRTFDLENBQUM7QUFDRixFQUFFLGdJQUF5RDtBQUMzRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanM/YjMxMyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react-is/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/react/cjs/react-jsx-dev-runtime.development.js":
/*!*********************************************************************!*\
  !*** ./node_modules/react/cjs/react-jsx-dev-runtime.development.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
 
"use strict";
eval("/**\n * @license React\n * react-jsx-dev-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n  (function() {\n'use strict';\n\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable !== 'object') {\n    return null;\n  }\n\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n\n  return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n  {\n    {\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  var displayName = outerType.displayName;\n\n  if (displayName) {\n    return displayName;\n  }\n\n  var functionName = innerType.displayName || innerType.name || '';\n  return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n  return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n  if (type == null) {\n    // Host root, text node or just invalid type.\n    return null;\n  }\n\n  {\n    if (typeof type.tag === 'number') {\n      error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n    }\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || null;\n  }\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'Fragment';\n\n    case REACT_PORTAL_TYPE:\n      return 'Portal';\n\n    case REACT_PROFILER_TYPE:\n      return 'Profiler';\n\n    case REACT_STRICT_MODE_TYPE:\n      return 'StrictMode';\n\n    case REACT_SUSPENSE_TYPE:\n      return 'Suspense';\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return 'SuspenseList';\n\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        var context = type;\n        return getContextName(context) + '.Consumer';\n\n      case REACT_PROVIDER_TYPE:\n        var provider = type;\n        return getContextName(provider._context) + '.Provider';\n\n      case REACT_FORWARD_REF_TYPE:\n        return getWrappedName(type, type.render, 'ForwardRef');\n\n      case REACT_MEMO_TYPE:\n        var outerName = type.displayName || null;\n\n        if (outerName !== null) {\n          return outerName;\n        }\n\n        return getComponentNameFromType(type.type) || 'Memo';\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            return getComponentNameFromType(init(payload));\n          } catch (x) {\n            return null;\n          }\n        }\n\n      // eslint-disable-next-line no-fallthrough\n    }\n  }\n\n  return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n  {\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      prevLog = console.log;\n      prevInfo = console.info;\n      prevWarn = console.warn;\n      prevError = console.error;\n      prevGroup = console.group;\n      prevGroupCollapsed = console.groupCollapsed;\n      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n      var props = {\n        configurable: true,\n        enumerable: true,\n        value: disabledLog,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        info: props,\n        log: props,\n        warn: props,\n        error: props,\n        group: props,\n        groupCollapsed: props,\n        groupEnd: props\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    disabledDepth++;\n  }\n}\nfunction reenableLogs() {\n  {\n    disabledDepth--;\n\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      var props = {\n        configurable: true,\n        enumerable: true,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        log: assign({}, props, {\n          value: prevLog\n        }),\n        info: assign({}, props, {\n          value: prevInfo\n        }),\n        warn: assign({}, props, {\n          value: prevWarn\n        }),\n        error: assign({}, props, {\n          value: prevError\n        }),\n        group: assign({}, props, {\n          value: prevGroup\n        }),\n        groupCollapsed: assign({}, props, {\n          value: prevGroupCollapsed\n        }),\n        groupEnd: assign({}, props, {\n          value: prevGroupEnd\n        })\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    if (disabledDepth < 0) {\n      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n    }\n  }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n  {\n    if (prefix === undefined) {\n      // Extract the VM specific prefix used by each line.\n      try {\n        throw Error();\n      } catch (x) {\n        var match = x.stack.trim().match(/\\n( *(at )?)/);\n        prefix = match && match[1] || '';\n      }\n    } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n    return '\\n' + prefix + name;\n  }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n  componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n  // If something asked for a stack inside a fake render, it should get ignored.\n  if ( !fn || reentry) {\n    return '';\n  }\n\n  {\n    var frame = componentFrameCache.get(fn);\n\n    if (frame !== undefined) {\n      return frame;\n    }\n  }\n\n  var control;\n  reentry = true;\n  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n  Error.prepareStackTrace = undefined;\n  var previousDispatcher;\n\n  {\n    previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n    // for warnings.\n\n    ReactCurrentDispatcher.current = null;\n    disableLogs();\n  }\n\n  try {\n    // This should throw.\n    if (construct) {\n      // Something should be setting the props in the constructor.\n      var Fake = function () {\n        throw Error();\n      }; // $FlowFixMe\n\n\n      Object.defineProperty(Fake.prototype, 'props', {\n        set: function () {\n          // We use a throwing setter instead of frozen or non-writable props\n          // because that won't throw in a non-strict mode function.\n          throw Error();\n        }\n      });\n\n      if (typeof Reflect === 'object' && Reflect.construct) {\n        // We construct a different control for this case to include any extra\n        // frames added by the construct call.\n        try {\n          Reflect.construct(Fake, []);\n        } catch (x) {\n          control = x;\n        }\n\n        Reflect.construct(fn, [], Fake);\n      } else {\n        try {\n          Fake.call();\n        } catch (x) {\n          control = x;\n        }\n\n        fn.call(Fake.prototype);\n      }\n    } else {\n      try {\n        throw Error();\n      } catch (x) {\n        control = x;\n      }\n\n      fn();\n    }\n  } catch (sample) {\n    // This is inlined manually because closure doesn't do it for us.\n    if (sample && control && typeof sample.stack === 'string') {\n      // This extracts the first frame from the sample that isn't also in the control.\n      // Skipping one frame that we assume is the frame that calls the two.\n      var sampleLines = sample.stack.split('\\n');\n      var controlLines = control.stack.split('\\n');\n      var s = sampleLines.length - 1;\n      var c = controlLines.length - 1;\n\n      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n        // We expect at least one stack frame to be shared.\n        // Typically this will be the root most one. However, stack frames may be\n        // cut off due to maximum stack limits. In this case, one maybe cut off\n        // earlier than the other. We assume that the sample is longer or the same\n        // and there for cut off earlier. So we should find the root most frame in\n        // the sample somewhere in the control.\n        c--;\n      }\n\n      for (; s >= 1 && c >= 0; s--, c--) {\n        // Next we find the first one that isn't the same which should be the\n        // frame that called our sample function and the control.\n        if (sampleLines[s] !== controlLines[c]) {\n          // In V8, the first line is describing the message but other VMs don't.\n          // If we're about to return the first line, and the control is also on the same\n          // line, that's a pretty good indicator that our sample threw at same line as\n          // the control. I.e. before we entered the sample frame. So we ignore this result.\n          // This can happen if you passed a class to function component, or non-function.\n          if (s !== 1 || c !== 1) {\n            do {\n              s--;\n              c--; // We may still have similar intermediate frames from the construct call.\n              // The next one that isn't the same should be our match though.\n\n              if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n                var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n                // but we have a user-provided \"displayName\"\n                // splice it in to make the stack more readable.\n\n\n                if (fn.displayName && _frame.includes('<anonymous>')) {\n                  _frame = _frame.replace('<anonymous>', fn.displayName);\n                }\n\n                {\n                  if (typeof fn === 'function') {\n                    componentFrameCache.set(fn, _frame);\n                  }\n                } // Return the line we found.\n\n\n                return _frame;\n              }\n            } while (s >= 1 && c >= 0);\n          }\n\n          break;\n        }\n      }\n    }\n  } finally {\n    reentry = false;\n\n    {\n      ReactCurrentDispatcher.current = previousDispatcher;\n      reenableLogs();\n    }\n\n    Error.prepareStackTrace = previousPrepareStackTrace;\n  } // Fallback to just using the name if we couldn't make it throw.\n\n\n  var name = fn ? fn.displayName || fn.name : '';\n  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n  {\n    if (typeof fn === 'function') {\n      componentFrameCache.set(fn, syntheticFrame);\n    }\n  }\n\n  return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(fn, false);\n  }\n}\n\nfunction shouldConstruct(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n  if (type == null) {\n    return '';\n  }\n\n  if (typeof type === 'function') {\n    {\n      return describeNativeComponentFrame(type, shouldConstruct(type));\n    }\n  }\n\n  if (typeof type === 'string') {\n    return describeBuiltInComponentFrame(type);\n  }\n\n  switch (type) {\n    case REACT_SUSPENSE_TYPE:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return describeBuiltInComponentFrame('SuspenseList');\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        return describeFunctionComponentFrame(type.render);\n\n      case REACT_MEMO_TYPE:\n        // Memo may contain any component type so we recursively resolve it.\n        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            // Lazy may contain any component type so we recursively resolve it.\n            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n          } catch (x) {}\n        }\n    }\n  }\n\n  return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame.setExtraStackFrame(null);\n    }\n  }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n  {\n    // $FlowFixMe This is okay but Flow doesn't know it.\n    var has = Function.call.bind(hasOwnProperty);\n\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            // eslint-disable-next-line react-internal/prod-error-codes\n            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n\n          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n        } catch (ex) {\n          error$1 = ex;\n        }\n\n        if (error$1 && !(error$1 instanceof Error)) {\n          setCurrentlyValidatingElement(element);\n\n          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n          setCurrentlyValidatingElement(null);\n        }\n\n        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error$1.message] = true;\n          setCurrentlyValidatingElement(element);\n\n          error('Failed %s type: %s', location, error$1.message);\n\n          setCurrentlyValidatingElement(null);\n        }\n      }\n    }\n  }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n  {\n    // toStringTag is needed for namespaced types like Temporal.Instant\n    var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n    var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n    return type;\n  }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n  {\n    try {\n      testStringCoercion(value);\n      return false;\n    } catch (e) {\n      return true;\n    }\n  }\n}\n\nfunction testStringCoercion(value) {\n  // If you ended up here by following an exception call stack, here's what's\n  // happened: you supplied an object or symbol value to React (as a prop, key,\n  // DOM attribute, CSS property, string ref, etc.) and when React tried to\n  // coerce it to a string using `'' + value`, an exception was thrown.\n  //\n  // The most common types that will cause this exception are `Symbol` instances\n  // and Temporal objects like `Temporal.Instant`. But any object that has a\n  // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n  // exception. (Library authors do this to prevent users from using built-in\n  // numeric operators like `+` or comparison operators like `>=` because custom\n  // methods are needed to perform accurate arithmetic or comparison.)\n  //\n  // To fix the problem, coerce this object or symbol value to a string before\n  // passing it to React. The most reliable way is usually `String(value)`.\n  //\n  // To find which value is throwing, check the browser or debugger console.\n  // Before this exception was thrown, there should be `console.error` output\n  // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n  // problem and how that type was used: key, atrribute, input value prop, etc.\n  // In most cases, this console output also shows the component and its\n  // ancestor components where the exception happened.\n  //\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n  key: true,\n  ref: true,\n  __self: true,\n  __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n  didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n  {\n    if (hasOwnProperty.call(config, 'ref')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n  {\n    if (hasOwnProperty.call(config, 'key')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n  {\n    if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n      var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n      if (!didWarnAboutStringRefs[componentName]) {\n        error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n        didWarnAboutStringRefs[componentName] = true;\n      }\n    }\n  }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n  {\n    var warnAboutAccessingKey = function () {\n      if (!specialPropKeyWarningShown) {\n        specialPropKeyWarningShown = true;\n\n        error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    };\n\n    warnAboutAccessingKey.isReactWarning = true;\n    Object.defineProperty(props, 'key', {\n      get: warnAboutAccessingKey,\n      configurable: true\n    });\n  }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n  {\n    var warnAboutAccessingRef = function () {\n      if (!specialPropRefWarningShown) {\n        specialPropRefWarningShown = true;\n\n        error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    };\n\n    warnAboutAccessingRef.isReactWarning = true;\n    Object.defineProperty(props, 'ref', {\n      get: warnAboutAccessingRef,\n      configurable: true\n    });\n  }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n  var element = {\n    // This tag allows us to uniquely identify this as a React Element\n    $$typeof: REACT_ELEMENT_TYPE,\n    // Built-in properties that belong on the element\n    type: type,\n    key: key,\n    ref: ref,\n    props: props,\n    // Record the component responsible for creating this element.\n    _owner: owner\n  };\n\n  {\n    // The validation flag is currently mutative. We put it on\n    // an external backing store so that we can freeze the whole object.\n    // This can be replaced with a WeakMap once they are implemented in\n    // commonly used development environments.\n    element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n    // the validation flag non-enumerable (where possible, which should\n    // include every environment we run tests in), so the test framework\n    // ignores it.\n\n    Object.defineProperty(element._store, 'validated', {\n      configurable: false,\n      enumerable: false,\n      writable: true,\n      value: false\n    }); // self and source are DEV only properties.\n\n    Object.defineProperty(element, '_self', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: self\n    }); // Two elements created in two different places should be considered\n    // equal for testing purposes and therefore we hide it from enumeration.\n\n    Object.defineProperty(element, '_source', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: source\n    });\n\n    if (Object.freeze) {\n      Object.freeze(element.props);\n      Object.freeze(element);\n    }\n  }\n\n  return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n  {\n    var propName; // Reserved names are extracted\n\n    var props = {};\n    var key = null;\n    var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n    // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\n    // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\n    // but as an intermediary step, we will use jsxDEV for everything except\n    // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\n    // key is explicitly declared to be undefined or not.\n\n    if (maybeKey !== undefined) {\n      {\n        checkKeyStringCoercion(maybeKey);\n      }\n\n      key = '' + maybeKey;\n    }\n\n    if (hasValidKey(config)) {\n      {\n        checkKeyStringCoercion(config.key);\n      }\n\n      key = '' + config.key;\n    }\n\n    if (hasValidRef(config)) {\n      ref = config.ref;\n      warnIfStringRefCannotBeAutoConverted(config, self);\n    } // Remaining properties are added to a new props object\n\n\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        props[propName] = config[propName];\n      }\n    } // Resolve default props\n\n\n    if (type && type.defaultProps) {\n      var defaultProps = type.defaultProps;\n\n      for (propName in defaultProps) {\n        if (props[propName] === undefined) {\n          props[propName] = defaultProps[propName];\n        }\n      }\n    }\n\n    if (key || ref) {\n      var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n      if (key) {\n        defineKeyPropWarningGetter(props, displayName);\n      }\n\n      if (ref) {\n        defineRefPropWarningGetter(props, displayName);\n      }\n    }\n\n    return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n  }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n    }\n  }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n  propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n  {\n    return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n  }\n}\n\nfunction getDeclarationErrorAddendum() {\n  {\n    if (ReactCurrentOwner$1.current) {\n      var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n      if (name) {\n        return '\\n\\nCheck the render method of `' + name + '`.';\n      }\n    }\n\n    return '';\n  }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n  {\n    if (source !== undefined) {\n      var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n      var lineNumber = source.lineNumber;\n      return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n    }\n\n    return '';\n  }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n  {\n    var info = getDeclarationErrorAddendum();\n\n    if (!info) {\n      var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n      if (parentName) {\n        info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n      }\n    }\n\n    return info;\n  }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n  {\n    if (!element._store || element._store.validated || element.key != null) {\n      return;\n    }\n\n    element._store.validated = true;\n    var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n    if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n      return;\n    }\n\n    ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n    // property, it may be the creator of the child that's responsible for\n    // assigning it a key.\n\n    var childOwner = '';\n\n    if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n      // Give the component that originally created this child.\n      childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n    }\n\n    setCurrentlyValidatingElement$1(element);\n\n    error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n    setCurrentlyValidatingElement$1(null);\n  }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n  {\n    if (typeof node !== 'object') {\n      return;\n    }\n\n    if (isArray(node)) {\n      for (var i = 0; i < node.length; i++) {\n        var child = node[i];\n\n        if (isValidElement(child)) {\n          validateExplicitKey(child, parentType);\n        }\n      }\n    } else if (isValidElement(node)) {\n      // This element was passed in a valid location.\n      if (node._store) {\n        node._store.validated = true;\n      }\n    } else if (node) {\n      var iteratorFn = getIteratorFn(node);\n\n      if (typeof iteratorFn === 'function') {\n        // Entry iterators used to provide implicit keys,\n        // but now we print a separate warning for them later.\n        if (iteratorFn !== node.entries) {\n          var iterator = iteratorFn.call(node);\n          var step;\n\n          while (!(step = iterator.next()).done) {\n            if (isValidElement(step.value)) {\n              validateExplicitKey(step.value, parentType);\n            }\n          }\n        }\n      }\n    }\n  }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n  {\n    var type = element.type;\n\n    if (type === null || type === undefined || typeof type === 'string') {\n      return;\n    }\n\n    var propTypes;\n\n    if (typeof type === 'function') {\n      propTypes = type.propTypes;\n    } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n    // Inner props are checked in the reconciler.\n    type.$$typeof === REACT_MEMO_TYPE)) {\n      propTypes = type.propTypes;\n    } else {\n      return;\n    }\n\n    if (propTypes) {\n      // Intentionally inside to avoid triggering lazy initializers:\n      var name = getComponentNameFromType(type);\n      checkPropTypes(propTypes, element.props, 'prop', name, element);\n    } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n      propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n      var _name = getComponentNameFromType(type);\n\n      error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n    }\n\n    if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n      error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n    }\n  }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n  {\n    var keys = Object.keys(fragment.props);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n\n      if (key !== 'children' && key !== 'key') {\n        setCurrentlyValidatingElement$1(fragment);\n\n        error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n        setCurrentlyValidatingElement$1(null);\n        break;\n      }\n    }\n\n    if (fragment.ref !== null) {\n      setCurrentlyValidatingElement$1(fragment);\n\n      error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n      setCurrentlyValidatingElement$1(null);\n    }\n  }\n}\n\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n  {\n    var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n    // succeed and there will likely be errors in render.\n\n    if (!validType) {\n      var info = '';\n\n      if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n        info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n      }\n\n      var sourceInfo = getSourceInfoErrorAddendum(source);\n\n      if (sourceInfo) {\n        info += sourceInfo;\n      } else {\n        info += getDeclarationErrorAddendum();\n      }\n\n      var typeString;\n\n      if (type === null) {\n        typeString = 'null';\n      } else if (isArray(type)) {\n        typeString = 'array';\n      } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n        typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n        info = ' Did you accidentally export a JSX literal instead of a component?';\n      } else {\n        typeString = typeof type;\n      }\n\n      error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n    }\n\n    var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n    // TODO: Drop this when these are no longer allowed as the type argument.\n\n    if (element == null) {\n      return element;\n    } // Skip key warning if the type isn't valid since our key validation logic\n    // doesn't expect a non-string/function type and can throw confusing errors.\n    // We don't want exception behavior to differ between dev and prod.\n    // (Rendering will throw with a helpful message and as soon as the type is\n    // fixed, the key warnings will appear.)\n\n\n    if (validType) {\n      var children = props.children;\n\n      if (children !== undefined) {\n        if (isStaticChildren) {\n          if (isArray(children)) {\n            for (var i = 0; i < children.length; i++) {\n              validateChildKeys(children[i], type);\n            }\n\n            if (Object.freeze) {\n              Object.freeze(children);\n            }\n          } else {\n            error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n          }\n        } else {\n          validateChildKeys(children, type);\n        }\n      }\n    }\n\n    if (type === REACT_FRAGMENT_TYPE) {\n      validateFragmentProps(element);\n    } else {\n      validatePropTypes(element);\n    }\n\n    return element;\n  }\n} // These two functions exist to still get child warnings in dev\n\nvar jsxDEV$1 =  jsxWithValidation ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsxDEV = jsxDEV$1;\n  })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1kZXYtcnVudGltZS5kZXZlbG9wbWVudC5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7O0FBRWIsSUFBSSxJQUFxQztBQUN6QztBQUNBOztBQUVBLFlBQVksbUJBQU8sQ0FBQyw0Q0FBTzs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpR0FBaUcsZUFBZTtBQUNoSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0EsS0FBSyxHQUFHOztBQUVSLGtEQUFrRDtBQUNsRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSw0QkFBNEI7QUFDNUI7QUFDQSxxQ0FBcUM7O0FBRXJDLGdDQUFnQztBQUNoQztBQUNBOztBQUVBLGdDQUFnQzs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQSxFQUFFOzs7QUFHRjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0EsU0FBUztBQUNULHVCQUF1QjtBQUN2QjtBQUNBLFNBQVM7QUFDVCx1QkFBdUI7QUFDdkI7QUFDQSxTQUFTO0FBQ1Qsd0JBQXdCO0FBQ3hCO0FBQ0EsU0FBUztBQUNULHdCQUF3QjtBQUN4QjtBQUNBLFNBQVM7QUFDVCxpQ0FBaUM7QUFDakM7QUFDQSxTQUFTO0FBQ1QsMkJBQTJCO0FBQzNCO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkRBQTJEOztBQUUzRDtBQUNBOztBQUVBO0FBQ0EseURBQXlEO0FBQ3pEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOzs7QUFHVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxhQUFhLGtCQUFrQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0E7QUFDQSxnRkFBZ0Y7QUFDaEY7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCOzs7QUFHbEI7QUFDQTtBQUNBLGNBQWM7QUFDZDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwySEFBMkg7QUFDM0g7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxvRUFBb0U7O0FBRXBFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUNBQWlDOztBQUVqQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdDQUF3QztBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkLFdBQVcsR0FBRztBQUNkLFdBQVcsR0FBRztBQUNkLFdBQVcsZUFBZTtBQUMxQixXQUFXLEdBQUc7QUFDZCxXQUFXLEdBQUc7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsR0FBRztBQUNkO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLEdBQUc7O0FBRVI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssR0FBRztBQUNSOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEdBQUc7QUFDZCxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25COztBQUVBO0FBQ0E7QUFDQSxrQkFBa0I7O0FBRWxCO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEIsMkRBQTJELFVBQVU7QUFDckUseUJBQXlCLFVBQVU7QUFDbkM7QUFDQSxhQUFhLFVBQVU7QUFDdkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07OztBQUdOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7O0FBR047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixZQUFZLFNBQVM7QUFDckI7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QixXQUFXLEdBQUc7QUFDZDs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw2REFBNkQ7QUFDN0Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFdBQVc7QUFDdEIsV0FBVyxHQUFHO0FBQ2Q7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0IsaUJBQWlCO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sNENBQTRDOztBQUU1Qzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLGlCQUFpQjtBQUNyQzs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDhDQUE4QztBQUM5Qzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSwwREFBMEQ7QUFDMUQ7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIscUJBQXFCO0FBQ2pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGOztBQUVBLGdCQUFnQjtBQUNoQixjQUFjO0FBQ2QsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LWRldi1ydW50aW1lLmRldmVsb3BtZW50LmpzPzE3ZTEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LWRldi1ydW50aW1lLmRldmVsb3BtZW50LmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIChmdW5jdGlvbigpIHtcbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxuLy8gQVRURU5USU9OXG4vLyBXaGVuIGFkZGluZyBuZXcgc3ltYm9scyB0byB0aGlzIGZpbGUsXG4vLyBQbGVhc2UgY29uc2lkZXIgYWxzbyBhZGRpbmcgdG8gJ3JlYWN0LWRldnRvb2xzLXNoYXJlZC9zcmMvYmFja2VuZC9SZWFjdFN5bWJvbHMnXG4vLyBUaGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBSZWFjdEVsZW1lbnQtbGlrZSB0eXBlcy5cbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50Jyk7XG52YXIgUkVBQ1RfUE9SVEFMX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wb3J0YWwnKTtcbnZhciBSRUFDVF9GUkFHTUVOVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QuZnJhZ21lbnQnKTtcbnZhciBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3RyaWN0X21vZGUnKTtcbnZhciBSRUFDVF9QUk9GSUxFUl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QucHJvZmlsZXInKTtcbnZhciBSRUFDVF9QUk9WSURFUl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QucHJvdmlkZXInKTtcbnZhciBSRUFDVF9DT05URVhUX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5jb250ZXh0Jyk7XG52YXIgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmZvcndhcmRfcmVmJyk7XG52YXIgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnN1c3BlbnNlJyk7XG52YXIgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2VfbGlzdCcpO1xudmFyIFJFQUNUX01FTU9fVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0Lm1lbW8nKTtcbnZhciBSRUFDVF9MQVpZX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5sYXp5Jyk7XG52YXIgUkVBQ1RfT0ZGU0NSRUVOX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5vZmZzY3JlZW4nKTtcbnZhciBNQVlCRV9JVEVSQVRPUl9TWU1CT0wgPSBTeW1ib2wuaXRlcmF0b3I7XG52YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7XG5mdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcbiAgaWYgKG1heWJlSXRlcmFibGUgPT09IG51bGwgfHwgdHlwZW9mIG1heWJlSXRlcmFibGUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2YXIgbWF5YmVJdGVyYXRvciA9IE1BWUJFX0lURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW01BWUJFX0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF07XG5cbiAgaWYgKHR5cGVvZiBtYXliZUl0ZXJhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG1heWJlSXRlcmF0b3I7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxudmFyIFJlYWN0U2hhcmVkSW50ZXJuYWxzID0gUmVhY3QuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7XG5cbmZ1bmN0aW9uIGVycm9yKGZvcm1hdCkge1xuICB7XG4gICAge1xuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yID4gMSA/IF9sZW4yIC0gMSA6IDApLCBfa2V5MiA9IDE7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgYXJnc1tfa2V5MiAtIDFdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1cblxuICAgICAgcHJpbnRXYXJuaW5nKCdlcnJvcicsIGZvcm1hdCwgYXJncyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByaW50V2FybmluZyhsZXZlbCwgZm9ybWF0LCBhcmdzKSB7XG4gIC8vIFdoZW4gY2hhbmdpbmcgdGhpcyBsb2dpYywgeW91IG1pZ2h0IHdhbnQgdG8gYWxzb1xuICAvLyB1cGRhdGUgY29uc29sZVdpdGhTdGFja0Rldi53d3cuanMgYXMgd2VsbC5cbiAge1xuICAgIHZhciBSZWFjdERlYnVnQ3VycmVudEZyYW1lID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZTtcbiAgICB2YXIgc3RhY2sgPSBSZWFjdERlYnVnQ3VycmVudEZyYW1lLmdldFN0YWNrQWRkZW5kdW0oKTtcblxuICAgIGlmIChzdGFjayAhPT0gJycpIHtcbiAgICAgIGZvcm1hdCArPSAnJXMnO1xuICAgICAgYXJncyA9IGFyZ3MuY29uY2F0KFtzdGFja10pO1xuICAgIH0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL3NhZmUtc3RyaW5nLWNvZXJjaW9uXG5cblxuICAgIHZhciBhcmdzV2l0aEZvcm1hdCA9IGFyZ3MubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKGl0ZW0pO1xuICAgIH0pOyAvLyBDYXJlZnVsOiBSTiBjdXJyZW50bHkgZGVwZW5kcyBvbiB0aGlzIHByZWZpeFxuXG4gICAgYXJnc1dpdGhGb3JtYXQudW5zaGlmdCgnV2FybmluZzogJyArIGZvcm1hdCk7IC8vIFdlIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIHNwcmVhZCAob3IgLmFwcGx5KSBkaXJlY3RseSBiZWNhdXNlIGl0XG4gICAgLy8gYnJlYWtzIElFOTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xMzYxMFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmdcblxuICAgIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKGNvbnNvbGVbbGV2ZWxdLCBjb25zb2xlLCBhcmdzV2l0aEZvcm1hdCk7XG4gIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxudmFyIGVuYWJsZVNjb3BlQVBJID0gZmFsc2U7IC8vIEV4cGVyaW1lbnRhbCBDcmVhdGUgRXZlbnQgSGFuZGxlIEFQSS5cbnZhciBlbmFibGVDYWNoZUVsZW1lbnQgPSBmYWxzZTtcbnZhciBlbmFibGVUcmFuc2l0aW9uVHJhY2luZyA9IGZhbHNlOyAvLyBObyBrbm93biBidWdzLCBidXQgbmVlZHMgcGVyZm9ybWFuY2UgdGVzdGluZ1xuXG52YXIgZW5hYmxlTGVnYWN5SGlkZGVuID0gZmFsc2U7IC8vIEVuYWJsZXMgdW5zdGFibGVfYXZvaWRUaGlzRmFsbGJhY2sgZmVhdHVyZSBpbiBGaWJlclxuLy8gc3R1ZmYuIEludGVuZGVkIHRvIGVuYWJsZSBSZWFjdCBjb3JlIG1lbWJlcnMgdG8gbW9yZSBlYXNpbHkgZGVidWcgc2NoZWR1bGluZ1xuLy8gaXNzdWVzIGluIERFViBidWlsZHMuXG5cbnZhciBlbmFibGVEZWJ1Z1RyYWNpbmcgPSBmYWxzZTsgLy8gVHJhY2sgd2hpY2ggRmliZXIocykgc2NoZWR1bGUgcmVuZGVyIHdvcmsuXG5cbnZhciBSRUFDVF9NT0RVTEVfUkVGRVJFTkNFID0gU3ltYm9sLmZvcigncmVhY3QubW9kdWxlLnJlZmVyZW5jZScpO1xuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpIHtcbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIE5vdGU6IHR5cGVvZiBtaWdodCBiZSBvdGhlciB0aGFuICdzeW1ib2wnIG9yICdudW1iZXInIChlLmcuIGlmIGl0J3MgYSBwb2x5ZmlsbCkuXG5cblxuICBpZiAodHlwZSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9QUk9GSUxFUl9UWVBFIHx8IGVuYWJsZURlYnVnVHJhY2luZyAgfHwgdHlwZSA9PT0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSB8fCBlbmFibGVMZWdhY3lIaWRkZW4gIHx8IHR5cGUgPT09IFJFQUNUX09GRlNDUkVFTl9UWVBFIHx8IGVuYWJsZVNjb3BlQVBJICB8fCBlbmFibGVDYWNoZUVsZW1lbnQgIHx8IGVuYWJsZVRyYW5zaXRpb25UcmFjaW5nICkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiB0eXBlICE9PSBudWxsKSB7XG4gICAgaWYgKHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0xBWllfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9NRU1PX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfUFJPVklERVJfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9DT05URVhUX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSB8fCAvLyBUaGlzIG5lZWRzIHRvIGluY2x1ZGUgYWxsIHBvc3NpYmxlIG1vZHVsZSByZWZlcmVuY2Ugb2JqZWN0XG4gICAgLy8gdHlwZXMgc3VwcG9ydGVkIGJ5IGFueSBGbGlnaHQgY29uZmlndXJhdGlvbiBhbnl3aGVyZSBzaW5jZVxuICAgIC8vIHdlIGRvbid0IGtub3cgd2hpY2ggRmxpZ2h0IGJ1aWxkIHRoaXMgd2lsbCBlbmQgdXAgYmVpbmcgdXNlZFxuICAgIC8vIHdpdGguXG4gICAgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTU9EVUxFX1JFRkVSRU5DRSB8fCB0eXBlLmdldE1vZHVsZUlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0V3JhcHBlZE5hbWUob3V0ZXJUeXBlLCBpbm5lclR5cGUsIHdyYXBwZXJOYW1lKSB7XG4gIHZhciBkaXNwbGF5TmFtZSA9IG91dGVyVHlwZS5kaXNwbGF5TmFtZTtcblxuICBpZiAoZGlzcGxheU5hbWUpIHtcbiAgICByZXR1cm4gZGlzcGxheU5hbWU7XG4gIH1cblxuICB2YXIgZnVuY3Rpb25OYW1lID0gaW5uZXJUeXBlLmRpc3BsYXlOYW1lIHx8IGlubmVyVHlwZS5uYW1lIHx8ICcnO1xuICByZXR1cm4gZnVuY3Rpb25OYW1lICE9PSAnJyA/IHdyYXBwZXJOYW1lICsgXCIoXCIgKyBmdW5jdGlvbk5hbWUgKyBcIilcIiA6IHdyYXBwZXJOYW1lO1xufSAvLyBLZWVwIGluIHN5bmMgd2l0aCByZWFjdC1yZWNvbmNpbGVyL2dldENvbXBvbmVudE5hbWVGcm9tRmliZXJcblxuXG5mdW5jdGlvbiBnZXRDb250ZXh0TmFtZSh0eXBlKSB7XG4gIHJldHVybiB0eXBlLmRpc3BsYXlOYW1lIHx8ICdDb250ZXh0Jztcbn0gLy8gTm90ZSB0aGF0IHRoZSByZWNvbmNpbGVyIHBhY2thZ2Ugc2hvdWxkIGdlbmVyYWxseSBwcmVmZXIgdG8gdXNlIGdldENvbXBvbmVudE5hbWVGcm9tRmliZXIoKSBpbnN0ZWFkLlxuXG5cbmZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB7XG4gIGlmICh0eXBlID09IG51bGwpIHtcbiAgICAvLyBIb3N0IHJvb3QsIHRleHQgbm9kZSBvciBqdXN0IGludmFsaWQgdHlwZS5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHtcbiAgICBpZiAodHlwZW9mIHR5cGUudGFnID09PSAnbnVtYmVyJykge1xuICAgICAgZXJyb3IoJ1JlY2VpdmVkIGFuIHVuZXhwZWN0ZWQgb2JqZWN0IGluIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSgpLiAnICsgJ1RoaXMgaXMgbGlrZWx5IGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgbnVsbDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUkVBQ1RfRlJBR01FTlRfVFlQRTpcbiAgICAgIHJldHVybiAnRnJhZ21lbnQnO1xuXG4gICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgIHJldHVybiAnUG9ydGFsJztcblxuICAgIGNhc2UgUkVBQ1RfUFJPRklMRVJfVFlQRTpcbiAgICAgIHJldHVybiAnUHJvZmlsZXInO1xuXG4gICAgY2FzZSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFOlxuICAgICAgcmV0dXJuICdTdHJpY3RNb2RlJztcblxuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgIHJldHVybiAnU3VzcGVuc2UnO1xuXG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICByZXR1cm4gJ1N1c3BlbnNlTGlzdCc7XG5cbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICBzd2l0Y2ggKHR5cGUuJCR0eXBlb2YpIHtcbiAgICAgIGNhc2UgUkVBQ1RfQ09OVEVYVF9UWVBFOlxuICAgICAgICB2YXIgY29udGV4dCA9IHR5cGU7XG4gICAgICAgIHJldHVybiBnZXRDb250ZXh0TmFtZShjb250ZXh0KSArICcuQ29uc3VtZXInO1xuXG4gICAgICBjYXNlIFJFQUNUX1BST1ZJREVSX1RZUEU6XG4gICAgICAgIHZhciBwcm92aWRlciA9IHR5cGU7XG4gICAgICAgIHJldHVybiBnZXRDb250ZXh0TmFtZShwcm92aWRlci5fY29udGV4dCkgKyAnLlByb3ZpZGVyJztcblxuICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICByZXR1cm4gZ2V0V3JhcHBlZE5hbWUodHlwZSwgdHlwZS5yZW5kZXIsICdGb3J3YXJkUmVmJyk7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICB2YXIgb3V0ZXJOYW1lID0gdHlwZS5kaXNwbGF5TmFtZSB8fCBudWxsO1xuXG4gICAgICAgIGlmIChvdXRlck5hbWUgIT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gb3V0ZXJOYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlLnR5cGUpIHx8ICdNZW1vJztcblxuICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgbGF6eUNvbXBvbmVudCA9IHR5cGU7XG4gICAgICAgICAgdmFyIHBheWxvYWQgPSBsYXp5Q29tcG9uZW50Ll9wYXlsb2FkO1xuICAgICAgICAgIHZhciBpbml0ID0gbGF6eUNvbXBvbmVudC5faW5pdDtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGluaXQocGF5bG9hZCkpO1xuICAgICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxudmFyIGFzc2lnbiA9IE9iamVjdC5hc3NpZ247XG5cbi8vIEhlbHBlcnMgdG8gcGF0Y2ggY29uc29sZS5sb2dzIHRvIGF2b2lkIGxvZ2dpbmcgZHVyaW5nIHNpZGUtZWZmZWN0IGZyZWVcbi8vIHJlcGxheWluZyBvbiByZW5kZXIgZnVuY3Rpb24uIFRoaXMgY3VycmVudGx5IG9ubHkgcGF0Y2hlcyB0aGUgb2JqZWN0XG4vLyBsYXppbHkgd2hpY2ggd29uJ3QgY292ZXIgaWYgdGhlIGxvZyBmdW5jdGlvbiB3YXMgZXh0cmFjdGVkIGVhZ2VybHkuXG4vLyBXZSBjb3VsZCBhbHNvIGVhZ2VybHkgcGF0Y2ggdGhlIG1ldGhvZC5cbnZhciBkaXNhYmxlZERlcHRoID0gMDtcbnZhciBwcmV2TG9nO1xudmFyIHByZXZJbmZvO1xudmFyIHByZXZXYXJuO1xudmFyIHByZXZFcnJvcjtcbnZhciBwcmV2R3JvdXA7XG52YXIgcHJldkdyb3VwQ29sbGFwc2VkO1xudmFyIHByZXZHcm91cEVuZDtcblxuZnVuY3Rpb24gZGlzYWJsZWRMb2coKSB7fVxuXG5kaXNhYmxlZExvZy5fX3JlYWN0RGlzYWJsZWRMb2cgPSB0cnVlO1xuZnVuY3Rpb24gZGlzYWJsZUxvZ3MoKSB7XG4gIHtcbiAgICBpZiAoZGlzYWJsZWREZXB0aCA9PT0gMCkge1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgcmVhY3QtaW50ZXJuYWwvbm8tcHJvZHVjdGlvbi1sb2dnaW5nICovXG4gICAgICBwcmV2TG9nID0gY29uc29sZS5sb2c7XG4gICAgICBwcmV2SW5mbyA9IGNvbnNvbGUuaW5mbztcbiAgICAgIHByZXZXYXJuID0gY29uc29sZS53YXJuO1xuICAgICAgcHJldkVycm9yID0gY29uc29sZS5lcnJvcjtcbiAgICAgIHByZXZHcm91cCA9IGNvbnNvbGUuZ3JvdXA7XG4gICAgICBwcmV2R3JvdXBDb2xsYXBzZWQgPSBjb25zb2xlLmdyb3VwQ29sbGFwc2VkO1xuICAgICAgcHJldkdyb3VwRW5kID0gY29uc29sZS5ncm91cEVuZDsgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xOTA5OVxuXG4gICAgICB2YXIgcHJvcHMgPSB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IGRpc2FibGVkTG9nLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgfTsgLy8gJEZsb3dGaXhNZSBGbG93IHRoaW5rcyBjb25zb2xlIGlzIGltbXV0YWJsZS5cblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoY29uc29sZSwge1xuICAgICAgICBpbmZvOiBwcm9wcyxcbiAgICAgICAgbG9nOiBwcm9wcyxcbiAgICAgICAgd2FybjogcHJvcHMsXG4gICAgICAgIGVycm9yOiBwcm9wcyxcbiAgICAgICAgZ3JvdXA6IHByb3BzLFxuICAgICAgICBncm91cENvbGxhcHNlZDogcHJvcHMsXG4gICAgICAgIGdyb3VwRW5kOiBwcm9wc1xuICAgICAgfSk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgIH1cblxuICAgIGRpc2FibGVkRGVwdGgrKztcbiAgfVxufVxuZnVuY3Rpb24gcmVlbmFibGVMb2dzKCkge1xuICB7XG4gICAgZGlzYWJsZWREZXB0aC0tO1xuXG4gICAgaWYgKGRpc2FibGVkRGVwdGggPT09IDApIHtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgICAgdmFyIHByb3BzID0ge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICB9OyAvLyAkRmxvd0ZpeE1lIEZsb3cgdGhpbmtzIGNvbnNvbGUgaXMgaW1tdXRhYmxlLlxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjb25zb2xlLCB7XG4gICAgICAgIGxvZzogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2TG9nXG4gICAgICAgIH0pLFxuICAgICAgICBpbmZvOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZJbmZvXG4gICAgICAgIH0pLFxuICAgICAgICB3YXJuOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZXYXJuXG4gICAgICAgIH0pLFxuICAgICAgICBlcnJvcjogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2RXJyb3JcbiAgICAgICAgfSksXG4gICAgICAgIGdyb3VwOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZHcm91cFxuICAgICAgICB9KSxcbiAgICAgICAgZ3JvdXBDb2xsYXBzZWQ6IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkdyb3VwQ29sbGFwc2VkXG4gICAgICAgIH0pLFxuICAgICAgICBncm91cEVuZDogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2R3JvdXBFbmRcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgICAgLyogZXNsaW50LWVuYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICB9XG5cbiAgICBpZiAoZGlzYWJsZWREZXB0aCA8IDApIHtcbiAgICAgIGVycm9yKCdkaXNhYmxlZERlcHRoIGZlbGwgYmVsb3cgemVyby4gJyArICdUaGlzIGlzIGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS4nKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIFJlYWN0Q3VycmVudERpc3BhdGNoZXIgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdEN1cnJlbnREaXNwYXRjaGVyO1xudmFyIHByZWZpeDtcbmZ1bmN0aW9uIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKG5hbWUsIHNvdXJjZSwgb3duZXJGbikge1xuICB7XG4gICAgaWYgKHByZWZpeCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBFeHRyYWN0IHRoZSBWTSBzcGVjaWZpYyBwcmVmaXggdXNlZCBieSBlYWNoIGxpbmUuXG4gICAgICB0cnkge1xuICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICB2YXIgbWF0Y2ggPSB4LnN0YWNrLnRyaW0oKS5tYXRjaCgvXFxuKCAqKGF0ICk/KS8pO1xuICAgICAgICBwcmVmaXggPSBtYXRjaCAmJiBtYXRjaFsxXSB8fCAnJztcbiAgICAgIH1cbiAgICB9IC8vIFdlIHVzZSB0aGUgcHJlZml4IHRvIGVuc3VyZSBvdXIgc3RhY2tzIGxpbmUgdXAgd2l0aCBuYXRpdmUgc3RhY2sgZnJhbWVzLlxuXG5cbiAgICByZXR1cm4gJ1xcbicgKyBwcmVmaXggKyBuYW1lO1xuICB9XG59XG52YXIgcmVlbnRyeSA9IGZhbHNlO1xudmFyIGNvbXBvbmVudEZyYW1lQ2FjaGU7XG5cbntcbiAgdmFyIFBvc3NpYmx5V2Vha01hcCA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nID8gV2Vha01hcCA6IE1hcDtcbiAgY29tcG9uZW50RnJhbWVDYWNoZSA9IG5ldyBQb3NzaWJseVdlYWtNYXAoKTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZShmbiwgY29uc3RydWN0KSB7XG4gIC8vIElmIHNvbWV0aGluZyBhc2tlZCBmb3IgYSBzdGFjayBpbnNpZGUgYSBmYWtlIHJlbmRlciwgaXQgc2hvdWxkIGdldCBpZ25vcmVkLlxuICBpZiAoICFmbiB8fCByZWVudHJ5KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAge1xuICAgIHZhciBmcmFtZSA9IGNvbXBvbmVudEZyYW1lQ2FjaGUuZ2V0KGZuKTtcblxuICAgIGlmIChmcmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZnJhbWU7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbnRyb2w7XG4gIHJlZW50cnkgPSB0cnVlO1xuICB2YXIgcHJldmlvdXNQcmVwYXJlU3RhY2tUcmFjZSA9IEVycm9yLnByZXBhcmVTdGFja1RyYWNlOyAvLyAkRmxvd0ZpeE1lIEl0IGRvZXMgYWNjZXB0IHVuZGVmaW5lZC5cblxuICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHVuZGVmaW5lZDtcbiAgdmFyIHByZXZpb3VzRGlzcGF0Y2hlcjtcblxuICB7XG4gICAgcHJldmlvdXNEaXNwYXRjaGVyID0gUmVhY3RDdXJyZW50RGlzcGF0Y2hlci5jdXJyZW50OyAvLyBTZXQgdGhlIGRpc3BhdGNoZXIgaW4gREVWIGJlY2F1c2UgdGhpcyBtaWdodCBiZSBjYWxsIGluIHRoZSByZW5kZXIgZnVuY3Rpb25cbiAgICAvLyBmb3Igd2FybmluZ3MuXG5cbiAgICBSZWFjdEN1cnJlbnREaXNwYXRjaGVyLmN1cnJlbnQgPSBudWxsO1xuICAgIGRpc2FibGVMb2dzKCk7XG4gIH1cblxuICB0cnkge1xuICAgIC8vIFRoaXMgc2hvdWxkIHRocm93LlxuICAgIGlmIChjb25zdHJ1Y3QpIHtcbiAgICAgIC8vIFNvbWV0aGluZyBzaG91bGQgYmUgc2V0dGluZyB0aGUgcHJvcHMgaW4gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAgdmFyIEZha2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICB9OyAvLyAkRmxvd0ZpeE1lXG5cblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZha2UucHJvdG90eXBlLCAncHJvcHMnLCB7XG4gICAgICAgIHNldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIC8vIFdlIHVzZSBhIHRocm93aW5nIHNldHRlciBpbnN0ZWFkIG9mIGZyb3plbiBvciBub24td3JpdGFibGUgcHJvcHNcbiAgICAgICAgICAvLyBiZWNhdXNlIHRoYXQgd29uJ3QgdGhyb3cgaW4gYSBub24tc3RyaWN0IG1vZGUgZnVuY3Rpb24uXG4gICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gJ29iamVjdCcgJiYgUmVmbGVjdC5jb25zdHJ1Y3QpIHtcbiAgICAgICAgLy8gV2UgY29uc3RydWN0IGEgZGlmZmVyZW50IGNvbnRyb2wgZm9yIHRoaXMgY2FzZSB0byBpbmNsdWRlIGFueSBleHRyYVxuICAgICAgICAvLyBmcmFtZXMgYWRkZWQgYnkgdGhlIGNvbnN0cnVjdCBjYWxsLlxuICAgICAgICB0cnkge1xuICAgICAgICAgIFJlZmxlY3QuY29uc3RydWN0KEZha2UsIFtdKTtcbiAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgIGNvbnRyb2wgPSB4O1xuICAgICAgICB9XG5cbiAgICAgICAgUmVmbGVjdC5jb25zdHJ1Y3QoZm4sIFtdLCBGYWtlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgRmFrZS5jYWxsKCk7XG4gICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICBjb250cm9sID0geDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZuLmNhbGwoRmFrZS5wcm90b3R5cGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICBjb250cm9sID0geDtcbiAgICAgIH1cblxuICAgICAgZm4oKTtcbiAgICB9XG4gIH0gY2F0Y2ggKHNhbXBsZSkge1xuICAgIC8vIFRoaXMgaXMgaW5saW5lZCBtYW51YWxseSBiZWNhdXNlIGNsb3N1cmUgZG9lc24ndCBkbyBpdCBmb3IgdXMuXG4gICAgaWYgKHNhbXBsZSAmJiBjb250cm9sICYmIHR5cGVvZiBzYW1wbGUuc3RhY2sgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBUaGlzIGV4dHJhY3RzIHRoZSBmaXJzdCBmcmFtZSBmcm9tIHRoZSBzYW1wbGUgdGhhdCBpc24ndCBhbHNvIGluIHRoZSBjb250cm9sLlxuICAgICAgLy8gU2tpcHBpbmcgb25lIGZyYW1lIHRoYXQgd2UgYXNzdW1lIGlzIHRoZSBmcmFtZSB0aGF0IGNhbGxzIHRoZSB0d28uXG4gICAgICB2YXIgc2FtcGxlTGluZXMgPSBzYW1wbGUuc3RhY2suc3BsaXQoJ1xcbicpO1xuICAgICAgdmFyIGNvbnRyb2xMaW5lcyA9IGNvbnRyb2wuc3RhY2suc3BsaXQoJ1xcbicpO1xuICAgICAgdmFyIHMgPSBzYW1wbGVMaW5lcy5sZW5ndGggLSAxO1xuICAgICAgdmFyIGMgPSBjb250cm9sTGluZXMubGVuZ3RoIC0gMTtcblxuICAgICAgd2hpbGUgKHMgPj0gMSAmJiBjID49IDAgJiYgc2FtcGxlTGluZXNbc10gIT09IGNvbnRyb2xMaW5lc1tjXSkge1xuICAgICAgICAvLyBXZSBleHBlY3QgYXQgbGVhc3Qgb25lIHN0YWNrIGZyYW1lIHRvIGJlIHNoYXJlZC5cbiAgICAgICAgLy8gVHlwaWNhbGx5IHRoaXMgd2lsbCBiZSB0aGUgcm9vdCBtb3N0IG9uZS4gSG93ZXZlciwgc3RhY2sgZnJhbWVzIG1heSBiZVxuICAgICAgICAvLyBjdXQgb2ZmIGR1ZSB0byBtYXhpbXVtIHN0YWNrIGxpbWl0cy4gSW4gdGhpcyBjYXNlLCBvbmUgbWF5YmUgY3V0IG9mZlxuICAgICAgICAvLyBlYXJsaWVyIHRoYW4gdGhlIG90aGVyLiBXZSBhc3N1bWUgdGhhdCB0aGUgc2FtcGxlIGlzIGxvbmdlciBvciB0aGUgc2FtZVxuICAgICAgICAvLyBhbmQgdGhlcmUgZm9yIGN1dCBvZmYgZWFybGllci4gU28gd2Ugc2hvdWxkIGZpbmQgdGhlIHJvb3QgbW9zdCBmcmFtZSBpblxuICAgICAgICAvLyB0aGUgc2FtcGxlIHNvbWV3aGVyZSBpbiB0aGUgY29udHJvbC5cbiAgICAgICAgYy0tO1xuICAgICAgfVxuXG4gICAgICBmb3IgKDsgcyA+PSAxICYmIGMgPj0gMDsgcy0tLCBjLS0pIHtcbiAgICAgICAgLy8gTmV4dCB3ZSBmaW5kIHRoZSBmaXJzdCBvbmUgdGhhdCBpc24ndCB0aGUgc2FtZSB3aGljaCBzaG91bGQgYmUgdGhlXG4gICAgICAgIC8vIGZyYW1lIHRoYXQgY2FsbGVkIG91ciBzYW1wbGUgZnVuY3Rpb24gYW5kIHRoZSBjb250cm9sLlxuICAgICAgICBpZiAoc2FtcGxlTGluZXNbc10gIT09IGNvbnRyb2xMaW5lc1tjXSkge1xuICAgICAgICAgIC8vIEluIFY4LCB0aGUgZmlyc3QgbGluZSBpcyBkZXNjcmliaW5nIHRoZSBtZXNzYWdlIGJ1dCBvdGhlciBWTXMgZG9uJ3QuXG4gICAgICAgICAgLy8gSWYgd2UncmUgYWJvdXQgdG8gcmV0dXJuIHRoZSBmaXJzdCBsaW5lLCBhbmQgdGhlIGNvbnRyb2wgaXMgYWxzbyBvbiB0aGUgc2FtZVxuICAgICAgICAgIC8vIGxpbmUsIHRoYXQncyBhIHByZXR0eSBnb29kIGluZGljYXRvciB0aGF0IG91ciBzYW1wbGUgdGhyZXcgYXQgc2FtZSBsaW5lIGFzXG4gICAgICAgICAgLy8gdGhlIGNvbnRyb2wuIEkuZS4gYmVmb3JlIHdlIGVudGVyZWQgdGhlIHNhbXBsZSBmcmFtZS4gU28gd2UgaWdub3JlIHRoaXMgcmVzdWx0LlxuICAgICAgICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBpZiB5b3UgcGFzc2VkIGEgY2xhc3MgdG8gZnVuY3Rpb24gY29tcG9uZW50LCBvciBub24tZnVuY3Rpb24uXG4gICAgICAgICAgaWYgKHMgIT09IDEgfHwgYyAhPT0gMSkge1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICBzLS07XG4gICAgICAgICAgICAgIGMtLTsgLy8gV2UgbWF5IHN0aWxsIGhhdmUgc2ltaWxhciBpbnRlcm1lZGlhdGUgZnJhbWVzIGZyb20gdGhlIGNvbnN0cnVjdCBjYWxsLlxuICAgICAgICAgICAgICAvLyBUaGUgbmV4dCBvbmUgdGhhdCBpc24ndCB0aGUgc2FtZSBzaG91bGQgYmUgb3VyIG1hdGNoIHRob3VnaC5cblxuICAgICAgICAgICAgICBpZiAoYyA8IDAgfHwgc2FtcGxlTGluZXNbc10gIT09IGNvbnRyb2xMaW5lc1tjXSkge1xuICAgICAgICAgICAgICAgIC8vIFY4IGFkZHMgYSBcIm5ld1wiIHByZWZpeCBmb3IgbmF0aXZlIGNsYXNzZXMuIExldCdzIHJlbW92ZSBpdCB0byBtYWtlIGl0IHByZXR0aWVyLlxuICAgICAgICAgICAgICAgIHZhciBfZnJhbWUgPSAnXFxuJyArIHNhbXBsZUxpbmVzW3NdLnJlcGxhY2UoJyBhdCBuZXcgJywgJyBhdCAnKTsgLy8gSWYgb3VyIGNvbXBvbmVudCBmcmFtZSBpcyBsYWJlbGVkIFwiPGFub255bW91cz5cIlxuICAgICAgICAgICAgICAgIC8vIGJ1dCB3ZSBoYXZlIGEgdXNlci1wcm92aWRlZCBcImRpc3BsYXlOYW1lXCJcbiAgICAgICAgICAgICAgICAvLyBzcGxpY2UgaXQgaW4gdG8gbWFrZSB0aGUgc3RhY2sgbW9yZSByZWFkYWJsZS5cblxuXG4gICAgICAgICAgICAgICAgaWYgKGZuLmRpc3BsYXlOYW1lICYmIF9mcmFtZS5pbmNsdWRlcygnPGFub255bW91cz4nKSkge1xuICAgICAgICAgICAgICAgICAgX2ZyYW1lID0gX2ZyYW1lLnJlcGxhY2UoJzxhbm9ueW1vdXM+JywgZm4uZGlzcGxheU5hbWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50RnJhbWVDYWNoZS5zZXQoZm4sIF9mcmFtZSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSAvLyBSZXR1cm4gdGhlIGxpbmUgd2UgZm91bmQuXG5cblxuICAgICAgICAgICAgICAgIHJldHVybiBfZnJhbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gd2hpbGUgKHMgPj0gMSAmJiBjID49IDApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIHJlZW50cnkgPSBmYWxzZTtcblxuICAgIHtcbiAgICAgIFJlYWN0Q3VycmVudERpc3BhdGNoZXIuY3VycmVudCA9IHByZXZpb3VzRGlzcGF0Y2hlcjtcbiAgICAgIHJlZW5hYmxlTG9ncygpO1xuICAgIH1cblxuICAgIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gcHJldmlvdXNQcmVwYXJlU3RhY2tUcmFjZTtcbiAgfSAvLyBGYWxsYmFjayB0byBqdXN0IHVzaW5nIHRoZSBuYW1lIGlmIHdlIGNvdWxkbid0IG1ha2UgaXQgdGhyb3cuXG5cblxuICB2YXIgbmFtZSA9IGZuID8gZm4uZGlzcGxheU5hbWUgfHwgZm4ubmFtZSA6ICcnO1xuICB2YXIgc3ludGhldGljRnJhbWUgPSBuYW1lID8gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUobmFtZSkgOiAnJztcblxuICB7XG4gICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29tcG9uZW50RnJhbWVDYWNoZS5zZXQoZm4sIHN5bnRoZXRpY0ZyYW1lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3ludGhldGljRnJhbWU7XG59XG5mdW5jdGlvbiBkZXNjcmliZUZ1bmN0aW9uQ29tcG9uZW50RnJhbWUoZm4sIHNvdXJjZSwgb3duZXJGbikge1xuICB7XG4gICAgcmV0dXJuIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUoZm4sIGZhbHNlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzaG91bGRDb25zdHJ1Y3QoQ29tcG9uZW50KSB7XG4gIHZhciBwcm90b3R5cGUgPSBDb21wb25lbnQucHJvdG90eXBlO1xuICByZXR1cm4gISEocHJvdG90eXBlICYmIHByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50KTtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKHR5cGUsIHNvdXJjZSwgb3duZXJGbikge1xuXG4gIGlmICh0eXBlID09IG51bGwpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICB7XG4gICAgICByZXR1cm4gZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZSh0eXBlLCBzaG91bGRDb25zdHJ1Y3QodHlwZSkpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUodHlwZSk7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoJ1N1c3BlbnNlJyk7XG5cbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTpcbiAgICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZSgnU3VzcGVuc2VMaXN0Jyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgc3dpdGNoICh0eXBlLiQkdHlwZW9mKSB7XG4gICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgIHJldHVybiBkZXNjcmliZUZ1bmN0aW9uQ29tcG9uZW50RnJhbWUodHlwZS5yZW5kZXIpO1xuXG4gICAgICBjYXNlIFJFQUNUX01FTU9fVFlQRTpcbiAgICAgICAgLy8gTWVtbyBtYXkgY29udGFpbiBhbnkgY29tcG9uZW50IHR5cGUgc28gd2UgcmVjdXJzaXZlbHkgcmVzb2x2ZSBpdC5cbiAgICAgICAgcmV0dXJuIGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVih0eXBlLnR5cGUsIHNvdXJjZSwgb3duZXJGbik7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGxhenlDb21wb25lbnQgPSB0eXBlO1xuICAgICAgICAgIHZhciBwYXlsb2FkID0gbGF6eUNvbXBvbmVudC5fcGF5bG9hZDtcbiAgICAgICAgICB2YXIgaW5pdCA9IGxhenlDb21wb25lbnQuX2luaXQ7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gTGF6eSBtYXkgY29udGFpbiBhbnkgY29tcG9uZW50IHR5cGUgc28gd2UgcmVjdXJzaXZlbHkgcmVzb2x2ZSBpdC5cbiAgICAgICAgICAgIHJldHVybiBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYoaW5pdChwYXlsb2FkKSwgc291cmNlLCBvd25lckZuKTtcbiAgICAgICAgICB9IGNhdGNoICh4KSB7fVxuICAgICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICcnO1xufVxuXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307XG52YXIgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0RGVidWdDdXJyZW50RnJhbWU7XG5cbmZ1bmN0aW9uIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KGVsZW1lbnQpIHtcbiAge1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICB2YXIgb3duZXIgPSBlbGVtZW50Ll9vd25lcjtcbiAgICAgIHZhciBzdGFjayA9IGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVihlbGVtZW50LnR5cGUsIGVsZW1lbnQuX3NvdXJjZSwgb3duZXIgPyBvd25lci50eXBlIDogbnVsbCk7XG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lLnNldEV4dHJhU3RhY2tGcmFtZShzdGFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIFJlYWN0RGVidWdDdXJyZW50RnJhbWUuc2V0RXh0cmFTdGFja0ZyYW1lKG51bGwpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja1Byb3BUeXBlcyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24sIGNvbXBvbmVudE5hbWUsIGVsZW1lbnQpIHtcbiAge1xuICAgIC8vICRGbG93Rml4TWUgVGhpcyBpcyBva2F5IGJ1dCBGbG93IGRvZXNuJ3Qga25vdyBpdC5cbiAgICB2YXIgaGFzID0gRnVuY3Rpb24uY2FsbC5iaW5kKGhhc093blByb3BlcnR5KTtcblxuICAgIGZvciAodmFyIHR5cGVTcGVjTmFtZSBpbiB0eXBlU3BlY3MpIHtcbiAgICAgIGlmIChoYXModHlwZVNwZWNzLCB0eXBlU3BlY05hbWUpKSB7XG4gICAgICAgIHZhciBlcnJvciQxID0gdm9pZCAwOyAvLyBQcm9wIHR5cGUgdmFsaWRhdGlvbiBtYXkgdGhyb3cuIEluIGNhc2UgdGhleSBkbywgd2UgZG9uJ3Qgd2FudCB0b1xuICAgICAgICAvLyBmYWlsIHRoZSByZW5kZXIgcGhhc2Ugd2hlcmUgaXQgZGlkbid0IGZhaWwgYmVmb3JlLiBTbyB3ZSBsb2cgaXQuXG4gICAgICAgIC8vIEFmdGVyIHRoZXNlIGhhdmUgYmVlbiBjbGVhbmVkIHVwLCB3ZSdsbCBsZXQgdGhlbSB0aHJvdy5cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxuICAgICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVzc2FnZS5cbiAgICAgICAgICBpZiAodHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvcHJvZC1lcnJvci1jb2Rlc1xuICAgICAgICAgICAgdmFyIGVyciA9IEVycm9yKChjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycpICsgJzogJyArIGxvY2F0aW9uICsgJyB0eXBlIGAnICsgdHlwZVNwZWNOYW1lICsgJ2AgaXMgaW52YWxpZDsgJyArICdpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UsIGJ1dCByZWNlaXZlZCBgJyArIHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSArICdgLicgKyAnVGhpcyBvZnRlbiBoYXBwZW5zIGJlY2F1c2Ugb2YgdHlwb3Mgc3VjaCBhcyBgUHJvcFR5cGVzLmZ1bmN0aW9uYCBpbnN0ZWFkIG9mIGBQcm9wVHlwZXMuZnVuY2AuJyk7XG4gICAgICAgICAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlcnJvciQxID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnKTtcbiAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICBlcnJvciQxID0gZXg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3IkMSAmJiAhKGVycm9yJDEgaW5zdGFuY2VvZiBFcnJvcikpIHtcbiAgICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChlbGVtZW50KTtcblxuICAgICAgICAgIGVycm9yKCclczogdHlwZSBzcGVjaWZpY2F0aW9uIG9mICVzJyArICcgYCVzYCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgKyAnZnVuY3Rpb24gbXVzdCByZXR1cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJXMuICcgKyAnWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyArICdjcmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlwZSwgYW5kICcgKyAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQpLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgbG9jYXRpb24sIHR5cGVTcGVjTmFtZSwgdHlwZW9mIGVycm9yJDEpO1xuXG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3IkMSBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IkMS5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHtcbiAgICAgICAgICAvLyBPbmx5IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0aGVyZSB0ZW5kcyB0byBiZSBhIGxvdCBvZiB0aGVcbiAgICAgICAgICAvLyBzYW1lIGVycm9yLlxuICAgICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvciQxLm1lc3NhZ2VdID0gdHJ1ZTtcbiAgICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChlbGVtZW50KTtcblxuICAgICAgICAgIGVycm9yKCdGYWlsZWQgJXMgdHlwZTogJXMnLCBsb2NhdGlvbiwgZXJyb3IkMS5tZXNzYWdlKTtcblxuICAgICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciBpc0FycmF5SW1wbCA9IEFycmF5LmlzQXJyYXk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZWRlY2xhcmVcblxuZnVuY3Rpb24gaXNBcnJheShhKSB7XG4gIHJldHVybiBpc0FycmF5SW1wbChhKTtcbn1cblxuLypcbiAqIFRoZSBgJycgKyB2YWx1ZWAgcGF0dGVybiAodXNlZCBpbiBpbiBwZXJmLXNlbnNpdGl2ZSBjb2RlKSB0aHJvd3MgZm9yIFN5bWJvbFxuICogYW5kIFRlbXBvcmFsLiogdHlwZXMuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC8yMjA2NC5cbiAqXG4gKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgbW9kdWxlIHdpbGwgdGhyb3cgYW4gZWFzaWVyLXRvLXVuZGVyc3RhbmQsXG4gKiBlYXNpZXItdG8tZGVidWcgZXhjZXB0aW9uIHdpdGggYSBjbGVhciBlcnJvcnMgbWVzc2FnZSBtZXNzYWdlIGV4cGxhaW5pbmcgdGhlXG4gKiBwcm9ibGVtLiAoSW5zdGVhZCBvZiBhIGNvbmZ1c2luZyBleGNlcHRpb24gdGhyb3duIGluc2lkZSB0aGUgaW1wbGVtZW50YXRpb25cbiAqIG9mIHRoZSBgdmFsdWVgIG9iamVjdCkuXG4gKi9cbi8vICRGbG93Rml4TWUgb25seSBjYWxsZWQgaW4gREVWLCBzbyB2b2lkIHJldHVybiBpcyBub3QgcG9zc2libGUuXG5mdW5jdGlvbiB0eXBlTmFtZSh2YWx1ZSkge1xuICB7XG4gICAgLy8gdG9TdHJpbmdUYWcgaXMgbmVlZGVkIGZvciBuYW1lc3BhY2VkIHR5cGVzIGxpa2UgVGVtcG9yYWwuSW5zdGFudFxuICAgIHZhciBoYXNUb1N0cmluZ1RhZyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLnRvU3RyaW5nVGFnO1xuICAgIHZhciB0eXBlID0gaGFzVG9TdHJpbmdUYWcgJiYgdmFsdWVbU3ltYm9sLnRvU3RyaW5nVGFnXSB8fCB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lIHx8ICdPYmplY3QnO1xuICAgIHJldHVybiB0eXBlO1xuICB9XG59IC8vICRGbG93Rml4TWUgb25seSBjYWxsZWQgaW4gREVWLCBzbyB2b2lkIHJldHVybiBpcyBub3QgcG9zc2libGUuXG5cblxuZnVuY3Rpb24gd2lsbENvZXJjaW9uVGhyb3codmFsdWUpIHtcbiAge1xuICAgIHRyeSB7XG4gICAgICB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpIHtcbiAgLy8gSWYgeW91IGVuZGVkIHVwIGhlcmUgYnkgZm9sbG93aW5nIGFuIGV4Y2VwdGlvbiBjYWxsIHN0YWNrLCBoZXJlJ3Mgd2hhdCdzXG4gIC8vIGhhcHBlbmVkOiB5b3Ugc3VwcGxpZWQgYW4gb2JqZWN0IG9yIHN5bWJvbCB2YWx1ZSB0byBSZWFjdCAoYXMgYSBwcm9wLCBrZXksXG4gIC8vIERPTSBhdHRyaWJ1dGUsIENTUyBwcm9wZXJ0eSwgc3RyaW5nIHJlZiwgZXRjLikgYW5kIHdoZW4gUmVhY3QgdHJpZWQgdG9cbiAgLy8gY29lcmNlIGl0IHRvIGEgc3RyaW5nIHVzaW5nIGAnJyArIHZhbHVlYCwgYW4gZXhjZXB0aW9uIHdhcyB0aHJvd24uXG4gIC8vXG4gIC8vIFRoZSBtb3N0IGNvbW1vbiB0eXBlcyB0aGF0IHdpbGwgY2F1c2UgdGhpcyBleGNlcHRpb24gYXJlIGBTeW1ib2xgIGluc3RhbmNlc1xuICAvLyBhbmQgVGVtcG9yYWwgb2JqZWN0cyBsaWtlIGBUZW1wb3JhbC5JbnN0YW50YC4gQnV0IGFueSBvYmplY3QgdGhhdCBoYXMgYVxuICAvLyBgdmFsdWVPZmAgb3IgYFtTeW1ib2wudG9QcmltaXRpdmVdYCBtZXRob2QgdGhhdCB0aHJvd3Mgd2lsbCBhbHNvIGNhdXNlIHRoaXNcbiAgLy8gZXhjZXB0aW9uLiAoTGlicmFyeSBhdXRob3JzIGRvIHRoaXMgdG8gcHJldmVudCB1c2VycyBmcm9tIHVzaW5nIGJ1aWx0LWluXG4gIC8vIG51bWVyaWMgb3BlcmF0b3JzIGxpa2UgYCtgIG9yIGNvbXBhcmlzb24gb3BlcmF0b3JzIGxpa2UgYD49YCBiZWNhdXNlIGN1c3RvbVxuICAvLyBtZXRob2RzIGFyZSBuZWVkZWQgdG8gcGVyZm9ybSBhY2N1cmF0ZSBhcml0aG1ldGljIG9yIGNvbXBhcmlzb24uKVxuICAvL1xuICAvLyBUbyBmaXggdGhlIHByb2JsZW0sIGNvZXJjZSB0aGlzIG9iamVjdCBvciBzeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmcgYmVmb3JlXG4gIC8vIHBhc3NpbmcgaXQgdG8gUmVhY3QuIFRoZSBtb3N0IHJlbGlhYmxlIHdheSBpcyB1c3VhbGx5IGBTdHJpbmcodmFsdWUpYC5cbiAgLy9cbiAgLy8gVG8gZmluZCB3aGljaCB2YWx1ZSBpcyB0aHJvd2luZywgY2hlY2sgdGhlIGJyb3dzZXIgb3IgZGVidWdnZXIgY29uc29sZS5cbiAgLy8gQmVmb3JlIHRoaXMgZXhjZXB0aW9uIHdhcyB0aHJvd24sIHRoZXJlIHNob3VsZCBiZSBgY29uc29sZS5lcnJvcmAgb3V0cHV0XG4gIC8vIHRoYXQgc2hvd3MgdGhlIHR5cGUgKFN5bWJvbCwgVGVtcG9yYWwuUGxhaW5EYXRlLCBldGMuKSB0aGF0IGNhdXNlZCB0aGVcbiAgLy8gcHJvYmxlbSBhbmQgaG93IHRoYXQgdHlwZSB3YXMgdXNlZDoga2V5LCBhdHJyaWJ1dGUsIGlucHV0IHZhbHVlIHByb3AsIGV0Yy5cbiAgLy8gSW4gbW9zdCBjYXNlcywgdGhpcyBjb25zb2xlIG91dHB1dCBhbHNvIHNob3dzIHRoZSBjb21wb25lbnQgYW5kIGl0c1xuICAvLyBhbmNlc3RvciBjb21wb25lbnRzIHdoZXJlIHRoZSBleGNlcHRpb24gaGFwcGVuZWQuXG4gIC8vXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9zYWZlLXN0cmluZy1jb2VyY2lvblxuICByZXR1cm4gJycgKyB2YWx1ZTtcbn1cbmZ1bmN0aW9uIGNoZWNrS2V5U3RyaW5nQ29lcmNpb24odmFsdWUpIHtcbiAge1xuICAgIGlmICh3aWxsQ29lcmNpb25UaHJvdyh2YWx1ZSkpIHtcbiAgICAgIGVycm9yKCdUaGUgcHJvdmlkZWQga2V5IGlzIGFuIHVuc3VwcG9ydGVkIHR5cGUgJXMuJyArICcgVGhpcyB2YWx1ZSBtdXN0IGJlIGNvZXJjZWQgdG8gYSBzdHJpbmcgYmVmb3JlIGJlZm9yZSB1c2luZyBpdCBoZXJlLicsIHR5cGVOYW1lKHZhbHVlKSk7XG5cbiAgICAgIHJldHVybiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpOyAvLyB0aHJvdyAodG8gaGVscCBjYWxsZXJzIGZpbmQgdHJvdWJsZXNob290aW5nIGNvbW1lbnRzKVxuICAgIH1cbiAgfVxufVxuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdEN1cnJlbnRPd25lcjtcbnZhciBSRVNFUlZFRF9QUk9QUyA9IHtcbiAga2V5OiB0cnVlLFxuICByZWY6IHRydWUsXG4gIF9fc2VsZjogdHJ1ZSxcbiAgX19zb3VyY2U6IHRydWVcbn07XG52YXIgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd247XG52YXIgc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd247XG52YXIgZGlkV2FybkFib3V0U3RyaW5nUmVmcztcblxue1xuICBkaWRXYXJuQWJvdXRTdHJpbmdSZWZzID0ge307XG59XG5cbmZ1bmN0aW9uIGhhc1ZhbGlkUmVmKGNvbmZpZykge1xuICB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAncmVmJykpIHtcbiAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ3JlZicpLmdldDtcblxuICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25maWcucmVmICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGhhc1ZhbGlkS2V5KGNvbmZpZykge1xuICB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAna2V5JykpIHtcbiAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ2tleScpLmdldDtcblxuICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25maWcua2V5ICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHdhcm5JZlN0cmluZ1JlZkNhbm5vdEJlQXV0b0NvbnZlcnRlZChjb25maWcsIHNlbGYpIHtcbiAge1xuICAgIGlmICh0eXBlb2YgY29uZmlnLnJlZiA9PT0gJ3N0cmluZycgJiYgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCAmJiBzZWxmICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuc3RhdGVOb2RlICE9PSBzZWxmKSB7XG4gICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LnR5cGUpO1xuXG4gICAgICBpZiAoIWRpZFdhcm5BYm91dFN0cmluZ1JlZnNbY29tcG9uZW50TmFtZV0pIHtcbiAgICAgICAgZXJyb3IoJ0NvbXBvbmVudCBcIiVzXCIgY29udGFpbnMgdGhlIHN0cmluZyByZWYgXCIlc1wiLiAnICsgJ1N1cHBvcnQgZm9yIHN0cmluZyByZWZzIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBtYWpvciByZWxlYXNlLiAnICsgJ1RoaXMgY2FzZSBjYW5ub3QgYmUgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gYW4gYXJyb3cgZnVuY3Rpb24uICcgKyAnV2UgYXNrIHlvdSB0byBtYW51YWxseSBmaXggdGhpcyBjYXNlIGJ5IHVzaW5nIHVzZVJlZigpIG9yIGNyZWF0ZVJlZigpIGluc3RlYWQuICcgKyAnTGVhcm4gbW9yZSBhYm91dCB1c2luZyByZWZzIHNhZmVseSBoZXJlOiAnICsgJ2h0dHBzOi8vcmVhY3Rqcy5vcmcvbGluay9zdHJpY3QtbW9kZS1zdHJpbmctcmVmJywgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQudHlwZSksIGNvbmZpZy5yZWYpO1xuXG4gICAgICAgIGRpZFdhcm5BYm91dFN0cmluZ1JlZnNbY29tcG9uZW50TmFtZV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpIHtcbiAge1xuICAgIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duKSB7XG4gICAgICAgIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duID0gdHJ1ZTtcblxuICAgICAgICBlcnJvcignJXM6IGBrZXlgIGlzIG5vdCBhIHByb3AuIFRyeWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1bHQgJyArICdpbiBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBzYW1lICcgKyAndmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91bGQgcGFzcyBpdCBhcyBhIGRpZmZlcmVudCAnICsgJ3Byb3AuIChodHRwczovL3JlYWN0anMub3JnL2xpbmsvc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdhcm5BYm91dEFjY2Vzc2luZ0tleS5pc1JlYWN0V2FybmluZyA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCAna2V5Jywge1xuICAgICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdLZXksXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpIHtcbiAge1xuICAgIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duKSB7XG4gICAgICAgIHNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duID0gdHJ1ZTtcblxuICAgICAgICBlcnJvcignJXM6IGByZWZgIGlzIG5vdCBhIHByb3AuIFRyeWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1bHQgJyArICdpbiBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBzYW1lICcgKyAndmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91bGQgcGFzcyBpdCBhcyBhIGRpZmZlcmVudCAnICsgJ3Byb3AuIChodHRwczovL3JlYWN0anMub3JnL2xpbmsvc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHdhcm5BYm91dEFjY2Vzc2luZ1JlZi5pc1JlYWN0V2FybmluZyA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCAncmVmJywge1xuICAgICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgfVxufVxuLyoqXG4gKiBGYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgYSBuZXcgUmVhY3QgZWxlbWVudC4gVGhpcyBubyBsb25nZXIgYWRoZXJlcyB0b1xuICogdGhlIGNsYXNzIHBhdHRlcm4sIHNvIGRvIG5vdCB1c2UgbmV3IHRvIGNhbGwgaXQuIEFsc28sIGluc3RhbmNlb2YgY2hlY2tcbiAqIHdpbGwgbm90IHdvcmsuIEluc3RlYWQgdGVzdCAkJHR5cGVvZiBmaWVsZCBhZ2FpbnN0IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSB0byBjaGVja1xuICogaWYgc29tZXRoaW5nIGlzIGEgUmVhY3QgRWxlbWVudC5cbiAqXG4gKiBAcGFyYW0geyp9IHR5cGVcbiAqIEBwYXJhbSB7Kn0gcHJvcHNcbiAqIEBwYXJhbSB7Kn0ga2V5XG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHJlZlxuICogQHBhcmFtIHsqfSBvd25lclxuICogQHBhcmFtIHsqfSBzZWxmIEEgKnRlbXBvcmFyeSogaGVscGVyIHRvIGRldGVjdCBwbGFjZXMgd2hlcmUgYHRoaXNgIGlzXG4gKiBkaWZmZXJlbnQgZnJvbSB0aGUgYG93bmVyYCB3aGVuIFJlYWN0LmNyZWF0ZUVsZW1lbnQgaXMgY2FsbGVkLCBzbyB0aGF0IHdlXG4gKiBjYW4gd2Fybi4gV2Ugd2FudCB0byBnZXQgcmlkIG9mIG93bmVyIGFuZCByZXBsYWNlIHN0cmluZyBgcmVmYHMgd2l0aCBhcnJvd1xuICogZnVuY3Rpb25zLCBhbmQgYXMgbG9uZyBhcyBgdGhpc2AgYW5kIG93bmVyIGFyZSB0aGUgc2FtZSwgdGhlcmUgd2lsbCBiZSBub1xuICogY2hhbmdlIGluIGJlaGF2aW9yLlxuICogQHBhcmFtIHsqfSBzb3VyY2UgQW4gYW5ub3RhdGlvbiBvYmplY3QgKGFkZGVkIGJ5IGEgdHJhbnNwaWxlciBvciBvdGhlcndpc2UpXG4gKiBpbmRpY2F0aW5nIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kL29yIG90aGVyIGluZm9ybWF0aW9uLlxuICogQGludGVybmFsXG4gKi9cblxuXG52YXIgUmVhY3RFbGVtZW50ID0gZnVuY3Rpb24gKHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcykge1xuICB2YXIgZWxlbWVudCA9IHtcbiAgICAvLyBUaGlzIHRhZyBhbGxvd3MgdXMgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhpcyBhcyBhIFJlYWN0IEVsZW1lbnRcbiAgICAkJHR5cGVvZjogUkVBQ1RfRUxFTUVOVF9UWVBFLFxuICAgIC8vIEJ1aWx0LWluIHByb3BlcnRpZXMgdGhhdCBiZWxvbmcgb24gdGhlIGVsZW1lbnRcbiAgICB0eXBlOiB0eXBlLFxuICAgIGtleToga2V5LFxuICAgIHJlZjogcmVmLFxuICAgIHByb3BzOiBwcm9wcyxcbiAgICAvLyBSZWNvcmQgdGhlIGNvbXBvbmVudCByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhpcyBlbGVtZW50LlxuICAgIF9vd25lcjogb3duZXJcbiAgfTtcblxuICB7XG4gICAgLy8gVGhlIHZhbGlkYXRpb24gZmxhZyBpcyBjdXJyZW50bHkgbXV0YXRpdmUuIFdlIHB1dCBpdCBvblxuICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3RvcmUgc28gdGhhdCB3ZSBjYW4gZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuXG4gICAgLy8gVGhpcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIFdlYWtNYXAgb25jZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCBpblxuICAgIC8vIGNvbW1vbmx5IHVzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLlxuICAgIGVsZW1lbnQuX3N0b3JlID0ge307IC8vIFRvIG1ha2UgY29tcGFyaW5nIFJlYWN0RWxlbWVudHMgZWFzaWVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB3ZSBtYWtlXG4gICAgLy8gdGhlIHZhbGlkYXRpb24gZmxhZyBub24tZW51bWVyYWJsZSAod2hlcmUgcG9zc2libGUsIHdoaWNoIHNob3VsZFxuICAgIC8vIGluY2x1ZGUgZXZlcnkgZW52aXJvbm1lbnQgd2UgcnVuIHRlc3RzIGluKSwgc28gdGhlIHRlc3QgZnJhbWV3b3JrXG4gICAgLy8gaWdub3JlcyBpdC5cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50Ll9zdG9yZSwgJ3ZhbGlkYXRlZCcsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IGZhbHNlXG4gICAgfSk7IC8vIHNlbGYgYW5kIHNvdXJjZSBhcmUgREVWIG9ubHkgcHJvcGVydGllcy5cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NlbGYnLCB7XG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICB2YWx1ZTogc2VsZlxuICAgIH0pOyAvLyBUd28gZWxlbWVudHMgY3JlYXRlZCBpbiB0d28gZGlmZmVyZW50IHBsYWNlcyBzaG91bGQgYmUgY29uc2lkZXJlZFxuICAgIC8vIGVxdWFsIGZvciB0ZXN0aW5nIHB1cnBvc2VzIGFuZCB0aGVyZWZvcmUgd2UgaGlkZSBpdCBmcm9tIGVudW1lcmF0aW9uLlxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQsICdfc291cmNlJywge1xuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6IHNvdXJjZVxuICAgIH0pO1xuXG4gICAgaWYgKE9iamVjdC5mcmVlemUpIHtcbiAgICAgIE9iamVjdC5mcmVlemUoZWxlbWVudC5wcm9wcyk7XG4gICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlbGVtZW50O1xufTtcbi8qKlxuICogaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmZjcy9wdWxsLzEwN1xuICogQHBhcmFtIHsqfSB0eXBlXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAqL1xuXG5mdW5jdGlvbiBqc3hERVYodHlwZSwgY29uZmlnLCBtYXliZUtleSwgc291cmNlLCBzZWxmKSB7XG4gIHtcbiAgICB2YXIgcHJvcE5hbWU7IC8vIFJlc2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWRcblxuICAgIHZhciBwcm9wcyA9IHt9O1xuICAgIHZhciBrZXkgPSBudWxsO1xuICAgIHZhciByZWYgPSBudWxsOyAvLyBDdXJyZW50bHksIGtleSBjYW4gYmUgc3ByZWFkIGluIGFzIGEgcHJvcC4gVGhpcyBjYXVzZXMgYSBwb3RlbnRpYWxcbiAgICAvLyBpc3N1ZSBpZiBrZXkgaXMgYWxzbyBleHBsaWNpdGx5IGRlY2xhcmVkIChpZS4gPGRpdiB7Li4ucHJvcHN9IGtleT1cIkhpXCIgLz5cbiAgICAvLyBvciA8ZGl2IGtleT1cIkhpXCIgey4uLnByb3BzfSAvPiApLiBXZSB3YW50IHRvIGRlcHJlY2F0ZSBrZXkgc3ByZWFkLFxuICAgIC8vIGJ1dCBhcyBhbiBpbnRlcm1lZGlhcnkgc3RlcCwgd2Ugd2lsbCB1c2UganN4REVWIGZvciBldmVyeXRoaW5nIGV4Y2VwdFxuICAgIC8vIDxkaXYgey4uLnByb3BzfSBrZXk9XCJIaVwiIC8+LCBiZWNhdXNlIHdlIGFyZW4ndCBjdXJyZW50bHkgYWJsZSB0byB0ZWxsIGlmXG4gICAgLy8ga2V5IGlzIGV4cGxpY2l0bHkgZGVjbGFyZWQgdG8gYmUgdW5kZWZpbmVkIG9yIG5vdC5cblxuICAgIGlmIChtYXliZUtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB7XG4gICAgICAgIGNoZWNrS2V5U3RyaW5nQ29lcmNpb24obWF5YmVLZXkpO1xuICAgICAgfVxuXG4gICAgICBrZXkgPSAnJyArIG1heWJlS2V5O1xuICAgIH1cblxuICAgIGlmIChoYXNWYWxpZEtleShjb25maWcpKSB7XG4gICAgICB7XG4gICAgICAgIGNoZWNrS2V5U3RyaW5nQ29lcmNpb24oY29uZmlnLmtleSk7XG4gICAgICB9XG5cbiAgICAgIGtleSA9ICcnICsgY29uZmlnLmtleTtcbiAgICB9XG5cbiAgICBpZiAoaGFzVmFsaWRSZWYoY29uZmlnKSkge1xuICAgICAgcmVmID0gY29uZmlnLnJlZjtcbiAgICAgIHdhcm5JZlN0cmluZ1JlZkNhbm5vdEJlQXV0b0NvbnZlcnRlZChjb25maWcsIHNlbGYpO1xuICAgIH0gLy8gUmVtYWluaW5nIHByb3BlcnRpZXMgYXJlIGFkZGVkIHRvIGEgbmV3IHByb3BzIG9iamVjdFxuXG5cbiAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCBwcm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xuICAgICAgfVxuICAgIH0gLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzXG5cblxuICAgIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAgICB2YXIgZGVmYXVsdFByb3BzID0gdHlwZS5kZWZhdWx0UHJvcHM7XG5cbiAgICAgIGZvciAocHJvcE5hbWUgaW4gZGVmYXVsdFByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGRlZmF1bHRQcm9wc1twcm9wTmFtZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoa2V5IHx8IHJlZikge1xuICAgICAgdmFyIGRpc3BsYXlOYW1lID0gdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgPyB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCAnVW5rbm93bicgOiB0eXBlO1xuXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgZGVmaW5lUmVmUHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQsIHByb3BzKTtcbiAgfVxufVxuXG52YXIgUmVhY3RDdXJyZW50T3duZXIkMSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0Q3VycmVudE93bmVyO1xudmFyIFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0RGVidWdDdXJyZW50RnJhbWU7XG5cbmZ1bmN0aW9uIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEoZWxlbWVudCkge1xuICB7XG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHZhciBvd25lciA9IGVsZW1lbnQuX293bmVyO1xuICAgICAgdmFyIHN0YWNrID0gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKGVsZW1lbnQudHlwZSwgZWxlbWVudC5fc291cmNlLCBvd25lciA/IG93bmVyLnR5cGUgOiBudWxsKTtcbiAgICAgIFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMS5zZXRFeHRyYVN0YWNrRnJhbWUoc3RhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lJDEuc2V0RXh0cmFTdGFja0ZyYW1lKG51bGwpO1xuICAgIH1cbiAgfVxufVxuXG52YXIgcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd247XG5cbntcbiAgcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd24gPSBmYWxzZTtcbn1cbi8qKlxuICogVmVyaWZpZXMgdGhlIG9iamVjdCBpcyBhIFJlYWN0RWxlbWVudC5cbiAqIFNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjaXN2YWxpZGVsZW1lbnRcbiAqIEBwYXJhbSB7P29iamVjdH0gb2JqZWN0XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEgUmVhY3RFbGVtZW50LlxuICogQGZpbmFsXG4gKi9cblxuXG5mdW5jdGlvbiBpc1ZhbGlkRWxlbWVudChvYmplY3QpIHtcbiAge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEU7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCkge1xuICB7XG4gICAgaWYgKFJlYWN0Q3VycmVudE93bmVyJDEuY3VycmVudCkge1xuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoUmVhY3RDdXJyZW50T3duZXIkMS5jdXJyZW50LnR5cGUpO1xuXG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICByZXR1cm4gJ1xcblxcbkNoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFNvdXJjZUluZm9FcnJvckFkZGVuZHVtKHNvdXJjZSkge1xuICB7XG4gICAgaWYgKHNvdXJjZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgZmlsZU5hbWUgPSBzb3VyY2UuZmlsZU5hbWUucmVwbGFjZSgvXi4qW1xcXFxcXC9dLywgJycpO1xuICAgICAgdmFyIGxpbmVOdW1iZXIgPSBzb3VyY2UubGluZU51bWJlcjtcbiAgICAgIHJldHVybiAnXFxuXFxuQ2hlY2sgeW91ciBjb2RlIGF0ICcgKyBmaWxlTmFtZSArICc6JyArIGxpbmVOdW1iZXIgKyAnLic7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG59XG4vKipcbiAqIFdhcm4gaWYgdGhlcmUncyBubyBrZXkgZXhwbGljaXRseSBzZXQgb24gZHluYW1pYyBhcnJheXMgb2YgY2hpbGRyZW4gb3JcbiAqIG9iamVjdCBrZXlzIGFyZSBub3QgdmFsaWQuIFRoaXMgYWxsb3dzIHVzIHRvIGtlZXAgdHJhY2sgb2YgY2hpbGRyZW4gYmV0d2VlblxuICogdXBkYXRlcy5cbiAqL1xuXG5cbnZhciBvd25lckhhc0tleVVzZVdhcm5pbmcgPSB7fTtcblxuZnVuY3Rpb24gZ2V0Q3VycmVudENvbXBvbmVudEVycm9ySW5mbyhwYXJlbnRUeXBlKSB7XG4gIHtcbiAgICB2YXIgaW5mbyA9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpO1xuXG4gICAgaWYgKCFpbmZvKSB7XG4gICAgICB2YXIgcGFyZW50TmFtZSA9IHR5cGVvZiBwYXJlbnRUeXBlID09PSAnc3RyaW5nJyA/IHBhcmVudFR5cGUgOiBwYXJlbnRUeXBlLmRpc3BsYXlOYW1lIHx8IHBhcmVudFR5cGUubmFtZTtcblxuICAgICAgaWYgKHBhcmVudE5hbWUpIHtcbiAgICAgICAgaW5mbyA9IFwiXFxuXFxuQ2hlY2sgdGhlIHRvcC1sZXZlbCByZW5kZXIgY2FsbCB1c2luZyA8XCIgKyBwYXJlbnROYW1lICsgXCI+LlwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpbmZvO1xuICB9XG59XG4vKipcbiAqIFdhcm4gaWYgdGhlIGVsZW1lbnQgZG9lc24ndCBoYXZlIGFuIGV4cGxpY2l0IGtleSBhc3NpZ25lZCB0byBpdC5cbiAqIFRoaXMgZWxlbWVudCBpcyBpbiBhbiBhcnJheS4gVGhlIGFycmF5IGNvdWxkIGdyb3cgYW5kIHNocmluayBvciBiZVxuICogcmVvcmRlcmVkLiBBbGwgY2hpbGRyZW4gdGhhdCBoYXZlbid0IGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQgYXJlIHJlcXVpcmVkIHRvXG4gKiBoYXZlIGEgXCJrZXlcIiBwcm9wZXJ0eSBhc3NpZ25lZCB0byBpdC4gRXJyb3Igc3RhdHVzZXMgYXJlIGNhY2hlZCBzbyBhIHdhcm5pbmdcbiAqIHdpbGwgb25seSBiZSBzaG93biBvbmNlLlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnQgRWxlbWVudCB0aGF0IHJlcXVpcmVzIGEga2V5LlxuICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIGVsZW1lbnQncyBwYXJlbnQncyB0eXBlLlxuICovXG5cblxuZnVuY3Rpb24gdmFsaWRhdGVFeHBsaWNpdEtleShlbGVtZW50LCBwYXJlbnRUeXBlKSB7XG4gIHtcbiAgICBpZiAoIWVsZW1lbnQuX3N0b3JlIHx8IGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCB8fCBlbGVtZW50LmtleSAhPSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlbWVudC5fc3RvcmUudmFsaWRhdGVkID0gdHJ1ZTtcbiAgICB2YXIgY3VycmVudENvbXBvbmVudEVycm9ySW5mbyA9IGdldEN1cnJlbnRDb21wb25lbnRFcnJvckluZm8ocGFyZW50VHlwZSk7XG5cbiAgICBpZiAob3duZXJIYXNLZXlVc2VXYXJuaW5nW2N1cnJlbnRDb21wb25lbnRFcnJvckluZm9dKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgb3duZXJIYXNLZXlVc2VXYXJuaW5nW2N1cnJlbnRDb21wb25lbnRFcnJvckluZm9dID0gdHJ1ZTsgLy8gVXN1YWxseSB0aGUgY3VycmVudCBvd25lciBpcyB0aGUgb2ZmZW5kZXIsIGJ1dCBpZiBpdCBhY2NlcHRzIGNoaWxkcmVuIGFzIGFcbiAgICAvLyBwcm9wZXJ0eSwgaXQgbWF5IGJlIHRoZSBjcmVhdG9yIG9mIHRoZSBjaGlsZCB0aGF0J3MgcmVzcG9uc2libGUgZm9yXG4gICAgLy8gYXNzaWduaW5nIGl0IGEga2V5LlxuXG4gICAgdmFyIGNoaWxkT3duZXIgPSAnJztcblxuICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuX293bmVyICYmIGVsZW1lbnQuX293bmVyICE9PSBSZWFjdEN1cnJlbnRPd25lciQxLmN1cnJlbnQpIHtcbiAgICAgIC8vIEdpdmUgdGhlIGNvbXBvbmVudCB0aGF0IG9yaWdpbmFsbHkgY3JlYXRlZCB0aGlzIGNoaWxkLlxuICAgICAgY2hpbGRPd25lciA9IFwiIEl0IHdhcyBwYXNzZWQgYSBjaGlsZCBmcm9tIFwiICsgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGVsZW1lbnQuX293bmVyLnR5cGUpICsgXCIuXCI7XG4gICAgfVxuXG4gICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShlbGVtZW50KTtcblxuICAgIGVycm9yKCdFYWNoIGNoaWxkIGluIGEgbGlzdCBzaG91bGQgaGF2ZSBhIHVuaXF1ZSBcImtleVwiIHByb3AuJyArICclcyVzIFNlZSBodHRwczovL3JlYWN0anMub3JnL2xpbmsvd2FybmluZy1rZXlzIGZvciBtb3JlIGluZm9ybWF0aW9uLicsIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8sIGNoaWxkT3duZXIpO1xuXG4gICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShudWxsKTtcbiAgfVxufVxuLyoqXG4gKiBFbnN1cmUgdGhhdCBldmVyeSBlbGVtZW50IGVpdGhlciBpcyBwYXNzZWQgaW4gYSBzdGF0aWMgbG9jYXRpb24sIGluIGFuXG4gKiBhcnJheSB3aXRoIGFuIGV4cGxpY2l0IGtleXMgcHJvcGVydHkgZGVmaW5lZCwgb3IgaW4gYW4gb2JqZWN0IGxpdGVyYWxcbiAqIHdpdGggdmFsaWQga2V5IHByb3BlcnR5LlxuICpcbiAqIEBpbnRlcm5hbFxuICogQHBhcmFtIHtSZWFjdE5vZGV9IG5vZGUgU3RhdGljYWxseSBwYXNzZWQgY2hpbGQgb2YgYW55IHR5cGUuXG4gKiBAcGFyYW0geyp9IHBhcmVudFR5cGUgbm9kZSdzIHBhcmVudCdzIHR5cGUuXG4gKi9cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZUNoaWxkS2V5cyhub2RlLCBwYXJlbnRUeXBlKSB7XG4gIHtcbiAgICBpZiAodHlwZW9mIG5vZGUgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzQXJyYXkobm9kZSkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBub2RlW2ldO1xuXG4gICAgICAgIGlmIChpc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgICAgICB2YWxpZGF0ZUV4cGxpY2l0S2V5KGNoaWxkLCBwYXJlbnRUeXBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNWYWxpZEVsZW1lbnQobm9kZSkpIHtcbiAgICAgIC8vIFRoaXMgZWxlbWVudCB3YXMgcGFzc2VkIGluIGEgdmFsaWQgbG9jYXRpb24uXG4gICAgICBpZiAobm9kZS5fc3RvcmUpIHtcbiAgICAgICAgbm9kZS5fc3RvcmUudmFsaWRhdGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5vZGUpIHtcbiAgICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihub2RlKTtcblxuICAgICAgaWYgKHR5cGVvZiBpdGVyYXRvckZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIEVudHJ5IGl0ZXJhdG9ycyB1c2VkIHRvIHByb3ZpZGUgaW1wbGljaXQga2V5cyxcbiAgICAgICAgLy8gYnV0IG5vdyB3ZSBwcmludCBhIHNlcGFyYXRlIHdhcm5pbmcgZm9yIHRoZW0gbGF0ZXIuXG4gICAgICAgIGlmIChpdGVyYXRvckZuICE9PSBub2RlLmVudHJpZXMpIHtcbiAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobm9kZSk7XG4gICAgICAgICAgdmFyIHN0ZXA7XG5cbiAgICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgICBpZiAoaXNWYWxpZEVsZW1lbnQoc3RlcC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShzdGVwLnZhbHVlLCBwYXJlbnRUeXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi8qKlxuICogR2l2ZW4gYW4gZWxlbWVudCwgdmFsaWRhdGUgdGhhdCBpdHMgcHJvcHMgZm9sbG93IHRoZSBwcm9wVHlwZXMgZGVmaW5pdGlvbixcbiAqIHByb3ZpZGVkIGJ5IHRoZSB0eXBlLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50XG4gKi9cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3BUeXBlcyhlbGVtZW50KSB7XG4gIHtcbiAgICB2YXIgdHlwZSA9IGVsZW1lbnQudHlwZTtcblxuICAgIGlmICh0eXBlID09PSBudWxsIHx8IHR5cGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcHJvcFR5cGVzO1xuXG4gICAgaWYgKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9wVHlwZXMgPSB0eXBlLnByb3BUeXBlcztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiAodHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSB8fCAvLyBOb3RlOiBNZW1vIG9ubHkgY2hlY2tzIG91dGVyIHByb3BzIGhlcmUuXG4gICAgLy8gSW5uZXIgcHJvcHMgYXJlIGNoZWNrZWQgaW4gdGhlIHJlY29uY2lsZXIuXG4gICAgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTUVNT19UWVBFKSkge1xuICAgICAgcHJvcFR5cGVzID0gdHlwZS5wcm9wVHlwZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocHJvcFR5cGVzKSB7XG4gICAgICAvLyBJbnRlbnRpb25hbGx5IGluc2lkZSB0byBhdm9pZCB0cmlnZ2VyaW5nIGxhenkgaW5pdGlhbGl6ZXJzOlxuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSk7XG4gICAgICBjaGVja1Byb3BUeXBlcyhwcm9wVHlwZXMsIGVsZW1lbnQucHJvcHMsICdwcm9wJywgbmFtZSwgZWxlbWVudCk7XG4gICAgfSBlbHNlIGlmICh0eXBlLlByb3BUeXBlcyAhPT0gdW5kZWZpbmVkICYmICFwcm9wVHlwZXNNaXNzcGVsbFdhcm5pbmdTaG93bikge1xuICAgICAgcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd24gPSB0cnVlOyAvLyBJbnRlbnRpb25hbGx5IGluc2lkZSB0byBhdm9pZCB0cmlnZ2VyaW5nIGxhenkgaW5pdGlhbGl6ZXJzOlxuXG4gICAgICB2YXIgX25hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSk7XG5cbiAgICAgIGVycm9yKCdDb21wb25lbnQgJXMgZGVjbGFyZWQgYFByb3BUeXBlc2AgaW5zdGVhZCBvZiBgcHJvcFR5cGVzYC4gRGlkIHlvdSBtaXNzcGVsbCB0aGUgcHJvcGVydHkgYXNzaWdubWVudD8nLCBfbmFtZSB8fCAnVW5rbm93bicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdHlwZS5nZXREZWZhdWx0UHJvcHMgPT09ICdmdW5jdGlvbicgJiYgIXR5cGUuZ2V0RGVmYXVsdFByb3BzLmlzUmVhY3RDbGFzc0FwcHJvdmVkKSB7XG4gICAgICBlcnJvcignZ2V0RGVmYXVsdFByb3BzIGlzIG9ubHkgdXNlZCBvbiBjbGFzc2ljIFJlYWN0LmNyZWF0ZUNsYXNzICcgKyAnZGVmaW5pdGlvbnMuIFVzZSBhIHN0YXRpYyBwcm9wZXJ0eSBuYW1lZCBgZGVmYXVsdFByb3BzYCBpbnN0ZWFkLicpO1xuICAgIH1cbiAgfVxufVxuLyoqXG4gKiBHaXZlbiBhIGZyYWdtZW50LCB2YWxpZGF0ZSB0aGF0IGl0IGNhbiBvbmx5IGJlIHByb3ZpZGVkIHdpdGggZnJhZ21lbnQgcHJvcHNcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBmcmFnbWVudFxuICovXG5cblxuZnVuY3Rpb24gdmFsaWRhdGVGcmFnbWVudFByb3BzKGZyYWdtZW50KSB7XG4gIHtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGZyYWdtZW50LnByb3BzKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgIGlmIChrZXkgIT09ICdjaGlsZHJlbicgJiYga2V5ICE9PSAna2V5Jykge1xuICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKGZyYWdtZW50KTtcblxuICAgICAgICBlcnJvcignSW52YWxpZCBwcm9wIGAlc2Agc3VwcGxpZWQgdG8gYFJlYWN0LkZyYWdtZW50YC4gJyArICdSZWFjdC5GcmFnbWVudCBjYW4gb25seSBoYXZlIGBrZXlgIGFuZCBgY2hpbGRyZW5gIHByb3BzLicsIGtleSk7XG5cbiAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShudWxsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZyYWdtZW50LnJlZiAhPT0gbnVsbCkge1xuICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShmcmFnbWVudCk7XG5cbiAgICAgIGVycm9yKCdJbnZhbGlkIGF0dHJpYnV0ZSBgcmVmYCBzdXBwbGllZCB0byBgUmVhY3QuRnJhZ21lbnRgLicpO1xuXG4gICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKG51bGwpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBqc3hXaXRoVmFsaWRhdGlvbih0eXBlLCBwcm9wcywga2V5LCBpc1N0YXRpY0NoaWxkcmVuLCBzb3VyY2UsIHNlbGYpIHtcbiAge1xuICAgIHZhciB2YWxpZFR5cGUgPSBpc1ZhbGlkRWxlbWVudFR5cGUodHlwZSk7IC8vIFdlIHdhcm4gaW4gdGhpcyBjYXNlIGJ1dCBkb24ndCB0aHJvdy4gV2UgZXhwZWN0IHRoZSBlbGVtZW50IGNyZWF0aW9uIHRvXG4gICAgLy8gc3VjY2VlZCBhbmQgdGhlcmUgd2lsbCBsaWtlbHkgYmUgZXJyb3JzIGluIHJlbmRlci5cblxuICAgIGlmICghdmFsaWRUeXBlKSB7XG4gICAgICB2YXIgaW5mbyA9ICcnO1xuXG4gICAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiB0eXBlICE9PSBudWxsICYmIE9iamVjdC5rZXlzKHR5cGUpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpbmZvICs9ICcgWW91IGxpa2VseSBmb3Jnb3QgdG8gZXhwb3J0IHlvdXIgY29tcG9uZW50IGZyb20gdGhlIGZpbGUgJyArIFwiaXQncyBkZWZpbmVkIGluLCBvciB5b3UgbWlnaHQgaGF2ZSBtaXhlZCB1cCBkZWZhdWx0IGFuZCBuYW1lZCBpbXBvcnRzLlwiO1xuICAgICAgfVxuXG4gICAgICB2YXIgc291cmNlSW5mbyA9IGdldFNvdXJjZUluZm9FcnJvckFkZGVuZHVtKHNvdXJjZSk7XG5cbiAgICAgIGlmIChzb3VyY2VJbmZvKSB7XG4gICAgICAgIGluZm8gKz0gc291cmNlSW5mbztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluZm8gKz0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKCk7XG4gICAgICB9XG5cbiAgICAgIHZhciB0eXBlU3RyaW5nO1xuXG4gICAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgICB0eXBlU3RyaW5nID0gJ251bGwnO1xuICAgICAgfSBlbHNlIGlmIChpc0FycmF5KHR5cGUpKSB7XG4gICAgICAgIHR5cGVTdHJpbmcgPSAnYXJyYXknO1xuICAgICAgfSBlbHNlIGlmICh0eXBlICE9PSB1bmRlZmluZWQgJiYgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFKSB7XG4gICAgICAgIHR5cGVTdHJpbmcgPSBcIjxcIiArIChnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZS50eXBlKSB8fCAnVW5rbm93bicpICsgXCIgLz5cIjtcbiAgICAgICAgaW5mbyA9ICcgRGlkIHlvdSBhY2NpZGVudGFsbHkgZXhwb3J0IGEgSlNYIGxpdGVyYWwgaW5zdGVhZCBvZiBhIGNvbXBvbmVudD8nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHlwZVN0cmluZyA9IHR5cGVvZiB0eXBlO1xuICAgICAgfVxuXG4gICAgICBlcnJvcignUmVhY3QuanN4OiB0eXBlIGlzIGludmFsaWQgLS0gZXhwZWN0ZWQgYSBzdHJpbmcgKGZvciAnICsgJ2J1aWx0LWluIGNvbXBvbmVudHMpIG9yIGEgY2xhc3MvZnVuY3Rpb24gKGZvciBjb21wb3NpdGUgJyArICdjb21wb25lbnRzKSBidXQgZ290OiAlcy4lcycsIHR5cGVTdHJpbmcsIGluZm8pO1xuICAgIH1cblxuICAgIHZhciBlbGVtZW50ID0ganN4REVWKHR5cGUsIHByb3BzLCBrZXksIHNvdXJjZSwgc2VsZik7IC8vIFRoZSByZXN1bHQgY2FuIGJlIG51bGxpc2ggaWYgYSBtb2NrIG9yIGEgY3VzdG9tIGZ1bmN0aW9uIGlzIHVzZWQuXG4gICAgLy8gVE9ETzogRHJvcCB0aGlzIHdoZW4gdGhlc2UgYXJlIG5vIGxvbmdlciBhbGxvd2VkIGFzIHRoZSB0eXBlIGFyZ3VtZW50LlxuXG4gICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfSAvLyBTa2lwIGtleSB3YXJuaW5nIGlmIHRoZSB0eXBlIGlzbid0IHZhbGlkIHNpbmNlIG91ciBrZXkgdmFsaWRhdGlvbiBsb2dpY1xuICAgIC8vIGRvZXNuJ3QgZXhwZWN0IGEgbm9uLXN0cmluZy9mdW5jdGlvbiB0eXBlIGFuZCBjYW4gdGhyb3cgY29uZnVzaW5nIGVycm9ycy5cbiAgICAvLyBXZSBkb24ndCB3YW50IGV4Y2VwdGlvbiBiZWhhdmlvciB0byBkaWZmZXIgYmV0d2VlbiBkZXYgYW5kIHByb2QuXG4gICAgLy8gKFJlbmRlcmluZyB3aWxsIHRocm93IHdpdGggYSBoZWxwZnVsIG1lc3NhZ2UgYW5kIGFzIHNvb24gYXMgdGhlIHR5cGUgaXNcbiAgICAvLyBmaXhlZCwgdGhlIGtleSB3YXJuaW5ncyB3aWxsIGFwcGVhci4pXG5cblxuICAgIGlmICh2YWxpZFR5cGUpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuO1xuXG4gICAgICBpZiAoY2hpbGRyZW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoaXNTdGF0aWNDaGlsZHJlbikge1xuICAgICAgICAgIGlmIChpc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhjaGlsZHJlbltpXSwgdHlwZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChPYmplY3QuZnJlZXplKSB7XG4gICAgICAgICAgICAgIE9iamVjdC5mcmVlemUoY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlcnJvcignUmVhY3QuanN4OiBTdGF0aWMgY2hpbGRyZW4gc2hvdWxkIGFsd2F5cyBiZSBhbiBhcnJheS4gJyArICdZb3UgYXJlIGxpa2VseSBleHBsaWNpdGx5IGNhbGxpbmcgUmVhY3QuanN4cyBvciBSZWFjdC5qc3hERVYuICcgKyAnVXNlIHRoZSBCYWJlbCB0cmFuc2Zvcm0gaW5zdGVhZC4nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsaWRhdGVDaGlsZEtleXMoY2hpbGRyZW4sIHR5cGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09IFJFQUNUX0ZSQUdNRU5UX1RZUEUpIHtcbiAgICAgIHZhbGlkYXRlRnJhZ21lbnRQcm9wcyhlbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsaWRhdGVQcm9wVHlwZXMoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cbn0gLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBleGlzdCB0byBzdGlsbCBnZXQgY2hpbGQgd2FybmluZ3MgaW4gZGV2XG5cbnZhciBqc3hERVYkMSA9ICBqc3hXaXRoVmFsaWRhdGlvbiA7XG5cbmV4cG9ydHMuRnJhZ21lbnQgPSBSRUFDVF9GUkFHTUVOVF9UWVBFO1xuZXhwb3J0cy5qc3hERVYgPSBqc3hERVYkMTtcbiAgfSkoKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/react/cjs/react-jsx-dev-runtime.development.js\n");
 
/***/ }),
 
/***/ "./node_modules/react/jsx-dev-runtime.js":
/*!***********************************************!*\
  !*** ./node_modules/react/jsx-dev-runtime.js ***!
  \***********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
 
"use strict";
eval("\n\nif (false) {} else {\n  module.exports = __webpack_require__(/*! ./cjs/react-jsx-dev-runtime.development.js */ \"./node_modules/react/cjs/react-jsx-dev-runtime.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LWRldi1ydW50aW1lLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksS0FBcUMsRUFBRSxFQUUxQyxDQUFDO0FBQ0YsRUFBRSx1SkFBc0U7QUFDeEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1kZXYtcnVudGltZS5qcz81Nzc3Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LWRldi1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/react/jsx-dev-runtime.js\n");
 
/***/ }),
 
/***/ "./node_modules/symbol-observable/es/index.js":
/*!****************************************************!*\
  !*** ./node_modules/symbol-observable/es/index.js ***!
  \****************************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _ponyfill_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ponyfill.js */ \"./node_modules/symbol-observable/es/ponyfill.js\");\n/* module decorator */ module = __webpack_require__.hmd(module);\n/* global window */\n\n\nvar root;\n\nif (typeof self !== 'undefined') {\n  root = self;\n} else if (typeof window !== 'undefined') {\n  root = window;\n} else if (typeof __webpack_require__.g !== 'undefined') {\n  root = __webpack_require__.g;\n} else if (true) {\n  root = module;\n} else {}\n\nvar result = (0,_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(root);\n/* harmony default export */ __webpack_exports__[\"default\"] = (result);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc3ltYm9sLW9ic2VydmFibGUvZXMvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDcUM7O0FBRXJDOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQSxFQUFFLGdCQUFnQixxQkFBTTtBQUN4QixTQUFTLHFCQUFNO0FBQ2YsRUFBRSxTQUFTLElBQTZCO0FBQ3hDO0FBQ0EsRUFBRSxLQUFLLEVBRU47O0FBRUQsYUFBYSx3REFBUTtBQUNyQiwrREFBZSxNQUFNLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3N5bWJvbC1vYnNlcnZhYmxlL2VzL2luZGV4LmpzPzBlMjciXSwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIHdpbmRvdyAqL1xuaW1wb3J0IHBvbnlmaWxsIGZyb20gJy4vcG9ueWZpbGwuanMnO1xuXG52YXIgcm9vdDtcblxuaWYgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJykge1xuICByb290ID0gc2VsZjtcbn0gZWxzZSBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgcm9vdCA9IHdpbmRvdztcbn0gZWxzZSBpZiAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgcm9vdCA9IGdsb2JhbDtcbn0gZWxzZSBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgcm9vdCA9IG1vZHVsZTtcbn0gZWxzZSB7XG4gIHJvb3QgPSBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xufVxuXG52YXIgcmVzdWx0ID0gcG9ueWZpbGwocm9vdCk7XG5leHBvcnQgZGVmYXVsdCByZXN1bHQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/symbol-observable/es/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/symbol-observable/es/ponyfill.js":
/*!*******************************************************!*\
  !*** ./node_modules/symbol-observable/es/ponyfill.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"default\": function() { return /* binding */ symbolObservablePonyfill; }\n/* harmony export */ });\nfunction symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\n\t\t\tif (typeof Symbol.for === 'function') {\n\t\t\t\t// This just needs to be something that won't trample other user's Symbol.for use\n\t\t\t\t// It also will guide people to the source of their issues, if this is problematic.\n\t\t\t\t// META: It's a resource locator!\n\t\t\t\tresult = Symbol.for('https://github.com/benlesh/symbol-observable');\n\t\t\t} else {\n\t\t\t\t// Symbol.for didn't exist! The best we can do at this point is a totally \n\t\t\t\t// unique symbol. Note that the string argument here is a descriptor, not\n\t\t\t\t// an identifier. This symbol is unique.\n\t\t\t\tresult = Symbol('https://github.com/benlesh/symbol-observable');\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tSymbol.observable = result;\n\t\t\t} catch (err) {\n\t\t\t\t// Do nothing. In some environments, users have frozen `Symbol` for security reasons,\n\t\t\t\t// if it is frozen assigning to it will throw. In this case, we don't care, because\n\t\t\t\t// they will need to use the returned value from the ponyfill.\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc3ltYm9sLW9ic2VydmFibGUvZXMvcG9ueWZpbGwuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlO0FBQ2Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3N5bWJvbC1vYnNlcnZhYmxlL2VzL3BvbnlmaWxsLmpzPzVjNTIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ltYm9sT2JzZXJ2YWJsZVBvbnlmaWxsKHJvb3QpIHtcblx0dmFyIHJlc3VsdDtcblx0dmFyIFN5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG5cdGlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0aWYgKFN5bWJvbC5vYnNlcnZhYmxlKSB7XG5cdFx0XHRyZXN1bHQgPSBTeW1ib2wub2JzZXJ2YWJsZTtcblx0XHR9IGVsc2Uge1xuXG5cdFx0XHRpZiAodHlwZW9mIFN5bWJvbC5mb3IgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0Ly8gVGhpcyBqdXN0IG5lZWRzIHRvIGJlIHNvbWV0aGluZyB0aGF0IHdvbid0IHRyYW1wbGUgb3RoZXIgdXNlcidzIFN5bWJvbC5mb3IgdXNlXG5cdFx0XHRcdC8vIEl0IGFsc28gd2lsbCBndWlkZSBwZW9wbGUgdG8gdGhlIHNvdXJjZSBvZiB0aGVpciBpc3N1ZXMsIGlmIHRoaXMgaXMgcHJvYmxlbWF0aWMuXG5cdFx0XHRcdC8vIE1FVEE6IEl0J3MgYSByZXNvdXJjZSBsb2NhdG9yIVxuXHRcdFx0XHRyZXN1bHQgPSBTeW1ib2wuZm9yKCdodHRwczovL2dpdGh1Yi5jb20vYmVubGVzaC9zeW1ib2wtb2JzZXJ2YWJsZScpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gU3ltYm9sLmZvciBkaWRuJ3QgZXhpc3QhIFRoZSBiZXN0IHdlIGNhbiBkbyBhdCB0aGlzIHBvaW50IGlzIGEgdG90YWxseSBcblx0XHRcdFx0Ly8gdW5pcXVlIHN5bWJvbC4gTm90ZSB0aGF0IHRoZSBzdHJpbmcgYXJndW1lbnQgaGVyZSBpcyBhIGRlc2NyaXB0b3IsIG5vdFxuXHRcdFx0XHQvLyBhbiBpZGVudGlmaWVyLiBUaGlzIHN5bWJvbCBpcyB1bmlxdWUuXG5cdFx0XHRcdHJlc3VsdCA9IFN5bWJvbCgnaHR0cHM6Ly9naXRodWIuY29tL2Jlbmxlc2gvc3ltYm9sLW9ic2VydmFibGUnKTtcblx0XHRcdH1cblx0XHRcdHRyeSB7XG5cdFx0XHRcdFN5bWJvbC5vYnNlcnZhYmxlID0gcmVzdWx0O1xuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdC8vIERvIG5vdGhpbmcuIEluIHNvbWUgZW52aXJvbm1lbnRzLCB1c2VycyBoYXZlIGZyb3plbiBgU3ltYm9sYCBmb3Igc2VjdXJpdHkgcmVhc29ucyxcblx0XHRcdFx0Ly8gaWYgaXQgaXMgZnJvemVuIGFzc2lnbmluZyB0byBpdCB3aWxsIHRocm93LiBJbiB0aGlzIGNhc2UsIHdlIGRvbid0IGNhcmUsIGJlY2F1c2Vcblx0XHRcdFx0Ly8gdGhleSB3aWxsIG5lZWQgdG8gdXNlIHRoZSByZXR1cm5lZCB2YWx1ZSBmcm9tIHRoZSBwb255ZmlsbC5cblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0cmVzdWx0ID0gJ0BAb2JzZXJ2YWJsZSc7XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0O1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/symbol-observable/es/ponyfill.js\n");
 
/***/ }),
 
/***/ "./node_modules/ts-invariant/lib/invariant.esm.js":
/*!********************************************************!*\
  !*** ./node_modules/ts-invariant/lib/invariant.esm.js ***!
  \********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"InvariantError\": function() { return /* binding */ InvariantError; },\n/* harmony export */   \"invariant\": function() { return /* binding */ invariant; },\n/* harmony export */   \"process\": function() { return /* binding */ processStub; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/tslib/tslib.es6.js\");\n/* provided dependency */ var process = __webpack_require__(/*! process */ \"./node_modules/next/dist/build/polyfills/process.js\");\n\n\nvar genericMessage = \"Invariant Violation\";\r\nvar _a = Object.setPrototypeOf, setPrototypeOf = _a === void 0 ? function (obj, proto) {\r\n    obj.__proto__ = proto;\r\n    return obj;\r\n} : _a;\r\nvar InvariantError = /** @class */ (function (_super) {\r\n    (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(InvariantError, _super);\r\n    function InvariantError(message) {\r\n        if (message === void 0) { message = genericMessage; }\r\n        var _this = _super.call(this, typeof message === \"number\"\r\n            ? genericMessage + \": \" + message + \" (see https://github.com/apollographql/invariant-packages)\"\r\n            : message) || this;\r\n        _this.framesToPop = 1;\r\n        _this.name = genericMessage;\r\n        setPrototypeOf(_this, InvariantError.prototype);\r\n        return _this;\r\n    }\r\n    return InvariantError;\r\n}(Error));\r\nfunction invariant(condition, message) {\r\n    if (!condition) {\r\n        throw new InvariantError(message);\r\n    }\r\n}\r\nfunction wrapConsoleMethod(method) {\r\n    return function () {\r\n        return console[method].apply(console, arguments);\r\n    };\r\n}\r\n(function (invariant) {\r\n    invariant.warn = wrapConsoleMethod(\"warn\");\r\n    invariant.error = wrapConsoleMethod(\"error\");\r\n})(invariant || (invariant = {}));\r\n// Code that uses ts-invariant with rollup-plugin-invariant may want to\r\n// import this process stub to avoid errors evaluating process.env.NODE_ENV.\r\n// However, because most ESM-to-CJS compilers will rewrite the process import\r\n// as tsInvariant.process, which prevents proper replacement by minifiers, we\r\n// also attempt to define the stub globally when it is not already defined.\r\nvar processStub = { env: {} };\r\nif (typeof process === \"object\") {\r\n    processStub = process;\r\n}\r\nelse\r\n    try {\r\n        // Using Function to evaluate this assignment in global scope also escapes\r\n        // the strict mode of the current module, thereby allowing the assignment.\r\n        // Inspired by https://github.com/facebook/regenerator/pull/369.\r\n        Function(\"stub\", \"process = stub\")(processStub);\r\n    }\r\n    catch (atLeastWeTried) {\r\n        // The assignment can fail if a Content Security Policy heavy-handedly\r\n        // forbids Function usage. In those environments, developers should take\r\n        // extra care to replace process.env.NODE_ENV in their production builds,\r\n        // or define an appropriate global.process polyfill.\r\n    }\r\nvar invariant$1 = invariant;\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (invariant$1);\n\n//# sourceMappingURL=invariant.esm.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdHMtaW52YXJpYW50L2xpYi9pbnZhcmlhbnQuZXNtLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQWtDOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBLElBQUksZ0RBQVM7QUFDYjtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDhCQUE4QjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwrREFBZSxXQUFXLEVBQUM7QUFDa0M7QUFDN0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3RzLWludmFyaWFudC9saWIvaW52YXJpYW50LmVzbS5qcz8wMzZiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fZXh0ZW5kcyB9IGZyb20gJ3RzbGliJztcblxudmFyIGdlbmVyaWNNZXNzYWdlID0gXCJJbnZhcmlhbnQgVmlvbGF0aW9uXCI7XHJcbnZhciBfYSA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiwgc2V0UHJvdG90eXBlT2YgPSBfYSA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKG9iaiwgcHJvdG8pIHtcclxuICAgIG9iai5fX3Byb3RvX18gPSBwcm90bztcclxuICAgIHJldHVybiBvYmo7XHJcbn0gOiBfYTtcclxudmFyIEludmFyaWFudEVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xyXG4gICAgX19leHRlbmRzKEludmFyaWFudEVycm9yLCBfc3VwZXIpO1xyXG4gICAgZnVuY3Rpb24gSW52YXJpYW50RXJyb3IobWVzc2FnZSkge1xyXG4gICAgICAgIGlmIChtZXNzYWdlID09PSB2b2lkIDApIHsgbWVzc2FnZSA9IGdlbmVyaWNNZXNzYWdlOyB9XHJcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgdHlwZW9mIG1lc3NhZ2UgPT09IFwibnVtYmVyXCJcclxuICAgICAgICAgICAgPyBnZW5lcmljTWVzc2FnZSArIFwiOiBcIiArIG1lc3NhZ2UgKyBcIiAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hcG9sbG9ncmFwaHFsL2ludmFyaWFudC1wYWNrYWdlcylcIlxyXG4gICAgICAgICAgICA6IG1lc3NhZ2UpIHx8IHRoaXM7XHJcbiAgICAgICAgX3RoaXMuZnJhbWVzVG9Qb3AgPSAxO1xyXG4gICAgICAgIF90aGlzLm5hbWUgPSBnZW5lcmljTWVzc2FnZTtcclxuICAgICAgICBzZXRQcm90b3R5cGVPZihfdGhpcywgSW52YXJpYW50RXJyb3IucHJvdG90eXBlKTtcclxuICAgICAgICByZXR1cm4gX3RoaXM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gSW52YXJpYW50RXJyb3I7XHJcbn0oRXJyb3IpKTtcclxuZnVuY3Rpb24gaW52YXJpYW50KGNvbmRpdGlvbiwgbWVzc2FnZSkge1xyXG4gICAgaWYgKCFjb25kaXRpb24pIHtcclxuICAgICAgICB0aHJvdyBuZXcgSW52YXJpYW50RXJyb3IobWVzc2FnZSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gd3JhcENvbnNvbGVNZXRob2QobWV0aG9kKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBjb25zb2xlW21ldGhvZF0uYXBwbHkoY29uc29sZSwgYXJndW1lbnRzKTtcclxuICAgIH07XHJcbn1cclxuKGZ1bmN0aW9uIChpbnZhcmlhbnQpIHtcclxuICAgIGludmFyaWFudC53YXJuID0gd3JhcENvbnNvbGVNZXRob2QoXCJ3YXJuXCIpO1xyXG4gICAgaW52YXJpYW50LmVycm9yID0gd3JhcENvbnNvbGVNZXRob2QoXCJlcnJvclwiKTtcclxufSkoaW52YXJpYW50IHx8IChpbnZhcmlhbnQgPSB7fSkpO1xyXG4vLyBDb2RlIHRoYXQgdXNlcyB0cy1pbnZhcmlhbnQgd2l0aCByb2xsdXAtcGx1Z2luLWludmFyaWFudCBtYXkgd2FudCB0b1xyXG4vLyBpbXBvcnQgdGhpcyBwcm9jZXNzIHN0dWIgdG8gYXZvaWQgZXJyb3JzIGV2YWx1YXRpbmcgcHJvY2Vzcy5lbnYuTk9ERV9FTlYuXHJcbi8vIEhvd2V2ZXIsIGJlY2F1c2UgbW9zdCBFU00tdG8tQ0pTIGNvbXBpbGVycyB3aWxsIHJld3JpdGUgdGhlIHByb2Nlc3MgaW1wb3J0XHJcbi8vIGFzIHRzSW52YXJpYW50LnByb2Nlc3MsIHdoaWNoIHByZXZlbnRzIHByb3BlciByZXBsYWNlbWVudCBieSBtaW5pZmllcnMsIHdlXHJcbi8vIGFsc28gYXR0ZW1wdCB0byBkZWZpbmUgdGhlIHN0dWIgZ2xvYmFsbHkgd2hlbiBpdCBpcyBub3QgYWxyZWFkeSBkZWZpbmVkLlxyXG52YXIgcHJvY2Vzc1N0dWIgPSB7IGVudjoge30gfTtcclxuaWYgKHR5cGVvZiBwcm9jZXNzID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICBwcm9jZXNzU3R1YiA9IHByb2Nlc3M7XHJcbn1cclxuZWxzZVxyXG4gICAgdHJ5IHtcclxuICAgICAgICAvLyBVc2luZyBGdW5jdGlvbiB0byBldmFsdWF0ZSB0aGlzIGFzc2lnbm1lbnQgaW4gZ2xvYmFsIHNjb3BlIGFsc28gZXNjYXBlc1xyXG4gICAgICAgIC8vIHRoZSBzdHJpY3QgbW9kZSBvZiB0aGUgY3VycmVudCBtb2R1bGUsIHRoZXJlYnkgYWxsb3dpbmcgdGhlIGFzc2lnbm1lbnQuXHJcbiAgICAgICAgLy8gSW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL3B1bGwvMzY5LlxyXG4gICAgICAgIEZ1bmN0aW9uKFwic3R1YlwiLCBcInByb2Nlc3MgPSBzdHViXCIpKHByb2Nlc3NTdHViKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChhdExlYXN0V2VUcmllZCkge1xyXG4gICAgICAgIC8vIFRoZSBhc3NpZ25tZW50IGNhbiBmYWlsIGlmIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgaGVhdnktaGFuZGVkbHlcclxuICAgICAgICAvLyBmb3JiaWRzIEZ1bmN0aW9uIHVzYWdlLiBJbiB0aG9zZSBlbnZpcm9ubWVudHMsIGRldmVsb3BlcnMgc2hvdWxkIHRha2VcclxuICAgICAgICAvLyBleHRyYSBjYXJlIHRvIHJlcGxhY2UgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgaW4gdGhlaXIgcHJvZHVjdGlvbiBidWlsZHMsXHJcbiAgICAgICAgLy8gb3IgZGVmaW5lIGFuIGFwcHJvcHJpYXRlIGdsb2JhbC5wcm9jZXNzIHBvbHlmaWxsLlxyXG4gICAgfVxyXG52YXIgaW52YXJpYW50JDEgPSBpbnZhcmlhbnQ7XG5cbmV4cG9ydCBkZWZhdWx0IGludmFyaWFudCQxO1xuZXhwb3J0IHsgSW52YXJpYW50RXJyb3IsIGludmFyaWFudCwgcHJvY2Vzc1N0dWIgYXMgcHJvY2VzcyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW52YXJpYW50LmVzbS5qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/ts-invariant/lib/invariant.esm.js\n");
 
/***/ }),
 
/***/ "./node_modules/tslib/tslib.es6.js":
/*!*****************************************!*\
  !*** ./node_modules/tslib/tslib.es6.js ***!
  \*****************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"__assign\": function() { return /* binding */ __assign; },\n/* harmony export */   \"__asyncDelegator\": function() { return /* binding */ __asyncDelegator; },\n/* harmony export */   \"__asyncGenerator\": function() { return /* binding */ __asyncGenerator; },\n/* harmony export */   \"__asyncValues\": function() { return /* binding */ __asyncValues; },\n/* harmony export */   \"__await\": function() { return /* binding */ __await; },\n/* harmony export */   \"__awaiter\": function() { return /* binding */ __awaiter; },\n/* harmony export */   \"__classPrivateFieldGet\": function() { return /* binding */ __classPrivateFieldGet; },\n/* harmony export */   \"__classPrivateFieldSet\": function() { return /* binding */ __classPrivateFieldSet; },\n/* harmony export */   \"__createBinding\": function() { return /* binding */ __createBinding; },\n/* harmony export */   \"__decorate\": function() { return /* binding */ __decorate; },\n/* harmony export */   \"__exportStar\": function() { return /* binding */ __exportStar; },\n/* harmony export */   \"__extends\": function() { return /* binding */ __extends; },\n/* harmony export */   \"__generator\": function() { return /* binding */ __generator; },\n/* harmony export */   \"__importDefault\": function() { return /* binding */ __importDefault; },\n/* harmony export */   \"__importStar\": function() { return /* binding */ __importStar; },\n/* harmony export */   \"__makeTemplateObject\": function() { return /* binding */ __makeTemplateObject; },\n/* harmony export */   \"__metadata\": function() { return /* binding */ __metadata; },\n/* harmony export */   \"__param\": function() { return /* binding */ __param; },\n/* harmony export */   \"__read\": function() { return /* binding */ __read; },\n/* harmony export */   \"__rest\": function() { return /* binding */ __rest; },\n/* harmony export */   \"__spread\": function() { return /* binding */ __spread; },\n/* harmony export */   \"__spreadArrays\": function() { return /* binding */ __spreadArrays; },\n/* harmony export */   \"__values\": function() { return /* binding */ __values; }\n/* harmony export */ });\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nfunction __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nfunction __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nfunction __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nfunction __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nfunction __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nfunction __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nfunction __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nfunction __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nfunction __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nfunction __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nfunction __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nfunction __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nfunction __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nfunction __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxnQkFBZ0Isc0NBQXNDLGtCQUFrQjtBQUNuRiwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsaURBQWlELE9BQU87QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2REFBNkQsY0FBYztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSw2Q0FBNkMsUUFBUTtBQUNyRDtBQUNBO0FBQ0E7QUFDTztBQUNQLG9DQUFvQztBQUNwQztBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDTztBQUNQLDRCQUE0QiwrREFBK0QsaUJBQWlCO0FBQzVHO0FBQ0Esb0NBQW9DLE1BQU0sK0JBQStCLFlBQVk7QUFDckYsbUNBQW1DLE1BQU0sbUNBQW1DLFlBQVk7QUFDeEYsZ0NBQWdDO0FBQ2hDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQLGNBQWMsNkJBQTZCLDBCQUEwQixjQUFjLHFCQUFxQjtBQUN4RyxpQkFBaUIsb0RBQW9ELHFFQUFxRSxjQUFjO0FBQ3hKLHVCQUF1QixzQkFBc0I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDO0FBQ3hDLG1DQUFtQyxTQUFTO0FBQzVDLG1DQUFtQyxXQUFXLFVBQVU7QUFDeEQsMENBQTBDLGNBQWM7QUFDeEQ7QUFDQSw4R0FBOEcsT0FBTztBQUNySCxpRkFBaUYsaUJBQWlCO0FBQ2xHLHlEQUF5RCxnQkFBZ0IsUUFBUTtBQUNqRiwrQ0FBK0MsZ0JBQWdCLGdCQUFnQjtBQUMvRTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0EsVUFBVSxZQUFZLGFBQWEsU0FBUyxVQUFVO0FBQ3RELG9DQUFvQyxTQUFTO0FBQzdDO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsTUFBTTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsNkJBQTZCLHNCQUFzQjtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1Asa0RBQWtELFFBQVE7QUFDMUQseUNBQXlDLFFBQVE7QUFDakQseURBQXlELFFBQVE7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLGlCQUFpQix1RkFBdUYsY0FBYztBQUN0SCx1QkFBdUIsZ0NBQWdDLHFDQUFxQywyQ0FBMkM7QUFDdkksNEJBQTRCLE1BQU0saUJBQWlCLFlBQVk7QUFDL0QsdUJBQXVCO0FBQ3ZCLDhCQUE4QjtBQUM5Qiw2QkFBNkI7QUFDN0IsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDTztBQUNQO0FBQ0EsaUJBQWlCLDZDQUE2QyxVQUFVLHNEQUFzRCxjQUFjO0FBQzVJLDBCQUEwQiw2QkFBNkIsb0JBQW9CLGdEQUFnRCxrQkFBa0I7QUFDN0k7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLDJHQUEyRyx1RkFBdUYsY0FBYztBQUNoTix1QkFBdUIsOEJBQThCLGdEQUFnRCx3REFBd0Q7QUFDN0osNkNBQTZDLHNDQUFzQyxVQUFVLG1CQUFtQixJQUFJO0FBQ3BIO0FBQ0E7QUFDTztBQUNQLGlDQUFpQyx1Q0FBdUMsWUFBWSxLQUFLLE9BQU87QUFDaEc7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYuanM/YTY1YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jcmVhdGVCaW5kaW5nKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIGV4cG9ydHMpIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFleHBvcnRzLmhhc093blByb3BlcnR5KHApKSBleHBvcnRzW3BdID0gbVtwXTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XHJcbiAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcclxuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcclxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcclxuICAgICAgICAgICAgcltrXSA9IGFbal07XHJcbiAgICByZXR1cm4gcjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIHJlc3VsdFtrXSA9IG1vZFtrXTtcclxuICAgIHJlc3VsdC5kZWZhdWx0ID0gbW9kO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcclxuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBwcml2YXRlTWFwKSB7XHJcbiAgICBpZiAoIXByaXZhdGVNYXAuaGFzKHJlY2VpdmVyKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByaXZhdGVNYXAuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHByaXZhdGVNYXAsIHZhbHVlKSB7XHJcbiAgICBpZiAoIXByaXZhdGVNYXAuaGFzKHJlY2VpdmVyKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gc2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZU1hcC5zZXQocmVjZWl2ZXIsIHZhbHVlKTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxufVxyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/tslib/tslib.es6.js\n");
 
/***/ }),
 
/***/ "./node_modules/zen-observable/index.js":
/*!**********************************************!*\
  !*** ./node_modules/zen-observable/index.js ***!
  \**********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
 
eval("module.exports = __webpack_require__(/*! ./lib/Observable.js */ \"./node_modules/zen-observable/lib/Observable.js\").Observable;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvemVuLW9ic2VydmFibGUvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6IkFBQUEsNkhBQTBEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy96ZW4tb2JzZXJ2YWJsZS9pbmRleC5qcz8wOWQ5Il0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvT2JzZXJ2YWJsZS5qcycpLk9ic2VydmFibGU7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/zen-observable/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/zen-observable/lib/Observable.js":
/*!*******************************************************!*\
  !*** ./node_modules/zen-observable/lib/Observable.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack_module, exports) {
 
"use strict";
eval("\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.Observable = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// === Symbol Support ===\nvar hasSymbols = function () {\n  return typeof Symbol === 'function';\n};\n\nvar hasSymbol = function (name) {\n  return hasSymbols() && Boolean(Symbol[name]);\n};\n\nvar getSymbol = function (name) {\n  return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n  Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n  var value = obj[key];\n  if (value == null) return undefined;\n  if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n  return value;\n}\n\nfunction getSpecies(obj) {\n  var ctor = obj.constructor;\n\n  if (ctor !== undefined) {\n    ctor = ctor[SymbolSpecies];\n\n    if (ctor === null) {\n      ctor = undefined;\n    }\n  }\n\n  return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n  return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n  if (hostReportError.log) {\n    hostReportError.log(e);\n  } else {\n    setTimeout(function () {\n      throw e;\n    });\n  }\n}\n\nfunction enqueue(fn) {\n  Promise.resolve().then(function () {\n    try {\n      fn();\n    } catch (e) {\n      hostReportError(e);\n    }\n  });\n}\n\nfunction cleanupSubscription(subscription) {\n  var cleanup = subscription._cleanup;\n  if (cleanup === undefined) return;\n  subscription._cleanup = undefined;\n\n  if (!cleanup) {\n    return;\n  }\n\n  try {\n    if (typeof cleanup === 'function') {\n      cleanup();\n    } else {\n      var unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n      if (unsubscribe) {\n        unsubscribe.call(cleanup);\n      }\n    }\n  } catch (e) {\n    hostReportError(e);\n  }\n}\n\nfunction closeSubscription(subscription) {\n  subscription._observer = undefined;\n  subscription._queue = undefined;\n  subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n  var queue = subscription._queue;\n\n  if (!queue) {\n    return;\n  }\n\n  subscription._queue = undefined;\n  subscription._state = 'ready';\n\n  for (var i = 0; i < queue.length; ++i) {\n    notifySubscription(subscription, queue[i].type, queue[i].value);\n    if (subscription._state === 'closed') break;\n  }\n}\n\nfunction notifySubscription(subscription, type, value) {\n  subscription._state = 'running';\n  var observer = subscription._observer;\n\n  try {\n    var m = getMethod(observer, type);\n\n    switch (type) {\n      case 'next':\n        if (m) m.call(observer, value);\n        break;\n\n      case 'error':\n        closeSubscription(subscription);\n        if (m) m.call(observer, value);else throw value;\n        break;\n\n      case 'complete':\n        closeSubscription(subscription);\n        if (m) m.call(observer);\n        break;\n    }\n  } catch (e) {\n    hostReportError(e);\n  }\n\n  if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n  if (subscription._state === 'closed') return;\n\n  if (subscription._state === 'buffering') {\n    subscription._queue.push({\n      type: type,\n      value: value\n    });\n\n    return;\n  }\n\n  if (subscription._state !== 'ready') {\n    subscription._state = 'buffering';\n    subscription._queue = [{\n      type: type,\n      value: value\n    }];\n    enqueue(function () {\n      return flushSubscription(subscription);\n    });\n    return;\n  }\n\n  notifySubscription(subscription, type, value);\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n  function Subscription(observer, subscriber) {\n    _classCallCheck(this, Subscription);\n\n    // ASSERT: observer is an object\n    // ASSERT: subscriber is callable\n    this._cleanup = undefined;\n    this._observer = observer;\n    this._queue = undefined;\n    this._state = 'initializing';\n    var subscriptionObserver = new SubscriptionObserver(this);\n\n    try {\n      this._cleanup = subscriber.call(undefined, subscriptionObserver);\n    } catch (e) {\n      subscriptionObserver.error(e);\n    }\n\n    if (this._state === 'initializing') this._state = 'ready';\n  }\n\n  _createClass(Subscription, [{\n    key: \"unsubscribe\",\n    value: function unsubscribe() {\n      if (this._state !== 'closed') {\n        closeSubscription(this);\n        cleanupSubscription(this);\n      }\n    }\n  }, {\n    key: \"closed\",\n    get: function () {\n      return this._state === 'closed';\n    }\n  }]);\n\n  return Subscription;\n}();\n\nvar SubscriptionObserver =\n/*#__PURE__*/\nfunction () {\n  function SubscriptionObserver(subscription) {\n    _classCallCheck(this, SubscriptionObserver);\n\n    this._subscription = subscription;\n  }\n\n  _createClass(SubscriptionObserver, [{\n    key: \"next\",\n    value: function next(value) {\n      onNotify(this._subscription, 'next', value);\n    }\n  }, {\n    key: \"error\",\n    value: function error(value) {\n      onNotify(this._subscription, 'error', value);\n    }\n  }, {\n    key: \"complete\",\n    value: function complete() {\n      onNotify(this._subscription, 'complete');\n    }\n  }, {\n    key: \"closed\",\n    get: function () {\n      return this._subscription._state === 'closed';\n    }\n  }]);\n\n  return SubscriptionObserver;\n}();\n\nvar Observable =\n/*#__PURE__*/\nfunction () {\n  function Observable(subscriber) {\n    _classCallCheck(this, Observable);\n\n    if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n    if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n    this._subscriber = subscriber;\n  }\n\n  _createClass(Observable, [{\n    key: \"subscribe\",\n    value: function subscribe(observer) {\n      if (typeof observer !== 'object' || observer === null) {\n        observer = {\n          next: observer,\n          error: arguments[1],\n          complete: arguments[2]\n        };\n      }\n\n      return new Subscription(observer, this._subscriber);\n    }\n  }, {\n    key: \"forEach\",\n    value: function forEach(fn) {\n      var _this = this;\n\n      return new Promise(function (resolve, reject) {\n        if (typeof fn !== 'function') {\n          reject(new TypeError(fn + ' is not a function'));\n          return;\n        }\n\n        function done() {\n          subscription.unsubscribe();\n          resolve();\n        }\n\n        var subscription = _this.subscribe({\n          next: function (value) {\n            try {\n              fn(value, done);\n            } catch (e) {\n              reject(e);\n              subscription.unsubscribe();\n            }\n          },\n          error: reject,\n          complete: resolve\n        });\n      });\n    }\n  }, {\n    key: \"map\",\n    value: function map(fn) {\n      var _this2 = this;\n\n      if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n      var C = getSpecies(this);\n      return new C(function (observer) {\n        return _this2.subscribe({\n          next: function (value) {\n            try {\n              value = fn(value);\n            } catch (e) {\n              return observer.error(e);\n            }\n\n            observer.next(value);\n          },\n          error: function (e) {\n            observer.error(e);\n          },\n          complete: function () {\n            observer.complete();\n          }\n        });\n      });\n    }\n  }, {\n    key: \"filter\",\n    value: function filter(fn) {\n      var _this3 = this;\n\n      if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n      var C = getSpecies(this);\n      return new C(function (observer) {\n        return _this3.subscribe({\n          next: function (value) {\n            try {\n              if (!fn(value)) return;\n            } catch (e) {\n              return observer.error(e);\n            }\n\n            observer.next(value);\n          },\n          error: function (e) {\n            observer.error(e);\n          },\n          complete: function () {\n            observer.complete();\n          }\n        });\n      });\n    }\n  }, {\n    key: \"reduce\",\n    value: function reduce(fn) {\n      var _this4 = this;\n\n      if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n      var C = getSpecies(this);\n      var hasSeed = arguments.length > 1;\n      var hasValue = false;\n      var seed = arguments[1];\n      var acc = seed;\n      return new C(function (observer) {\n        return _this4.subscribe({\n          next: function (value) {\n            var first = !hasValue;\n            hasValue = true;\n\n            if (!first || hasSeed) {\n              try {\n                acc = fn(acc, value);\n              } catch (e) {\n                return observer.error(e);\n              }\n            } else {\n              acc = value;\n            }\n          },\n          error: function (e) {\n            observer.error(e);\n          },\n          complete: function () {\n            if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n            observer.next(acc);\n            observer.complete();\n          }\n        });\n      });\n    }\n  }, {\n    key: \"concat\",\n    value: function concat() {\n      var _this5 = this;\n\n      for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n        sources[_key] = arguments[_key];\n      }\n\n      var C = getSpecies(this);\n      return new C(function (observer) {\n        var subscription;\n        var index = 0;\n\n        function startNext(next) {\n          subscription = next.subscribe({\n            next: function (v) {\n              observer.next(v);\n            },\n            error: function (e) {\n              observer.error(e);\n            },\n            complete: function () {\n              if (index === sources.length) {\n                subscription = undefined;\n                observer.complete();\n              } else {\n                startNext(C.from(sources[index++]));\n              }\n            }\n          });\n        }\n\n        startNext(_this5);\n        return function () {\n          if (subscription) {\n            subscription.unsubscribe();\n            subscription = undefined;\n          }\n        };\n      });\n    }\n  }, {\n    key: \"flatMap\",\n    value: function flatMap(fn) {\n      var _this6 = this;\n\n      if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n      var C = getSpecies(this);\n      return new C(function (observer) {\n        var subscriptions = [];\n\n        var outer = _this6.subscribe({\n          next: function (value) {\n            if (fn) {\n              try {\n                value = fn(value);\n              } catch (e) {\n                return observer.error(e);\n              }\n            }\n\n            var inner = C.from(value).subscribe({\n              next: function (value) {\n                observer.next(value);\n              },\n              error: function (e) {\n                observer.error(e);\n              },\n              complete: function () {\n                var i = subscriptions.indexOf(inner);\n                if (i >= 0) subscriptions.splice(i, 1);\n                completeIfDone();\n              }\n            });\n            subscriptions.push(inner);\n          },\n          error: function (e) {\n            observer.error(e);\n          },\n          complete: function () {\n            completeIfDone();\n          }\n        });\n\n        function completeIfDone() {\n          if (outer.closed && subscriptions.length === 0) observer.complete();\n        }\n\n        return function () {\n          subscriptions.forEach(function (s) {\n            return s.unsubscribe();\n          });\n          outer.unsubscribe();\n        };\n      });\n    }\n  }, {\n    key: SymbolObservable,\n    value: function () {\n      return this;\n    }\n  }], [{\n    key: \"from\",\n    value: function from(x) {\n      var C = typeof this === 'function' ? this : Observable;\n      if (x == null) throw new TypeError(x + ' is not an object');\n      var method = getMethod(x, SymbolObservable);\n\n      if (method) {\n        var observable = method.call(x);\n        if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n        if (isObservable(observable) && observable.constructor === C) return observable;\n        return new C(function (observer) {\n          return observable.subscribe(observer);\n        });\n      }\n\n      if (hasSymbol('iterator')) {\n        method = getMethod(x, SymbolIterator);\n\n        if (method) {\n          return new C(function (observer) {\n            enqueue(function () {\n              if (observer.closed) return;\n              var _iteratorNormalCompletion = true;\n              var _didIteratorError = false;\n              var _iteratorError = undefined;\n\n              try {\n                for (var _iterator = method.call(x)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n                  var _item = _step.value;\n                  observer.next(_item);\n                  if (observer.closed) return;\n                }\n              } catch (err) {\n                _didIteratorError = true;\n                _iteratorError = err;\n              } finally {\n                try {\n                  if (!_iteratorNormalCompletion && _iterator.return != null) {\n                    _iterator.return();\n                  }\n                } finally {\n                  if (_didIteratorError) {\n                    throw _iteratorError;\n                  }\n                }\n              }\n\n              observer.complete();\n            });\n          });\n        }\n      }\n\n      if (Array.isArray(x)) {\n        return new C(function (observer) {\n          enqueue(function () {\n            if (observer.closed) return;\n\n            for (var i = 0; i < x.length; ++i) {\n              observer.next(x[i]);\n              if (observer.closed) return;\n            }\n\n            observer.complete();\n          });\n        });\n      }\n\n      throw new TypeError(x + ' is not observable');\n    }\n  }, {\n    key: \"of\",\n    value: function of() {\n      for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        items[_key2] = arguments[_key2];\n      }\n\n      var C = typeof this === 'function' ? this : Observable;\n      return new C(function (observer) {\n        enqueue(function () {\n          if (observer.closed) return;\n\n          for (var i = 0; i < items.length; ++i) {\n            observer.next(items[i]);\n            if (observer.closed) return;\n          }\n\n          observer.complete();\n        });\n      });\n    }\n  }, {\n    key: SymbolSpecies,\n    get: function () {\n      return this;\n    }\n  }]);\n\n  return Observable;\n}();\n\nexports.Observable = Observable;\n\nif (hasSymbols()) {\n  Object.defineProperty(Observable, Symbol('extensions'), {\n    value: {\n      symbol: SymbolObservable,\n      hostReportError: hostReportError\n    },\n    configurable: true\n  });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvemVuLW9ic2VydmFibGUvbGliL09ic2VydmFibGUuanMuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBRWIsOENBQTZDO0FBQzdDO0FBQ0EsQ0FBQyxFQUFDO0FBQ0Ysa0JBQWtCOztBQUVsQixrREFBa0QsMENBQTBDOztBQUU1Riw0Q0FBNEMsZ0JBQWdCLGtCQUFrQixPQUFPLDJCQUEyQix3REFBd0QsZ0NBQWdDLHVEQUF1RDs7QUFFL1AsOERBQThELHNFQUFzRSw4REFBOEQ7O0FBRWxNO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwwQ0FBMEM7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGtDQUFrQztBQUNsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGtCQUFrQixrQkFBa0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVDQUF1QztBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUEsMEVBQTBFO0FBQzFFOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRUE7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBOztBQUVBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLDZFQUE2RSxhQUFhO0FBQzFGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0VBQStFLGdFQUFnRTtBQUMvSTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCLGNBQWM7QUFDMUM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVztBQUNYLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSw4RUFBOEUsZUFBZTtBQUM3RjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDBCQUEwQixrQkFBa0I7QUFDNUM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVELGtCQUFrQjs7QUFFbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvemVuLW9ic2VydmFibGUvbGliL09ic2VydmFibGUuanM/YjI2NiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuT2JzZXJ2YWJsZSA9IHZvaWQgMDtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG4vLyA9PT0gU3ltYm9sIFN1cHBvcnQgPT09XG52YXIgaGFzU3ltYm9scyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbic7XG59O1xuXG52YXIgaGFzU3ltYm9sID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIGhhc1N5bWJvbHMoKSAmJiBCb29sZWFuKFN5bWJvbFtuYW1lXSk7XG59O1xuXG52YXIgZ2V0U3ltYm9sID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIGhhc1N5bWJvbChuYW1lKSA/IFN5bWJvbFtuYW1lXSA6ICdAQCcgKyBuYW1lO1xufTtcblxuaWYgKGhhc1N5bWJvbHMoKSAmJiAhaGFzU3ltYm9sKCdvYnNlcnZhYmxlJykpIHtcbiAgU3ltYm9sLm9ic2VydmFibGUgPSBTeW1ib2woJ29ic2VydmFibGUnKTtcbn1cblxudmFyIFN5bWJvbEl0ZXJhdG9yID0gZ2V0U3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIFN5bWJvbE9ic2VydmFibGUgPSBnZXRTeW1ib2woJ29ic2VydmFibGUnKTtcbnZhciBTeW1ib2xTcGVjaWVzID0gZ2V0U3ltYm9sKCdzcGVjaWVzJyk7IC8vID09PSBBYnN0cmFjdCBPcGVyYXRpb25zID09PVxuXG5mdW5jdGlvbiBnZXRNZXRob2Qob2JqLCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gb2JqW2tleV07XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKHZhbHVlICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGdldFNwZWNpZXMob2JqKSB7XG4gIHZhciBjdG9yID0gb2JqLmNvbnN0cnVjdG9yO1xuXG4gIGlmIChjdG9yICE9PSB1bmRlZmluZWQpIHtcbiAgICBjdG9yID0gY3RvcltTeW1ib2xTcGVjaWVzXTtcblxuICAgIGlmIChjdG9yID09PSBudWxsKSB7XG4gICAgICBjdG9yID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjdG9yICE9PSB1bmRlZmluZWQgPyBjdG9yIDogT2JzZXJ2YWJsZTtcbn1cblxuZnVuY3Rpb24gaXNPYnNlcnZhYmxlKHgpIHtcbiAgcmV0dXJuIHggaW5zdGFuY2VvZiBPYnNlcnZhYmxlOyAvLyBTUEVDOiBCcmFuZCBjaGVja1xufVxuXG5mdW5jdGlvbiBob3N0UmVwb3J0RXJyb3IoZSkge1xuICBpZiAoaG9zdFJlcG9ydEVycm9yLmxvZykge1xuICAgIGhvc3RSZXBvcnRFcnJvci5sb2coZSk7XG4gIH0gZWxzZSB7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVucXVldWUoZm4pIHtcbiAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGZuKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaG9zdFJlcG9ydEVycm9yKGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNsZWFudXBTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKSB7XG4gIHZhciBjbGVhbnVwID0gc3Vic2NyaXB0aW9uLl9jbGVhbnVwO1xuICBpZiAoY2xlYW51cCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gIHN1YnNjcmlwdGlvbi5fY2xlYW51cCA9IHVuZGVmaW5lZDtcblxuICBpZiAoIWNsZWFudXApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cnkge1xuICAgIGlmICh0eXBlb2YgY2xlYW51cCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY2xlYW51cCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdW5zdWJzY3JpYmUgPSBnZXRNZXRob2QoY2xlYW51cCwgJ3Vuc3Vic2NyaWJlJyk7XG5cbiAgICAgIGlmICh1bnN1YnNjcmliZSkge1xuICAgICAgICB1bnN1YnNjcmliZS5jYWxsKGNsZWFudXApO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGhvc3RSZXBvcnRFcnJvcihlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjbG9zZVN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pIHtcbiAgc3Vic2NyaXB0aW9uLl9vYnNlcnZlciA9IHVuZGVmaW5lZDtcbiAgc3Vic2NyaXB0aW9uLl9xdWV1ZSA9IHVuZGVmaW5lZDtcbiAgc3Vic2NyaXB0aW9uLl9zdGF0ZSA9ICdjbG9zZWQnO1xufVxuXG5mdW5jdGlvbiBmbHVzaFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pIHtcbiAgdmFyIHF1ZXVlID0gc3Vic2NyaXB0aW9uLl9xdWV1ZTtcblxuICBpZiAoIXF1ZXVlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3Vic2NyaXB0aW9uLl9xdWV1ZSA9IHVuZGVmaW5lZDtcbiAgc3Vic2NyaXB0aW9uLl9zdGF0ZSA9ICdyZWFkeSc7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7ICsraSkge1xuICAgIG5vdGlmeVN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24sIHF1ZXVlW2ldLnR5cGUsIHF1ZXVlW2ldLnZhbHVlKTtcbiAgICBpZiAoc3Vic2NyaXB0aW9uLl9zdGF0ZSA9PT0gJ2Nsb3NlZCcpIGJyZWFrO1xuICB9XG59XG5cbmZ1bmN0aW9uIG5vdGlmeVN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24sIHR5cGUsIHZhbHVlKSB7XG4gIHN1YnNjcmlwdGlvbi5fc3RhdGUgPSAncnVubmluZyc7XG4gIHZhciBvYnNlcnZlciA9IHN1YnNjcmlwdGlvbi5fb2JzZXJ2ZXI7XG5cbiAgdHJ5IHtcbiAgICB2YXIgbSA9IGdldE1ldGhvZChvYnNlcnZlciwgdHlwZSk7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ25leHQnOlxuICAgICAgICBpZiAobSkgbS5jYWxsKG9ic2VydmVyLCB2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIGNsb3NlU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgICAgIGlmIChtKSBtLmNhbGwob2JzZXJ2ZXIsIHZhbHVlKTtlbHNlIHRocm93IHZhbHVlO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnY29tcGxldGUnOlxuICAgICAgICBjbG9zZVN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pO1xuICAgICAgICBpZiAobSkgbS5jYWxsKG9ic2VydmVyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgaG9zdFJlcG9ydEVycm9yKGUpO1xuICB9XG5cbiAgaWYgKHN1YnNjcmlwdGlvbi5fc3RhdGUgPT09ICdjbG9zZWQnKSBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7ZWxzZSBpZiAoc3Vic2NyaXB0aW9uLl9zdGF0ZSA9PT0gJ3J1bm5pbmcnKSBzdWJzY3JpcHRpb24uX3N0YXRlID0gJ3JlYWR5Jztcbn1cblxuZnVuY3Rpb24gb25Ob3RpZnkoc3Vic2NyaXB0aW9uLCB0eXBlLCB2YWx1ZSkge1xuICBpZiAoc3Vic2NyaXB0aW9uLl9zdGF0ZSA9PT0gJ2Nsb3NlZCcpIHJldHVybjtcblxuICBpZiAoc3Vic2NyaXB0aW9uLl9zdGF0ZSA9PT0gJ2J1ZmZlcmluZycpIHtcbiAgICBzdWJzY3JpcHRpb24uX3F1ZXVlLnB1c2goe1xuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIHZhbHVlOiB2YWx1ZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHN1YnNjcmlwdGlvbi5fc3RhdGUgIT09ICdyZWFkeScpIHtcbiAgICBzdWJzY3JpcHRpb24uX3N0YXRlID0gJ2J1ZmZlcmluZyc7XG4gICAgc3Vic2NyaXB0aW9uLl9xdWV1ZSA9IFt7XG4gICAgICB0eXBlOiB0eXBlLFxuICAgICAgdmFsdWU6IHZhbHVlXG4gICAgfV07XG4gICAgZW5xdWV1ZShmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmx1c2hTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBub3RpZnlTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uLCB0eXBlLCB2YWx1ZSk7XG59XG5cbnZhciBTdWJzY3JpcHRpb24gPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTdWJzY3JpcHRpb24ob2JzZXJ2ZXIsIHN1YnNjcmliZXIpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3Vic2NyaXB0aW9uKTtcblxuICAgIC8vIEFTU0VSVDogb2JzZXJ2ZXIgaXMgYW4gb2JqZWN0XG4gICAgLy8gQVNTRVJUOiBzdWJzY3JpYmVyIGlzIGNhbGxhYmxlXG4gICAgdGhpcy5fY2xlYW51cCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9vYnNlcnZlciA9IG9ic2VydmVyO1xuICAgIHRoaXMuX3F1ZXVlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX3N0YXRlID0gJ2luaXRpYWxpemluZyc7XG4gICAgdmFyIHN1YnNjcmlwdGlvbk9ic2VydmVyID0gbmV3IFN1YnNjcmlwdGlvbk9ic2VydmVyKHRoaXMpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuX2NsZWFudXAgPSBzdWJzY3JpYmVyLmNhbGwodW5kZWZpbmVkLCBzdWJzY3JpcHRpb25PYnNlcnZlcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgc3Vic2NyaXB0aW9uT2JzZXJ2ZXIuZXJyb3IoZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0YXRlID09PSAnaW5pdGlhbGl6aW5nJykgdGhpcy5fc3RhdGUgPSAncmVhZHknO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFN1YnNjcmlwdGlvbiwgW3tcbiAgICBrZXk6IFwidW5zdWJzY3JpYmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7XG4gICAgICBpZiAodGhpcy5fc3RhdGUgIT09ICdjbG9zZWQnKSB7XG4gICAgICAgIGNsb3NlU3Vic2NyaXB0aW9uKHRoaXMpO1xuICAgICAgICBjbGVhbnVwU3Vic2NyaXB0aW9uKHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjbG9zZWRcIixcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zdGF0ZSA9PT0gJ2Nsb3NlZCc7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFN1YnNjcmlwdGlvbjtcbn0oKTtcblxudmFyIFN1YnNjcmlwdGlvbk9ic2VydmVyID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gU3Vic2NyaXB0aW9uT2JzZXJ2ZXIoc3Vic2NyaXB0aW9uKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFN1YnNjcmlwdGlvbk9ic2VydmVyKTtcblxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IHN1YnNjcmlwdGlvbjtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhTdWJzY3JpcHRpb25PYnNlcnZlciwgW3tcbiAgICBrZXk6IFwibmV4dFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBuZXh0KHZhbHVlKSB7XG4gICAgICBvbk5vdGlmeSh0aGlzLl9zdWJzY3JpcHRpb24sICduZXh0JywgdmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJlcnJvclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBlcnJvcih2YWx1ZSkge1xuICAgICAgb25Ob3RpZnkodGhpcy5fc3Vic2NyaXB0aW9uLCAnZXJyb3InLCB2YWx1ZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBsZXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBsZXRlKCkge1xuICAgICAgb25Ob3RpZnkodGhpcy5fc3Vic2NyaXB0aW9uLCAnY29tcGxldGUnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY2xvc2VkXCIsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3Vic2NyaXB0aW9uLl9zdGF0ZSA9PT0gJ2Nsb3NlZCc7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFN1YnNjcmlwdGlvbk9ic2VydmVyO1xufSgpO1xuXG52YXIgT2JzZXJ2YWJsZSA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE9ic2VydmFibGUoc3Vic2NyaWJlcikge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBPYnNlcnZhYmxlKTtcblxuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignT2JzZXJ2YWJsZSBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24nKTtcbiAgICBpZiAodHlwZW9mIHN1YnNjcmliZXIgIT09ICdmdW5jdGlvbicpIHRocm93IG5ldyBUeXBlRXJyb3IoJ09ic2VydmFibGUgaW5pdGlhbGl6ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgdGhpcy5fc3Vic2NyaWJlciA9IHN1YnNjcmliZXI7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoT2JzZXJ2YWJsZSwgW3tcbiAgICBrZXk6IFwic3Vic2NyaWJlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN1YnNjcmliZShvYnNlcnZlcikge1xuICAgICAgaWYgKHR5cGVvZiBvYnNlcnZlciAhPT0gJ29iamVjdCcgfHwgb2JzZXJ2ZXIgPT09IG51bGwpIHtcbiAgICAgICAgb2JzZXJ2ZXIgPSB7XG4gICAgICAgICAgbmV4dDogb2JzZXJ2ZXIsXG4gICAgICAgICAgZXJyb3I6IGFyZ3VtZW50c1sxXSxcbiAgICAgICAgICBjb21wbGV0ZTogYXJndW1lbnRzWzJdXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uKG9ic2VydmVyLCB0aGlzLl9zdWJzY3JpYmVyKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZm9yRWFjaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmb3JFYWNoKGZuKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoZm4gKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJykpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGRvbmUoKSB7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN1YnNjcmlwdGlvbiA9IF90aGlzLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBmbih2YWx1ZSwgZG9uZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogcmVqZWN0LFxuICAgICAgICAgIGNvbXBsZXRlOiByZXNvbHZlXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcIm1hcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtYXAoZm4pIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKGZuICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xuICAgICAgdmFyIEMgPSBnZXRTcGVjaWVzKHRoaXMpO1xuICAgICAgcmV0dXJuIG5ldyBDKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICByZXR1cm4gX3RoaXMyLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB2YWx1ZSA9IGZuKHZhbHVlKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9ic2VydmVyLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImZpbHRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmaWx0ZXIoZm4pIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKGZuICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xuICAgICAgdmFyIEMgPSBnZXRTcGVjaWVzKHRoaXMpO1xuICAgICAgcmV0dXJuIG5ldyBDKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICByZXR1cm4gX3RoaXMzLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAoIWZuKHZhbHVlKSkgcmV0dXJuO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICByZXR1cm4gb2JzZXJ2ZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQodmFsdWUpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVkdWNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlZHVjZShmbikge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHRocm93IG5ldyBUeXBlRXJyb3IoZm4gKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gICAgICB2YXIgQyA9IGdldFNwZWNpZXModGhpcyk7XG4gICAgICB2YXIgaGFzU2VlZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxO1xuICAgICAgdmFyIGhhc1ZhbHVlID0gZmFsc2U7XG4gICAgICB2YXIgc2VlZCA9IGFyZ3VtZW50c1sxXTtcbiAgICAgIHZhciBhY2MgPSBzZWVkO1xuICAgICAgcmV0dXJuIG5ldyBDKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICByZXR1cm4gX3RoaXM0LnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgZmlyc3QgPSAhaGFzVmFsdWU7XG4gICAgICAgICAgICBoYXNWYWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmICghZmlyc3QgfHwgaGFzU2VlZCkge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGFjYyA9IGZuKGFjYywgdmFsdWUpO1xuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ic2VydmVyLmVycm9yKGUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBhY2MgPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCFoYXNWYWx1ZSAmJiAhaGFzU2VlZCkgcmV0dXJuIG9ic2VydmVyLmVycm9yKG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCByZWR1Y2UgYW4gZW1wdHkgc2VxdWVuY2UnKSk7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KGFjYyk7XG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29uY2F0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbmNhdCgpIHtcbiAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuXG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgc291cmNlcyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgc291cmNlc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgIH1cblxuICAgICAgdmFyIEMgPSBnZXRTcGVjaWVzKHRoaXMpO1xuICAgICAgcmV0dXJuIG5ldyBDKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICB2YXIgc3Vic2NyaXB0aW9uO1xuICAgICAgICB2YXIgaW5kZXggPSAwO1xuXG4gICAgICAgIGZ1bmN0aW9uIHN0YXJ0TmV4dChuZXh0KSB7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uID0gbmV4dC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh2KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSBzb3VyY2VzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0YXJ0TmV4dChDLmZyb20oc291cmNlc1tpbmRleCsrXSkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGFydE5leHQoX3RoaXM1KTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZmxhdE1hcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmbGF0TWFwKGZuKSB7XG4gICAgICB2YXIgX3RoaXM2ID0gdGhpcztcblxuICAgICAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykgdGhyb3cgbmV3IFR5cGVFcnJvcihmbiArICcgaXMgbm90IGEgZnVuY3Rpb24nKTtcbiAgICAgIHZhciBDID0gZ2V0U3BlY2llcyh0aGlzKTtcbiAgICAgIHJldHVybiBuZXcgQyhmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgdmFyIHN1YnNjcmlwdGlvbnMgPSBbXTtcblxuICAgICAgICB2YXIgb3V0ZXIgPSBfdGhpczYuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChmbikge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gZm4odmFsdWUpO1xuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ic2VydmVyLmVycm9yKGUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBpbm5lciA9IEMuZnJvbSh2YWx1ZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh2YWx1ZSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGUpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBpID0gc3Vic2NyaXB0aW9ucy5pbmRleE9mKGlubmVyKTtcbiAgICAgICAgICAgICAgICBpZiAoaSA+PSAwKSBzdWJzY3JpcHRpb25zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICBjb21wbGV0ZUlmRG9uZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbnMucHVzaChpbm5lcik7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGUpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbXBsZXRlSWZEb25lKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBmdW5jdGlvbiBjb21wbGV0ZUlmRG9uZSgpIHtcbiAgICAgICAgICBpZiAob3V0ZXIuY2xvc2VkICYmIHN1YnNjcmlwdGlvbnMubGVuZ3RoID09PSAwKSBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zLmZvckVhY2goZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgIHJldHVybiBzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgb3V0ZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogU3ltYm9sT2JzZXJ2YWJsZSxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZnJvbVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmcm9tKHgpIHtcbiAgICAgIHZhciBDID0gdHlwZW9mIHRoaXMgPT09ICdmdW5jdGlvbicgPyB0aGlzIDogT2JzZXJ2YWJsZTtcbiAgICAgIGlmICh4ID09IG51bGwpIHRocm93IG5ldyBUeXBlRXJyb3IoeCArICcgaXMgbm90IGFuIG9iamVjdCcpO1xuICAgICAgdmFyIG1ldGhvZCA9IGdldE1ldGhvZCh4LCBTeW1ib2xPYnNlcnZhYmxlKTtcblxuICAgICAgaWYgKG1ldGhvZCkge1xuICAgICAgICB2YXIgb2JzZXJ2YWJsZSA9IG1ldGhvZC5jYWxsKHgpO1xuICAgICAgICBpZiAoT2JqZWN0KG9ic2VydmFibGUpICE9PSBvYnNlcnZhYmxlKSB0aHJvdyBuZXcgVHlwZUVycm9yKG9ic2VydmFibGUgKyAnIGlzIG5vdCBhbiBvYmplY3QnKTtcbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShvYnNlcnZhYmxlKSAmJiBvYnNlcnZhYmxlLmNvbnN0cnVjdG9yID09PSBDKSByZXR1cm4gb2JzZXJ2YWJsZTtcbiAgICAgICAgcmV0dXJuIG5ldyBDKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICAgIHJldHVybiBvYnNlcnZhYmxlLnN1YnNjcmliZShvYnNlcnZlcik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoaGFzU3ltYm9sKCdpdGVyYXRvcicpKSB7XG4gICAgICAgIG1ldGhvZCA9IGdldE1ldGhvZCh4LCBTeW1ib2xJdGVyYXRvcik7XG5cbiAgICAgICAgaWYgKG1ldGhvZCkge1xuICAgICAgICAgIHJldHVybiBuZXcgQyhmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIGVucXVldWUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICBpZiAob2JzZXJ2ZXIuY2xvc2VkKSByZXR1cm47XG4gICAgICAgICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICAgIHZhciBfaXRlcmF0b3JFcnJvciA9IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvciA9IG1ldGhvZC5jYWxsKHgpW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3N0ZXA7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IChfc3RlcCA9IF9pdGVyYXRvci5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgdmFyIF9pdGVtID0gX3N0ZXAudmFsdWU7XG4gICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KF9pdGVtKTtcbiAgICAgICAgICAgICAgICAgIGlmIChvYnNlcnZlci5jbG9zZWQpIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIF9kaWRJdGVyYXRvckVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3JFcnJvciA9IGVycjtcbiAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgaWYgKCFfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uICYmIF9pdGVyYXRvci5yZXR1cm4gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBfaXRlcmF0b3IucmV0dXJuKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgIGlmIChfZGlkSXRlcmF0b3JFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoeCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICAgIGVucXVldWUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG9ic2VydmVyLmNsb3NlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh4W2ldKTtcbiAgICAgICAgICAgICAgaWYgKG9ic2VydmVyLmNsb3NlZCkgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcih4ICsgJyBpcyBub3Qgb2JzZXJ2YWJsZScpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJvZlwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvZigpIHtcbiAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgaXRlbXMgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgaXRlbXNbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1cblxuICAgICAgdmFyIEMgPSB0eXBlb2YgdGhpcyA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiBPYnNlcnZhYmxlO1xuICAgICAgcmV0dXJuIG5ldyBDKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICBlbnF1ZXVlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAob2JzZXJ2ZXIuY2xvc2VkKSByZXR1cm47XG5cbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KGl0ZW1zW2ldKTtcbiAgICAgICAgICAgIGlmIChvYnNlcnZlci5jbG9zZWQpIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogU3ltYm9sU3BlY2llcyxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBPYnNlcnZhYmxlO1xufSgpO1xuXG5leHBvcnRzLk9ic2VydmFibGUgPSBPYnNlcnZhYmxlO1xuXG5pZiAoaGFzU3ltYm9scygpKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYnNlcnZhYmxlLCBTeW1ib2woJ2V4dGVuc2lvbnMnKSwge1xuICAgIHZhbHVlOiB7XG4gICAgICBzeW1ib2w6IFN5bWJvbE9ic2VydmFibGUsXG4gICAgICBob3N0UmVwb3J0RXJyb3I6IGhvc3RSZXBvcnRFcnJvclxuICAgIH0sXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/zen-observable/lib/Observable.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/cache/core/cache.js":
/*!*********************************************************!*\
  !*** ./node_modules/@apollo/client/cache/core/cache.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloCache\": function() { return /* binding */ ApolloCache; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var optimism__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! optimism */ \"./node_modules/optimism/lib/bundle.esm.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n\n\n\nvar ApolloCache = (function () {\n    function ApolloCache() {\n        this.getFragmentDoc = (0,optimism__WEBPACK_IMPORTED_MODULE_0__.wrap)(_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.getFragmentQueryDocument);\n    }\n    ApolloCache.prototype.batch = function (options) {\n        var _this = this;\n        var optimisticId = typeof options.optimistic === \"string\" ? options.optimistic :\n            options.optimistic === false ? null : void 0;\n        var updateResult;\n        this.performTransaction(function () { return updateResult = options.update(_this); }, optimisticId);\n        return updateResult;\n    };\n    ApolloCache.prototype.recordOptimisticTransaction = function (transaction, optimisticId) {\n        this.performTransaction(transaction, optimisticId);\n    };\n    ApolloCache.prototype.transformDocument = function (document) {\n        return document;\n    };\n    ApolloCache.prototype.identify = function (object) {\n        return;\n    };\n    ApolloCache.prototype.gc = function () {\n        return [];\n    };\n    ApolloCache.prototype.modify = function (options) {\n        return false;\n    };\n    ApolloCache.prototype.transformForLink = function (document) {\n        return document;\n    };\n    ApolloCache.prototype.readQuery = function (options, optimistic) {\n        if (optimistic === void 0) { optimistic = !!options.optimistic; }\n        return this.read((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, options), { rootId: options.id || 'ROOT_QUERY', optimistic: optimistic }));\n    };\n    ApolloCache.prototype.readFragment = function (options, optimistic) {\n        if (optimistic === void 0) { optimistic = !!options.optimistic; }\n        return this.read((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, options), { query: this.getFragmentDoc(options.fragment, options.fragmentName), rootId: options.id, optimistic: optimistic }));\n    };\n    ApolloCache.prototype.writeQuery = function (_a) {\n        var id = _a.id, data = _a.data, options = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__rest)(_a, [\"id\", \"data\"]);\n        return this.write(Object.assign(options, {\n            dataId: id || 'ROOT_QUERY',\n            result: data,\n        }));\n    };\n    ApolloCache.prototype.writeFragment = function (_a) {\n        var id = _a.id, data = _a.data, fragment = _a.fragment, fragmentName = _a.fragmentName, options = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__rest)(_a, [\"id\", \"data\", \"fragment\", \"fragmentName\"]);\n        return this.write(Object.assign(options, {\n            query: this.getFragmentDoc(fragment, fragmentName),\n            dataId: id,\n            result: data,\n        }));\n    };\n    ApolloCache.prototype.updateQuery = function (options, update) {\n        return this.batch({\n            update: function (cache) {\n                var value = cache.readQuery(options);\n                var data = update(value);\n                if (data === void 0 || data === null)\n                    return value;\n                cache.writeQuery((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, options), { data: data }));\n                return data;\n            },\n        });\n    };\n    ApolloCache.prototype.updateFragment = function (options, update) {\n        return this.batch({\n            update: function (cache) {\n                var value = cache.readFragment(options);\n                var data = update(value);\n                if (data === void 0 || data === null)\n                    return value;\n                cache.writeFragment((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, options), { data: data }));\n                return data;\n            },\n        });\n    };\n    return ApolloCache;\n}());\n\n//# sourceMappingURL=cache.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvY29yZS9jYWNoZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXlDO0FBQ1Q7QUFDcUM7QUFDckU7QUFDQTtBQUNBLDhCQUE4Qiw4Q0FBSSxDQUFDLHlFQUF3QjtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsOENBQThDO0FBQzVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQyx5QkFBeUIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGNBQWMsNERBQTREO0FBQ3ZIO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckMseUJBQXlCLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxjQUFjLGdIQUFnSDtBQUMzSztBQUNBO0FBQ0Esa0RBQWtELDZDQUFNO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsMEdBQTBHLDZDQUFNO0FBQ2hIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGNBQWMsWUFBWTtBQUMvRTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQywrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsY0FBYyxZQUFZO0FBQ2xGO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0EsQ0FBQztBQUNzQjtBQUN2QiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvY29yZS9jYWNoZS5qcz83NTBkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IHdyYXAgfSBmcm9tICdvcHRpbWlzbSc7XG5pbXBvcnQgeyBnZXRGcmFnbWVudFF1ZXJ5RG9jdW1lbnQsIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9pbmRleC5qc1wiO1xudmFyIEFwb2xsb0NhY2hlID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBBcG9sbG9DYWNoZSgpIHtcbiAgICAgICAgdGhpcy5nZXRGcmFnbWVudERvYyA9IHdyYXAoZ2V0RnJhZ21lbnRRdWVyeURvY3VtZW50KTtcbiAgICB9XG4gICAgQXBvbGxvQ2FjaGUucHJvdG90eXBlLmJhdGNoID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIG9wdGltaXN0aWNJZCA9IHR5cGVvZiBvcHRpb25zLm9wdGltaXN0aWMgPT09IFwic3RyaW5nXCIgPyBvcHRpb25zLm9wdGltaXN0aWMgOlxuICAgICAgICAgICAgb3B0aW9ucy5vcHRpbWlzdGljID09PSBmYWxzZSA/IG51bGwgOiB2b2lkIDA7XG4gICAgICAgIHZhciB1cGRhdGVSZXN1bHQ7XG4gICAgICAgIHRoaXMucGVyZm9ybVRyYW5zYWN0aW9uKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVwZGF0ZVJlc3VsdCA9IG9wdGlvbnMudXBkYXRlKF90aGlzKTsgfSwgb3B0aW1pc3RpY0lkKTtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZVJlc3VsdDtcbiAgICB9O1xuICAgIEFwb2xsb0NhY2hlLnByb3RvdHlwZS5yZWNvcmRPcHRpbWlzdGljVHJhbnNhY3Rpb24gPSBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIG9wdGltaXN0aWNJZCkge1xuICAgICAgICB0aGlzLnBlcmZvcm1UcmFuc2FjdGlvbih0cmFuc2FjdGlvbiwgb3B0aW1pc3RpY0lkKTtcbiAgICB9O1xuICAgIEFwb2xsb0NhY2hlLnByb3RvdHlwZS50cmFuc2Zvcm1Eb2N1bWVudCA9IGZ1bmN0aW9uIChkb2N1bWVudCkge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQ7XG4gICAgfTtcbiAgICBBcG9sbG9DYWNoZS5wcm90b3R5cGUuaWRlbnRpZnkgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9O1xuICAgIEFwb2xsb0NhY2hlLnByb3RvdHlwZS5nYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH07XG4gICAgQXBvbGxvQ2FjaGUucHJvdG90eXBlLm1vZGlmeSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIEFwb2xsb0NhY2hlLnByb3RvdHlwZS50cmFuc2Zvcm1Gb3JMaW5rID0gZnVuY3Rpb24gKGRvY3VtZW50KSB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudDtcbiAgICB9O1xuICAgIEFwb2xsb0NhY2hlLnByb3RvdHlwZS5yZWFkUXVlcnkgPSBmdW5jdGlvbiAob3B0aW9ucywgb3B0aW1pc3RpYykge1xuICAgICAgICBpZiAob3B0aW1pc3RpYyA9PT0gdm9pZCAwKSB7IG9wdGltaXN0aWMgPSAhIW9wdGlvbnMub3B0aW1pc3RpYzsgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZWFkKF9fYXNzaWduKF9fYXNzaWduKHt9LCBvcHRpb25zKSwgeyByb290SWQ6IG9wdGlvbnMuaWQgfHwgJ1JPT1RfUVVFUlknLCBvcHRpbWlzdGljOiBvcHRpbWlzdGljIH0pKTtcbiAgICB9O1xuICAgIEFwb2xsb0NhY2hlLnByb3RvdHlwZS5yZWFkRnJhZ21lbnQgPSBmdW5jdGlvbiAob3B0aW9ucywgb3B0aW1pc3RpYykge1xuICAgICAgICBpZiAob3B0aW1pc3RpYyA9PT0gdm9pZCAwKSB7IG9wdGltaXN0aWMgPSAhIW9wdGlvbnMub3B0aW1pc3RpYzsgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZWFkKF9fYXNzaWduKF9fYXNzaWduKHt9LCBvcHRpb25zKSwgeyBxdWVyeTogdGhpcy5nZXRGcmFnbWVudERvYyhvcHRpb25zLmZyYWdtZW50LCBvcHRpb25zLmZyYWdtZW50TmFtZSksIHJvb3RJZDogb3B0aW9ucy5pZCwgb3B0aW1pc3RpYzogb3B0aW1pc3RpYyB9KSk7XG4gICAgfTtcbiAgICBBcG9sbG9DYWNoZS5wcm90b3R5cGUud3JpdGVRdWVyeSA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgaWQgPSBfYS5pZCwgZGF0YSA9IF9hLmRhdGEsIG9wdGlvbnMgPSBfX3Jlc3QoX2EsIFtcImlkXCIsIFwiZGF0YVwiXSk7XG4gICAgICAgIHJldHVybiB0aGlzLndyaXRlKE9iamVjdC5hc3NpZ24ob3B0aW9ucywge1xuICAgICAgICAgICAgZGF0YUlkOiBpZCB8fCAnUk9PVF9RVUVSWScsXG4gICAgICAgICAgICByZXN1bHQ6IGRhdGEsXG4gICAgICAgIH0pKTtcbiAgICB9O1xuICAgIEFwb2xsb0NhY2hlLnByb3RvdHlwZS53cml0ZUZyYWdtZW50ID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciBpZCA9IF9hLmlkLCBkYXRhID0gX2EuZGF0YSwgZnJhZ21lbnQgPSBfYS5mcmFnbWVudCwgZnJhZ21lbnROYW1lID0gX2EuZnJhZ21lbnROYW1lLCBvcHRpb25zID0gX19yZXN0KF9hLCBbXCJpZFwiLCBcImRhdGFcIiwgXCJmcmFnbWVudFwiLCBcImZyYWdtZW50TmFtZVwiXSk7XG4gICAgICAgIHJldHVybiB0aGlzLndyaXRlKE9iamVjdC5hc3NpZ24ob3B0aW9ucywge1xuICAgICAgICAgICAgcXVlcnk6IHRoaXMuZ2V0RnJhZ21lbnREb2MoZnJhZ21lbnQsIGZyYWdtZW50TmFtZSksXG4gICAgICAgICAgICBkYXRhSWQ6IGlkLFxuICAgICAgICAgICAgcmVzdWx0OiBkYXRhLFxuICAgICAgICB9KSk7XG4gICAgfTtcbiAgICBBcG9sbG9DYWNoZS5wcm90b3R5cGUudXBkYXRlUXVlcnkgPSBmdW5jdGlvbiAob3B0aW9ucywgdXBkYXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhdGNoKHtcbiAgICAgICAgICAgIHVwZGF0ZTogZnVuY3Rpb24gKGNhY2hlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gY2FjaGUucmVhZFF1ZXJ5KG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIHZhciBkYXRhID0gdXBkYXRlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YSA9PT0gdm9pZCAwIHx8IGRhdGEgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgICAgICBjYWNoZS53cml0ZVF1ZXJ5KF9fYXNzaWduKF9fYXNzaWduKHt9LCBvcHRpb25zKSwgeyBkYXRhOiBkYXRhIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgQXBvbGxvQ2FjaGUucHJvdG90eXBlLnVwZGF0ZUZyYWdtZW50ID0gZnVuY3Rpb24gKG9wdGlvbnMsIHVwZGF0ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXRjaCh7XG4gICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uIChjYWNoZSkge1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGNhY2hlLnJlYWRGcmFnbWVudChvcHRpb25zKTtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHVwZGF0ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEgPT09IHZvaWQgMCB8fCBkYXRhID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICAgICAgY2FjaGUud3JpdGVGcmFnbWVudChfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3B0aW9ucyksIHsgZGF0YTogZGF0YSB9KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIHJldHVybiBBcG9sbG9DYWNoZTtcbn0oKSk7XG5leHBvcnQgeyBBcG9sbG9DYWNoZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2FjaGUuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/cache/core/cache.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/cache/core/types/Cache.js":
/*!***************************************************************!*\
  !*** ./node_modules/@apollo/client/cache/core/types/Cache.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Cache\": function() { return /* binding */ Cache; }\n/* harmony export */ });\nvar Cache;\n(function (Cache) {\n})(Cache || (Cache = {}));\n//# sourceMappingURL=Cache.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvY29yZS90eXBlcy9DYWNoZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU87QUFDUDtBQUNBLENBQUMsc0JBQXNCO0FBQ3ZCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9jYWNoZS9jb3JlL3R5cGVzL0NhY2hlLmpzPzRjMTgiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBDYWNoZTtcbihmdW5jdGlvbiAoQ2FjaGUpIHtcbn0pKENhY2hlIHx8IChDYWNoZSA9IHt9KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1DYWNoZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/cache/core/types/Cache.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/cache/core/types/common.js":
/*!****************************************************************!*\
  !*** ./node_modules/@apollo/client/cache/core/types/common.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"MissingFieldError\": function() { return /* binding */ MissingFieldError; }\n/* harmony export */ });\nvar MissingFieldError = (function () {\n    function MissingFieldError(message, path, query, variables) {\n        this.message = message;\n        this.path = path;\n        this.query = query;\n        this.variables = variables;\n    }\n    return MissingFieldError;\n}());\n\n//# sourceMappingURL=common.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvY29yZS90eXBlcy9jb21tb24uanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQzRCO0FBQzdCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9jYWNoZS9jb3JlL3R5cGVzL2NvbW1vbi5qcz9lODYzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBNaXNzaW5nRmllbGRFcnJvciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTWlzc2luZ0ZpZWxkRXJyb3IobWVzc2FnZSwgcGF0aCwgcXVlcnksIHZhcmlhYmxlcykge1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICB0aGlzLnBhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLnF1ZXJ5ID0gcXVlcnk7XG4gICAgICAgIHRoaXMudmFyaWFibGVzID0gdmFyaWFibGVzO1xuICAgIH1cbiAgICByZXR1cm4gTWlzc2luZ0ZpZWxkRXJyb3I7XG59KCkpO1xuZXhwb3J0IHsgTWlzc2luZ0ZpZWxkRXJyb3IgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbW1vbi5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/cache/core/types/common.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/cache/index.js":
/*!****************************************************!*\
  !*** ./node_modules/@apollo/client/cache/index.js ***!
  \****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloCache\": function() { return /* reexport safe */ _core_cache_js__WEBPACK_IMPORTED_MODULE_1__.ApolloCache; },\n/* harmony export */   \"Cache\": function() { return /* reexport safe */ _core_types_Cache_js__WEBPACK_IMPORTED_MODULE_2__.Cache; },\n/* harmony export */   \"EntityStore\": function() { return /* reexport safe */ _inmemory_entityStore_js__WEBPACK_IMPORTED_MODULE_5__.EntityStore; },\n/* harmony export */   \"InMemoryCache\": function() { return /* reexport safe */ _inmemory_inMemoryCache_js__WEBPACK_IMPORTED_MODULE_7__.InMemoryCache; },\n/* harmony export */   \"MissingFieldError\": function() { return /* reexport safe */ _core_types_common_js__WEBPACK_IMPORTED_MODULE_3__.MissingFieldError; },\n/* harmony export */   \"Policies\": function() { return /* reexport safe */ _inmemory_policies_js__WEBPACK_IMPORTED_MODULE_9__.Policies; },\n/* harmony export */   \"cacheSlot\": function() { return /* reexport safe */ _inmemory_reactiveVars_js__WEBPACK_IMPORTED_MODULE_8__.cacheSlot; },\n/* harmony export */   \"canonicalStringify\": function() { return /* reexport safe */ _inmemory_object_canon_js__WEBPACK_IMPORTED_MODULE_10__.canonicalStringify; },\n/* harmony export */   \"defaultDataIdFromObject\": function() { return /* reexport safe */ _inmemory_helpers_js__WEBPACK_IMPORTED_MODULE_6__.defaultDataIdFromObject; },\n/* harmony export */   \"fieldNameFromStoreName\": function() { return /* reexport safe */ _inmemory_helpers_js__WEBPACK_IMPORTED_MODULE_6__.fieldNameFromStoreName; },\n/* harmony export */   \"isReference\": function() { return /* reexport safe */ _utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isReference; },\n/* harmony export */   \"makeReference\": function() { return /* reexport safe */ _utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.makeReference; },\n/* harmony export */   \"makeVar\": function() { return /* reexport safe */ _inmemory_reactiveVars_js__WEBPACK_IMPORTED_MODULE_8__.makeVar; }\n/* harmony export */ });\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _core_cache_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./core/cache.js */ \"./node_modules/@apollo/client/cache/core/cache.js\");\n/* harmony import */ var _core_types_Cache_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./core/types/Cache.js */ \"./node_modules/@apollo/client/cache/core/types/Cache.js\");\n/* harmony import */ var _core_types_common_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./core/types/common.js */ \"./node_modules/@apollo/client/cache/core/types/common.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n/* harmony import */ var _inmemory_entityStore_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./inmemory/entityStore.js */ \"./node_modules/@apollo/client/cache/inmemory/entityStore.js\");\n/* harmony import */ var _inmemory_helpers_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./inmemory/helpers.js */ \"./node_modules/@apollo/client/cache/inmemory/helpers.js\");\n/* harmony import */ var _inmemory_inMemoryCache_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./inmemory/inMemoryCache.js */ \"./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js\");\n/* harmony import */ var _inmemory_reactiveVars_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./inmemory/reactiveVars.js */ \"./node_modules/@apollo/client/cache/inmemory/reactiveVars.js\");\n/* harmony import */ var _inmemory_policies_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./inmemory/policies.js */ \"./node_modules/@apollo/client/cache/inmemory/policies.js\");\n/* harmony import */ var _inmemory_object_canon_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./inmemory/object-canon.js */ \"./node_modules/@apollo/client/cache/inmemory/object-canon.js\");\n/* harmony import */ var _inmemory_types_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./inmemory/types.js */ \"./node_modules/@apollo/client/cache/inmemory/types.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _inmemory_types_js__WEBPACK_IMPORTED_MODULE_11__) if([\"default\",\"ApolloCache\",\"Cache\",\"MissingFieldError\",\"isReference\",\"makeReference\",\"EntityStore\",\"fieldNameFromStoreName\",\"defaultDataIdFromObject\",\"InMemoryCache\",\"makeVar\",\"cacheSlot\",\"Policies\",\"canonicalStringify\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _inmemory_types_js__WEBPACK_IMPORTED_MODULE_11__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF1QztBQUNPO0FBQ0E7QUFDYTtBQUNTO0FBQ1o7QUFDaUM7QUFDNUI7QUFDSTtBQUNkO0FBQ2M7QUFDN0I7QUFDcEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L2NhY2hlL2luZGV4LmpzPzBjYjYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwiLi4vdXRpbGl0aWVzL2dsb2JhbHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IEFwb2xsb0NhY2hlIH0gZnJvbSBcIi4vY29yZS9jYWNoZS5qc1wiO1xuZXhwb3J0IHsgQ2FjaGUgfSBmcm9tIFwiLi9jb3JlL3R5cGVzL0NhY2hlLmpzXCI7XG5leHBvcnQgeyBNaXNzaW5nRmllbGRFcnJvciB9IGZyb20gXCIuL2NvcmUvdHlwZXMvY29tbW9uLmpzXCI7XG5leHBvcnQgeyBpc1JlZmVyZW5jZSwgbWFrZVJlZmVyZW5jZSwgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBFbnRpdHlTdG9yZSB9IGZyb20gXCIuL2lubWVtb3J5L2VudGl0eVN0b3JlLmpzXCI7XG5leHBvcnQgeyBmaWVsZE5hbWVGcm9tU3RvcmVOYW1lLCBkZWZhdWx0RGF0YUlkRnJvbU9iamVjdCwgfSBmcm9tIFwiLi9pbm1lbW9yeS9oZWxwZXJzLmpzXCI7XG5leHBvcnQgeyBJbk1lbW9yeUNhY2hlLCB9IGZyb20gXCIuL2lubWVtb3J5L2luTWVtb3J5Q2FjaGUuanNcIjtcbmV4cG9ydCB7IG1ha2VWYXIsIGNhY2hlU2xvdCwgfSBmcm9tIFwiLi9pbm1lbW9yeS9yZWFjdGl2ZVZhcnMuanNcIjtcbmV4cG9ydCB7IFBvbGljaWVzLCB9IGZyb20gXCIuL2lubWVtb3J5L3BvbGljaWVzLmpzXCI7XG5leHBvcnQgeyBjYW5vbmljYWxTdHJpbmdpZnksIH0gZnJvbSBcIi4vaW5tZW1vcnkvb2JqZWN0LWNhbm9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pbm1lbW9yeS90eXBlcy5qc1wiO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/cache/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/cache/inmemory/entityStore.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@apollo/client/cache/inmemory/entityStore.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EntityStore\": function() { return /* binding */ EntityStore; },\n/* harmony export */   \"maybeDependOnExistenceOfEntity\": function() { return /* binding */ maybeDependOnExistenceOfEntity; },\n/* harmony export */   \"supportsResultCaching\": function() { return /* binding */ supportsResultCaching; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var optimism__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! optimism */ \"./node_modules/optimism/lib/bundle.esm.js\");\n/* harmony import */ var _wry_equality__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wry/equality */ \"./node_modules/@apollo/client/node_modules/@wry/equality/lib/equality.esm.js\");\n/* harmony import */ var _wry_trie__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wry/trie */ \"./node_modules/@wry/trie/lib/trie.esm.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./helpers.js */ \"./node_modules/@apollo/client/cache/inmemory/helpers.js\");\n\n\n\n\n\n\n\nvar DELETE = Object.create(null);\nvar delModifier = function () { return DELETE; };\nvar INVALIDATE = Object.create(null);\nvar EntityStore = (function () {\n    function EntityStore(policies, group) {\n        var _this = this;\n        this.policies = policies;\n        this.group = group;\n        this.data = Object.create(null);\n        this.rootIds = Object.create(null);\n        this.refs = Object.create(null);\n        this.getFieldValue = function (objectOrReference, storeFieldName) { return (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.maybeDeepFreeze)((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isReference)(objectOrReference)\n            ? _this.get(objectOrReference.__ref, storeFieldName)\n            : objectOrReference && objectOrReference[storeFieldName]); };\n        this.canRead = function (objOrRef) {\n            return (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isReference)(objOrRef)\n                ? _this.has(objOrRef.__ref)\n                : typeof objOrRef === \"object\";\n        };\n        this.toReference = function (objOrIdOrRef, mergeIntoStore) {\n            if (typeof objOrIdOrRef === \"string\") {\n                return (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.makeReference)(objOrIdOrRef);\n            }\n            if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isReference)(objOrIdOrRef)) {\n                return objOrIdOrRef;\n            }\n            var id = _this.policies.identify(objOrIdOrRef)[0];\n            if (id) {\n                var ref = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.makeReference)(id);\n                if (mergeIntoStore) {\n                    _this.merge(id, objOrIdOrRef);\n                }\n                return ref;\n            }\n        };\n    }\n    EntityStore.prototype.toObject = function () {\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__assign)({}, this.data);\n    };\n    EntityStore.prototype.has = function (dataId) {\n        return this.lookup(dataId, true) !== void 0;\n    };\n    EntityStore.prototype.get = function (dataId, fieldName) {\n        this.group.depend(dataId, fieldName);\n        if (_helpers_js__WEBPACK_IMPORTED_MODULE_6__.hasOwn.call(this.data, dataId)) {\n            var storeObject = this.data[dataId];\n            if (storeObject && _helpers_js__WEBPACK_IMPORTED_MODULE_6__.hasOwn.call(storeObject, fieldName)) {\n                return storeObject[fieldName];\n            }\n        }\n        if (fieldName === \"__typename\" &&\n            _helpers_js__WEBPACK_IMPORTED_MODULE_6__.hasOwn.call(this.policies.rootTypenamesById, dataId)) {\n            return this.policies.rootTypenamesById[dataId];\n        }\n        if (this instanceof Layer) {\n            return this.parent.get(dataId, fieldName);\n        }\n    };\n    EntityStore.prototype.lookup = function (dataId, dependOnExistence) {\n        if (dependOnExistence)\n            this.group.depend(dataId, \"__exists\");\n        if (_helpers_js__WEBPACK_IMPORTED_MODULE_6__.hasOwn.call(this.data, dataId)) {\n            return this.data[dataId];\n        }\n        if (this instanceof Layer) {\n            return this.parent.lookup(dataId, dependOnExistence);\n        }\n        if (this.policies.rootTypenamesById[dataId]) {\n            return Object.create(null);\n        }\n    };\n    EntityStore.prototype.merge = function (older, newer) {\n        var _this = this;\n        var dataId;\n        if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isReference)(older))\n            older = older.__ref;\n        if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isReference)(newer))\n            newer = newer.__ref;\n        var existing = typeof older === \"string\"\n            ? this.lookup(dataId = older)\n            : older;\n        var incoming = typeof newer === \"string\"\n            ? this.lookup(dataId = newer)\n            : newer;\n        if (!incoming)\n            return;\n        __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof dataId === \"string\", \"store.merge expects a string ID\") : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(typeof dataId === \"string\", 1);\n        var merged = new _utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.DeepMerger(storeObjectReconciler).merge(existing, incoming);\n        this.data[dataId] = merged;\n        if (merged !== existing) {\n            delete this.refs[dataId];\n            if (this.group.caching) {\n                var fieldsToDirty_1 = Object.create(null);\n                if (!existing)\n                    fieldsToDirty_1.__exists = 1;\n                Object.keys(incoming).forEach(function (storeFieldName) {\n                    if (!existing || existing[storeFieldName] !== merged[storeFieldName]) {\n                        fieldsToDirty_1[storeFieldName] = 1;\n                        var fieldName = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_6__.fieldNameFromStoreName)(storeFieldName);\n                        if (fieldName !== storeFieldName &&\n                            !_this.policies.hasKeyArgs(merged.__typename, fieldName)) {\n                            fieldsToDirty_1[fieldName] = 1;\n                        }\n                        if (merged[storeFieldName] === void 0 && !(_this instanceof Layer)) {\n                            delete merged[storeFieldName];\n                        }\n                    }\n                });\n                if (fieldsToDirty_1.__typename &&\n                    !(existing && existing.__typename) &&\n                    this.policies.rootTypenamesById[dataId] === merged.__typename) {\n                    delete fieldsToDirty_1.__typename;\n                }\n                Object.keys(fieldsToDirty_1).forEach(function (fieldName) { return _this.group.dirty(dataId, fieldName); });\n            }\n        }\n    };\n    EntityStore.prototype.modify = function (dataId, fields) {\n        var _this = this;\n        var storeObject = this.lookup(dataId);\n        if (storeObject) {\n            var changedFields_1 = Object.create(null);\n            var needToMerge_1 = false;\n            var allDeleted_1 = true;\n            var sharedDetails_1 = {\n                DELETE: DELETE,\n                INVALIDATE: INVALIDATE,\n                isReference: _utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isReference,\n                toReference: this.toReference,\n                canRead: this.canRead,\n                readField: function (fieldNameOrOptions, from) { return _this.policies.readField(typeof fieldNameOrOptions === \"string\" ? {\n                    fieldName: fieldNameOrOptions,\n                    from: from || (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.makeReference)(dataId),\n                } : fieldNameOrOptions, { store: _this }); },\n            };\n            Object.keys(storeObject).forEach(function (storeFieldName) {\n                var fieldName = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_6__.fieldNameFromStoreName)(storeFieldName);\n                var fieldValue = storeObject[storeFieldName];\n                if (fieldValue === void 0)\n                    return;\n                var modify = typeof fields === \"function\"\n                    ? fields\n                    : fields[storeFieldName] || fields[fieldName];\n                if (modify) {\n                    var newValue = modify === delModifier ? DELETE :\n                        modify((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.maybeDeepFreeze)(fieldValue), (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_5__.__assign)({}, sharedDetails_1), { fieldName: fieldName, storeFieldName: storeFieldName, storage: _this.getStorage(dataId, storeFieldName) }));\n                    if (newValue === INVALIDATE) {\n                        _this.group.dirty(dataId, storeFieldName);\n                    }\n                    else {\n                        if (newValue === DELETE)\n                            newValue = void 0;\n                        if (newValue !== fieldValue) {\n                            changedFields_1[storeFieldName] = newValue;\n                            needToMerge_1 = true;\n                            fieldValue = newValue;\n                        }\n                    }\n                }\n                if (fieldValue !== void 0) {\n                    allDeleted_1 = false;\n                }\n            });\n            if (needToMerge_1) {\n                this.merge(dataId, changedFields_1);\n                if (allDeleted_1) {\n                    if (this instanceof Layer) {\n                        this.data[dataId] = void 0;\n                    }\n                    else {\n                        delete this.data[dataId];\n                    }\n                    this.group.dirty(dataId, \"__exists\");\n                }\n                return true;\n            }\n        }\n        return false;\n    };\n    EntityStore.prototype.delete = function (dataId, fieldName, args) {\n        var _a;\n        var storeObject = this.lookup(dataId);\n        if (storeObject) {\n            var typename = this.getFieldValue(storeObject, \"__typename\");\n            var storeFieldName = fieldName && args\n                ? this.policies.getStoreFieldName({ typename: typename, fieldName: fieldName, args: args })\n                : fieldName;\n            return this.modify(dataId, storeFieldName ? (_a = {},\n                _a[storeFieldName] = delModifier,\n                _a) : delModifier);\n        }\n        return false;\n    };\n    EntityStore.prototype.evict = function (options, limit) {\n        var evicted = false;\n        if (options.id) {\n            if (_helpers_js__WEBPACK_IMPORTED_MODULE_6__.hasOwn.call(this.data, options.id)) {\n                evicted = this.delete(options.id, options.fieldName, options.args);\n            }\n            if (this instanceof Layer && this !== limit) {\n                evicted = this.parent.evict(options, limit) || evicted;\n            }\n            if (options.fieldName || evicted) {\n                this.group.dirty(options.id, options.fieldName || \"__exists\");\n            }\n        }\n        return evicted;\n    };\n    EntityStore.prototype.clear = function () {\n        this.replace(null);\n    };\n    EntityStore.prototype.extract = function () {\n        var _this = this;\n        var obj = this.toObject();\n        var extraRootIds = [];\n        this.getRootIdSet().forEach(function (id) {\n            if (!_helpers_js__WEBPACK_IMPORTED_MODULE_6__.hasOwn.call(_this.policies.rootTypenamesById, id)) {\n                extraRootIds.push(id);\n            }\n        });\n        if (extraRootIds.length) {\n            obj.__META = { extraRootIds: extraRootIds.sort() };\n        }\n        return obj;\n    };\n    EntityStore.prototype.replace = function (newData) {\n        var _this = this;\n        Object.keys(this.data).forEach(function (dataId) {\n            if (!(newData && _helpers_js__WEBPACK_IMPORTED_MODULE_6__.hasOwn.call(newData, dataId))) {\n                _this.delete(dataId);\n            }\n        });\n        if (newData) {\n            var __META = newData.__META, rest_1 = (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__rest)(newData, [\"__META\"]);\n            Object.keys(rest_1).forEach(function (dataId) {\n                _this.merge(dataId, rest_1[dataId]);\n            });\n            if (__META) {\n                __META.extraRootIds.forEach(this.retain, this);\n            }\n        }\n    };\n    EntityStore.prototype.retain = function (rootId) {\n        return this.rootIds[rootId] = (this.rootIds[rootId] || 0) + 1;\n    };\n    EntityStore.prototype.release = function (rootId) {\n        if (this.rootIds[rootId] > 0) {\n            var count = --this.rootIds[rootId];\n            if (!count)\n                delete this.rootIds[rootId];\n            return count;\n        }\n        return 0;\n    };\n    EntityStore.prototype.getRootIdSet = function (ids) {\n        if (ids === void 0) { ids = new Set(); }\n        Object.keys(this.rootIds).forEach(ids.add, ids);\n        if (this instanceof Layer) {\n            this.parent.getRootIdSet(ids);\n        }\n        else {\n            Object.keys(this.policies.rootTypenamesById).forEach(ids.add, ids);\n        }\n        return ids;\n    };\n    EntityStore.prototype.gc = function () {\n        var _this = this;\n        var ids = this.getRootIdSet();\n        var snapshot = this.toObject();\n        ids.forEach(function (id) {\n            if (_helpers_js__WEBPACK_IMPORTED_MODULE_6__.hasOwn.call(snapshot, id)) {\n                Object.keys(_this.findChildRefIds(id)).forEach(ids.add, ids);\n                delete snapshot[id];\n            }\n        });\n        var idsToRemove = Object.keys(snapshot);\n        if (idsToRemove.length) {\n            var root_1 = this;\n            while (root_1 instanceof Layer)\n                root_1 = root_1.parent;\n            idsToRemove.forEach(function (id) { return root_1.delete(id); });\n        }\n        return idsToRemove;\n    };\n    EntityStore.prototype.findChildRefIds = function (dataId) {\n        if (!_helpers_js__WEBPACK_IMPORTED_MODULE_6__.hasOwn.call(this.refs, dataId)) {\n            var found_1 = this.refs[dataId] = Object.create(null);\n            var root = this.data[dataId];\n            if (!root)\n                return found_1;\n            var workSet_1 = new Set([root]);\n            workSet_1.forEach(function (obj) {\n                if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isReference)(obj)) {\n                    found_1[obj.__ref] = true;\n                }\n                if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isNonNullObject)(obj)) {\n                    Object.keys(obj).forEach(function (key) {\n                        var child = obj[key];\n                        if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isNonNullObject)(child)) {\n                            workSet_1.add(child);\n                        }\n                    });\n                }\n            });\n        }\n        return this.refs[dataId];\n    };\n    EntityStore.prototype.makeCacheKey = function () {\n        return this.group.keyMaker.lookupArray(arguments);\n    };\n    return EntityStore;\n}());\n\nvar CacheGroup = (function () {\n    function CacheGroup(caching, parent) {\n        if (parent === void 0) { parent = null; }\n        this.caching = caching;\n        this.parent = parent;\n        this.d = null;\n        this.resetCaching();\n    }\n    CacheGroup.prototype.resetCaching = function () {\n        this.d = this.caching ? (0,optimism__WEBPACK_IMPORTED_MODULE_1__.dep)() : null;\n        this.keyMaker = new _wry_trie__WEBPACK_IMPORTED_MODULE_3__.Trie(_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.canUseWeakMap);\n    };\n    CacheGroup.prototype.depend = function (dataId, storeFieldName) {\n        if (this.d) {\n            this.d(makeDepKey(dataId, storeFieldName));\n            var fieldName = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_6__.fieldNameFromStoreName)(storeFieldName);\n            if (fieldName !== storeFieldName) {\n                this.d(makeDepKey(dataId, fieldName));\n            }\n            if (this.parent) {\n                this.parent.depend(dataId, storeFieldName);\n            }\n        }\n    };\n    CacheGroup.prototype.dirty = function (dataId, storeFieldName) {\n        if (this.d) {\n            this.d.dirty(makeDepKey(dataId, storeFieldName), storeFieldName === \"__exists\" ? \"forget\" : \"setDirty\");\n        }\n    };\n    return CacheGroup;\n}());\nfunction makeDepKey(dataId, storeFieldName) {\n    return storeFieldName + '#' + dataId;\n}\nfunction maybeDependOnExistenceOfEntity(store, entityId) {\n    if (supportsResultCaching(store)) {\n        store.group.depend(entityId, \"__exists\");\n    }\n}\n(function (EntityStore) {\n    var Root = (function (_super) {\n        (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__extends)(Root, _super);\n        function Root(_a) {\n            var policies = _a.policies, _b = _a.resultCaching, resultCaching = _b === void 0 ? true : _b, seed = _a.seed;\n            var _this = _super.call(this, policies, new CacheGroup(resultCaching)) || this;\n            _this.stump = new Stump(_this);\n            _this.storageTrie = new _wry_trie__WEBPACK_IMPORTED_MODULE_3__.Trie(_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.canUseWeakMap);\n            if (seed)\n                _this.replace(seed);\n            return _this;\n        }\n        Root.prototype.addLayer = function (layerId, replay) {\n            return this.stump.addLayer(layerId, replay);\n        };\n        Root.prototype.removeLayer = function () {\n            return this;\n        };\n        Root.prototype.getStorage = function () {\n            return this.storageTrie.lookupArray(arguments);\n        };\n        return Root;\n    }(EntityStore));\n    EntityStore.Root = Root;\n})(EntityStore || (EntityStore = {}));\nvar Layer = (function (_super) {\n    (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__extends)(Layer, _super);\n    function Layer(id, parent, replay, group) {\n        var _this = _super.call(this, parent.policies, group) || this;\n        _this.id = id;\n        _this.parent = parent;\n        _this.replay = replay;\n        _this.group = group;\n        replay(_this);\n        return _this;\n    }\n    Layer.prototype.addLayer = function (layerId, replay) {\n        return new Layer(layerId, this, replay, this.group);\n    };\n    Layer.prototype.removeLayer = function (layerId) {\n        var _this = this;\n        var parent = this.parent.removeLayer(layerId);\n        if (layerId === this.id) {\n            if (this.group.caching) {\n                Object.keys(this.data).forEach(function (dataId) {\n                    var ownStoreObject = _this.data[dataId];\n                    var parentStoreObject = parent[\"lookup\"](dataId);\n                    if (!parentStoreObject) {\n                        _this.delete(dataId);\n                    }\n                    else if (!ownStoreObject) {\n                        _this.group.dirty(dataId, \"__exists\");\n                        Object.keys(parentStoreObject).forEach(function (storeFieldName) {\n                            _this.group.dirty(dataId, storeFieldName);\n                        });\n                    }\n                    else if (ownStoreObject !== parentStoreObject) {\n                        Object.keys(ownStoreObject).forEach(function (storeFieldName) {\n                            if (!(0,_wry_equality__WEBPACK_IMPORTED_MODULE_2__.equal)(ownStoreObject[storeFieldName], parentStoreObject[storeFieldName])) {\n                                _this.group.dirty(dataId, storeFieldName);\n                            }\n                        });\n                    }\n                });\n            }\n            return parent;\n        }\n        if (parent === this.parent)\n            return this;\n        return parent.addLayer(this.id, this.replay);\n    };\n    Layer.prototype.toObject = function () {\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_5__.__assign)({}, this.parent.toObject()), this.data);\n    };\n    Layer.prototype.findChildRefIds = function (dataId) {\n        var fromParent = this.parent.findChildRefIds(dataId);\n        return _helpers_js__WEBPACK_IMPORTED_MODULE_6__.hasOwn.call(this.data, dataId) ? (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_5__.__assign)({}, fromParent), _super.prototype.findChildRefIds.call(this, dataId)) : fromParent;\n    };\n    Layer.prototype.getStorage = function () {\n        var p = this.parent;\n        while (p.parent)\n            p = p.parent;\n        return p.getStorage.apply(p, arguments);\n    };\n    return Layer;\n}(EntityStore));\nvar Stump = (function (_super) {\n    (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__extends)(Stump, _super);\n    function Stump(root) {\n        return _super.call(this, \"EntityStore.Stump\", root, function () { }, new CacheGroup(root.group.caching, root.group)) || this;\n    }\n    Stump.prototype.removeLayer = function () {\n        return this;\n    };\n    Stump.prototype.merge = function () {\n        return this.parent.merge.apply(this.parent, arguments);\n    };\n    return Stump;\n}(Layer));\nfunction storeObjectReconciler(existingObject, incomingObject, property) {\n    var existingValue = existingObject[property];\n    var incomingValue = incomingObject[property];\n    return (0,_wry_equality__WEBPACK_IMPORTED_MODULE_2__.equal)(existingValue, incomingValue) ? existingValue : incomingValue;\n}\nfunction supportsResultCaching(store) {\n    return !!(store instanceof EntityStore && store.group.caching);\n}\n//# sourceMappingURL=entityStore.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvaW5tZW1vcnkvZW50aXR5U3RvcmUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFvRDtBQUNTO0FBQzlCO0FBQ087QUFDTDtBQUNtRztBQUN0RTtBQUM5RDtBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0RUFBNEUsT0FBTyxvRUFBZSxDQUFDLGdFQUFXO0FBQzlHO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixnRUFBVztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGtFQUFhO0FBQ3BDO0FBQ0EsZ0JBQWdCLGdFQUFXO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGtFQUFhO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLCtDQUFRLEdBQUc7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxvREFBVztBQUN2QjtBQUNBLCtCQUErQixvREFBVztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0RBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxvREFBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGdFQUFXO0FBQ3ZCO0FBQ0EsWUFBWSxnRUFBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0Isc0VBQVMsa0VBQWtFLHNFQUFTO0FBQ3RHLHlCQUF5QiwyREFBVTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxtRUFBc0I7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEVBQTRFLDhDQUE4QztBQUMxSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qiw0REFBVztBQUN4QztBQUNBO0FBQ0EsaUVBQWlFO0FBQ2pFO0FBQ0Esa0NBQWtDLGtFQUFhO0FBQy9DLGtCQUFrQix3QkFBd0IsY0FBYyxJQUFJO0FBQzVEO0FBQ0E7QUFDQSxnQ0FBZ0MsbUVBQXNCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0Isb0VBQWUsY0FBYywrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsc0JBQXNCLHlHQUF5RztBQUMvTTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxzREFBc0Q7QUFDMUc7QUFDQSxnRUFBZ0U7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvREFBVztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixvREFBVztBQUM1QjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixvREFBVztBQUN4QztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0Esa0RBQWtELDZDQUFNO0FBQ3hEO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isb0RBQVc7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsMkJBQTJCO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvREFBVztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsZ0VBQVc7QUFDL0I7QUFDQTtBQUNBLG9CQUFvQixvRUFBZTtBQUNuQztBQUNBO0FBQ0EsNEJBQTRCLG9FQUFlO0FBQzNDO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ3NCO0FBQ3ZCO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLDZDQUFHO0FBQ25DLDRCQUE0QiwyQ0FBSSxDQUFDLDhEQUFhO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLG1FQUFzQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxnREFBUztBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQywyQ0FBSSxDQUFDLDhEQUFhO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxDQUFDLGtDQUFrQztBQUNuQztBQUNBLElBQUksZ0RBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLG9EQUFLO0FBQ3RDO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLGVBQWUsb0RBQVcsc0JBQXNCLCtDQUFRLENBQUMsK0NBQVEsR0FBRztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0EsSUFBSSxnREFBUztBQUNiO0FBQ0EsMkVBQTJFO0FBQzNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsV0FBVyxvREFBSztBQUNoQjtBQUNPO0FBQ1A7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9jYWNoZS9pbm1lbW9yeS9lbnRpdHlTdG9yZS5qcz9iZDExIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMsIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9nbG9iYWxzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBkZXAgfSBmcm9tICdvcHRpbWlzbSc7XG5pbXBvcnQgeyBlcXVhbCB9IGZyb20gJ0B3cnkvZXF1YWxpdHknO1xuaW1wb3J0IHsgVHJpZSB9IGZyb20gJ0B3cnkvdHJpZSc7XG5pbXBvcnQgeyBpc1JlZmVyZW5jZSwgbWFrZVJlZmVyZW5jZSwgRGVlcE1lcmdlciwgbWF5YmVEZWVwRnJlZXplLCBjYW5Vc2VXZWFrTWFwLCBpc05vbk51bGxPYmplY3QsIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgaGFzT3duLCBmaWVsZE5hbWVGcm9tU3RvcmVOYW1lIH0gZnJvbSBcIi4vaGVscGVycy5qc1wiO1xudmFyIERFTEVURSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG52YXIgZGVsTW9kaWZpZXIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBERUxFVEU7IH07XG52YXIgSU5WQUxJREFURSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG52YXIgRW50aXR5U3RvcmUgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEVudGl0eVN0b3JlKHBvbGljaWVzLCBncm91cCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLnBvbGljaWVzID0gcG9saWNpZXM7XG4gICAgICAgIHRoaXMuZ3JvdXAgPSBncm91cDtcbiAgICAgICAgdGhpcy5kYXRhID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5yb290SWRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5yZWZzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5nZXRGaWVsZFZhbHVlID0gZnVuY3Rpb24gKG9iamVjdE9yUmVmZXJlbmNlLCBzdG9yZUZpZWxkTmFtZSkgeyByZXR1cm4gbWF5YmVEZWVwRnJlZXplKGlzUmVmZXJlbmNlKG9iamVjdE9yUmVmZXJlbmNlKVxuICAgICAgICAgICAgPyBfdGhpcy5nZXQob2JqZWN0T3JSZWZlcmVuY2UuX19yZWYsIHN0b3JlRmllbGROYW1lKVxuICAgICAgICAgICAgOiBvYmplY3RPclJlZmVyZW5jZSAmJiBvYmplY3RPclJlZmVyZW5jZVtzdG9yZUZpZWxkTmFtZV0pOyB9O1xuICAgICAgICB0aGlzLmNhblJlYWQgPSBmdW5jdGlvbiAob2JqT3JSZWYpIHtcbiAgICAgICAgICAgIHJldHVybiBpc1JlZmVyZW5jZShvYmpPclJlZilcbiAgICAgICAgICAgICAgICA/IF90aGlzLmhhcyhvYmpPclJlZi5fX3JlZilcbiAgICAgICAgICAgICAgICA6IHR5cGVvZiBvYmpPclJlZiA9PT0gXCJvYmplY3RcIjtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50b1JlZmVyZW5jZSA9IGZ1bmN0aW9uIChvYmpPcklkT3JSZWYsIG1lcmdlSW50b1N0b3JlKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9iak9ySWRPclJlZiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYWtlUmVmZXJlbmNlKG9iak9ySWRPclJlZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNSZWZlcmVuY2Uob2JqT3JJZE9yUmVmKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvYmpPcklkT3JSZWY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgaWQgPSBfdGhpcy5wb2xpY2llcy5pZGVudGlmeShvYmpPcklkT3JSZWYpWzBdO1xuICAgICAgICAgICAgaWYgKGlkKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IG1ha2VSZWZlcmVuY2UoaWQpO1xuICAgICAgICAgICAgICAgIGlmIChtZXJnZUludG9TdG9yZSkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5tZXJnZShpZCwgb2JqT3JJZE9yUmVmKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgRW50aXR5U3RvcmUucHJvdG90eXBlLnRvT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oe30sIHRoaXMuZGF0YSk7XG4gICAgfTtcbiAgICBFbnRpdHlTdG9yZS5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKGRhdGFJZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb29rdXAoZGF0YUlkLCB0cnVlKSAhPT0gdm9pZCAwO1xuICAgIH07XG4gICAgRW50aXR5U3RvcmUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChkYXRhSWQsIGZpZWxkTmFtZSkge1xuICAgICAgICB0aGlzLmdyb3VwLmRlcGVuZChkYXRhSWQsIGZpZWxkTmFtZSk7XG4gICAgICAgIGlmIChoYXNPd24uY2FsbCh0aGlzLmRhdGEsIGRhdGFJZCkpIHtcbiAgICAgICAgICAgIHZhciBzdG9yZU9iamVjdCA9IHRoaXMuZGF0YVtkYXRhSWRdO1xuICAgICAgICAgICAgaWYgKHN0b3JlT2JqZWN0ICYmIGhhc093bi5jYWxsKHN0b3JlT2JqZWN0LCBmaWVsZE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JlT2JqZWN0W2ZpZWxkTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkTmFtZSA9PT0gXCJfX3R5cGVuYW1lXCIgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKHRoaXMucG9saWNpZXMucm9vdFR5cGVuYW1lc0J5SWQsIGRhdGFJZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBvbGljaWVzLnJvb3RUeXBlbmFtZXNCeUlkW2RhdGFJZF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBMYXllcikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmdldChkYXRhSWQsIGZpZWxkTmFtZSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEVudGl0eVN0b3JlLnByb3RvdHlwZS5sb29rdXAgPSBmdW5jdGlvbiAoZGF0YUlkLCBkZXBlbmRPbkV4aXN0ZW5jZSkge1xuICAgICAgICBpZiAoZGVwZW5kT25FeGlzdGVuY2UpXG4gICAgICAgICAgICB0aGlzLmdyb3VwLmRlcGVuZChkYXRhSWQsIFwiX19leGlzdHNcIik7XG4gICAgICAgIGlmIChoYXNPd24uY2FsbCh0aGlzLmRhdGEsIGRhdGFJZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFbZGF0YUlkXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIExheWVyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQubG9va3VwKGRhdGFJZCwgZGVwZW5kT25FeGlzdGVuY2UpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBvbGljaWVzLnJvb3RUeXBlbmFtZXNCeUlkW2RhdGFJZF0pIHtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBFbnRpdHlTdG9yZS5wcm90b3R5cGUubWVyZ2UgPSBmdW5jdGlvbiAob2xkZXIsIG5ld2VyKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBkYXRhSWQ7XG4gICAgICAgIGlmIChpc1JlZmVyZW5jZShvbGRlcikpXG4gICAgICAgICAgICBvbGRlciA9IG9sZGVyLl9fcmVmO1xuICAgICAgICBpZiAoaXNSZWZlcmVuY2UobmV3ZXIpKVxuICAgICAgICAgICAgbmV3ZXIgPSBuZXdlci5fX3JlZjtcbiAgICAgICAgdmFyIGV4aXN0aW5nID0gdHlwZW9mIG9sZGVyID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICA/IHRoaXMubG9va3VwKGRhdGFJZCA9IG9sZGVyKVxuICAgICAgICAgICAgOiBvbGRlcjtcbiAgICAgICAgdmFyIGluY29taW5nID0gdHlwZW9mIG5ld2VyID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICA/IHRoaXMubG9va3VwKGRhdGFJZCA9IG5ld2VyKVxuICAgICAgICAgICAgOiBuZXdlcjtcbiAgICAgICAgaWYgKCFpbmNvbWluZylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgX19ERVZfXyA/IGludmFyaWFudCh0eXBlb2YgZGF0YUlkID09PSBcInN0cmluZ1wiLCBcInN0b3JlLm1lcmdlIGV4cGVjdHMgYSBzdHJpbmcgSURcIikgOiBpbnZhcmlhbnQodHlwZW9mIGRhdGFJZCA9PT0gXCJzdHJpbmdcIiwgMSk7XG4gICAgICAgIHZhciBtZXJnZWQgPSBuZXcgRGVlcE1lcmdlcihzdG9yZU9iamVjdFJlY29uY2lsZXIpLm1lcmdlKGV4aXN0aW5nLCBpbmNvbWluZyk7XG4gICAgICAgIHRoaXMuZGF0YVtkYXRhSWRdID0gbWVyZ2VkO1xuICAgICAgICBpZiAobWVyZ2VkICE9PSBleGlzdGluZykge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMucmVmc1tkYXRhSWRdO1xuICAgICAgICAgICAgaWYgKHRoaXMuZ3JvdXAuY2FjaGluZykge1xuICAgICAgICAgICAgICAgIHZhciBmaWVsZHNUb0RpcnR5XzEgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmcpXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkc1RvRGlydHlfMS5fX2V4aXN0cyA9IDE7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoaW5jb21pbmcpLmZvckVhY2goZnVuY3Rpb24gKHN0b3JlRmllbGROYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmcgfHwgZXhpc3Rpbmdbc3RvcmVGaWVsZE5hbWVdICE9PSBtZXJnZWRbc3RvcmVGaWVsZE5hbWVdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNUb0RpcnR5XzFbc3RvcmVGaWVsZE5hbWVdID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaWVsZE5hbWUgPSBmaWVsZE5hbWVGcm9tU3RvcmVOYW1lKHN0b3JlRmllbGROYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZE5hbWUgIT09IHN0b3JlRmllbGROYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIV90aGlzLnBvbGljaWVzLmhhc0tleUFyZ3MobWVyZ2VkLl9fdHlwZW5hbWUsIGZpZWxkTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNUb0RpcnR5XzFbZmllbGROYW1lXSA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVyZ2VkW3N0b3JlRmllbGROYW1lXSA9PT0gdm9pZCAwICYmICEoX3RoaXMgaW5zdGFuY2VvZiBMYXllcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgbWVyZ2VkW3N0b3JlRmllbGROYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZHNUb0RpcnR5XzEuX190eXBlbmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAhKGV4aXN0aW5nICYmIGV4aXN0aW5nLl9fdHlwZW5hbWUpICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9saWNpZXMucm9vdFR5cGVuYW1lc0J5SWRbZGF0YUlkXSA9PT0gbWVyZ2VkLl9fdHlwZW5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZpZWxkc1RvRGlydHlfMS5fX3R5cGVuYW1lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhmaWVsZHNUb0RpcnR5XzEpLmZvckVhY2goZnVuY3Rpb24gKGZpZWxkTmFtZSkgeyByZXR1cm4gX3RoaXMuZ3JvdXAuZGlydHkoZGF0YUlkLCBmaWVsZE5hbWUpOyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgRW50aXR5U3RvcmUucHJvdG90eXBlLm1vZGlmeSA9IGZ1bmN0aW9uIChkYXRhSWQsIGZpZWxkcykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgc3RvcmVPYmplY3QgPSB0aGlzLmxvb2t1cChkYXRhSWQpO1xuICAgICAgICBpZiAoc3RvcmVPYmplY3QpIHtcbiAgICAgICAgICAgIHZhciBjaGFuZ2VkRmllbGRzXzEgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgICAgdmFyIG5lZWRUb01lcmdlXzEgPSBmYWxzZTtcbiAgICAgICAgICAgIHZhciBhbGxEZWxldGVkXzEgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIHNoYXJlZERldGFpbHNfMSA9IHtcbiAgICAgICAgICAgICAgICBERUxFVEU6IERFTEVURSxcbiAgICAgICAgICAgICAgICBJTlZBTElEQVRFOiBJTlZBTElEQVRFLFxuICAgICAgICAgICAgICAgIGlzUmVmZXJlbmNlOiBpc1JlZmVyZW5jZSxcbiAgICAgICAgICAgICAgICB0b1JlZmVyZW5jZTogdGhpcy50b1JlZmVyZW5jZSxcbiAgICAgICAgICAgICAgICBjYW5SZWFkOiB0aGlzLmNhblJlYWQsXG4gICAgICAgICAgICAgICAgcmVhZEZpZWxkOiBmdW5jdGlvbiAoZmllbGROYW1lT3JPcHRpb25zLCBmcm9tKSB7IHJldHVybiBfdGhpcy5wb2xpY2llcy5yZWFkRmllbGQodHlwZW9mIGZpZWxkTmFtZU9yT3B0aW9ucyA9PT0gXCJzdHJpbmdcIiA/IHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lOiBmaWVsZE5hbWVPck9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGZyb206IGZyb20gfHwgbWFrZVJlZmVyZW5jZShkYXRhSWQpLFxuICAgICAgICAgICAgICAgIH0gOiBmaWVsZE5hbWVPck9wdGlvbnMsIHsgc3RvcmU6IF90aGlzIH0pOyB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHN0b3JlT2JqZWN0KS5mb3JFYWNoKGZ1bmN0aW9uIChzdG9yZUZpZWxkTmFtZSkge1xuICAgICAgICAgICAgICAgIHZhciBmaWVsZE5hbWUgPSBmaWVsZE5hbWVGcm9tU3RvcmVOYW1lKHN0b3JlRmllbGROYW1lKTtcbiAgICAgICAgICAgICAgICB2YXIgZmllbGRWYWx1ZSA9IHN0b3JlT2JqZWN0W3N0b3JlRmllbGROYW1lXTtcbiAgICAgICAgICAgICAgICBpZiAoZmllbGRWYWx1ZSA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgdmFyIG1vZGlmeSA9IHR5cGVvZiBmaWVsZHMgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICA/IGZpZWxkc1xuICAgICAgICAgICAgICAgICAgICA6IGZpZWxkc1tzdG9yZUZpZWxkTmFtZV0gfHwgZmllbGRzW2ZpZWxkTmFtZV07XG4gICAgICAgICAgICAgICAgaWYgKG1vZGlmeSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmV3VmFsdWUgPSBtb2RpZnkgPT09IGRlbE1vZGlmaWVyID8gREVMRVRFIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmeShtYXliZURlZXBGcmVlemUoZmllbGRWYWx1ZSksIF9fYXNzaWduKF9fYXNzaWduKHt9LCBzaGFyZWREZXRhaWxzXzEpLCB7IGZpZWxkTmFtZTogZmllbGROYW1lLCBzdG9yZUZpZWxkTmFtZTogc3RvcmVGaWVsZE5hbWUsIHN0b3JhZ2U6IF90aGlzLmdldFN0b3JhZ2UoZGF0YUlkLCBzdG9yZUZpZWxkTmFtZSkgfSkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUgPT09IElOVkFMSURBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLmdyb3VwLmRpcnR5KGRhdGFJZCwgc3RvcmVGaWVsZE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlID09PSBERUxFVEUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUgIT09IGZpZWxkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkRmllbGRzXzFbc3RvcmVGaWVsZE5hbWVdID0gbmV3VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZFRvTWVyZ2VfMSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRWYWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmaWVsZFZhbHVlICE9PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgICAgICAgYWxsRGVsZXRlZF8xID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAobmVlZFRvTWVyZ2VfMSkge1xuICAgICAgICAgICAgICAgIHRoaXMubWVyZ2UoZGF0YUlkLCBjaGFuZ2VkRmllbGRzXzEpO1xuICAgICAgICAgICAgICAgIGlmIChhbGxEZWxldGVkXzEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBMYXllcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhW2RhdGFJZF0gPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5kYXRhW2RhdGFJZF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncm91cC5kaXJ0eShkYXRhSWQsIFwiX19leGlzdHNcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIEVudGl0eVN0b3JlLnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiAoZGF0YUlkLCBmaWVsZE5hbWUsIGFyZ3MpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgc3RvcmVPYmplY3QgPSB0aGlzLmxvb2t1cChkYXRhSWQpO1xuICAgICAgICBpZiAoc3RvcmVPYmplY3QpIHtcbiAgICAgICAgICAgIHZhciB0eXBlbmFtZSA9IHRoaXMuZ2V0RmllbGRWYWx1ZShzdG9yZU9iamVjdCwgXCJfX3R5cGVuYW1lXCIpO1xuICAgICAgICAgICAgdmFyIHN0b3JlRmllbGROYW1lID0gZmllbGROYW1lICYmIGFyZ3NcbiAgICAgICAgICAgICAgICA/IHRoaXMucG9saWNpZXMuZ2V0U3RvcmVGaWVsZE5hbWUoeyB0eXBlbmFtZTogdHlwZW5hbWUsIGZpZWxkTmFtZTogZmllbGROYW1lLCBhcmdzOiBhcmdzIH0pXG4gICAgICAgICAgICAgICAgOiBmaWVsZE5hbWU7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tb2RpZnkoZGF0YUlkLCBzdG9yZUZpZWxkTmFtZSA/IChfYSA9IHt9LFxuICAgICAgICAgICAgICAgIF9hW3N0b3JlRmllbGROYW1lXSA9IGRlbE1vZGlmaWVyLFxuICAgICAgICAgICAgICAgIF9hKSA6IGRlbE1vZGlmaWVyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBFbnRpdHlTdG9yZS5wcm90b3R5cGUuZXZpY3QgPSBmdW5jdGlvbiAob3B0aW9ucywgbGltaXQpIHtcbiAgICAgICAgdmFyIGV2aWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKG9wdGlvbnMuaWQpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbCh0aGlzLmRhdGEsIG9wdGlvbnMuaWQpKSB7XG4gICAgICAgICAgICAgICAgZXZpY3RlZCA9IHRoaXMuZGVsZXRlKG9wdGlvbnMuaWQsIG9wdGlvbnMuZmllbGROYW1lLCBvcHRpb25zLmFyZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBMYXllciAmJiB0aGlzICE9PSBsaW1pdCkge1xuICAgICAgICAgICAgICAgIGV2aWN0ZWQgPSB0aGlzLnBhcmVudC5ldmljdChvcHRpb25zLCBsaW1pdCkgfHwgZXZpY3RlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmZpZWxkTmFtZSB8fCBldmljdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cC5kaXJ0eShvcHRpb25zLmlkLCBvcHRpb25zLmZpZWxkTmFtZSB8fCBcIl9fZXhpc3RzXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBldmljdGVkO1xuICAgIH07XG4gICAgRW50aXR5U3RvcmUucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnJlcGxhY2UobnVsbCk7XG4gICAgfTtcbiAgICBFbnRpdHlTdG9yZS5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIG9iaiA9IHRoaXMudG9PYmplY3QoKTtcbiAgICAgICAgdmFyIGV4dHJhUm9vdElkcyA9IFtdO1xuICAgICAgICB0aGlzLmdldFJvb3RJZFNldCgpLmZvckVhY2goZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgICAgICBpZiAoIWhhc093bi5jYWxsKF90aGlzLnBvbGljaWVzLnJvb3RUeXBlbmFtZXNCeUlkLCBpZCkpIHtcbiAgICAgICAgICAgICAgICBleHRyYVJvb3RJZHMucHVzaChpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZXh0cmFSb290SWRzLmxlbmd0aCkge1xuICAgICAgICAgICAgb2JqLl9fTUVUQSA9IHsgZXh0cmFSb290SWRzOiBleHRyYVJvb3RJZHMuc29ydCgpIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9O1xuICAgIEVudGl0eVN0b3JlLnByb3RvdHlwZS5yZXBsYWNlID0gZnVuY3Rpb24gKG5ld0RhdGEpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5kYXRhKS5mb3JFYWNoKGZ1bmN0aW9uIChkYXRhSWQpIHtcbiAgICAgICAgICAgIGlmICghKG5ld0RhdGEgJiYgaGFzT3duLmNhbGwobmV3RGF0YSwgZGF0YUlkKSkpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5kZWxldGUoZGF0YUlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChuZXdEYXRhKSB7XG4gICAgICAgICAgICB2YXIgX19NRVRBID0gbmV3RGF0YS5fX01FVEEsIHJlc3RfMSA9IF9fcmVzdChuZXdEYXRhLCBbXCJfX01FVEFcIl0pO1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzdF8xKS5mb3JFYWNoKGZ1bmN0aW9uIChkYXRhSWQpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5tZXJnZShkYXRhSWQsIHJlc3RfMVtkYXRhSWRdKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKF9fTUVUQSkge1xuICAgICAgICAgICAgICAgIF9fTUVUQS5leHRyYVJvb3RJZHMuZm9yRWFjaCh0aGlzLnJldGFpbiwgdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEVudGl0eVN0b3JlLnByb3RvdHlwZS5yZXRhaW4gPSBmdW5jdGlvbiAocm9vdElkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvb3RJZHNbcm9vdElkXSA9ICh0aGlzLnJvb3RJZHNbcm9vdElkXSB8fCAwKSArIDE7XG4gICAgfTtcbiAgICBFbnRpdHlTdG9yZS5wcm90b3R5cGUucmVsZWFzZSA9IGZ1bmN0aW9uIChyb290SWQpIHtcbiAgICAgICAgaWYgKHRoaXMucm9vdElkc1tyb290SWRdID4gMCkge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gLS10aGlzLnJvb3RJZHNbcm9vdElkXTtcbiAgICAgICAgICAgIGlmICghY291bnQpXG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMucm9vdElkc1tyb290SWRdO1xuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgIH07XG4gICAgRW50aXR5U3RvcmUucHJvdG90eXBlLmdldFJvb3RJZFNldCA9IGZ1bmN0aW9uIChpZHMpIHtcbiAgICAgICAgaWYgKGlkcyA9PT0gdm9pZCAwKSB7IGlkcyA9IG5ldyBTZXQoKTsgfVxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnJvb3RJZHMpLmZvckVhY2goaWRzLmFkZCwgaWRzKTtcbiAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBMYXllcikge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQuZ2V0Um9vdElkU2V0KGlkcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnBvbGljaWVzLnJvb3RUeXBlbmFtZXNCeUlkKS5mb3JFYWNoKGlkcy5hZGQsIGlkcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlkcztcbiAgICB9O1xuICAgIEVudGl0eVN0b3JlLnByb3RvdHlwZS5nYyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGlkcyA9IHRoaXMuZ2V0Um9vdElkU2V0KCk7XG4gICAgICAgIHZhciBzbmFwc2hvdCA9IHRoaXMudG9PYmplY3QoKTtcbiAgICAgICAgaWRzLmZvckVhY2goZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoc25hcHNob3QsIGlkKSkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKF90aGlzLmZpbmRDaGlsZFJlZklkcyhpZCkpLmZvckVhY2goaWRzLmFkZCwgaWRzKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgc25hcHNob3RbaWRdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGlkc1RvUmVtb3ZlID0gT2JqZWN0LmtleXMoc25hcHNob3QpO1xuICAgICAgICBpZiAoaWRzVG9SZW1vdmUubGVuZ3RoKSB7XG4gICAgICAgICAgICB2YXIgcm9vdF8xID0gdGhpcztcbiAgICAgICAgICAgIHdoaWxlIChyb290XzEgaW5zdGFuY2VvZiBMYXllcilcbiAgICAgICAgICAgICAgICByb290XzEgPSByb290XzEucGFyZW50O1xuICAgICAgICAgICAgaWRzVG9SZW1vdmUuZm9yRWFjaChmdW5jdGlvbiAoaWQpIHsgcmV0dXJuIHJvb3RfMS5kZWxldGUoaWQpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaWRzVG9SZW1vdmU7XG4gICAgfTtcbiAgICBFbnRpdHlTdG9yZS5wcm90b3R5cGUuZmluZENoaWxkUmVmSWRzID0gZnVuY3Rpb24gKGRhdGFJZCkge1xuICAgICAgICBpZiAoIWhhc093bi5jYWxsKHRoaXMucmVmcywgZGF0YUlkKSkge1xuICAgICAgICAgICAgdmFyIGZvdW5kXzEgPSB0aGlzLnJlZnNbZGF0YUlkXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgICB2YXIgcm9vdCA9IHRoaXMuZGF0YVtkYXRhSWRdO1xuICAgICAgICAgICAgaWYgKCFyb290KVxuICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZF8xO1xuICAgICAgICAgICAgdmFyIHdvcmtTZXRfMSA9IG5ldyBTZXQoW3Jvb3RdKTtcbiAgICAgICAgICAgIHdvcmtTZXRfMS5mb3JFYWNoKGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNSZWZlcmVuY2Uob2JqKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3VuZF8xW29iai5fX3JlZl0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNOb25OdWxsT2JqZWN0KG9iaikpIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZCA9IG9ialtrZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTm9uTnVsbE9iamVjdChjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrU2V0XzEuYWRkKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVmc1tkYXRhSWRdO1xuICAgIH07XG4gICAgRW50aXR5U3RvcmUucHJvdG90eXBlLm1ha2VDYWNoZUtleSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAua2V5TWFrZXIubG9va3VwQXJyYXkoYXJndW1lbnRzKTtcbiAgICB9O1xuICAgIHJldHVybiBFbnRpdHlTdG9yZTtcbn0oKSk7XG5leHBvcnQgeyBFbnRpdHlTdG9yZSB9O1xudmFyIENhY2hlR3JvdXAgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIENhY2hlR3JvdXAoY2FjaGluZywgcGFyZW50KSB7XG4gICAgICAgIGlmIChwYXJlbnQgPT09IHZvaWQgMCkgeyBwYXJlbnQgPSBudWxsOyB9XG4gICAgICAgIHRoaXMuY2FjaGluZyA9IGNhY2hpbmc7XG4gICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgICAgICB0aGlzLmQgPSBudWxsO1xuICAgICAgICB0aGlzLnJlc2V0Q2FjaGluZygpO1xuICAgIH1cbiAgICBDYWNoZUdyb3VwLnByb3RvdHlwZS5yZXNldENhY2hpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuZCA9IHRoaXMuY2FjaGluZyA/IGRlcCgpIDogbnVsbDtcbiAgICAgICAgdGhpcy5rZXlNYWtlciA9IG5ldyBUcmllKGNhblVzZVdlYWtNYXApO1xuICAgIH07XG4gICAgQ2FjaGVHcm91cC5wcm90b3R5cGUuZGVwZW5kID0gZnVuY3Rpb24gKGRhdGFJZCwgc3RvcmVGaWVsZE5hbWUpIHtcbiAgICAgICAgaWYgKHRoaXMuZCkge1xuICAgICAgICAgICAgdGhpcy5kKG1ha2VEZXBLZXkoZGF0YUlkLCBzdG9yZUZpZWxkTmFtZSkpO1xuICAgICAgICAgICAgdmFyIGZpZWxkTmFtZSA9IGZpZWxkTmFtZUZyb21TdG9yZU5hbWUoc3RvcmVGaWVsZE5hbWUpO1xuICAgICAgICAgICAgaWYgKGZpZWxkTmFtZSAhPT0gc3RvcmVGaWVsZE5hbWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmQobWFrZURlcEtleShkYXRhSWQsIGZpZWxkTmFtZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuZGVwZW5kKGRhdGFJZCwgc3RvcmVGaWVsZE5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBDYWNoZUdyb3VwLnByb3RvdHlwZS5kaXJ0eSA9IGZ1bmN0aW9uIChkYXRhSWQsIHN0b3JlRmllbGROYW1lKSB7XG4gICAgICAgIGlmICh0aGlzLmQpIHtcbiAgICAgICAgICAgIHRoaXMuZC5kaXJ0eShtYWtlRGVwS2V5KGRhdGFJZCwgc3RvcmVGaWVsZE5hbWUpLCBzdG9yZUZpZWxkTmFtZSA9PT0gXCJfX2V4aXN0c1wiID8gXCJmb3JnZXRcIiA6IFwic2V0RGlydHlcIik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBDYWNoZUdyb3VwO1xufSgpKTtcbmZ1bmN0aW9uIG1ha2VEZXBLZXkoZGF0YUlkLCBzdG9yZUZpZWxkTmFtZSkge1xuICAgIHJldHVybiBzdG9yZUZpZWxkTmFtZSArICcjJyArIGRhdGFJZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtYXliZURlcGVuZE9uRXhpc3RlbmNlT2ZFbnRpdHkoc3RvcmUsIGVudGl0eUlkKSB7XG4gICAgaWYgKHN1cHBvcnRzUmVzdWx0Q2FjaGluZyhzdG9yZSkpIHtcbiAgICAgICAgc3RvcmUuZ3JvdXAuZGVwZW5kKGVudGl0eUlkLCBcIl9fZXhpc3RzXCIpO1xuICAgIH1cbn1cbihmdW5jdGlvbiAoRW50aXR5U3RvcmUpIHtcbiAgICB2YXIgUm9vdCA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgICAgIF9fZXh0ZW5kcyhSb290LCBfc3VwZXIpO1xuICAgICAgICBmdW5jdGlvbiBSb290KF9hKSB7XG4gICAgICAgICAgICB2YXIgcG9saWNpZXMgPSBfYS5wb2xpY2llcywgX2IgPSBfYS5yZXN1bHRDYWNoaW5nLCByZXN1bHRDYWNoaW5nID0gX2IgPT09IHZvaWQgMCA/IHRydWUgOiBfYiwgc2VlZCA9IF9hLnNlZWQ7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwb2xpY2llcywgbmV3IENhY2hlR3JvdXAocmVzdWx0Q2FjaGluZykpIHx8IHRoaXM7XG4gICAgICAgICAgICBfdGhpcy5zdHVtcCA9IG5ldyBTdHVtcChfdGhpcyk7XG4gICAgICAgICAgICBfdGhpcy5zdG9yYWdlVHJpZSA9IG5ldyBUcmllKGNhblVzZVdlYWtNYXApO1xuICAgICAgICAgICAgaWYgKHNlZWQpXG4gICAgICAgICAgICAgICAgX3RoaXMucmVwbGFjZShzZWVkKTtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcztcbiAgICAgICAgfVxuICAgICAgICBSb290LnByb3RvdHlwZS5hZGRMYXllciA9IGZ1bmN0aW9uIChsYXllcklkLCByZXBsYXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0dW1wLmFkZExheWVyKGxheWVySWQsIHJlcGxheSk7XG4gICAgICAgIH07XG4gICAgICAgIFJvb3QucHJvdG90eXBlLnJlbW92ZUxheWVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG4gICAgICAgIFJvb3QucHJvdG90eXBlLmdldFN0b3JhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlVHJpZS5sb29rdXBBcnJheShhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gUm9vdDtcbiAgICB9KEVudGl0eVN0b3JlKSk7XG4gICAgRW50aXR5U3RvcmUuUm9vdCA9IFJvb3Q7XG59KShFbnRpdHlTdG9yZSB8fCAoRW50aXR5U3RvcmUgPSB7fSkpO1xudmFyIExheWVyID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTGF5ZXIsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTGF5ZXIoaWQsIHBhcmVudCwgcmVwbGF5LCBncm91cCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBwYXJlbnQucG9saWNpZXMsIGdyb3VwKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5pZCA9IGlkO1xuICAgICAgICBfdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIF90aGlzLnJlcGxheSA9IHJlcGxheTtcbiAgICAgICAgX3RoaXMuZ3JvdXAgPSBncm91cDtcbiAgICAgICAgcmVwbGF5KF90aGlzKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBMYXllci5wcm90b3R5cGUuYWRkTGF5ZXIgPSBmdW5jdGlvbiAobGF5ZXJJZCwgcmVwbGF5KSB7XG4gICAgICAgIHJldHVybiBuZXcgTGF5ZXIobGF5ZXJJZCwgdGhpcywgcmVwbGF5LCB0aGlzLmdyb3VwKTtcbiAgICB9O1xuICAgIExheWVyLnByb3RvdHlwZS5yZW1vdmVMYXllciA9IGZ1bmN0aW9uIChsYXllcklkKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLnBhcmVudC5yZW1vdmVMYXllcihsYXllcklkKTtcbiAgICAgICAgaWYgKGxheWVySWQgPT09IHRoaXMuaWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyb3VwLmNhY2hpbmcpIHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmRhdGEpLmZvckVhY2goZnVuY3Rpb24gKGRhdGFJZCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgb3duU3RvcmVPYmplY3QgPSBfdGhpcy5kYXRhW2RhdGFJZF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBwYXJlbnRTdG9yZU9iamVjdCA9IHBhcmVudFtcImxvb2t1cFwiXShkYXRhSWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudFN0b3JlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5kZWxldGUoZGF0YUlkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghb3duU3RvcmVPYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLmdyb3VwLmRpcnR5KGRhdGFJZCwgXCJfX2V4aXN0c1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHBhcmVudFN0b3JlT2JqZWN0KS5mb3JFYWNoKGZ1bmN0aW9uIChzdG9yZUZpZWxkTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLmdyb3VwLmRpcnR5KGRhdGFJZCwgc3RvcmVGaWVsZE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAob3duU3RvcmVPYmplY3QgIT09IHBhcmVudFN0b3JlT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhvd25TdG9yZU9iamVjdCkuZm9yRWFjaChmdW5jdGlvbiAoc3RvcmVGaWVsZE5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVxdWFsKG93blN0b3JlT2JqZWN0W3N0b3JlRmllbGROYW1lXSwgcGFyZW50U3RvcmVPYmplY3Rbc3RvcmVGaWVsZE5hbWVdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5ncm91cC5kaXJ0eShkYXRhSWQsIHN0b3JlRmllbGROYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhcmVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyZW50ID09PSB0aGlzLnBhcmVudClcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICByZXR1cm4gcGFyZW50LmFkZExheWVyKHRoaXMuaWQsIHRoaXMucmVwbGF5KTtcbiAgICB9O1xuICAgIExheWVyLnByb3RvdHlwZS50b09iamVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCB0aGlzLnBhcmVudC50b09iamVjdCgpKSwgdGhpcy5kYXRhKTtcbiAgICB9O1xuICAgIExheWVyLnByb3RvdHlwZS5maW5kQ2hpbGRSZWZJZHMgPSBmdW5jdGlvbiAoZGF0YUlkKSB7XG4gICAgICAgIHZhciBmcm9tUGFyZW50ID0gdGhpcy5wYXJlbnQuZmluZENoaWxkUmVmSWRzKGRhdGFJZCk7XG4gICAgICAgIHJldHVybiBoYXNPd24uY2FsbCh0aGlzLmRhdGEsIGRhdGFJZCkgPyBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZnJvbVBhcmVudCksIF9zdXBlci5wcm90b3R5cGUuZmluZENoaWxkUmVmSWRzLmNhbGwodGhpcywgZGF0YUlkKSkgOiBmcm9tUGFyZW50O1xuICAgIH07XG4gICAgTGF5ZXIucHJvdG90eXBlLmdldFN0b3JhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwID0gdGhpcy5wYXJlbnQ7XG4gICAgICAgIHdoaWxlIChwLnBhcmVudClcbiAgICAgICAgICAgIHAgPSBwLnBhcmVudDtcbiAgICAgICAgcmV0dXJuIHAuZ2V0U3RvcmFnZS5hcHBseShwLCBhcmd1bWVudHMpO1xuICAgIH07XG4gICAgcmV0dXJuIExheWVyO1xufShFbnRpdHlTdG9yZSkpO1xudmFyIFN0dW1wID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoU3R1bXAsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU3R1bXAocm9vdCkge1xuICAgICAgICByZXR1cm4gX3N1cGVyLmNhbGwodGhpcywgXCJFbnRpdHlTdG9yZS5TdHVtcFwiLCByb290LCBmdW5jdGlvbiAoKSB7IH0sIG5ldyBDYWNoZUdyb3VwKHJvb3QuZ3JvdXAuY2FjaGluZywgcm9vdC5ncm91cCkpIHx8IHRoaXM7XG4gICAgfVxuICAgIFN0dW1wLnByb3RvdHlwZS5yZW1vdmVMYXllciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBTdHVtcC5wcm90b3R5cGUubWVyZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5tZXJnZS5hcHBseSh0aGlzLnBhcmVudCwgYXJndW1lbnRzKTtcbiAgICB9O1xuICAgIHJldHVybiBTdHVtcDtcbn0oTGF5ZXIpKTtcbmZ1bmN0aW9uIHN0b3JlT2JqZWN0UmVjb25jaWxlcihleGlzdGluZ09iamVjdCwgaW5jb21pbmdPYmplY3QsIHByb3BlcnR5KSB7XG4gICAgdmFyIGV4aXN0aW5nVmFsdWUgPSBleGlzdGluZ09iamVjdFtwcm9wZXJ0eV07XG4gICAgdmFyIGluY29taW5nVmFsdWUgPSBpbmNvbWluZ09iamVjdFtwcm9wZXJ0eV07XG4gICAgcmV0dXJuIGVxdWFsKGV4aXN0aW5nVmFsdWUsIGluY29taW5nVmFsdWUpID8gZXhpc3RpbmdWYWx1ZSA6IGluY29taW5nVmFsdWU7XG59XG5leHBvcnQgZnVuY3Rpb24gc3VwcG9ydHNSZXN1bHRDYWNoaW5nKHN0b3JlKSB7XG4gICAgcmV0dXJuICEhKHN0b3JlIGluc3RhbmNlb2YgRW50aXR5U3RvcmUgJiYgc3RvcmUuZ3JvdXAuY2FjaGluZyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbnRpdHlTdG9yZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/cache/inmemory/entityStore.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/cache/inmemory/helpers.js":
/*!***************************************************************!*\
  !*** ./node_modules/@apollo/client/cache/inmemory/helpers.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TypeOrFieldNameRegExp\": function() { return /* binding */ TypeOrFieldNameRegExp; },\n/* harmony export */   \"defaultDataIdFromObject\": function() { return /* binding */ defaultDataIdFromObject; },\n/* harmony export */   \"fieldNameFromStoreName\": function() { return /* binding */ fieldNameFromStoreName; },\n/* harmony export */   \"getTypenameFromStoreObject\": function() { return /* binding */ getTypenameFromStoreObject; },\n/* harmony export */   \"hasOwn\": function() { return /* binding */ hasOwn; },\n/* harmony export */   \"isArray\": function() { return /* binding */ isArray; },\n/* harmony export */   \"makeProcessedFieldsMerger\": function() { return /* binding */ makeProcessedFieldsMerger; },\n/* harmony export */   \"normalizeConfig\": function() { return /* binding */ normalizeConfig; },\n/* harmony export */   \"selectionSetMatchesResult\": function() { return /* binding */ selectionSetMatchesResult; },\n/* harmony export */   \"shouldCanonizeResults\": function() { return /* binding */ shouldCanonizeResults; },\n/* harmony export */   \"storeValueIsStoreObject\": function() { return /* binding */ storeValueIsStoreObject; }\n/* harmony export */ });\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nfunction defaultDataIdFromObject(_a, context) {\n    var __typename = _a.__typename, id = _a.id, _id = _a._id;\n    if (typeof __typename === \"string\") {\n        if (context) {\n            context.keyObject =\n                id !== void 0 ? { id: id } :\n                    _id !== void 0 ? { _id: _id } :\n                        void 0;\n        }\n        if (id === void 0)\n            id = _id;\n        if (id !== void 0) {\n            return \"\".concat(__typename, \":\").concat((typeof id === \"number\" ||\n                typeof id === \"string\") ? id : JSON.stringify(id));\n        }\n    }\n}\nvar defaultConfig = {\n    dataIdFromObject: defaultDataIdFromObject,\n    addTypename: true,\n    resultCaching: true,\n    canonizeResults: false,\n};\nfunction normalizeConfig(config) {\n    return (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_0__.compact)(defaultConfig, config);\n}\nfunction shouldCanonizeResults(config) {\n    var value = config.canonizeResults;\n    return value === void 0 ? defaultConfig.canonizeResults : value;\n}\nfunction getTypenameFromStoreObject(store, objectOrReference) {\n    return (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_0__.isReference)(objectOrReference)\n        ? store.get(objectOrReference.__ref, \"__typename\")\n        : objectOrReference && objectOrReference.__typename;\n}\nvar TypeOrFieldNameRegExp = /^[_a-z][_0-9a-z]*/i;\nfunction fieldNameFromStoreName(storeFieldName) {\n    var match = storeFieldName.match(TypeOrFieldNameRegExp);\n    return match ? match[0] : storeFieldName;\n}\nfunction selectionSetMatchesResult(selectionSet, result, variables) {\n    if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_0__.isNonNullObject)(result)) {\n        return isArray(result)\n            ? result.every(function (item) { return selectionSetMatchesResult(selectionSet, item, variables); })\n            : selectionSet.selections.every(function (field) {\n                if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_0__.isField)(field) && (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_0__.shouldInclude)(field, variables)) {\n                    var key = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_0__.resultKeyNameFromField)(field);\n                    return hasOwn.call(result, key) &&\n                        (!field.selectionSet ||\n                            selectionSetMatchesResult(field.selectionSet, result[key], variables));\n                }\n                return true;\n            });\n    }\n    return false;\n}\nfunction storeValueIsStoreObject(value) {\n    return (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_0__.isNonNullObject)(value) &&\n        !(0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_0__.isReference)(value) &&\n        !isArray(value);\n}\nfunction makeProcessedFieldsMerger() {\n    return new _utilities_index_js__WEBPACK_IMPORTED_MODULE_0__.DeepMerger;\n}\nvar isArray = function (a) { return Array.isArray(a); };\n//# sourceMappingURL=helpers.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvaW5tZW1vcnkvaGVscGVycy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBOEk7QUFDdkk7QUFDQTtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLFNBQVM7QUFDM0MsdUNBQXVDLFdBQVc7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLFdBQVcsNERBQU87QUFDbEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsV0FBVyxnRUFBVztBQUN0QjtBQUNBO0FBQ0E7QUFDTztBQUNBO0FBQ1A7QUFDQTtBQUNBO0FBQ087QUFDUCxRQUFRLG9FQUFlO0FBQ3ZCO0FBQ0EsNkNBQTZDLGtFQUFrRTtBQUMvRztBQUNBLG9CQUFvQiw0REFBTyxXQUFXLGtFQUFhO0FBQ25ELDhCQUE4QiwyRUFBc0I7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDTztBQUNQLFdBQVcsb0VBQWU7QUFDMUIsU0FBUyxnRUFBVztBQUNwQjtBQUNBO0FBQ087QUFDUCxlQUFlLDJEQUFVO0FBQ3pCO0FBQ08sNkJBQTZCO0FBQ3BDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9jYWNoZS9pbm1lbW9yeS9oZWxwZXJzLmpzP2Q2NzQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNSZWZlcmVuY2UsIGlzRmllbGQsIERlZXBNZXJnZXIsIHJlc3VsdEtleU5hbWVGcm9tRmllbGQsIHNob3VsZEluY2x1ZGUsIGlzTm9uTnVsbE9iamVjdCwgY29tcGFjdCwgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2luZGV4LmpzXCI7XG5leHBvcnQgdmFyIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdERhdGFJZEZyb21PYmplY3QoX2EsIGNvbnRleHQpIHtcbiAgICB2YXIgX190eXBlbmFtZSA9IF9hLl9fdHlwZW5hbWUsIGlkID0gX2EuaWQsIF9pZCA9IF9hLl9pZDtcbiAgICBpZiAodHlwZW9mIF9fdHlwZW5hbWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaWYgKGNvbnRleHQpIHtcbiAgICAgICAgICAgIGNvbnRleHQua2V5T2JqZWN0ID1cbiAgICAgICAgICAgICAgICBpZCAhPT0gdm9pZCAwID8geyBpZDogaWQgfSA6XG4gICAgICAgICAgICAgICAgICAgIF9pZCAhPT0gdm9pZCAwID8geyBfaWQ6IF9pZCB9IDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaWQgPT09IHZvaWQgMClcbiAgICAgICAgICAgIGlkID0gX2lkO1xuICAgICAgICBpZiAoaWQgIT09IHZvaWQgMCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KF9fdHlwZW5hbWUsIFwiOlwiKS5jb25jYXQoKHR5cGVvZiBpZCA9PT0gXCJudW1iZXJcIiB8fFxuICAgICAgICAgICAgICAgIHR5cGVvZiBpZCA9PT0gXCJzdHJpbmdcIikgPyBpZCA6IEpTT04uc3RyaW5naWZ5KGlkKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG52YXIgZGVmYXVsdENvbmZpZyA9IHtcbiAgICBkYXRhSWRGcm9tT2JqZWN0OiBkZWZhdWx0RGF0YUlkRnJvbU9iamVjdCxcbiAgICBhZGRUeXBlbmFtZTogdHJ1ZSxcbiAgICByZXN1bHRDYWNoaW5nOiB0cnVlLFxuICAgIGNhbm9uaXplUmVzdWx0czogZmFsc2UsXG59O1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUNvbmZpZyhjb25maWcpIHtcbiAgICByZXR1cm4gY29tcGFjdChkZWZhdWx0Q29uZmlnLCBjb25maWcpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZENhbm9uaXplUmVzdWx0cyhjb25maWcpIHtcbiAgICB2YXIgdmFsdWUgPSBjb25maWcuY2Fub25pemVSZXN1bHRzO1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdm9pZCAwID8gZGVmYXVsdENvbmZpZy5jYW5vbml6ZVJlc3VsdHMgOiB2YWx1ZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBlbmFtZUZyb21TdG9yZU9iamVjdChzdG9yZSwgb2JqZWN0T3JSZWZlcmVuY2UpIHtcbiAgICByZXR1cm4gaXNSZWZlcmVuY2Uob2JqZWN0T3JSZWZlcmVuY2UpXG4gICAgICAgID8gc3RvcmUuZ2V0KG9iamVjdE9yUmVmZXJlbmNlLl9fcmVmLCBcIl9fdHlwZW5hbWVcIilcbiAgICAgICAgOiBvYmplY3RPclJlZmVyZW5jZSAmJiBvYmplY3RPclJlZmVyZW5jZS5fX3R5cGVuYW1lO1xufVxuZXhwb3J0IHZhciBUeXBlT3JGaWVsZE5hbWVSZWdFeHAgPSAvXltfYS16XVtfMC05YS16XSovaTtcbmV4cG9ydCBmdW5jdGlvbiBmaWVsZE5hbWVGcm9tU3RvcmVOYW1lKHN0b3JlRmllbGROYW1lKSB7XG4gICAgdmFyIG1hdGNoID0gc3RvcmVGaWVsZE5hbWUubWF0Y2goVHlwZU9yRmllbGROYW1lUmVnRXhwKTtcbiAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFswXSA6IHN0b3JlRmllbGROYW1lO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdGlvblNldE1hdGNoZXNSZXN1bHQoc2VsZWN0aW9uU2V0LCByZXN1bHQsIHZhcmlhYmxlcykge1xuICAgIGlmIChpc05vbk51bGxPYmplY3QocmVzdWx0KSkge1xuICAgICAgICByZXR1cm4gaXNBcnJheShyZXN1bHQpXG4gICAgICAgICAgICA/IHJlc3VsdC5ldmVyeShmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gc2VsZWN0aW9uU2V0TWF0Y2hlc1Jlc3VsdChzZWxlY3Rpb25TZXQsIGl0ZW0sIHZhcmlhYmxlcyk7IH0pXG4gICAgICAgICAgICA6IHNlbGVjdGlvblNldC5zZWxlY3Rpb25zLmV2ZXJ5KGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgICAgICAgICAgIGlmIChpc0ZpZWxkKGZpZWxkKSAmJiBzaG91bGRJbmNsdWRlKGZpZWxkLCB2YXJpYWJsZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSByZXN1bHRLZXlOYW1lRnJvbUZpZWxkKGZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc093bi5jYWxsKHJlc3VsdCwga2V5KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKCFmaWVsZC5zZWxlY3Rpb25TZXQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25TZXRNYXRjaGVzUmVzdWx0KGZpZWxkLnNlbGVjdGlvblNldCwgcmVzdWx0W2tleV0sIHZhcmlhYmxlcykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5leHBvcnQgZnVuY3Rpb24gc3RvcmVWYWx1ZUlzU3RvcmVPYmplY3QodmFsdWUpIHtcbiAgICByZXR1cm4gaXNOb25OdWxsT2JqZWN0KHZhbHVlKSAmJlxuICAgICAgICAhaXNSZWZlcmVuY2UodmFsdWUpICYmXG4gICAgICAgICFpc0FycmF5KHZhbHVlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtYWtlUHJvY2Vzc2VkRmllbGRzTWVyZ2VyKCkge1xuICAgIHJldHVybiBuZXcgRGVlcE1lcmdlcjtcbn1cbmV4cG9ydCB2YXIgaXNBcnJheSA9IGZ1bmN0aW9uIChhKSB7IHJldHVybiBBcnJheS5pc0FycmF5KGEpOyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVscGVycy5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/cache/inmemory/helpers.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"InMemoryCache\": function() { return /* binding */ InMemoryCache; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var optimism__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! optimism */ \"./node_modules/optimism/lib/bundle.esm.js\");\n/* harmony import */ var _wry_equality__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wry/equality */ \"./node_modules/@apollo/client/node_modules/@wry/equality/lib/equality.esm.js\");\n/* harmony import */ var _core_cache_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../core/cache.js */ \"./node_modules/@apollo/client/cache/core/cache.js\");\n/* harmony import */ var _core_types_common_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../core/types/common.js */ \"./node_modules/@apollo/client/cache/core/types/common.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n/* harmony import */ var _readFromStore_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./readFromStore.js */ \"./node_modules/@apollo/client/cache/inmemory/readFromStore.js\");\n/* harmony import */ var _writeToStore_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./writeToStore.js */ \"./node_modules/@apollo/client/cache/inmemory/writeToStore.js\");\n/* harmony import */ var _entityStore_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./entityStore.js */ \"./node_modules/@apollo/client/cache/inmemory/entityStore.js\");\n/* harmony import */ var _reactiveVars_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./reactiveVars.js */ \"./node_modules/@apollo/client/cache/inmemory/reactiveVars.js\");\n/* harmony import */ var _policies_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./policies.js */ \"./node_modules/@apollo/client/cache/inmemory/policies.js\");\n/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./helpers.js */ \"./node_modules/@apollo/client/cache/inmemory/helpers.js\");\n/* harmony import */ var _object_canon_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./object-canon.js */ \"./node_modules/@apollo/client/cache/inmemory/object-canon.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar InMemoryCache = (function (_super) {\n    (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__extends)(InMemoryCache, _super);\n    function InMemoryCache(config) {\n        if (config === void 0) { config = {}; }\n        var _this = _super.call(this) || this;\n        _this.watches = new Set();\n        _this.typenameDocumentCache = new Map();\n        _this.makeVar = _reactiveVars_js__WEBPACK_IMPORTED_MODULE_4__.makeVar;\n        _this.txCount = 0;\n        _this.config = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__.normalizeConfig)(config);\n        _this.addTypename = !!_this.config.addTypename;\n        _this.policies = new _policies_js__WEBPACK_IMPORTED_MODULE_6__.Policies({\n            cache: _this,\n            dataIdFromObject: _this.config.dataIdFromObject,\n            possibleTypes: _this.config.possibleTypes,\n            typePolicies: _this.config.typePolicies,\n        });\n        _this.init();\n        return _this;\n    }\n    InMemoryCache.prototype.init = function () {\n        var rootStore = this.data = new _entityStore_js__WEBPACK_IMPORTED_MODULE_7__.EntityStore.Root({\n            policies: this.policies,\n            resultCaching: this.config.resultCaching,\n        });\n        this.optimisticData = rootStore.stump;\n        this.resetResultCache();\n    };\n    InMemoryCache.prototype.resetResultCache = function (resetResultIdentities) {\n        var _this = this;\n        var previousReader = this.storeReader;\n        this.storeWriter = new _writeToStore_js__WEBPACK_IMPORTED_MODULE_8__.StoreWriter(this, this.storeReader = new _readFromStore_js__WEBPACK_IMPORTED_MODULE_9__.StoreReader({\n            cache: this,\n            addTypename: this.addTypename,\n            resultCacheMaxSize: this.config.resultCacheMaxSize,\n            canonizeResults: (0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__.shouldCanonizeResults)(this.config),\n            canon: resetResultIdentities\n                ? void 0\n                : previousReader && previousReader.canon,\n        }));\n        this.maybeBroadcastWatch = (0,optimism__WEBPACK_IMPORTED_MODULE_1__.wrap)(function (c, options) {\n            return _this.broadcastWatch(c, options);\n        }, {\n            max: this.config.resultCacheMaxSize,\n            makeCacheKey: function (c) {\n                var store = c.optimistic ? _this.optimisticData : _this.data;\n                if ((0,_entityStore_js__WEBPACK_IMPORTED_MODULE_7__.supportsResultCaching)(store)) {\n                    var optimistic = c.optimistic, rootId = c.rootId, variables = c.variables;\n                    return store.makeCacheKey(c.query, c.callback, (0,_object_canon_js__WEBPACK_IMPORTED_MODULE_10__.canonicalStringify)({ optimistic: optimistic, rootId: rootId, variables: variables }));\n                }\n            }\n        });\n        new Set([\n            this.data.group,\n            this.optimisticData.group,\n        ]).forEach(function (group) { return group.resetCaching(); });\n    };\n    InMemoryCache.prototype.restore = function (data) {\n        this.init();\n        if (data)\n            this.data.replace(data);\n        return this;\n    };\n    InMemoryCache.prototype.extract = function (optimistic) {\n        if (optimistic === void 0) { optimistic = false; }\n        return (optimistic ? this.optimisticData : this.data).extract();\n    };\n    InMemoryCache.prototype.read = function (options) {\n        var _a = options.returnPartialData, returnPartialData = _a === void 0 ? false : _a;\n        try {\n            return this.storeReader.diffQueryAgainstStore((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, options), { store: options.optimistic ? this.optimisticData : this.data, config: this.config, returnPartialData: returnPartialData })).result || null;\n        }\n        catch (e) {\n            if (e instanceof _core_types_common_js__WEBPACK_IMPORTED_MODULE_11__.MissingFieldError) {\n                return null;\n            }\n            throw e;\n        }\n    };\n    InMemoryCache.prototype.write = function (options) {\n        try {\n            ++this.txCount;\n            return this.storeWriter.writeToStore(this.data, options);\n        }\n        finally {\n            if (!--this.txCount && options.broadcast !== false) {\n                this.broadcastWatches();\n            }\n        }\n    };\n    InMemoryCache.prototype.modify = function (options) {\n        if (_helpers_js__WEBPACK_IMPORTED_MODULE_5__.hasOwn.call(options, \"id\") && !options.id) {\n            return false;\n        }\n        var store = options.optimistic\n            ? this.optimisticData\n            : this.data;\n        try {\n            ++this.txCount;\n            return store.modify(options.id || \"ROOT_QUERY\", options.fields);\n        }\n        finally {\n            if (!--this.txCount && options.broadcast !== false) {\n                this.broadcastWatches();\n            }\n        }\n    };\n    InMemoryCache.prototype.diff = function (options) {\n        return this.storeReader.diffQueryAgainstStore((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, options), { store: options.optimistic ? this.optimisticData : this.data, rootId: options.id || \"ROOT_QUERY\", config: this.config }));\n    };\n    InMemoryCache.prototype.watch = function (watch) {\n        var _this = this;\n        if (!this.watches.size) {\n            (0,_reactiveVars_js__WEBPACK_IMPORTED_MODULE_4__.recallCache)(this);\n        }\n        this.watches.add(watch);\n        if (watch.immediate) {\n            this.maybeBroadcastWatch(watch);\n        }\n        return function () {\n            if (_this.watches.delete(watch) && !_this.watches.size) {\n                (0,_reactiveVars_js__WEBPACK_IMPORTED_MODULE_4__.forgetCache)(_this);\n            }\n            _this.maybeBroadcastWatch.forget(watch);\n        };\n    };\n    InMemoryCache.prototype.gc = function (options) {\n        _object_canon_js__WEBPACK_IMPORTED_MODULE_10__.canonicalStringify.reset();\n        var ids = this.optimisticData.gc();\n        if (options && !this.txCount) {\n            if (options.resetResultCache) {\n                this.resetResultCache(options.resetResultIdentities);\n            }\n            else if (options.resetResultIdentities) {\n                this.storeReader.resetCanon();\n            }\n        }\n        return ids;\n    };\n    InMemoryCache.prototype.retain = function (rootId, optimistic) {\n        return (optimistic ? this.optimisticData : this.data).retain(rootId);\n    };\n    InMemoryCache.prototype.release = function (rootId, optimistic) {\n        return (optimistic ? this.optimisticData : this.data).release(rootId);\n    };\n    InMemoryCache.prototype.identify = function (object) {\n        if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_12__.isReference)(object))\n            return object.__ref;\n        try {\n            return this.policies.identify(object)[0];\n        }\n        catch (e) {\n            __DEV__ && _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant.warn(e);\n        }\n    };\n    InMemoryCache.prototype.evict = function (options) {\n        if (!options.id) {\n            if (_helpers_js__WEBPACK_IMPORTED_MODULE_5__.hasOwn.call(options, \"id\")) {\n                return false;\n            }\n            options = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, options), { id: \"ROOT_QUERY\" });\n        }\n        try {\n            ++this.txCount;\n            return this.optimisticData.evict(options, this.data);\n        }\n        finally {\n            if (!--this.txCount && options.broadcast !== false) {\n                this.broadcastWatches();\n            }\n        }\n    };\n    InMemoryCache.prototype.reset = function (options) {\n        var _this = this;\n        this.init();\n        _object_canon_js__WEBPACK_IMPORTED_MODULE_10__.canonicalStringify.reset();\n        if (options && options.discardWatches) {\n            this.watches.forEach(function (watch) { return _this.maybeBroadcastWatch.forget(watch); });\n            this.watches.clear();\n            (0,_reactiveVars_js__WEBPACK_IMPORTED_MODULE_4__.forgetCache)(this);\n        }\n        else {\n            this.broadcastWatches();\n        }\n        return Promise.resolve();\n    };\n    InMemoryCache.prototype.removeOptimistic = function (idToRemove) {\n        var newOptimisticData = this.optimisticData.removeLayer(idToRemove);\n        if (newOptimisticData !== this.optimisticData) {\n            this.optimisticData = newOptimisticData;\n            this.broadcastWatches();\n        }\n    };\n    InMemoryCache.prototype.batch = function (options) {\n        var _this = this;\n        var update = options.update, _a = options.optimistic, optimistic = _a === void 0 ? true : _a, removeOptimistic = options.removeOptimistic, onWatchUpdated = options.onWatchUpdated;\n        var updateResult;\n        var perform = function (layer) {\n            var _a = _this, data = _a.data, optimisticData = _a.optimisticData;\n            ++_this.txCount;\n            if (layer) {\n                _this.data = _this.optimisticData = layer;\n            }\n            try {\n                return updateResult = update(_this);\n            }\n            finally {\n                --_this.txCount;\n                _this.data = data;\n                _this.optimisticData = optimisticData;\n            }\n        };\n        var alreadyDirty = new Set();\n        if (onWatchUpdated && !this.txCount) {\n            this.broadcastWatches((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, options), { onWatchUpdated: function (watch) {\n                    alreadyDirty.add(watch);\n                    return false;\n                } }));\n        }\n        if (typeof optimistic === 'string') {\n            this.optimisticData = this.optimisticData.addLayer(optimistic, perform);\n        }\n        else if (optimistic === false) {\n            perform(this.data);\n        }\n        else {\n            perform();\n        }\n        if (typeof removeOptimistic === \"string\") {\n            this.optimisticData = this.optimisticData.removeLayer(removeOptimistic);\n        }\n        if (onWatchUpdated && alreadyDirty.size) {\n            this.broadcastWatches((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, options), { onWatchUpdated: function (watch, diff) {\n                    var result = onWatchUpdated.call(this, watch, diff);\n                    if (result !== false) {\n                        alreadyDirty.delete(watch);\n                    }\n                    return result;\n                } }));\n            if (alreadyDirty.size) {\n                alreadyDirty.forEach(function (watch) { return _this.maybeBroadcastWatch.dirty(watch); });\n            }\n        }\n        else {\n            this.broadcastWatches(options);\n        }\n        return updateResult;\n    };\n    InMemoryCache.prototype.performTransaction = function (update, optimisticId) {\n        return this.batch({\n            update: update,\n            optimistic: optimisticId || (optimisticId !== null),\n        });\n    };\n    InMemoryCache.prototype.transformDocument = function (document) {\n        if (this.addTypename) {\n            var result = this.typenameDocumentCache.get(document);\n            if (!result) {\n                result = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_12__.addTypenameToDocument)(document);\n                this.typenameDocumentCache.set(document, result);\n                this.typenameDocumentCache.set(result, result);\n            }\n            return result;\n        }\n        return document;\n    };\n    InMemoryCache.prototype.broadcastWatches = function (options) {\n        var _this = this;\n        if (!this.txCount) {\n            this.watches.forEach(function (c) { return _this.maybeBroadcastWatch(c, options); });\n        }\n    };\n    InMemoryCache.prototype.broadcastWatch = function (c, options) {\n        var lastDiff = c.lastDiff;\n        var diff = this.diff(c);\n        if (options) {\n            if (c.optimistic &&\n                typeof options.optimistic === \"string\") {\n                diff.fromOptimisticTransaction = true;\n            }\n            if (options.onWatchUpdated &&\n                options.onWatchUpdated.call(this, c, diff, lastDiff) === false) {\n                return;\n            }\n        }\n        if (!lastDiff || !(0,_wry_equality__WEBPACK_IMPORTED_MODULE_2__.equal)(lastDiff.result, diff.result)) {\n            c.callback(c.lastDiff = diff, lastDiff);\n        }\n    };\n    return InMemoryCache;\n}(_core_cache_js__WEBPACK_IMPORTED_MODULE_13__.ApolloCache));\n\n//# sourceMappingURL=inMemoryCache.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvaW5tZW1vcnkvaW5NZW1vcnlDYWNoZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBNEM7QUFDaUI7QUFDbEM7QUFDSztBQUNNO0FBQ1M7QUFDYTtBQUNtQjtBQUM5QjtBQUNEO0FBQ3NCO0FBQ0E7QUFDN0I7QUFDcUM7QUFDdkI7QUFDdkQ7QUFDQSxJQUFJLGdEQUFTO0FBQ2I7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLHFEQUFPO0FBQy9CO0FBQ0EsdUJBQXVCLDREQUFlO0FBQ3RDO0FBQ0EsNkJBQTZCLGtEQUFRO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLDZEQUFnQjtBQUN4RDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQix5REFBVyw4QkFBOEIsMERBQVc7QUFDbkY7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLGtFQUFxQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsbUNBQW1DLDhDQUFJO0FBQ3ZDO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixzRUFBcUI7QUFDekM7QUFDQSxtRUFBbUUscUVBQWtCLEdBQUcsOERBQThEO0FBQ3RKO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLDhCQUE4QjtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGNBQWMsd0hBQXdIO0FBQ3BOO0FBQ0E7QUFDQSw2QkFBNkIscUVBQWlCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG9EQUFXO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNELCtDQUFRLENBQUMsK0NBQVEsR0FBRyxjQUFjLHNIQUFzSDtBQUM5TTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksNkRBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsNkRBQVc7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsdUVBQXdCO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksaUVBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qix1RUFBYztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvREFBVztBQUMzQjtBQUNBO0FBQ0Esc0JBQXNCLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxjQUFjLGtCQUFrQjtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSx1RUFBd0I7QUFDaEM7QUFDQSxvREFBb0QsaURBQWlEO0FBQ3JHO0FBQ0EsWUFBWSw2REFBVztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQywrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsY0FBYztBQUNwRTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGNBQWM7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBLHdEQUF3RCxnREFBZ0Q7QUFDeEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLDJFQUFxQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCwrQ0FBK0M7QUFDL0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLG9EQUFLO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLHdEQUFXO0FBQ1k7QUFDekIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L2NhY2hlL2lubWVtb3J5L2luTWVtb3J5Q2FjaGUuanM/YWJmOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2dsb2JhbHMvaW5kZXguanNcIjtcbmltcG9ydCBcIi4vZml4UG9seWZpbGxzLmpzXCI7XG5pbXBvcnQgeyB3cmFwIH0gZnJvbSAnb3B0aW1pc20nO1xuaW1wb3J0IHsgZXF1YWwgfSBmcm9tICdAd3J5L2VxdWFsaXR5JztcbmltcG9ydCB7IEFwb2xsb0NhY2hlIH0gZnJvbSBcIi4uL2NvcmUvY2FjaGUuanNcIjtcbmltcG9ydCB7IE1pc3NpbmdGaWVsZEVycm9yIH0gZnJvbSBcIi4uL2NvcmUvdHlwZXMvY29tbW9uLmpzXCI7XG5pbXBvcnQgeyBhZGRUeXBlbmFtZVRvRG9jdW1lbnQsIGlzUmVmZXJlbmNlLCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvaW5kZXguanNcIjtcbmltcG9ydCB7IFN0b3JlUmVhZGVyIH0gZnJvbSBcIi4vcmVhZEZyb21TdG9yZS5qc1wiO1xuaW1wb3J0IHsgU3RvcmVXcml0ZXIgfSBmcm9tIFwiLi93cml0ZVRvU3RvcmUuanNcIjtcbmltcG9ydCB7IEVudGl0eVN0b3JlLCBzdXBwb3J0c1Jlc3VsdENhY2hpbmcgfSBmcm9tIFwiLi9lbnRpdHlTdG9yZS5qc1wiO1xuaW1wb3J0IHsgbWFrZVZhciwgZm9yZ2V0Q2FjaGUsIHJlY2FsbENhY2hlIH0gZnJvbSBcIi4vcmVhY3RpdmVWYXJzLmpzXCI7XG5pbXBvcnQgeyBQb2xpY2llcyB9IGZyb20gXCIuL3BvbGljaWVzLmpzXCI7XG5pbXBvcnQgeyBoYXNPd24sIG5vcm1hbGl6ZUNvbmZpZywgc2hvdWxkQ2Fub25pemVSZXN1bHRzIH0gZnJvbSBcIi4vaGVscGVycy5qc1wiO1xuaW1wb3J0IHsgY2Fub25pY2FsU3RyaW5naWZ5IH0gZnJvbSBcIi4vb2JqZWN0LWNhbm9uLmpzXCI7XG52YXIgSW5NZW1vcnlDYWNoZSA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEluTWVtb3J5Q2FjaGUsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gSW5NZW1vcnlDYWNoZShjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyA9PT0gdm9pZCAwKSB7IGNvbmZpZyA9IHt9OyB9XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLndhdGNoZXMgPSBuZXcgU2V0KCk7XG4gICAgICAgIF90aGlzLnR5cGVuYW1lRG9jdW1lbnRDYWNoZSA9IG5ldyBNYXAoKTtcbiAgICAgICAgX3RoaXMubWFrZVZhciA9IG1ha2VWYXI7XG4gICAgICAgIF90aGlzLnR4Q291bnQgPSAwO1xuICAgICAgICBfdGhpcy5jb25maWcgPSBub3JtYWxpemVDb25maWcoY29uZmlnKTtcbiAgICAgICAgX3RoaXMuYWRkVHlwZW5hbWUgPSAhIV90aGlzLmNvbmZpZy5hZGRUeXBlbmFtZTtcbiAgICAgICAgX3RoaXMucG9saWNpZXMgPSBuZXcgUG9saWNpZXMoe1xuICAgICAgICAgICAgY2FjaGU6IF90aGlzLFxuICAgICAgICAgICAgZGF0YUlkRnJvbU9iamVjdDogX3RoaXMuY29uZmlnLmRhdGFJZEZyb21PYmplY3QsXG4gICAgICAgICAgICBwb3NzaWJsZVR5cGVzOiBfdGhpcy5jb25maWcucG9zc2libGVUeXBlcyxcbiAgICAgICAgICAgIHR5cGVQb2xpY2llczogX3RoaXMuY29uZmlnLnR5cGVQb2xpY2llcyxcbiAgICAgICAgfSk7XG4gICAgICAgIF90aGlzLmluaXQoKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBJbk1lbW9yeUNhY2hlLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcm9vdFN0b3JlID0gdGhpcy5kYXRhID0gbmV3IEVudGl0eVN0b3JlLlJvb3Qoe1xuICAgICAgICAgICAgcG9saWNpZXM6IHRoaXMucG9saWNpZXMsXG4gICAgICAgICAgICByZXN1bHRDYWNoaW5nOiB0aGlzLmNvbmZpZy5yZXN1bHRDYWNoaW5nLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vcHRpbWlzdGljRGF0YSA9IHJvb3RTdG9yZS5zdHVtcDtcbiAgICAgICAgdGhpcy5yZXNldFJlc3VsdENhY2hlKCk7XG4gICAgfTtcbiAgICBJbk1lbW9yeUNhY2hlLnByb3RvdHlwZS5yZXNldFJlc3VsdENhY2hlID0gZnVuY3Rpb24gKHJlc2V0UmVzdWx0SWRlbnRpdGllcykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgcHJldmlvdXNSZWFkZXIgPSB0aGlzLnN0b3JlUmVhZGVyO1xuICAgICAgICB0aGlzLnN0b3JlV3JpdGVyID0gbmV3IFN0b3JlV3JpdGVyKHRoaXMsIHRoaXMuc3RvcmVSZWFkZXIgPSBuZXcgU3RvcmVSZWFkZXIoe1xuICAgICAgICAgICAgY2FjaGU6IHRoaXMsXG4gICAgICAgICAgICBhZGRUeXBlbmFtZTogdGhpcy5hZGRUeXBlbmFtZSxcbiAgICAgICAgICAgIHJlc3VsdENhY2hlTWF4U2l6ZTogdGhpcy5jb25maWcucmVzdWx0Q2FjaGVNYXhTaXplLFxuICAgICAgICAgICAgY2Fub25pemVSZXN1bHRzOiBzaG91bGRDYW5vbml6ZVJlc3VsdHModGhpcy5jb25maWcpLFxuICAgICAgICAgICAgY2Fub246IHJlc2V0UmVzdWx0SWRlbnRpdGllc1xuICAgICAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICAgICAgOiBwcmV2aW91c1JlYWRlciAmJiBwcmV2aW91c1JlYWRlci5jYW5vbixcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLm1heWJlQnJvYWRjYXN0V2F0Y2ggPSB3cmFwKGZ1bmN0aW9uIChjLCBvcHRpb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuYnJvYWRjYXN0V2F0Y2goYywgb3B0aW9ucyk7XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG1heDogdGhpcy5jb25maWcucmVzdWx0Q2FjaGVNYXhTaXplLFxuICAgICAgICAgICAgbWFrZUNhY2hlS2V5OiBmdW5jdGlvbiAoYykge1xuICAgICAgICAgICAgICAgIHZhciBzdG9yZSA9IGMub3B0aW1pc3RpYyA/IF90aGlzLm9wdGltaXN0aWNEYXRhIDogX3RoaXMuZGF0YTtcbiAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydHNSZXN1bHRDYWNoaW5nKHN0b3JlKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgb3B0aW1pc3RpYyA9IGMub3B0aW1pc3RpYywgcm9vdElkID0gYy5yb290SWQsIHZhcmlhYmxlcyA9IGMudmFyaWFibGVzO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RvcmUubWFrZUNhY2hlS2V5KGMucXVlcnksIGMuY2FsbGJhY2ssIGNhbm9uaWNhbFN0cmluZ2lmeSh7IG9wdGltaXN0aWM6IG9wdGltaXN0aWMsIHJvb3RJZDogcm9vdElkLCB2YXJpYWJsZXM6IHZhcmlhYmxlcyB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgbmV3IFNldChbXG4gICAgICAgICAgICB0aGlzLmRhdGEuZ3JvdXAsXG4gICAgICAgICAgICB0aGlzLm9wdGltaXN0aWNEYXRhLmdyb3VwLFxuICAgICAgICBdKS5mb3JFYWNoKGZ1bmN0aW9uIChncm91cCkgeyByZXR1cm4gZ3JvdXAucmVzZXRDYWNoaW5nKCk7IH0pO1xuICAgIH07XG4gICAgSW5NZW1vcnlDYWNoZS5wcm90b3R5cGUucmVzdG9yZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgICBpZiAoZGF0YSlcbiAgICAgICAgICAgIHRoaXMuZGF0YS5yZXBsYWNlKGRhdGEpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIEluTWVtb3J5Q2FjaGUucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbiAob3B0aW1pc3RpYykge1xuICAgICAgICBpZiAob3B0aW1pc3RpYyA9PT0gdm9pZCAwKSB7IG9wdGltaXN0aWMgPSBmYWxzZTsgfVxuICAgICAgICByZXR1cm4gKG9wdGltaXN0aWMgPyB0aGlzLm9wdGltaXN0aWNEYXRhIDogdGhpcy5kYXRhKS5leHRyYWN0KCk7XG4gICAgfTtcbiAgICBJbk1lbW9yeUNhY2hlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF9hID0gb3B0aW9ucy5yZXR1cm5QYXJ0aWFsRGF0YSwgcmV0dXJuUGFydGlhbERhdGEgPSBfYSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JlUmVhZGVyLmRpZmZRdWVyeUFnYWluc3RTdG9yZShfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3B0aW9ucyksIHsgc3RvcmU6IG9wdGlvbnMub3B0aW1pc3RpYyA/IHRoaXMub3B0aW1pc3RpY0RhdGEgOiB0aGlzLmRhdGEsIGNvbmZpZzogdGhpcy5jb25maWcsIHJldHVyblBhcnRpYWxEYXRhOiByZXR1cm5QYXJ0aWFsRGF0YSB9KSkucmVzdWx0IHx8IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgTWlzc2luZ0ZpZWxkRXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEluTWVtb3J5Q2FjaGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICsrdGhpcy50eENvdW50O1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmVXcml0ZXIud3JpdGVUb1N0b3JlKHRoaXMuZGF0YSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBpZiAoIS0tdGhpcy50eENvdW50ICYmIG9wdGlvbnMuYnJvYWRjYXN0ICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0V2F0Y2hlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBJbk1lbW9yeUNhY2hlLnByb3RvdHlwZS5tb2RpZnkgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICBpZiAoaGFzT3duLmNhbGwob3B0aW9ucywgXCJpZFwiKSAmJiAhb3B0aW9ucy5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdG9yZSA9IG9wdGlvbnMub3B0aW1pc3RpY1xuICAgICAgICAgICAgPyB0aGlzLm9wdGltaXN0aWNEYXRhXG4gICAgICAgICAgICA6IHRoaXMuZGF0YTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICsrdGhpcy50eENvdW50O1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLm1vZGlmeShvcHRpb25zLmlkIHx8IFwiUk9PVF9RVUVSWVwiLCBvcHRpb25zLmZpZWxkcyk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBpZiAoIS0tdGhpcy50eENvdW50ICYmIG9wdGlvbnMuYnJvYWRjYXN0ICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0V2F0Y2hlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBJbk1lbW9yeUNhY2hlLnByb3RvdHlwZS5kaWZmID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmVSZWFkZXIuZGlmZlF1ZXJ5QWdhaW5zdFN0b3JlKF9fYXNzaWduKF9fYXNzaWduKHt9LCBvcHRpb25zKSwgeyBzdG9yZTogb3B0aW9ucy5vcHRpbWlzdGljID8gdGhpcy5vcHRpbWlzdGljRGF0YSA6IHRoaXMuZGF0YSwgcm9vdElkOiBvcHRpb25zLmlkIHx8IFwiUk9PVF9RVUVSWVwiLCBjb25maWc6IHRoaXMuY29uZmlnIH0pKTtcbiAgICB9O1xuICAgIEluTWVtb3J5Q2FjaGUucHJvdG90eXBlLndhdGNoID0gZnVuY3Rpb24gKHdhdGNoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICghdGhpcy53YXRjaGVzLnNpemUpIHtcbiAgICAgICAgICAgIHJlY2FsbENhY2hlKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud2F0Y2hlcy5hZGQod2F0Y2gpO1xuICAgICAgICBpZiAod2F0Y2guaW1tZWRpYXRlKSB7XG4gICAgICAgICAgICB0aGlzLm1heWJlQnJvYWRjYXN0V2F0Y2god2F0Y2gpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoX3RoaXMud2F0Y2hlcy5kZWxldGUod2F0Y2gpICYmICFfdGhpcy53YXRjaGVzLnNpemUpIHtcbiAgICAgICAgICAgICAgICBmb3JnZXRDYWNoZShfdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfdGhpcy5tYXliZUJyb2FkY2FzdFdhdGNoLmZvcmdldCh3YXRjaCk7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICBJbk1lbW9yeUNhY2hlLnByb3RvdHlwZS5nYyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIGNhbm9uaWNhbFN0cmluZ2lmeS5yZXNldCgpO1xuICAgICAgICB2YXIgaWRzID0gdGhpcy5vcHRpbWlzdGljRGF0YS5nYygpO1xuICAgICAgICBpZiAob3B0aW9ucyAmJiAhdGhpcy50eENvdW50KSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5yZXNldFJlc3VsdENhY2hlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldFJlc3VsdENhY2hlKG9wdGlvbnMucmVzZXRSZXN1bHRJZGVudGl0aWVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG9wdGlvbnMucmVzZXRSZXN1bHRJZGVudGl0aWVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZVJlYWRlci5yZXNldENhbm9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlkcztcbiAgICB9O1xuICAgIEluTWVtb3J5Q2FjaGUucHJvdG90eXBlLnJldGFpbiA9IGZ1bmN0aW9uIChyb290SWQsIG9wdGltaXN0aWMpIHtcbiAgICAgICAgcmV0dXJuIChvcHRpbWlzdGljID8gdGhpcy5vcHRpbWlzdGljRGF0YSA6IHRoaXMuZGF0YSkucmV0YWluKHJvb3RJZCk7XG4gICAgfTtcbiAgICBJbk1lbW9yeUNhY2hlLnByb3RvdHlwZS5yZWxlYXNlID0gZnVuY3Rpb24gKHJvb3RJZCwgb3B0aW1pc3RpYykge1xuICAgICAgICByZXR1cm4gKG9wdGltaXN0aWMgPyB0aGlzLm9wdGltaXN0aWNEYXRhIDogdGhpcy5kYXRhKS5yZWxlYXNlKHJvb3RJZCk7XG4gICAgfTtcbiAgICBJbk1lbW9yeUNhY2hlLnByb3RvdHlwZS5pZGVudGlmeSA9IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICAgICAgaWYgKGlzUmVmZXJlbmNlKG9iamVjdCkpXG4gICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fcmVmO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9saWNpZXMuaWRlbnRpZnkob2JqZWN0KVswXTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgX19ERVZfXyAmJiBpbnZhcmlhbnQud2FybihlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgSW5NZW1vcnlDYWNoZS5wcm90b3R5cGUuZXZpY3QgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICBpZiAoIW9wdGlvbnMuaWQpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChvcHRpb25zLCBcImlkXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3B0aW9ucyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBvcHRpb25zKSwgeyBpZDogXCJST09UX1FVRVJZXCIgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICsrdGhpcy50eENvdW50O1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW1pc3RpY0RhdGEuZXZpY3Qob3B0aW9ucywgdGhpcy5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmICghLS10aGlzLnR4Q291bnQgJiYgb3B0aW9ucy5icm9hZGNhc3QgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RXYXRjaGVzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEluTWVtb3J5Q2FjaGUucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgICAgIGNhbm9uaWNhbFN0cmluZ2lmeS5yZXNldCgpO1xuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmRpc2NhcmRXYXRjaGVzKSB7XG4gICAgICAgICAgICB0aGlzLndhdGNoZXMuZm9yRWFjaChmdW5jdGlvbiAod2F0Y2gpIHsgcmV0dXJuIF90aGlzLm1heWJlQnJvYWRjYXN0V2F0Y2guZm9yZ2V0KHdhdGNoKTsgfSk7XG4gICAgICAgICAgICB0aGlzLndhdGNoZXMuY2xlYXIoKTtcbiAgICAgICAgICAgIGZvcmdldENhY2hlKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RXYXRjaGVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH07XG4gICAgSW5NZW1vcnlDYWNoZS5wcm90b3R5cGUucmVtb3ZlT3B0aW1pc3RpYyA9IGZ1bmN0aW9uIChpZFRvUmVtb3ZlKSB7XG4gICAgICAgIHZhciBuZXdPcHRpbWlzdGljRGF0YSA9IHRoaXMub3B0aW1pc3RpY0RhdGEucmVtb3ZlTGF5ZXIoaWRUb1JlbW92ZSk7XG4gICAgICAgIGlmIChuZXdPcHRpbWlzdGljRGF0YSAhPT0gdGhpcy5vcHRpbWlzdGljRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5vcHRpbWlzdGljRGF0YSA9IG5ld09wdGltaXN0aWNEYXRhO1xuICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RXYXRjaGVzKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEluTWVtb3J5Q2FjaGUucHJvdG90eXBlLmJhdGNoID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHVwZGF0ZSA9IG9wdGlvbnMudXBkYXRlLCBfYSA9IG9wdGlvbnMub3B0aW1pc3RpYywgb3B0aW1pc3RpYyA9IF9hID09PSB2b2lkIDAgPyB0cnVlIDogX2EsIHJlbW92ZU9wdGltaXN0aWMgPSBvcHRpb25zLnJlbW92ZU9wdGltaXN0aWMsIG9uV2F0Y2hVcGRhdGVkID0gb3B0aW9ucy5vbldhdGNoVXBkYXRlZDtcbiAgICAgICAgdmFyIHVwZGF0ZVJlc3VsdDtcbiAgICAgICAgdmFyIHBlcmZvcm0gPSBmdW5jdGlvbiAobGF5ZXIpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IF90aGlzLCBkYXRhID0gX2EuZGF0YSwgb3B0aW1pc3RpY0RhdGEgPSBfYS5vcHRpbWlzdGljRGF0YTtcbiAgICAgICAgICAgICsrX3RoaXMudHhDb3VudDtcbiAgICAgICAgICAgIGlmIChsYXllcikge1xuICAgICAgICAgICAgICAgIF90aGlzLmRhdGEgPSBfdGhpcy5vcHRpbWlzdGljRGF0YSA9IGxheWVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXBkYXRlUmVzdWx0ID0gdXBkYXRlKF90aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIC0tX3RoaXMudHhDb3VudDtcbiAgICAgICAgICAgICAgICBfdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgICAgICAgICAgICBfdGhpcy5vcHRpbWlzdGljRGF0YSA9IG9wdGltaXN0aWNEYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgYWxyZWFkeURpcnR5ID0gbmV3IFNldCgpO1xuICAgICAgICBpZiAob25XYXRjaFVwZGF0ZWQgJiYgIXRoaXMudHhDb3VudCkge1xuICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RXYXRjaGVzKF9fYXNzaWduKF9fYXNzaWduKHt9LCBvcHRpb25zKSwgeyBvbldhdGNoVXBkYXRlZDogZnVuY3Rpb24gKHdhdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGFscmVhZHlEaXJ0eS5hZGQod2F0Y2gpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfSB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpbWlzdGljID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5vcHRpbWlzdGljRGF0YSA9IHRoaXMub3B0aW1pc3RpY0RhdGEuYWRkTGF5ZXIob3B0aW1pc3RpYywgcGVyZm9ybSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAob3B0aW1pc3RpYyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHBlcmZvcm0odGhpcy5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlcmZvcm0oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHJlbW92ZU9wdGltaXN0aWMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW1pc3RpY0RhdGEgPSB0aGlzLm9wdGltaXN0aWNEYXRhLnJlbW92ZUxheWVyKHJlbW92ZU9wdGltaXN0aWMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvbldhdGNoVXBkYXRlZCAmJiBhbHJlYWR5RGlydHkuc2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5icm9hZGNhc3RXYXRjaGVzKF9fYXNzaWduKF9fYXNzaWduKHt9LCBvcHRpb25zKSwgeyBvbldhdGNoVXBkYXRlZDogZnVuY3Rpb24gKHdhdGNoLCBkaWZmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBvbldhdGNoVXBkYXRlZC5jYWxsKHRoaXMsIHdhdGNoLCBkaWZmKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHlEaXJ0eS5kZWxldGUod2F0Y2gpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfSB9KSk7XG4gICAgICAgICAgICBpZiAoYWxyZWFkeURpcnR5LnNpemUpIHtcbiAgICAgICAgICAgICAgICBhbHJlYWR5RGlydHkuZm9yRWFjaChmdW5jdGlvbiAod2F0Y2gpIHsgcmV0dXJuIF90aGlzLm1heWJlQnJvYWRjYXN0V2F0Y2guZGlydHkod2F0Y2gpOyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0V2F0Y2hlcyhvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXBkYXRlUmVzdWx0O1xuICAgIH07XG4gICAgSW5NZW1vcnlDYWNoZS5wcm90b3R5cGUucGVyZm9ybVRyYW5zYWN0aW9uID0gZnVuY3Rpb24gKHVwZGF0ZSwgb3B0aW1pc3RpY0lkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJhdGNoKHtcbiAgICAgICAgICAgIHVwZGF0ZTogdXBkYXRlLFxuICAgICAgICAgICAgb3B0aW1pc3RpYzogb3B0aW1pc3RpY0lkIHx8IChvcHRpbWlzdGljSWQgIT09IG51bGwpLFxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIEluTWVtb3J5Q2FjaGUucHJvdG90eXBlLnRyYW5zZm9ybURvY3VtZW50ID0gZnVuY3Rpb24gKGRvY3VtZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmFkZFR5cGVuYW1lKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy50eXBlbmFtZURvY3VtZW50Q2FjaGUuZ2V0KGRvY3VtZW50KTtcbiAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gYWRkVHlwZW5hbWVUb0RvY3VtZW50KGRvY3VtZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnR5cGVuYW1lRG9jdW1lbnRDYWNoZS5zZXQoZG9jdW1lbnQsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgdGhpcy50eXBlbmFtZURvY3VtZW50Q2FjaGUuc2V0KHJlc3VsdCwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIH07XG4gICAgSW5NZW1vcnlDYWNoZS5wcm90b3R5cGUuYnJvYWRjYXN0V2F0Y2hlcyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICghdGhpcy50eENvdW50KSB7XG4gICAgICAgICAgICB0aGlzLndhdGNoZXMuZm9yRWFjaChmdW5jdGlvbiAoYykgeyByZXR1cm4gX3RoaXMubWF5YmVCcm9hZGNhc3RXYXRjaChjLCBvcHRpb25zKTsgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEluTWVtb3J5Q2FjaGUucHJvdG90eXBlLmJyb2FkY2FzdFdhdGNoID0gZnVuY3Rpb24gKGMsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIGxhc3REaWZmID0gYy5sYXN0RGlmZjtcbiAgICAgICAgdmFyIGRpZmYgPSB0aGlzLmRpZmYoYyk7XG4gICAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAoYy5vcHRpbWlzdGljICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIG9wdGlvbnMub3B0aW1pc3RpYyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGRpZmYuZnJvbU9wdGltaXN0aWNUcmFuc2FjdGlvbiA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5vbldhdGNoVXBkYXRlZCAmJlxuICAgICAgICAgICAgICAgIG9wdGlvbnMub25XYXRjaFVwZGF0ZWQuY2FsbCh0aGlzLCBjLCBkaWZmLCBsYXN0RGlmZikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghbGFzdERpZmYgfHwgIWVxdWFsKGxhc3REaWZmLnJlc3VsdCwgZGlmZi5yZXN1bHQpKSB7XG4gICAgICAgICAgICBjLmNhbGxiYWNrKGMubGFzdERpZmYgPSBkaWZmLCBsYXN0RGlmZik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBJbk1lbW9yeUNhY2hlO1xufShBcG9sbG9DYWNoZSkpO1xuZXhwb3J0IHsgSW5NZW1vcnlDYWNoZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5NZW1vcnlDYWNoZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/cache/inmemory/key-extractor.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@apollo/client/cache/inmemory/key-extractor.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"collectSpecifierPaths\": function() { return /* binding */ collectSpecifierPaths; },\n/* harmony export */   \"extractKeyPath\": function() { return /* binding */ extractKeyPath; },\n/* harmony export */   \"getSpecifierPaths\": function() { return /* binding */ getSpecifierPaths; },\n/* harmony export */   \"keyArgsFnFromSpecifier\": function() { return /* binding */ keyArgsFnFromSpecifier; },\n/* harmony export */   \"keyFieldsFnFromSpecifier\": function() { return /* binding */ keyFieldsFnFromSpecifier; }\n/* harmony export */ });\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers.js */ \"./node_modules/@apollo/client/cache/inmemory/helpers.js\");\n\n\n\nvar specifierInfoCache = Object.create(null);\nfunction lookupSpecifierInfo(spec) {\n    var cacheKey = JSON.stringify(spec);\n    return specifierInfoCache[cacheKey] ||\n        (specifierInfoCache[cacheKey] = Object.create(null));\n}\nfunction keyFieldsFnFromSpecifier(specifier) {\n    var info = lookupSpecifierInfo(specifier);\n    return info.keyFieldsFn || (info.keyFieldsFn = function (object, context) {\n        var extract = function (from, key) { return context.readField(key, from); };\n        var keyObject = context.keyObject = collectSpecifierPaths(specifier, function (schemaKeyPath) {\n            var extracted = extractKeyPath(context.storeObject, schemaKeyPath, extract);\n            if (extracted === void 0 &&\n                object !== context.storeObject &&\n                _helpers_js__WEBPACK_IMPORTED_MODULE_1__.hasOwn.call(object, schemaKeyPath[0])) {\n                extracted = extractKeyPath(object, schemaKeyPath, extractKey);\n            }\n            __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(extracted !== void 0, \"Missing field '\".concat(schemaKeyPath.join('.'), \"' while extracting keyFields from \").concat(JSON.stringify(object))) : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(extracted !== void 0, 2);\n            return extracted;\n        });\n        return \"\".concat(context.typename, \":\").concat(JSON.stringify(keyObject));\n    });\n}\nfunction keyArgsFnFromSpecifier(specifier) {\n    var info = lookupSpecifierInfo(specifier);\n    return info.keyArgsFn || (info.keyArgsFn = function (args, _a) {\n        var field = _a.field, variables = _a.variables, fieldName = _a.fieldName;\n        var collected = collectSpecifierPaths(specifier, function (keyPath) {\n            var firstKey = keyPath[0];\n            var firstChar = firstKey.charAt(0);\n            if (firstChar === \"@\") {\n                if (field && (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isNonEmptyArray)(field.directives)) {\n                    var directiveName_1 = firstKey.slice(1);\n                    var d = field.directives.find(function (d) { return d.name.value === directiveName_1; });\n                    var directiveArgs = d && (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.argumentsObjectFromField)(d, variables);\n                    return directiveArgs && extractKeyPath(directiveArgs, keyPath.slice(1));\n                }\n                return;\n            }\n            if (firstChar === \"$\") {\n                var variableName = firstKey.slice(1);\n                if (variables && _helpers_js__WEBPACK_IMPORTED_MODULE_1__.hasOwn.call(variables, variableName)) {\n                    var varKeyPath = keyPath.slice(0);\n                    varKeyPath[0] = variableName;\n                    return extractKeyPath(variables, varKeyPath);\n                }\n                return;\n            }\n            if (args) {\n                return extractKeyPath(args, keyPath);\n            }\n        });\n        var suffix = JSON.stringify(collected);\n        if (args || suffix !== \"{}\") {\n            fieldName += \":\" + suffix;\n        }\n        return fieldName;\n    });\n}\nfunction collectSpecifierPaths(specifier, extractor) {\n    var merger = new _utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.DeepMerger;\n    return getSpecifierPaths(specifier).reduce(function (collected, path) {\n        var _a;\n        var toMerge = extractor(path);\n        if (toMerge !== void 0) {\n            for (var i = path.length - 1; i >= 0; --i) {\n                toMerge = (_a = {}, _a[path[i]] = toMerge, _a);\n            }\n            collected = merger.merge(collected, toMerge);\n        }\n        return collected;\n    }, Object.create(null));\n}\nfunction getSpecifierPaths(spec) {\n    var info = lookupSpecifierInfo(spec);\n    if (!info.paths) {\n        var paths_1 = info.paths = [];\n        var currentPath_1 = [];\n        spec.forEach(function (s, i) {\n            if ((0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.isArray)(s)) {\n                getSpecifierPaths(s).forEach(function (p) { return paths_1.push(currentPath_1.concat(p)); });\n                currentPath_1.length = 0;\n            }\n            else {\n                currentPath_1.push(s);\n                if (!(0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.isArray)(spec[i + 1])) {\n                    paths_1.push(currentPath_1.slice(0));\n                    currentPath_1.length = 0;\n                }\n            }\n        });\n    }\n    return info.paths;\n}\nfunction extractKey(object, key) {\n    return object[key];\n}\nfunction extractKeyPath(object, path, extract) {\n    extract = extract || extractKey;\n    return normalize(path.reduce(function reducer(obj, key) {\n        return (0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.isArray)(obj)\n            ? obj.map(function (child) { return reducer(child, key); })\n            : obj && extract(obj, key);\n    }, object));\n}\nfunction normalize(value) {\n    if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isNonNullObject)(value)) {\n        if ((0,_helpers_js__WEBPACK_IMPORTED_MODULE_1__.isArray)(value)) {\n            return value.map(normalize);\n        }\n        return collectSpecifierPaths(Object.keys(value).sort(), function (path) { return extractKeyPath(value, path); });\n    }\n    return value;\n}\n//# sourceMappingURL=key-extractor.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvaW5tZW1vcnkva2V5LWV4dHJhY3Rvci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUE2RDtBQUNzRDtBQUNwRTtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isb0RBQVc7QUFDM0I7QUFDQTtBQUNBLHNCQUFzQixzRUFBUyxpSkFBaUosc0VBQVM7QUFDekw7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLG9FQUFlO0FBQzVDO0FBQ0EsaUVBQWlFLDBDQUEwQztBQUMzRyw2Q0FBNkMsNkVBQXdCO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxvREFBVztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ087QUFDUCxxQkFBcUIsMkRBQVU7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsUUFBUTtBQUNsRCxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isb0RBQU87QUFDdkIsNERBQTRELCtDQUErQztBQUMzRztBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixvREFBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSxlQUFlLG9EQUFPO0FBQ3RCLHlDQUF5Qyw2QkFBNkI7QUFDdEU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFFBQVEsb0VBQWU7QUFDdkIsWUFBWSxvREFBTztBQUNuQjtBQUNBO0FBQ0Esa0ZBQWtGLHFDQUFxQztBQUN2SDtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvaW5tZW1vcnkva2V5LWV4dHJhY3Rvci5qcz8xNTBhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGludmFyaWFudCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZ2xvYmFscy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgYXJndW1lbnRzT2JqZWN0RnJvbUZpZWxkLCBEZWVwTWVyZ2VyLCBpc05vbkVtcHR5QXJyYXksIGlzTm9uTnVsbE9iamVjdCwgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBoYXNPd24sIGlzQXJyYXkgfSBmcm9tIFwiLi9oZWxwZXJzLmpzXCI7XG52YXIgc3BlY2lmaWVySW5mb0NhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbmZ1bmN0aW9uIGxvb2t1cFNwZWNpZmllckluZm8oc3BlYykge1xuICAgIHZhciBjYWNoZUtleSA9IEpTT04uc3RyaW5naWZ5KHNwZWMpO1xuICAgIHJldHVybiBzcGVjaWZpZXJJbmZvQ2FjaGVbY2FjaGVLZXldIHx8XG4gICAgICAgIChzcGVjaWZpZXJJbmZvQ2FjaGVbY2FjaGVLZXldID0gT2JqZWN0LmNyZWF0ZShudWxsKSk7XG59XG5leHBvcnQgZnVuY3Rpb24ga2V5RmllbGRzRm5Gcm9tU3BlY2lmaWVyKHNwZWNpZmllcikge1xuICAgIHZhciBpbmZvID0gbG9va3VwU3BlY2lmaWVySW5mbyhzcGVjaWZpZXIpO1xuICAgIHJldHVybiBpbmZvLmtleUZpZWxkc0ZuIHx8IChpbmZvLmtleUZpZWxkc0ZuID0gZnVuY3Rpb24gKG9iamVjdCwgY29udGV4dCkge1xuICAgICAgICB2YXIgZXh0cmFjdCA9IGZ1bmN0aW9uIChmcm9tLCBrZXkpIHsgcmV0dXJuIGNvbnRleHQucmVhZEZpZWxkKGtleSwgZnJvbSk7IH07XG4gICAgICAgIHZhciBrZXlPYmplY3QgPSBjb250ZXh0LmtleU9iamVjdCA9IGNvbGxlY3RTcGVjaWZpZXJQYXRocyhzcGVjaWZpZXIsIGZ1bmN0aW9uIChzY2hlbWFLZXlQYXRoKSB7XG4gICAgICAgICAgICB2YXIgZXh0cmFjdGVkID0gZXh0cmFjdEtleVBhdGgoY29udGV4dC5zdG9yZU9iamVjdCwgc2NoZW1hS2V5UGF0aCwgZXh0cmFjdCk7XG4gICAgICAgICAgICBpZiAoZXh0cmFjdGVkID09PSB2b2lkIDAgJiZcbiAgICAgICAgICAgICAgICBvYmplY3QgIT09IGNvbnRleHQuc3RvcmVPYmplY3QgJiZcbiAgICAgICAgICAgICAgICBoYXNPd24uY2FsbChvYmplY3QsIHNjaGVtYUtleVBhdGhbMF0pKSB7XG4gICAgICAgICAgICAgICAgZXh0cmFjdGVkID0gZXh0cmFjdEtleVBhdGgob2JqZWN0LCBzY2hlbWFLZXlQYXRoLCBleHRyYWN0S2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF9fREVWX18gPyBpbnZhcmlhbnQoZXh0cmFjdGVkICE9PSB2b2lkIDAsIFwiTWlzc2luZyBmaWVsZCAnXCIuY29uY2F0KHNjaGVtYUtleVBhdGguam9pbignLicpLCBcIicgd2hpbGUgZXh0cmFjdGluZyBrZXlGaWVsZHMgZnJvbSBcIikuY29uY2F0KEpTT04uc3RyaW5naWZ5KG9iamVjdCkpKSA6IGludmFyaWFudChleHRyYWN0ZWQgIT09IHZvaWQgMCwgMik7XG4gICAgICAgICAgICByZXR1cm4gZXh0cmFjdGVkO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KGNvbnRleHQudHlwZW5hbWUsIFwiOlwiKS5jb25jYXQoSlNPTi5zdHJpbmdpZnkoa2V5T2JqZWN0KSk7XG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24ga2V5QXJnc0ZuRnJvbVNwZWNpZmllcihzcGVjaWZpZXIpIHtcbiAgICB2YXIgaW5mbyA9IGxvb2t1cFNwZWNpZmllckluZm8oc3BlY2lmaWVyKTtcbiAgICByZXR1cm4gaW5mby5rZXlBcmdzRm4gfHwgKGluZm8ua2V5QXJnc0ZuID0gZnVuY3Rpb24gKGFyZ3MsIF9hKSB7XG4gICAgICAgIHZhciBmaWVsZCA9IF9hLmZpZWxkLCB2YXJpYWJsZXMgPSBfYS52YXJpYWJsZXMsIGZpZWxkTmFtZSA9IF9hLmZpZWxkTmFtZTtcbiAgICAgICAgdmFyIGNvbGxlY3RlZCA9IGNvbGxlY3RTcGVjaWZpZXJQYXRocyhzcGVjaWZpZXIsIGZ1bmN0aW9uIChrZXlQYXRoKSB7XG4gICAgICAgICAgICB2YXIgZmlyc3RLZXkgPSBrZXlQYXRoWzBdO1xuICAgICAgICAgICAgdmFyIGZpcnN0Q2hhciA9IGZpcnN0S2V5LmNoYXJBdCgwKTtcbiAgICAgICAgICAgIGlmIChmaXJzdENoYXIgPT09IFwiQFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkICYmIGlzTm9uRW1wdHlBcnJheShmaWVsZC5kaXJlY3RpdmVzKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGlyZWN0aXZlTmFtZV8xID0gZmlyc3RLZXkuc2xpY2UoMSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkID0gZmllbGQuZGlyZWN0aXZlcy5maW5kKGZ1bmN0aW9uIChkKSB7IHJldHVybiBkLm5hbWUudmFsdWUgPT09IGRpcmVjdGl2ZU5hbWVfMTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkaXJlY3RpdmVBcmdzID0gZCAmJiBhcmd1bWVudHNPYmplY3RGcm9tRmllbGQoZCwgdmFyaWFibGVzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRpcmVjdGl2ZUFyZ3MgJiYgZXh0cmFjdEtleVBhdGgoZGlyZWN0aXZlQXJncywga2V5UGF0aC5zbGljZSgxKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaXJzdENoYXIgPT09IFwiJFwiKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhcmlhYmxlTmFtZSA9IGZpcnN0S2V5LnNsaWNlKDEpO1xuICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZXMgJiYgaGFzT3duLmNhbGwodmFyaWFibGVzLCB2YXJpYWJsZU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2YXJLZXlQYXRoID0ga2V5UGF0aC5zbGljZSgwKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyS2V5UGF0aFswXSA9IHZhcmlhYmxlTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4dHJhY3RLZXlQYXRoKHZhcmlhYmxlcywgdmFyS2V5UGF0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhcmdzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGV4dHJhY3RLZXlQYXRoKGFyZ3MsIGtleVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHN1ZmZpeCA9IEpTT04uc3RyaW5naWZ5KGNvbGxlY3RlZCk7XG4gICAgICAgIGlmIChhcmdzIHx8IHN1ZmZpeCAhPT0gXCJ7fVwiKSB7XG4gICAgICAgICAgICBmaWVsZE5hbWUgKz0gXCI6XCIgKyBzdWZmaXg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpZWxkTmFtZTtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjb2xsZWN0U3BlY2lmaWVyUGF0aHMoc3BlY2lmaWVyLCBleHRyYWN0b3IpIHtcbiAgICB2YXIgbWVyZ2VyID0gbmV3IERlZXBNZXJnZXI7XG4gICAgcmV0dXJuIGdldFNwZWNpZmllclBhdGhzKHNwZWNpZmllcikucmVkdWNlKGZ1bmN0aW9uIChjb2xsZWN0ZWQsIHBhdGgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgdG9NZXJnZSA9IGV4dHJhY3RvcihwYXRoKTtcbiAgICAgICAgaWYgKHRvTWVyZ2UgIT09IHZvaWQgMCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgICAgICB0b01lcmdlID0gKF9hID0ge30sIF9hW3BhdGhbaV1dID0gdG9NZXJnZSwgX2EpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29sbGVjdGVkID0gbWVyZ2VyLm1lcmdlKGNvbGxlY3RlZCwgdG9NZXJnZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbGxlY3RlZDtcbiAgICB9LCBPYmplY3QuY3JlYXRlKG51bGwpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGVjaWZpZXJQYXRocyhzcGVjKSB7XG4gICAgdmFyIGluZm8gPSBsb29rdXBTcGVjaWZpZXJJbmZvKHNwZWMpO1xuICAgIGlmICghaW5mby5wYXRocykge1xuICAgICAgICB2YXIgcGF0aHNfMSA9IGluZm8ucGF0aHMgPSBbXTtcbiAgICAgICAgdmFyIGN1cnJlbnRQYXRoXzEgPSBbXTtcbiAgICAgICAgc3BlYy5mb3JFYWNoKGZ1bmN0aW9uIChzLCBpKSB7XG4gICAgICAgICAgICBpZiAoaXNBcnJheShzKSkge1xuICAgICAgICAgICAgICAgIGdldFNwZWNpZmllclBhdGhzKHMpLmZvckVhY2goZnVuY3Rpb24gKHApIHsgcmV0dXJuIHBhdGhzXzEucHVzaChjdXJyZW50UGF0aF8xLmNvbmNhdChwKSk7IH0pO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXRoXzEubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYXRoXzEucHVzaChzKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzQXJyYXkoc3BlY1tpICsgMV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGhzXzEucHVzaChjdXJyZW50UGF0aF8xLnNsaWNlKDApKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhdGhfMS5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBpbmZvLnBhdGhzO1xufVxuZnVuY3Rpb24gZXh0cmFjdEtleShvYmplY3QsIGtleSkge1xuICAgIHJldHVybiBvYmplY3Rba2V5XTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0S2V5UGF0aChvYmplY3QsIHBhdGgsIGV4dHJhY3QpIHtcbiAgICBleHRyYWN0ID0gZXh0cmFjdCB8fCBleHRyYWN0S2V5O1xuICAgIHJldHVybiBub3JtYWxpemUocGF0aC5yZWR1Y2UoZnVuY3Rpb24gcmVkdWNlcihvYmosIGtleSkge1xuICAgICAgICByZXR1cm4gaXNBcnJheShvYmopXG4gICAgICAgICAgICA/IG9iai5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7IHJldHVybiByZWR1Y2VyKGNoaWxkLCBrZXkpOyB9KVxuICAgICAgICAgICAgOiBvYmogJiYgZXh0cmFjdChvYmosIGtleSk7XG4gICAgfSwgb2JqZWN0KSk7XG59XG5mdW5jdGlvbiBub3JtYWxpemUodmFsdWUpIHtcbiAgICBpZiAoaXNOb25OdWxsT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5tYXAobm9ybWFsaXplKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sbGVjdFNwZWNpZmllclBhdGhzKE9iamVjdC5rZXlzKHZhbHVlKS5zb3J0KCksIGZ1bmN0aW9uIChwYXRoKSB7IHJldHVybiBleHRyYWN0S2V5UGF0aCh2YWx1ZSwgcGF0aCk7IH0pO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1rZXktZXh0cmFjdG9yLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/cache/inmemory/key-extractor.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/cache/inmemory/object-canon.js":
/*!********************************************************************!*\
  !*** ./node_modules/@apollo/client/cache/inmemory/object-canon.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ObjectCanon\": function() { return /* binding */ ObjectCanon; },\n/* harmony export */   \"canonicalStringify\": function() { return /* binding */ canonicalStringify; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _wry_trie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wry/trie */ \"./node_modules/@wry/trie/lib/trie.esm.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers.js */ \"./node_modules/@apollo/client/cache/inmemory/helpers.js\");\n\n\n\n\n\nfunction shallowCopy(value) {\n    if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isNonNullObject)(value)) {\n        return (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.isArray)(value)\n            ? value.slice(0)\n            : (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({ __proto__: Object.getPrototypeOf(value) }, value);\n    }\n    return value;\n}\nvar ObjectCanon = (function () {\n    function ObjectCanon() {\n        this.known = new (_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.canUseWeakSet ? WeakSet : Set)();\n        this.pool = new _wry_trie__WEBPACK_IMPORTED_MODULE_1__.Trie(_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.canUseWeakMap);\n        this.passes = new WeakMap();\n        this.keysByJSON = new Map();\n        this.empty = this.admit({});\n    }\n    ObjectCanon.prototype.isKnown = function (value) {\n        return (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isNonNullObject)(value) && this.known.has(value);\n    };\n    ObjectCanon.prototype.pass = function (value) {\n        if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isNonNullObject)(value)) {\n            var copy = shallowCopy(value);\n            this.passes.set(copy, value);\n            return copy;\n        }\n        return value;\n    };\n    ObjectCanon.prototype.admit = function (value) {\n        var _this = this;\n        if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isNonNullObject)(value)) {\n            var original = this.passes.get(value);\n            if (original)\n                return original;\n            var proto = Object.getPrototypeOf(value);\n            switch (proto) {\n                case Array.prototype: {\n                    if (this.known.has(value))\n                        return value;\n                    var array = value.map(this.admit, this);\n                    var node = this.pool.lookupArray(array);\n                    if (!node.array) {\n                        this.known.add(node.array = array);\n                        if (__DEV__) {\n                            Object.freeze(array);\n                        }\n                    }\n                    return node.array;\n                }\n                case null:\n                case Object.prototype: {\n                    if (this.known.has(value))\n                        return value;\n                    var proto_1 = Object.getPrototypeOf(value);\n                    var array_1 = [proto_1];\n                    var keys = this.sortedKeys(value);\n                    array_1.push(keys.json);\n                    var firstValueIndex_1 = array_1.length;\n                    keys.sorted.forEach(function (key) {\n                        array_1.push(_this.admit(value[key]));\n                    });\n                    var node = this.pool.lookupArray(array_1);\n                    if (!node.object) {\n                        var obj_1 = node.object = Object.create(proto_1);\n                        this.known.add(obj_1);\n                        keys.sorted.forEach(function (key, i) {\n                            obj_1[key] = array_1[firstValueIndex_1 + i];\n                        });\n                        if (__DEV__) {\n                            Object.freeze(obj_1);\n                        }\n                    }\n                    return node.object;\n                }\n            }\n        }\n        return value;\n    };\n    ObjectCanon.prototype.sortedKeys = function (obj) {\n        var keys = Object.keys(obj);\n        var node = this.pool.lookupArray(keys);\n        if (!node.keys) {\n            keys.sort();\n            var json = JSON.stringify(keys);\n            if (!(node.keys = this.keysByJSON.get(json))) {\n                this.keysByJSON.set(json, node.keys = { sorted: keys, json: json });\n            }\n        }\n        return node.keys;\n    };\n    return ObjectCanon;\n}());\n\nvar canonicalStringify = Object.assign(function (value) {\n    if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isNonNullObject)(value)) {\n        if (stringifyCanon === void 0) {\n            resetCanonicalStringify();\n        }\n        var canonical = stringifyCanon.admit(value);\n        var json = stringifyCache.get(canonical);\n        if (json === void 0) {\n            stringifyCache.set(canonical, json = JSON.stringify(canonical));\n        }\n        return json;\n    }\n    return JSON.stringify(value);\n}, {\n    reset: resetCanonicalStringify,\n});\nvar stringifyCanon;\nvar stringifyCache;\nfunction resetCanonicalStringify() {\n    stringifyCanon = new ObjectCanon;\n    stringifyCache = new (_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.canUseWeakMap ? WeakMap : Map)();\n}\n//# sourceMappingURL=object-canon.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvaW5tZW1vcnkvb2JqZWN0LWNhbm9uLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBaUM7QUFDUztBQUNUO0FBQzRFO0FBQ3RFO0FBQ3ZDO0FBQ0EsUUFBUSxvRUFBZTtBQUN2QixlQUFlLG9EQUFPO0FBQ3RCO0FBQ0EsY0FBYywrQ0FBUSxHQUFHLHlDQUF5QztBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDhEQUFhO0FBQ3ZDLHdCQUF3QiwyQ0FBSSxDQUFDLDhEQUFhO0FBQzFDO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBLGVBQWUsb0VBQWU7QUFDOUI7QUFDQTtBQUNBLFlBQVksb0VBQWU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0VBQWU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdEQUF3RCwwQkFBMEI7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDc0I7QUFDaEI7QUFDUCxRQUFRLG9FQUFlO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsOERBQWE7QUFDdkM7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvaW5tZW1vcnkvb2JqZWN0LWNhbm9uLmpzP2JhYTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nbG9iYWxzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBUcmllIH0gZnJvbSBcIkB3cnkvdHJpZVwiO1xuaW1wb3J0IHsgY2FuVXNlV2Vha01hcCwgY2FuVXNlV2Vha1NldCwgaXNOb25OdWxsT2JqZWN0IGFzIGlzT2JqZWN0T3JBcnJheSwgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSBcIi4vaGVscGVycy5qc1wiO1xuZnVuY3Rpb24gc2hhbGxvd0NvcHkodmFsdWUpIHtcbiAgICBpZiAoaXNPYmplY3RPckFycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICAgID8gdmFsdWUuc2xpY2UoMClcbiAgICAgICAgICAgIDogX19hc3NpZ24oeyBfX3Byb3RvX186IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkgfSwgdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG52YXIgT2JqZWN0Q2Fub24gPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE9iamVjdENhbm9uKCkge1xuICAgICAgICB0aGlzLmtub3duID0gbmV3IChjYW5Vc2VXZWFrU2V0ID8gV2Vha1NldCA6IFNldCkoKTtcbiAgICAgICAgdGhpcy5wb29sID0gbmV3IFRyaWUoY2FuVXNlV2Vha01hcCk7XG4gICAgICAgIHRoaXMucGFzc2VzID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgICAgdGhpcy5rZXlzQnlKU09OID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLmVtcHR5ID0gdGhpcy5hZG1pdCh7fSk7XG4gICAgfVxuICAgIE9iamVjdENhbm9uLnByb3RvdHlwZS5pc0tub3duID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpc09iamVjdE9yQXJyYXkodmFsdWUpICYmIHRoaXMua25vd24uaGFzKHZhbHVlKTtcbiAgICB9O1xuICAgIE9iamVjdENhbm9uLnByb3RvdHlwZS5wYXNzID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIGlmIChpc09iamVjdE9yQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICB2YXIgY29weSA9IHNoYWxsb3dDb3B5KHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucGFzc2VzLnNldChjb3B5LCB2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gY29weTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICBPYmplY3RDYW5vbi5wcm90b3R5cGUuYWRtaXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKGlzT2JqZWN0T3JBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhciBvcmlnaW5hbCA9IHRoaXMucGFzc2VzLmdldCh2YWx1ZSk7XG4gICAgICAgICAgICBpZiAob3JpZ2luYWwpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsO1xuICAgICAgICAgICAgdmFyIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTtcbiAgICAgICAgICAgIHN3aXRjaCAocHJvdG8pIHtcbiAgICAgICAgICAgICAgICBjYXNlIEFycmF5LnByb3RvdHlwZToge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5rbm93bi5oYXModmFsdWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYXJyYXkgPSB2YWx1ZS5tYXAodGhpcy5hZG1pdCwgdGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5wb29sLmxvb2t1cEFycmF5KGFycmF5KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLmFycmF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmtub3duLmFkZChub2RlLmFycmF5ID0gYXJyYXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9fREVWX18pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZnJlZXplKGFycmF5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5hcnJheTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBudWxsOlxuICAgICAgICAgICAgICAgIGNhc2UgT2JqZWN0LnByb3RvdHlwZToge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5rbm93bi5oYXModmFsdWUpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcHJvdG9fMSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBhcnJheV8xID0gW3Byb3RvXzFdO1xuICAgICAgICAgICAgICAgICAgICB2YXIga2V5cyA9IHRoaXMuc29ydGVkS2V5cyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGFycmF5XzEucHVzaChrZXlzLmpzb24pO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZmlyc3RWYWx1ZUluZGV4XzEgPSBhcnJheV8xLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAga2V5cy5zb3J0ZWQuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJheV8xLnB1c2goX3RoaXMuYWRtaXQodmFsdWVba2V5XSkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLnBvb2wubG9va3VwQXJyYXkoYXJyYXlfMSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS5vYmplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvYmpfMSA9IG5vZGUub2JqZWN0ID0gT2JqZWN0LmNyZWF0ZShwcm90b18xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMua25vd24uYWRkKG9ial8xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleXMuc29ydGVkLmZvckVhY2goZnVuY3Rpb24gKGtleSwgaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ial8xW2tleV0gPSBhcnJheV8xW2ZpcnN0VmFsdWVJbmRleF8xICsgaV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfX0RFVl9fKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmZyZWV6ZShvYmpfMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUub2JqZWN0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICBPYmplY3RDYW5vbi5wcm90b3R5cGUuc29ydGVkS2V5cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgICAgICB2YXIgbm9kZSA9IHRoaXMucG9vbC5sb29rdXBBcnJheShrZXlzKTtcbiAgICAgICAgaWYgKCFub2RlLmtleXMpIHtcbiAgICAgICAgICAgIGtleXMuc29ydCgpO1xuICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnN0cmluZ2lmeShrZXlzKTtcbiAgICAgICAgICAgIGlmICghKG5vZGUua2V5cyA9IHRoaXMua2V5c0J5SlNPTi5nZXQoanNvbikpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5rZXlzQnlKU09OLnNldChqc29uLCBub2RlLmtleXMgPSB7IHNvcnRlZDoga2V5cywganNvbjoganNvbiB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZS5rZXlzO1xuICAgIH07XG4gICAgcmV0dXJuIE9iamVjdENhbm9uO1xufSgpKTtcbmV4cG9ydCB7IE9iamVjdENhbm9uIH07XG5leHBvcnQgdmFyIGNhbm9uaWNhbFN0cmluZ2lmeSA9IE9iamVjdC5hc3NpZ24oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgaWYgKGlzT2JqZWN0T3JBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgaWYgKHN0cmluZ2lmeUNhbm9uID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHJlc2V0Q2Fub25pY2FsU3RyaW5naWZ5KCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNhbm9uaWNhbCA9IHN0cmluZ2lmeUNhbm9uLmFkbWl0KHZhbHVlKTtcbiAgICAgICAgdmFyIGpzb24gPSBzdHJpbmdpZnlDYWNoZS5nZXQoY2Fub25pY2FsKTtcbiAgICAgICAgaWYgKGpzb24gPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgc3RyaW5naWZ5Q2FjaGUuc2V0KGNhbm9uaWNhbCwganNvbiA9IEpTT04uc3RyaW5naWZ5KGNhbm9uaWNhbCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBqc29uO1xuICAgIH1cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xufSwge1xuICAgIHJlc2V0OiByZXNldENhbm9uaWNhbFN0cmluZ2lmeSxcbn0pO1xudmFyIHN0cmluZ2lmeUNhbm9uO1xudmFyIHN0cmluZ2lmeUNhY2hlO1xuZnVuY3Rpb24gcmVzZXRDYW5vbmljYWxTdHJpbmdpZnkoKSB7XG4gICAgc3RyaW5naWZ5Q2Fub24gPSBuZXcgT2JqZWN0Q2Fub247XG4gICAgc3RyaW5naWZ5Q2FjaGUgPSBuZXcgKGNhblVzZVdlYWtNYXAgPyBXZWFrTWFwIDogTWFwKSgpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9b2JqZWN0LWNhbm9uLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/cache/inmemory/object-canon.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/cache/inmemory/policies.js":
/*!****************************************************************!*\
  !*** ./node_modules/@apollo/client/cache/inmemory/policies.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Policies\": function() { return /* binding */ Policies; },\n/* harmony export */   \"normalizeReadFieldOptions\": function() { return /* binding */ normalizeReadFieldOptions; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./helpers.js */ \"./node_modules/@apollo/client/cache/inmemory/helpers.js\");\n/* harmony import */ var _reactiveVars_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./reactiveVars.js */ \"./node_modules/@apollo/client/cache/inmemory/reactiveVars.js\");\n/* harmony import */ var _object_canon_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./object-canon.js */ \"./node_modules/@apollo/client/cache/inmemory/object-canon.js\");\n/* harmony import */ var _key_extractor_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./key-extractor.js */ \"./node_modules/@apollo/client/cache/inmemory/key-extractor.js\");\n\n\n\n\n\n\n\n_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.getStoreKeyName.setStringify(_object_canon_js__WEBPACK_IMPORTED_MODULE_2__.canonicalStringify);\nfunction argsFromFieldSpecifier(spec) {\n    return spec.args !== void 0 ? spec.args :\n        spec.field ? (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.argumentsObjectFromField)(spec.field, spec.variables) : null;\n}\nvar nullKeyFieldsFn = function () { return void 0; };\nvar simpleKeyArgsFn = function (_args, context) { return context.fieldName; };\nvar mergeTrueFn = function (existing, incoming, _a) {\n    var mergeObjects = _a.mergeObjects;\n    return mergeObjects(existing, incoming);\n};\nvar mergeFalseFn = function (_, incoming) { return incoming; };\nvar Policies = (function () {\n    function Policies(config) {\n        this.config = config;\n        this.typePolicies = Object.create(null);\n        this.toBeAdded = Object.create(null);\n        this.supertypeMap = new Map();\n        this.fuzzySubtypes = new Map();\n        this.rootIdsByTypename = Object.create(null);\n        this.rootTypenamesById = Object.create(null);\n        this.usingPossibleTypes = false;\n        this.config = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({ dataIdFromObject: _helpers_js__WEBPACK_IMPORTED_MODULE_4__.defaultDataIdFromObject }, config);\n        this.cache = this.config.cache;\n        this.setRootTypename(\"Query\");\n        this.setRootTypename(\"Mutation\");\n        this.setRootTypename(\"Subscription\");\n        if (config.possibleTypes) {\n            this.addPossibleTypes(config.possibleTypes);\n        }\n        if (config.typePolicies) {\n            this.addTypePolicies(config.typePolicies);\n        }\n    }\n    Policies.prototype.identify = function (object, partialContext) {\n        var _a;\n        var policies = this;\n        var typename = partialContext && (partialContext.typename ||\n            ((_a = partialContext.storeObject) === null || _a === void 0 ? void 0 : _a.__typename)) || object.__typename;\n        if (typename === this.rootTypenamesById.ROOT_QUERY) {\n            return [\"ROOT_QUERY\"];\n        }\n        var storeObject = partialContext && partialContext.storeObject || object;\n        var context = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, partialContext), { typename: typename, storeObject: storeObject, readField: partialContext && partialContext.readField || function () {\n                var options = normalizeReadFieldOptions(arguments, storeObject);\n                return policies.readField(options, {\n                    store: policies.cache[\"data\"],\n                    variables: options.variables,\n                });\n            } });\n        var id;\n        var policy = typename && this.getTypePolicy(typename);\n        var keyFn = policy && policy.keyFn || this.config.dataIdFromObject;\n        while (keyFn) {\n            var specifierOrId = keyFn(object, context);\n            if ((0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.isArray)(specifierOrId)) {\n                keyFn = (0,_key_extractor_js__WEBPACK_IMPORTED_MODULE_5__.keyFieldsFnFromSpecifier)(specifierOrId);\n            }\n            else {\n                id = specifierOrId;\n                break;\n            }\n        }\n        id = id ? String(id) : void 0;\n        return context.keyObject ? [id, context.keyObject] : [id];\n    };\n    Policies.prototype.addTypePolicies = function (typePolicies) {\n        var _this = this;\n        Object.keys(typePolicies).forEach(function (typename) {\n            var _a = typePolicies[typename], queryType = _a.queryType, mutationType = _a.mutationType, subscriptionType = _a.subscriptionType, incoming = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__rest)(_a, [\"queryType\", \"mutationType\", \"subscriptionType\"]);\n            if (queryType)\n                _this.setRootTypename(\"Query\", typename);\n            if (mutationType)\n                _this.setRootTypename(\"Mutation\", typename);\n            if (subscriptionType)\n                _this.setRootTypename(\"Subscription\", typename);\n            if (_helpers_js__WEBPACK_IMPORTED_MODULE_4__.hasOwn.call(_this.toBeAdded, typename)) {\n                _this.toBeAdded[typename].push(incoming);\n            }\n            else {\n                _this.toBeAdded[typename] = [incoming];\n            }\n        });\n    };\n    Policies.prototype.updateTypePolicy = function (typename, incoming) {\n        var _this = this;\n        var existing = this.getTypePolicy(typename);\n        var keyFields = incoming.keyFields, fields = incoming.fields;\n        function setMerge(existing, merge) {\n            existing.merge =\n                typeof merge === \"function\" ? merge :\n                    merge === true ? mergeTrueFn :\n                        merge === false ? mergeFalseFn :\n                            existing.merge;\n        }\n        setMerge(existing, incoming.merge);\n        existing.keyFn =\n            keyFields === false ? nullKeyFieldsFn :\n                (0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.isArray)(keyFields) ? (0,_key_extractor_js__WEBPACK_IMPORTED_MODULE_5__.keyFieldsFnFromSpecifier)(keyFields) :\n                    typeof keyFields === \"function\" ? keyFields :\n                        existing.keyFn;\n        if (fields) {\n            Object.keys(fields).forEach(function (fieldName) {\n                var existing = _this.getFieldPolicy(typename, fieldName, true);\n                var incoming = fields[fieldName];\n                if (typeof incoming === \"function\") {\n                    existing.read = incoming;\n                }\n                else {\n                    var keyArgs = incoming.keyArgs, read = incoming.read, merge = incoming.merge;\n                    existing.keyFn =\n                        keyArgs === false ? simpleKeyArgsFn :\n                            (0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.isArray)(keyArgs) ? (0,_key_extractor_js__WEBPACK_IMPORTED_MODULE_5__.keyArgsFnFromSpecifier)(keyArgs) :\n                                typeof keyArgs === \"function\" ? keyArgs :\n                                    existing.keyFn;\n                    if (typeof read === \"function\") {\n                        existing.read = read;\n                    }\n                    setMerge(existing, merge);\n                }\n                if (existing.read && existing.merge) {\n                    existing.keyFn = existing.keyFn || simpleKeyArgsFn;\n                }\n            });\n        }\n    };\n    Policies.prototype.setRootTypename = function (which, typename) {\n        if (typename === void 0) { typename = which; }\n        var rootId = \"ROOT_\" + which.toUpperCase();\n        var old = this.rootTypenamesById[rootId];\n        if (typename !== old) {\n            __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(!old || old === which, \"Cannot change root \".concat(which, \" __typename more than once\")) : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(!old || old === which, 3);\n            if (old)\n                delete this.rootIdsByTypename[old];\n            this.rootIdsByTypename[typename] = rootId;\n            this.rootTypenamesById[rootId] = typename;\n        }\n    };\n    Policies.prototype.addPossibleTypes = function (possibleTypes) {\n        var _this = this;\n        this.usingPossibleTypes = true;\n        Object.keys(possibleTypes).forEach(function (supertype) {\n            _this.getSupertypeSet(supertype, true);\n            possibleTypes[supertype].forEach(function (subtype) {\n                _this.getSupertypeSet(subtype, true).add(supertype);\n                var match = subtype.match(_helpers_js__WEBPACK_IMPORTED_MODULE_4__.TypeOrFieldNameRegExp);\n                if (!match || match[0] !== subtype) {\n                    _this.fuzzySubtypes.set(subtype, new RegExp(subtype));\n                }\n            });\n        });\n    };\n    Policies.prototype.getTypePolicy = function (typename) {\n        var _this = this;\n        if (!_helpers_js__WEBPACK_IMPORTED_MODULE_4__.hasOwn.call(this.typePolicies, typename)) {\n            var policy_1 = this.typePolicies[typename] = Object.create(null);\n            policy_1.fields = Object.create(null);\n            var supertypes = this.supertypeMap.get(typename);\n            if (supertypes && supertypes.size) {\n                supertypes.forEach(function (supertype) {\n                    var _a = _this.getTypePolicy(supertype), fields = _a.fields, rest = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__rest)(_a, [\"fields\"]);\n                    Object.assign(policy_1, rest);\n                    Object.assign(policy_1.fields, fields);\n                });\n            }\n        }\n        var inbox = this.toBeAdded[typename];\n        if (inbox && inbox.length) {\n            inbox.splice(0).forEach(function (policy) {\n                _this.updateTypePolicy(typename, policy);\n            });\n        }\n        return this.typePolicies[typename];\n    };\n    Policies.prototype.getFieldPolicy = function (typename, fieldName, createIfMissing) {\n        if (typename) {\n            var fieldPolicies = this.getTypePolicy(typename).fields;\n            return fieldPolicies[fieldName] || (createIfMissing && (fieldPolicies[fieldName] = Object.create(null)));\n        }\n    };\n    Policies.prototype.getSupertypeSet = function (subtype, createIfMissing) {\n        var supertypeSet = this.supertypeMap.get(subtype);\n        if (!supertypeSet && createIfMissing) {\n            this.supertypeMap.set(subtype, supertypeSet = new Set());\n        }\n        return supertypeSet;\n    };\n    Policies.prototype.fragmentMatches = function (fragment, typename, result, variables) {\n        var _this = this;\n        if (!fragment.typeCondition)\n            return true;\n        if (!typename)\n            return false;\n        var supertype = fragment.typeCondition.name.value;\n        if (typename === supertype)\n            return true;\n        if (this.usingPossibleTypes &&\n            this.supertypeMap.has(supertype)) {\n            var typenameSupertypeSet = this.getSupertypeSet(typename, true);\n            var workQueue_1 = [typenameSupertypeSet];\n            var maybeEnqueue_1 = function (subtype) {\n                var supertypeSet = _this.getSupertypeSet(subtype, false);\n                if (supertypeSet &&\n                    supertypeSet.size &&\n                    workQueue_1.indexOf(supertypeSet) < 0) {\n                    workQueue_1.push(supertypeSet);\n                }\n            };\n            var needToCheckFuzzySubtypes = !!(result && this.fuzzySubtypes.size);\n            var checkingFuzzySubtypes = false;\n            for (var i = 0; i < workQueue_1.length; ++i) {\n                var supertypeSet = workQueue_1[i];\n                if (supertypeSet.has(supertype)) {\n                    if (!typenameSupertypeSet.has(supertype)) {\n                        if (checkingFuzzySubtypes) {\n                            __DEV__ && _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant.warn(\"Inferring subtype \".concat(typename, \" of supertype \").concat(supertype));\n                        }\n                        typenameSupertypeSet.add(supertype);\n                    }\n                    return true;\n                }\n                supertypeSet.forEach(maybeEnqueue_1);\n                if (needToCheckFuzzySubtypes &&\n                    i === workQueue_1.length - 1 &&\n                    (0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.selectionSetMatchesResult)(fragment.selectionSet, result, variables)) {\n                    needToCheckFuzzySubtypes = false;\n                    checkingFuzzySubtypes = true;\n                    this.fuzzySubtypes.forEach(function (regExp, fuzzyString) {\n                        var match = typename.match(regExp);\n                        if (match && match[0] === typename) {\n                            maybeEnqueue_1(fuzzyString);\n                        }\n                    });\n                }\n            }\n        }\n        return false;\n    };\n    Policies.prototype.hasKeyArgs = function (typename, fieldName) {\n        var policy = this.getFieldPolicy(typename, fieldName, false);\n        return !!(policy && policy.keyFn);\n    };\n    Policies.prototype.getStoreFieldName = function (fieldSpec) {\n        var typename = fieldSpec.typename, fieldName = fieldSpec.fieldName;\n        var policy = this.getFieldPolicy(typename, fieldName, false);\n        var storeFieldName;\n        var keyFn = policy && policy.keyFn;\n        if (keyFn && typename) {\n            var context = {\n                typename: typename,\n                fieldName: fieldName,\n                field: fieldSpec.field || null,\n                variables: fieldSpec.variables,\n            };\n            var args = argsFromFieldSpecifier(fieldSpec);\n            while (keyFn) {\n                var specifierOrString = keyFn(args, context);\n                if ((0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.isArray)(specifierOrString)) {\n                    keyFn = (0,_key_extractor_js__WEBPACK_IMPORTED_MODULE_5__.keyArgsFnFromSpecifier)(specifierOrString);\n                }\n                else {\n                    storeFieldName = specifierOrString || fieldName;\n                    break;\n                }\n            }\n        }\n        if (storeFieldName === void 0) {\n            storeFieldName = fieldSpec.field\n                ? (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.storeKeyNameFromField)(fieldSpec.field, fieldSpec.variables)\n                : (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.getStoreKeyName)(fieldName, argsFromFieldSpecifier(fieldSpec));\n        }\n        if (storeFieldName === false) {\n            return fieldName;\n        }\n        return fieldName === (0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.fieldNameFromStoreName)(storeFieldName)\n            ? storeFieldName\n            : fieldName + \":\" + storeFieldName;\n    };\n    Policies.prototype.readField = function (options, context) {\n        var objectOrReference = options.from;\n        if (!objectOrReference)\n            return;\n        var nameOrField = options.field || options.fieldName;\n        if (!nameOrField)\n            return;\n        if (options.typename === void 0) {\n            var typename = context.store.getFieldValue(objectOrReference, \"__typename\");\n            if (typename)\n                options.typename = typename;\n        }\n        var storeFieldName = this.getStoreFieldName(options);\n        var fieldName = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.fieldNameFromStoreName)(storeFieldName);\n        var existing = context.store.getFieldValue(objectOrReference, storeFieldName);\n        var policy = this.getFieldPolicy(options.typename, fieldName, false);\n        var read = policy && policy.read;\n        if (read) {\n            var readOptions = makeFieldFunctionOptions(this, objectOrReference, options, context, context.store.getStorage((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.isReference)(objectOrReference)\n                ? objectOrReference.__ref\n                : objectOrReference, storeFieldName));\n            return _reactiveVars_js__WEBPACK_IMPORTED_MODULE_6__.cacheSlot.withValue(this.cache, read, [existing, readOptions]);\n        }\n        return existing;\n    };\n    Policies.prototype.getReadFunction = function (typename, fieldName) {\n        var policy = this.getFieldPolicy(typename, fieldName, false);\n        return policy && policy.read;\n    };\n    Policies.prototype.getMergeFunction = function (parentTypename, fieldName, childTypename) {\n        var policy = this.getFieldPolicy(parentTypename, fieldName, false);\n        var merge = policy && policy.merge;\n        if (!merge && childTypename) {\n            policy = this.getTypePolicy(childTypename);\n            merge = policy && policy.merge;\n        }\n        return merge;\n    };\n    Policies.prototype.runMergeFunction = function (existing, incoming, _a, context, storage) {\n        var field = _a.field, typename = _a.typename, merge = _a.merge;\n        if (merge === mergeTrueFn) {\n            return makeMergeObjectsFunction(context.store)(existing, incoming);\n        }\n        if (merge === mergeFalseFn) {\n            return incoming;\n        }\n        if (context.overwrite) {\n            existing = void 0;\n        }\n        return merge(existing, incoming, makeFieldFunctionOptions(this, void 0, { typename: typename, fieldName: field.name.value, field: field, variables: context.variables }, context, storage || Object.create(null)));\n    };\n    return Policies;\n}());\n\nfunction makeFieldFunctionOptions(policies, objectOrReference, fieldSpec, context, storage) {\n    var storeFieldName = policies.getStoreFieldName(fieldSpec);\n    var fieldName = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.fieldNameFromStoreName)(storeFieldName);\n    var variables = fieldSpec.variables || context.variables;\n    var _a = context.store, toReference = _a.toReference, canRead = _a.canRead;\n    return {\n        args: argsFromFieldSpecifier(fieldSpec),\n        field: fieldSpec.field || null,\n        fieldName: fieldName,\n        storeFieldName: storeFieldName,\n        variables: variables,\n        isReference: _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.isReference,\n        toReference: toReference,\n        storage: storage,\n        cache: policies.cache,\n        canRead: canRead,\n        readField: function () {\n            return policies.readField(normalizeReadFieldOptions(arguments, objectOrReference, context), context);\n        },\n        mergeObjects: makeMergeObjectsFunction(context.store),\n    };\n}\nfunction normalizeReadFieldOptions(readFieldArgs, objectOrReference, variables) {\n    var fieldNameOrOptions = readFieldArgs[0], from = readFieldArgs[1], argc = readFieldArgs.length;\n    var options;\n    if (typeof fieldNameOrOptions === \"string\") {\n        options = {\n            fieldName: fieldNameOrOptions,\n            from: argc > 1 ? from : objectOrReference,\n        };\n    }\n    else {\n        options = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, fieldNameOrOptions);\n        if (!_helpers_js__WEBPACK_IMPORTED_MODULE_4__.hasOwn.call(options, \"from\")) {\n            options.from = objectOrReference;\n        }\n    }\n    if (__DEV__ && options.from === void 0) {\n        __DEV__ && _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant.warn(\"Undefined 'from' passed to readField with arguments \".concat((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.stringifyForDisplay)(Array.from(readFieldArgs))));\n    }\n    if (void 0 === options.variables) {\n        options.variables = variables;\n    }\n    return options;\n}\nfunction makeMergeObjectsFunction(store) {\n    return function mergeObjects(existing, incoming) {\n        if ((0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.isArray)(existing) || (0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.isArray)(incoming)) {\n            throw __DEV__ ? new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(\"Cannot automatically merge arrays\") : new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(4);\n        }\n        if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.isNonNullObject)(existing) &&\n            (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.isNonNullObject)(incoming)) {\n            var eType = store.getFieldValue(existing, \"__typename\");\n            var iType = store.getFieldValue(incoming, \"__typename\");\n            var typesDiffer = eType && iType && eType !== iType;\n            if (typesDiffer) {\n                return incoming;\n            }\n            if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.isReference)(existing) &&\n                (0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.storeValueIsStoreObject)(incoming)) {\n                store.merge(existing.__ref, incoming);\n                return existing;\n            }\n            if ((0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.storeValueIsStoreObject)(existing) &&\n                (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.isReference)(incoming)) {\n                store.merge(existing, incoming.__ref);\n                return incoming;\n            }\n            if ((0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.storeValueIsStoreObject)(existing) &&\n                (0,_helpers_js__WEBPACK_IMPORTED_MODULE_4__.storeValueIsStoreObject)(incoming)) {\n                return (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, existing), incoming);\n            }\n        }\n        return incoming;\n    };\n}\n//# sourceMappingURL=policies.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvaW5tZW1vcnkvcG9saWNpZXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQXlDO0FBQ29DO0FBQ21GO0FBQ1k7QUFDOUg7QUFDUztBQUMrQjtBQUN0Riw2RUFBNEIsQ0FBQyxnRUFBa0I7QUFDL0M7QUFDQTtBQUNBLHFCQUFxQiw2RUFBd0I7QUFDN0M7QUFDQSxvQ0FBb0M7QUFDcEMsa0RBQWtEO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLCtDQUFRLEdBQUcsa0JBQWtCLGdFQUF1QixFQUFFO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLHFCQUFxQjtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvREFBTztBQUN2Qix3QkFBd0IsMkVBQXdCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBKQUEwSiw2Q0FBTTtBQUNoSztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isb0RBQVc7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isb0RBQU8sY0FBYywyRUFBd0I7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsb0RBQU8sWUFBWSx5RUFBc0I7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixzRUFBUyw2RkFBNkYsc0VBQVM7QUFDckk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsOERBQXFCO0FBQy9EO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvREFBVztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0ZBQXdGLDZDQUFNO0FBQzlGO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qix3QkFBd0I7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsdUVBQWM7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixzRUFBeUI7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFPO0FBQzNCLDRCQUE0Qix5RUFBc0I7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDBFQUFxQjtBQUN2QyxrQkFBa0Isb0VBQWU7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsbUVBQXNCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG1FQUFzQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLDJIQUEySCxnRUFBVztBQUN0STtBQUNBO0FBQ0EsbUJBQW1CLGlFQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrRkFBa0YsNkZBQTZGO0FBQy9LO0FBQ0E7QUFDQSxDQUFDO0FBQ21CO0FBQ3BCO0FBQ0E7QUFDQSxvQkFBb0IsbUVBQXNCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNERBQVc7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLCtDQUFRLEdBQUc7QUFDN0IsYUFBYSxvREFBVztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix1RUFBYywrREFBK0Qsd0VBQW1CO0FBQ25IO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG9EQUFPLGNBQWMsb0RBQU87QUFDeEMsZ0NBQWdDLHVFQUFjLDRDQUE0Qyx1RUFBYztBQUN4RztBQUNBLFlBQVksb0VBQWU7QUFDM0IsWUFBWSxvRUFBZTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsZ0VBQVc7QUFDM0IsZ0JBQWdCLG9FQUF1QjtBQUN2QztBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isb0VBQXVCO0FBQ3ZDLGdCQUFnQixnRUFBVztBQUMzQjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isb0VBQXVCO0FBQ3ZDLGdCQUFnQixvRUFBdUI7QUFDdkMsdUJBQXVCLCtDQUFRLENBQUMsK0NBQVEsR0FBRztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L2NhY2hlL2lubWVtb3J5L3BvbGljaWVzLmpzPzRmOGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaW52YXJpYW50LCBJbnZhcmlhbnRFcnJvciB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZ2xvYmFscy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgc3RvcmVLZXlOYW1lRnJvbUZpZWxkLCBhcmd1bWVudHNPYmplY3RGcm9tRmllbGQsIGlzUmVmZXJlbmNlLCBnZXRTdG9yZUtleU5hbWUsIGlzTm9uTnVsbE9iamVjdCwgc3RyaW5naWZ5Rm9yRGlzcGxheSwgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBoYXNPd24sIGZpZWxkTmFtZUZyb21TdG9yZU5hbWUsIHN0b3JlVmFsdWVJc1N0b3JlT2JqZWN0LCBzZWxlY3Rpb25TZXRNYXRjaGVzUmVzdWx0LCBUeXBlT3JGaWVsZE5hbWVSZWdFeHAsIGRlZmF1bHREYXRhSWRGcm9tT2JqZWN0LCBpc0FycmF5LCB9IGZyb20gXCIuL2hlbHBlcnMuanNcIjtcbmltcG9ydCB7IGNhY2hlU2xvdCB9IGZyb20gXCIuL3JlYWN0aXZlVmFycy5qc1wiO1xuaW1wb3J0IHsgY2Fub25pY2FsU3RyaW5naWZ5IH0gZnJvbSBcIi4vb2JqZWN0LWNhbm9uLmpzXCI7XG5pbXBvcnQgeyBrZXlBcmdzRm5Gcm9tU3BlY2lmaWVyLCBrZXlGaWVsZHNGbkZyb21TcGVjaWZpZXIgfSBmcm9tIFwiLi9rZXktZXh0cmFjdG9yLmpzXCI7XG5nZXRTdG9yZUtleU5hbWUuc2V0U3RyaW5naWZ5KGNhbm9uaWNhbFN0cmluZ2lmeSk7XG5mdW5jdGlvbiBhcmdzRnJvbUZpZWxkU3BlY2lmaWVyKHNwZWMpIHtcbiAgICByZXR1cm4gc3BlYy5hcmdzICE9PSB2b2lkIDAgPyBzcGVjLmFyZ3MgOlxuICAgICAgICBzcGVjLmZpZWxkID8gYXJndW1lbnRzT2JqZWN0RnJvbUZpZWxkKHNwZWMuZmllbGQsIHNwZWMudmFyaWFibGVzKSA6IG51bGw7XG59XG52YXIgbnVsbEtleUZpZWxkc0ZuID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdm9pZCAwOyB9O1xudmFyIHNpbXBsZUtleUFyZ3NGbiA9IGZ1bmN0aW9uIChfYXJncywgY29udGV4dCkgeyByZXR1cm4gY29udGV4dC5maWVsZE5hbWU7IH07XG52YXIgbWVyZ2VUcnVlRm4gPSBmdW5jdGlvbiAoZXhpc3RpbmcsIGluY29taW5nLCBfYSkge1xuICAgIHZhciBtZXJnZU9iamVjdHMgPSBfYS5tZXJnZU9iamVjdHM7XG4gICAgcmV0dXJuIG1lcmdlT2JqZWN0cyhleGlzdGluZywgaW5jb21pbmcpO1xufTtcbnZhciBtZXJnZUZhbHNlRm4gPSBmdW5jdGlvbiAoXywgaW5jb21pbmcpIHsgcmV0dXJuIGluY29taW5nOyB9O1xudmFyIFBvbGljaWVzID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBQb2xpY2llcyhjb25maWcpIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgICAgIHRoaXMudHlwZVBvbGljaWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy50b0JlQWRkZWQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICB0aGlzLnN1cGVydHlwZU1hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5mdXp6eVN1YnR5cGVzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLnJvb3RJZHNCeVR5cGVuYW1lID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5yb290VHlwZW5hbWVzQnlJZCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIHRoaXMudXNpbmdQb3NzaWJsZVR5cGVzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY29uZmlnID0gX19hc3NpZ24oeyBkYXRhSWRGcm9tT2JqZWN0OiBkZWZhdWx0RGF0YUlkRnJvbU9iamVjdCB9LCBjb25maWcpO1xuICAgICAgICB0aGlzLmNhY2hlID0gdGhpcy5jb25maWcuY2FjaGU7XG4gICAgICAgIHRoaXMuc2V0Um9vdFR5cGVuYW1lKFwiUXVlcnlcIik7XG4gICAgICAgIHRoaXMuc2V0Um9vdFR5cGVuYW1lKFwiTXV0YXRpb25cIik7XG4gICAgICAgIHRoaXMuc2V0Um9vdFR5cGVuYW1lKFwiU3Vic2NyaXB0aW9uXCIpO1xuICAgICAgICBpZiAoY29uZmlnLnBvc3NpYmxlVHlwZXMpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkUG9zc2libGVUeXBlcyhjb25maWcucG9zc2libGVUeXBlcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbmZpZy50eXBlUG9saWNpZXMpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkVHlwZVBvbGljaWVzKGNvbmZpZy50eXBlUG9saWNpZXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIFBvbGljaWVzLnByb3RvdHlwZS5pZGVudGlmeSA9IGZ1bmN0aW9uIChvYmplY3QsIHBhcnRpYWxDb250ZXh0KSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIHBvbGljaWVzID0gdGhpcztcbiAgICAgICAgdmFyIHR5cGVuYW1lID0gcGFydGlhbENvbnRleHQgJiYgKHBhcnRpYWxDb250ZXh0LnR5cGVuYW1lIHx8XG4gICAgICAgICAgICAoKF9hID0gcGFydGlhbENvbnRleHQuc3RvcmVPYmplY3QpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5fX3R5cGVuYW1lKSkgfHwgb2JqZWN0Ll9fdHlwZW5hbWU7XG4gICAgICAgIGlmICh0eXBlbmFtZSA9PT0gdGhpcy5yb290VHlwZW5hbWVzQnlJZC5ST09UX1FVRVJZKSB7XG4gICAgICAgICAgICByZXR1cm4gW1wiUk9PVF9RVUVSWVwiXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RvcmVPYmplY3QgPSBwYXJ0aWFsQ29udGV4dCAmJiBwYXJ0aWFsQ29udGV4dC5zdG9yZU9iamVjdCB8fCBvYmplY3Q7XG4gICAgICAgIHZhciBjb250ZXh0ID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHBhcnRpYWxDb250ZXh0KSwgeyB0eXBlbmFtZTogdHlwZW5hbWUsIHN0b3JlT2JqZWN0OiBzdG9yZU9iamVjdCwgcmVhZEZpZWxkOiBwYXJ0aWFsQ29udGV4dCAmJiBwYXJ0aWFsQ29udGV4dC5yZWFkRmllbGQgfHwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBvcHRpb25zID0gbm9ybWFsaXplUmVhZEZpZWxkT3B0aW9ucyhhcmd1bWVudHMsIHN0b3JlT2JqZWN0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcG9saWNpZXMucmVhZEZpZWxkKG9wdGlvbnMsIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmU6IHBvbGljaWVzLmNhY2hlW1wiZGF0YVwiXSxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiBvcHRpb25zLnZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gfSk7XG4gICAgICAgIHZhciBpZDtcbiAgICAgICAgdmFyIHBvbGljeSA9IHR5cGVuYW1lICYmIHRoaXMuZ2V0VHlwZVBvbGljeSh0eXBlbmFtZSk7XG4gICAgICAgIHZhciBrZXlGbiA9IHBvbGljeSAmJiBwb2xpY3kua2V5Rm4gfHwgdGhpcy5jb25maWcuZGF0YUlkRnJvbU9iamVjdDtcbiAgICAgICAgd2hpbGUgKGtleUZuKSB7XG4gICAgICAgICAgICB2YXIgc3BlY2lmaWVyT3JJZCA9IGtleUZuKG9iamVjdCwgY29udGV4dCk7XG4gICAgICAgICAgICBpZiAoaXNBcnJheShzcGVjaWZpZXJPcklkKSkge1xuICAgICAgICAgICAgICAgIGtleUZuID0ga2V5RmllbGRzRm5Gcm9tU3BlY2lmaWVyKHNwZWNpZmllck9ySWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWQgPSBzcGVjaWZpZXJPcklkO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlkID0gaWQgPyBTdHJpbmcoaWQpIDogdm9pZCAwO1xuICAgICAgICByZXR1cm4gY29udGV4dC5rZXlPYmplY3QgPyBbaWQsIGNvbnRleHQua2V5T2JqZWN0XSA6IFtpZF07XG4gICAgfTtcbiAgICBQb2xpY2llcy5wcm90b3R5cGUuYWRkVHlwZVBvbGljaWVzID0gZnVuY3Rpb24gKHR5cGVQb2xpY2llcykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBPYmplY3Qua2V5cyh0eXBlUG9saWNpZXMpLmZvckVhY2goZnVuY3Rpb24gKHR5cGVuYW1lKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0eXBlUG9saWNpZXNbdHlwZW5hbWVdLCBxdWVyeVR5cGUgPSBfYS5xdWVyeVR5cGUsIG11dGF0aW9uVHlwZSA9IF9hLm11dGF0aW9uVHlwZSwgc3Vic2NyaXB0aW9uVHlwZSA9IF9hLnN1YnNjcmlwdGlvblR5cGUsIGluY29taW5nID0gX19yZXN0KF9hLCBbXCJxdWVyeVR5cGVcIiwgXCJtdXRhdGlvblR5cGVcIiwgXCJzdWJzY3JpcHRpb25UeXBlXCJdKTtcbiAgICAgICAgICAgIGlmIChxdWVyeVR5cGUpXG4gICAgICAgICAgICAgICAgX3RoaXMuc2V0Um9vdFR5cGVuYW1lKFwiUXVlcnlcIiwgdHlwZW5hbWUpO1xuICAgICAgICAgICAgaWYgKG11dGF0aW9uVHlwZSlcbiAgICAgICAgICAgICAgICBfdGhpcy5zZXRSb290VHlwZW5hbWUoXCJNdXRhdGlvblwiLCB0eXBlbmFtZSk7XG4gICAgICAgICAgICBpZiAoc3Vic2NyaXB0aW9uVHlwZSlcbiAgICAgICAgICAgICAgICBfdGhpcy5zZXRSb290VHlwZW5hbWUoXCJTdWJzY3JpcHRpb25cIiwgdHlwZW5hbWUpO1xuICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKF90aGlzLnRvQmVBZGRlZCwgdHlwZW5hbWUpKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMudG9CZUFkZGVkW3R5cGVuYW1lXS5wdXNoKGluY29taW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIF90aGlzLnRvQmVBZGRlZFt0eXBlbmFtZV0gPSBbaW5jb21pbmddO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFBvbGljaWVzLnByb3RvdHlwZS51cGRhdGVUeXBlUG9saWN5ID0gZnVuY3Rpb24gKHR5cGVuYW1lLCBpbmNvbWluZykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZXhpc3RpbmcgPSB0aGlzLmdldFR5cGVQb2xpY3kodHlwZW5hbWUpO1xuICAgICAgICB2YXIga2V5RmllbGRzID0gaW5jb21pbmcua2V5RmllbGRzLCBmaWVsZHMgPSBpbmNvbWluZy5maWVsZHM7XG4gICAgICAgIGZ1bmN0aW9uIHNldE1lcmdlKGV4aXN0aW5nLCBtZXJnZSkge1xuICAgICAgICAgICAgZXhpc3RpbmcubWVyZ2UgPVxuICAgICAgICAgICAgICAgIHR5cGVvZiBtZXJnZSA9PT0gXCJmdW5jdGlvblwiID8gbWVyZ2UgOlxuICAgICAgICAgICAgICAgICAgICBtZXJnZSA9PT0gdHJ1ZSA/IG1lcmdlVHJ1ZUZuIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlID09PSBmYWxzZSA/IG1lcmdlRmFsc2VGbiA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcubWVyZ2U7XG4gICAgICAgIH1cbiAgICAgICAgc2V0TWVyZ2UoZXhpc3RpbmcsIGluY29taW5nLm1lcmdlKTtcbiAgICAgICAgZXhpc3Rpbmcua2V5Rm4gPVxuICAgICAgICAgICAga2V5RmllbGRzID09PSBmYWxzZSA/IG51bGxLZXlGaWVsZHNGbiA6XG4gICAgICAgICAgICAgICAgaXNBcnJheShrZXlGaWVsZHMpID8ga2V5RmllbGRzRm5Gcm9tU3BlY2lmaWVyKGtleUZpZWxkcykgOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2Yga2V5RmllbGRzID09PSBcImZ1bmN0aW9uXCIgPyBrZXlGaWVsZHMgOlxuICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3Rpbmcua2V5Rm47XG4gICAgICAgIGlmIChmaWVsZHMpIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGZpZWxkcykuZm9yRWFjaChmdW5jdGlvbiAoZmllbGROYW1lKSB7XG4gICAgICAgICAgICAgICAgdmFyIGV4aXN0aW5nID0gX3RoaXMuZ2V0RmllbGRQb2xpY3kodHlwZW5hbWUsIGZpZWxkTmFtZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgdmFyIGluY29taW5nID0gZmllbGRzW2ZpZWxkTmFtZV07XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpbmNvbWluZyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nLnJlYWQgPSBpbmNvbWluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBrZXlBcmdzID0gaW5jb21pbmcua2V5QXJncywgcmVhZCA9IGluY29taW5nLnJlYWQsIG1lcmdlID0gaW5jb21pbmcubWVyZ2U7XG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nLmtleUZuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGtleUFyZ3MgPT09IGZhbHNlID8gc2ltcGxlS2V5QXJnc0ZuIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FycmF5KGtleUFyZ3MpID8ga2V5QXJnc0ZuRnJvbVNwZWNpZmllcihrZXlBcmdzKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBrZXlBcmdzID09PSBcImZ1bmN0aW9uXCIgPyBrZXlBcmdzIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nLmtleUZuO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlYWQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcucmVhZCA9IHJlYWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2V0TWVyZ2UoZXhpc3RpbmcsIG1lcmdlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nLnJlYWQgJiYgZXhpc3RpbmcubWVyZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgZXhpc3Rpbmcua2V5Rm4gPSBleGlzdGluZy5rZXlGbiB8fCBzaW1wbGVLZXlBcmdzRm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFBvbGljaWVzLnByb3RvdHlwZS5zZXRSb290VHlwZW5hbWUgPSBmdW5jdGlvbiAod2hpY2gsIHR5cGVuYW1lKSB7XG4gICAgICAgIGlmICh0eXBlbmFtZSA9PT0gdm9pZCAwKSB7IHR5cGVuYW1lID0gd2hpY2g7IH1cbiAgICAgICAgdmFyIHJvb3RJZCA9IFwiUk9PVF9cIiArIHdoaWNoLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIHZhciBvbGQgPSB0aGlzLnJvb3RUeXBlbmFtZXNCeUlkW3Jvb3RJZF07XG4gICAgICAgIGlmICh0eXBlbmFtZSAhPT0gb2xkKSB7XG4gICAgICAgICAgICBfX0RFVl9fID8gaW52YXJpYW50KCFvbGQgfHwgb2xkID09PSB3aGljaCwgXCJDYW5ub3QgY2hhbmdlIHJvb3QgXCIuY29uY2F0KHdoaWNoLCBcIiBfX3R5cGVuYW1lIG1vcmUgdGhhbiBvbmNlXCIpKSA6IGludmFyaWFudCghb2xkIHx8IG9sZCA9PT0gd2hpY2gsIDMpO1xuICAgICAgICAgICAgaWYgKG9sZClcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5yb290SWRzQnlUeXBlbmFtZVtvbGRdO1xuICAgICAgICAgICAgdGhpcy5yb290SWRzQnlUeXBlbmFtZVt0eXBlbmFtZV0gPSByb290SWQ7XG4gICAgICAgICAgICB0aGlzLnJvb3RUeXBlbmFtZXNCeUlkW3Jvb3RJZF0gPSB0eXBlbmFtZTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUG9saWNpZXMucHJvdG90eXBlLmFkZFBvc3NpYmxlVHlwZXMgPSBmdW5jdGlvbiAocG9zc2libGVUeXBlcykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLnVzaW5nUG9zc2libGVUeXBlcyA9IHRydWU7XG4gICAgICAgIE9iamVjdC5rZXlzKHBvc3NpYmxlVHlwZXMpLmZvckVhY2goZnVuY3Rpb24gKHN1cGVydHlwZSkge1xuICAgICAgICAgICAgX3RoaXMuZ2V0U3VwZXJ0eXBlU2V0KHN1cGVydHlwZSwgdHJ1ZSk7XG4gICAgICAgICAgICBwb3NzaWJsZVR5cGVzW3N1cGVydHlwZV0uZm9yRWFjaChmdW5jdGlvbiAoc3VidHlwZSkge1xuICAgICAgICAgICAgICAgIF90aGlzLmdldFN1cGVydHlwZVNldChzdWJ0eXBlLCB0cnVlKS5hZGQoc3VwZXJ0eXBlKTtcbiAgICAgICAgICAgICAgICB2YXIgbWF0Y2ggPSBzdWJ0eXBlLm1hdGNoKFR5cGVPckZpZWxkTmFtZVJlZ0V4cCk7XG4gICAgICAgICAgICAgICAgaWYgKCFtYXRjaCB8fCBtYXRjaFswXSAhPT0gc3VidHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5mdXp6eVN1YnR5cGVzLnNldChzdWJ0eXBlLCBuZXcgUmVnRXhwKHN1YnR5cGUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBQb2xpY2llcy5wcm90b3R5cGUuZ2V0VHlwZVBvbGljeSA9IGZ1bmN0aW9uICh0eXBlbmFtZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAoIWhhc093bi5jYWxsKHRoaXMudHlwZVBvbGljaWVzLCB0eXBlbmFtZSkpIHtcbiAgICAgICAgICAgIHZhciBwb2xpY3lfMSA9IHRoaXMudHlwZVBvbGljaWVzW3R5cGVuYW1lXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgICBwb2xpY3lfMS5maWVsZHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgICAgdmFyIHN1cGVydHlwZXMgPSB0aGlzLnN1cGVydHlwZU1hcC5nZXQodHlwZW5hbWUpO1xuICAgICAgICAgICAgaWYgKHN1cGVydHlwZXMgJiYgc3VwZXJ0eXBlcy5zaXplKSB7XG4gICAgICAgICAgICAgICAgc3VwZXJ0eXBlcy5mb3JFYWNoKGZ1bmN0aW9uIChzdXBlcnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hID0gX3RoaXMuZ2V0VHlwZVBvbGljeShzdXBlcnR5cGUpLCBmaWVsZHMgPSBfYS5maWVsZHMsIHJlc3QgPSBfX3Jlc3QoX2EsIFtcImZpZWxkc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocG9saWN5XzEsIHJlc3QpO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHBvbGljeV8xLmZpZWxkcywgZmllbGRzKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgaW5ib3ggPSB0aGlzLnRvQmVBZGRlZFt0eXBlbmFtZV07XG4gICAgICAgIGlmIChpbmJveCAmJiBpbmJveC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGluYm94LnNwbGljZSgwKS5mb3JFYWNoKGZ1bmN0aW9uIChwb2xpY3kpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy51cGRhdGVUeXBlUG9saWN5KHR5cGVuYW1lLCBwb2xpY3kpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZVBvbGljaWVzW3R5cGVuYW1lXTtcbiAgICB9O1xuICAgIFBvbGljaWVzLnByb3RvdHlwZS5nZXRGaWVsZFBvbGljeSA9IGZ1bmN0aW9uICh0eXBlbmFtZSwgZmllbGROYW1lLCBjcmVhdGVJZk1pc3NpbmcpIHtcbiAgICAgICAgaWYgKHR5cGVuYW1lKSB7XG4gICAgICAgICAgICB2YXIgZmllbGRQb2xpY2llcyA9IHRoaXMuZ2V0VHlwZVBvbGljeSh0eXBlbmFtZSkuZmllbGRzO1xuICAgICAgICAgICAgcmV0dXJuIGZpZWxkUG9saWNpZXNbZmllbGROYW1lXSB8fCAoY3JlYXRlSWZNaXNzaW5nICYmIChmaWVsZFBvbGljaWVzW2ZpZWxkTmFtZV0gPSBPYmplY3QuY3JlYXRlKG51bGwpKSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFBvbGljaWVzLnByb3RvdHlwZS5nZXRTdXBlcnR5cGVTZXQgPSBmdW5jdGlvbiAoc3VidHlwZSwgY3JlYXRlSWZNaXNzaW5nKSB7XG4gICAgICAgIHZhciBzdXBlcnR5cGVTZXQgPSB0aGlzLnN1cGVydHlwZU1hcC5nZXQoc3VidHlwZSk7XG4gICAgICAgIGlmICghc3VwZXJ0eXBlU2V0ICYmIGNyZWF0ZUlmTWlzc2luZykge1xuICAgICAgICAgICAgdGhpcy5zdXBlcnR5cGVNYXAuc2V0KHN1YnR5cGUsIHN1cGVydHlwZVNldCA9IG5ldyBTZXQoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1cGVydHlwZVNldDtcbiAgICB9O1xuICAgIFBvbGljaWVzLnByb3RvdHlwZS5mcmFnbWVudE1hdGNoZXMgPSBmdW5jdGlvbiAoZnJhZ21lbnQsIHR5cGVuYW1lLCByZXN1bHQsIHZhcmlhYmxlcykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAoIWZyYWdtZW50LnR5cGVDb25kaXRpb24pXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKCF0eXBlbmFtZSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgdmFyIHN1cGVydHlwZSA9IGZyYWdtZW50LnR5cGVDb25kaXRpb24ubmFtZS52YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVuYW1lID09PSBzdXBlcnR5cGUpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMudXNpbmdQb3NzaWJsZVR5cGVzICYmXG4gICAgICAgICAgICB0aGlzLnN1cGVydHlwZU1hcC5oYXMoc3VwZXJ0eXBlKSkge1xuICAgICAgICAgICAgdmFyIHR5cGVuYW1lU3VwZXJ0eXBlU2V0ID0gdGhpcy5nZXRTdXBlcnR5cGVTZXQodHlwZW5hbWUsIHRydWUpO1xuICAgICAgICAgICAgdmFyIHdvcmtRdWV1ZV8xID0gW3R5cGVuYW1lU3VwZXJ0eXBlU2V0XTtcbiAgICAgICAgICAgIHZhciBtYXliZUVucXVldWVfMSA9IGZ1bmN0aW9uIChzdWJ0eXBlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHN1cGVydHlwZVNldCA9IF90aGlzLmdldFN1cGVydHlwZVNldChzdWJ0eXBlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgaWYgKHN1cGVydHlwZVNldCAmJlxuICAgICAgICAgICAgICAgICAgICBzdXBlcnR5cGVTZXQuc2l6ZSAmJlxuICAgICAgICAgICAgICAgICAgICB3b3JrUXVldWVfMS5pbmRleE9mKHN1cGVydHlwZVNldCkgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHdvcmtRdWV1ZV8xLnB1c2goc3VwZXJ0eXBlU2V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIG5lZWRUb0NoZWNrRnV6enlTdWJ0eXBlcyA9ICEhKHJlc3VsdCAmJiB0aGlzLmZ1enp5U3VidHlwZXMuc2l6ZSk7XG4gICAgICAgICAgICB2YXIgY2hlY2tpbmdGdXp6eVN1YnR5cGVzID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdvcmtRdWV1ZV8xLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHN1cGVydHlwZVNldCA9IHdvcmtRdWV1ZV8xW2ldO1xuICAgICAgICAgICAgICAgIGlmIChzdXBlcnR5cGVTZXQuaGFzKHN1cGVydHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0eXBlbmFtZVN1cGVydHlwZVNldC5oYXMoc3VwZXJ0eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNraW5nRnV6enlTdWJ0eXBlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fREVWX18gJiYgaW52YXJpYW50Lndhcm4oXCJJbmZlcnJpbmcgc3VidHlwZSBcIi5jb25jYXQodHlwZW5hbWUsIFwiIG9mIHN1cGVydHlwZSBcIikuY29uY2F0KHN1cGVydHlwZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWVTdXBlcnR5cGVTZXQuYWRkKHN1cGVydHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN1cGVydHlwZVNldC5mb3JFYWNoKG1heWJlRW5xdWV1ZV8xKTtcbiAgICAgICAgICAgICAgICBpZiAobmVlZFRvQ2hlY2tGdXp6eVN1YnR5cGVzICYmXG4gICAgICAgICAgICAgICAgICAgIGkgPT09IHdvcmtRdWV1ZV8xLmxlbmd0aCAtIDEgJiZcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uU2V0TWF0Y2hlc1Jlc3VsdChmcmFnbWVudC5zZWxlY3Rpb25TZXQsIHJlc3VsdCwgdmFyaWFibGVzKSkge1xuICAgICAgICAgICAgICAgICAgICBuZWVkVG9DaGVja0Z1enp5U3VidHlwZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tpbmdGdXp6eVN1YnR5cGVzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mdXp6eVN1YnR5cGVzLmZvckVhY2goZnVuY3Rpb24gKHJlZ0V4cCwgZnV6enlTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IHR5cGVuYW1lLm1hdGNoKHJlZ0V4cCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMF0gPT09IHR5cGVuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVFbnF1ZXVlXzEoZnV6enlTdHJpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgUG9saWNpZXMucHJvdG90eXBlLmhhc0tleUFyZ3MgPSBmdW5jdGlvbiAodHlwZW5hbWUsIGZpZWxkTmFtZSkge1xuICAgICAgICB2YXIgcG9saWN5ID0gdGhpcy5nZXRGaWVsZFBvbGljeSh0eXBlbmFtZSwgZmllbGROYW1lLCBmYWxzZSk7XG4gICAgICAgIHJldHVybiAhIShwb2xpY3kgJiYgcG9saWN5LmtleUZuKTtcbiAgICB9O1xuICAgIFBvbGljaWVzLnByb3RvdHlwZS5nZXRTdG9yZUZpZWxkTmFtZSA9IGZ1bmN0aW9uIChmaWVsZFNwZWMpIHtcbiAgICAgICAgdmFyIHR5cGVuYW1lID0gZmllbGRTcGVjLnR5cGVuYW1lLCBmaWVsZE5hbWUgPSBmaWVsZFNwZWMuZmllbGROYW1lO1xuICAgICAgICB2YXIgcG9saWN5ID0gdGhpcy5nZXRGaWVsZFBvbGljeSh0eXBlbmFtZSwgZmllbGROYW1lLCBmYWxzZSk7XG4gICAgICAgIHZhciBzdG9yZUZpZWxkTmFtZTtcbiAgICAgICAgdmFyIGtleUZuID0gcG9saWN5ICYmIHBvbGljeS5rZXlGbjtcbiAgICAgICAgaWYgKGtleUZuICYmIHR5cGVuYW1lKSB7XG4gICAgICAgICAgICB2YXIgY29udGV4dCA9IHtcbiAgICAgICAgICAgICAgICB0eXBlbmFtZTogdHlwZW5hbWUsXG4gICAgICAgICAgICAgICAgZmllbGROYW1lOiBmaWVsZE5hbWUsXG4gICAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkU3BlYy5maWVsZCB8fCBudWxsLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczogZmllbGRTcGVjLnZhcmlhYmxlcyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB2YXIgYXJncyA9IGFyZ3NGcm9tRmllbGRTcGVjaWZpZXIoZmllbGRTcGVjKTtcbiAgICAgICAgICAgIHdoaWxlIChrZXlGbikge1xuICAgICAgICAgICAgICAgIHZhciBzcGVjaWZpZXJPclN0cmluZyA9IGtleUZuKGFyZ3MsIGNvbnRleHQpO1xuICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KHNwZWNpZmllck9yU3RyaW5nKSkge1xuICAgICAgICAgICAgICAgICAgICBrZXlGbiA9IGtleUFyZ3NGbkZyb21TcGVjaWZpZXIoc3BlY2lmaWVyT3JTdHJpbmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmVGaWVsZE5hbWUgPSBzcGVjaWZpZXJPclN0cmluZyB8fCBmaWVsZE5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RvcmVGaWVsZE5hbWUgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgc3RvcmVGaWVsZE5hbWUgPSBmaWVsZFNwZWMuZmllbGRcbiAgICAgICAgICAgICAgICA/IHN0b3JlS2V5TmFtZUZyb21GaWVsZChmaWVsZFNwZWMuZmllbGQsIGZpZWxkU3BlYy52YXJpYWJsZXMpXG4gICAgICAgICAgICAgICAgOiBnZXRTdG9yZUtleU5hbWUoZmllbGROYW1lLCBhcmdzRnJvbUZpZWxkU3BlY2lmaWVyKGZpZWxkU3BlYykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdG9yZUZpZWxkTmFtZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWVsZE5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpZWxkTmFtZSA9PT0gZmllbGROYW1lRnJvbVN0b3JlTmFtZShzdG9yZUZpZWxkTmFtZSlcbiAgICAgICAgICAgID8gc3RvcmVGaWVsZE5hbWVcbiAgICAgICAgICAgIDogZmllbGROYW1lICsgXCI6XCIgKyBzdG9yZUZpZWxkTmFtZTtcbiAgICB9O1xuICAgIFBvbGljaWVzLnByb3RvdHlwZS5yZWFkRmllbGQgPSBmdW5jdGlvbiAob3B0aW9ucywgY29udGV4dCkge1xuICAgICAgICB2YXIgb2JqZWN0T3JSZWZlcmVuY2UgPSBvcHRpb25zLmZyb207XG4gICAgICAgIGlmICghb2JqZWN0T3JSZWZlcmVuY2UpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHZhciBuYW1lT3JGaWVsZCA9IG9wdGlvbnMuZmllbGQgfHwgb3B0aW9ucy5maWVsZE5hbWU7XG4gICAgICAgIGlmICghbmFtZU9yRmllbGQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChvcHRpb25zLnR5cGVuYW1lID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHZhciB0eXBlbmFtZSA9IGNvbnRleHQuc3RvcmUuZ2V0RmllbGRWYWx1ZShvYmplY3RPclJlZmVyZW5jZSwgXCJfX3R5cGVuYW1lXCIpO1xuICAgICAgICAgICAgaWYgKHR5cGVuYW1lKVxuICAgICAgICAgICAgICAgIG9wdGlvbnMudHlwZW5hbWUgPSB0eXBlbmFtZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RvcmVGaWVsZE5hbWUgPSB0aGlzLmdldFN0b3JlRmllbGROYW1lKG9wdGlvbnMpO1xuICAgICAgICB2YXIgZmllbGROYW1lID0gZmllbGROYW1lRnJvbVN0b3JlTmFtZShzdG9yZUZpZWxkTmFtZSk7XG4gICAgICAgIHZhciBleGlzdGluZyA9IGNvbnRleHQuc3RvcmUuZ2V0RmllbGRWYWx1ZShvYmplY3RPclJlZmVyZW5jZSwgc3RvcmVGaWVsZE5hbWUpO1xuICAgICAgICB2YXIgcG9saWN5ID0gdGhpcy5nZXRGaWVsZFBvbGljeShvcHRpb25zLnR5cGVuYW1lLCBmaWVsZE5hbWUsIGZhbHNlKTtcbiAgICAgICAgdmFyIHJlYWQgPSBwb2xpY3kgJiYgcG9saWN5LnJlYWQ7XG4gICAgICAgIGlmIChyZWFkKSB7XG4gICAgICAgICAgICB2YXIgcmVhZE9wdGlvbnMgPSBtYWtlRmllbGRGdW5jdGlvbk9wdGlvbnModGhpcywgb2JqZWN0T3JSZWZlcmVuY2UsIG9wdGlvbnMsIGNvbnRleHQsIGNvbnRleHQuc3RvcmUuZ2V0U3RvcmFnZShpc1JlZmVyZW5jZShvYmplY3RPclJlZmVyZW5jZSlcbiAgICAgICAgICAgICAgICA/IG9iamVjdE9yUmVmZXJlbmNlLl9fcmVmXG4gICAgICAgICAgICAgICAgOiBvYmplY3RPclJlZmVyZW5jZSwgc3RvcmVGaWVsZE5hbWUpKTtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZVNsb3Qud2l0aFZhbHVlKHRoaXMuY2FjaGUsIHJlYWQsIFtleGlzdGluZywgcmVhZE9wdGlvbnNdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgfTtcbiAgICBQb2xpY2llcy5wcm90b3R5cGUuZ2V0UmVhZEZ1bmN0aW9uID0gZnVuY3Rpb24gKHR5cGVuYW1lLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgdmFyIHBvbGljeSA9IHRoaXMuZ2V0RmllbGRQb2xpY3kodHlwZW5hbWUsIGZpZWxkTmFtZSwgZmFsc2UpO1xuICAgICAgICByZXR1cm4gcG9saWN5ICYmIHBvbGljeS5yZWFkO1xuICAgIH07XG4gICAgUG9saWNpZXMucHJvdG90eXBlLmdldE1lcmdlRnVuY3Rpb24gPSBmdW5jdGlvbiAocGFyZW50VHlwZW5hbWUsIGZpZWxkTmFtZSwgY2hpbGRUeXBlbmFtZSkge1xuICAgICAgICB2YXIgcG9saWN5ID0gdGhpcy5nZXRGaWVsZFBvbGljeShwYXJlbnRUeXBlbmFtZSwgZmllbGROYW1lLCBmYWxzZSk7XG4gICAgICAgIHZhciBtZXJnZSA9IHBvbGljeSAmJiBwb2xpY3kubWVyZ2U7XG4gICAgICAgIGlmICghbWVyZ2UgJiYgY2hpbGRUeXBlbmFtZSkge1xuICAgICAgICAgICAgcG9saWN5ID0gdGhpcy5nZXRUeXBlUG9saWN5KGNoaWxkVHlwZW5hbWUpO1xuICAgICAgICAgICAgbWVyZ2UgPSBwb2xpY3kgJiYgcG9saWN5Lm1lcmdlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXJnZTtcbiAgICB9O1xuICAgIFBvbGljaWVzLnByb3RvdHlwZS5ydW5NZXJnZUZ1bmN0aW9uID0gZnVuY3Rpb24gKGV4aXN0aW5nLCBpbmNvbWluZywgX2EsIGNvbnRleHQsIHN0b3JhZ2UpIHtcbiAgICAgICAgdmFyIGZpZWxkID0gX2EuZmllbGQsIHR5cGVuYW1lID0gX2EudHlwZW5hbWUsIG1lcmdlID0gX2EubWVyZ2U7XG4gICAgICAgIGlmIChtZXJnZSA9PT0gbWVyZ2VUcnVlRm4pIHtcbiAgICAgICAgICAgIHJldHVybiBtYWtlTWVyZ2VPYmplY3RzRnVuY3Rpb24oY29udGV4dC5zdG9yZSkoZXhpc3RpbmcsIGluY29taW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVyZ2UgPT09IG1lcmdlRmFsc2VGbikge1xuICAgICAgICAgICAgcmV0dXJuIGluY29taW5nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb250ZXh0Lm92ZXJ3cml0ZSkge1xuICAgICAgICAgICAgZXhpc3RpbmcgPSB2b2lkIDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lcmdlKGV4aXN0aW5nLCBpbmNvbWluZywgbWFrZUZpZWxkRnVuY3Rpb25PcHRpb25zKHRoaXMsIHZvaWQgMCwgeyB0eXBlbmFtZTogdHlwZW5hbWUsIGZpZWxkTmFtZTogZmllbGQubmFtZS52YWx1ZSwgZmllbGQ6IGZpZWxkLCB2YXJpYWJsZXM6IGNvbnRleHQudmFyaWFibGVzIH0sIGNvbnRleHQsIHN0b3JhZ2UgfHwgT2JqZWN0LmNyZWF0ZShudWxsKSkpO1xuICAgIH07XG4gICAgcmV0dXJuIFBvbGljaWVzO1xufSgpKTtcbmV4cG9ydCB7IFBvbGljaWVzIH07XG5mdW5jdGlvbiBtYWtlRmllbGRGdW5jdGlvbk9wdGlvbnMocG9saWNpZXMsIG9iamVjdE9yUmVmZXJlbmNlLCBmaWVsZFNwZWMsIGNvbnRleHQsIHN0b3JhZ2UpIHtcbiAgICB2YXIgc3RvcmVGaWVsZE5hbWUgPSBwb2xpY2llcy5nZXRTdG9yZUZpZWxkTmFtZShmaWVsZFNwZWMpO1xuICAgIHZhciBmaWVsZE5hbWUgPSBmaWVsZE5hbWVGcm9tU3RvcmVOYW1lKHN0b3JlRmllbGROYW1lKTtcbiAgICB2YXIgdmFyaWFibGVzID0gZmllbGRTcGVjLnZhcmlhYmxlcyB8fCBjb250ZXh0LnZhcmlhYmxlcztcbiAgICB2YXIgX2EgPSBjb250ZXh0LnN0b3JlLCB0b1JlZmVyZW5jZSA9IF9hLnRvUmVmZXJlbmNlLCBjYW5SZWFkID0gX2EuY2FuUmVhZDtcbiAgICByZXR1cm4ge1xuICAgICAgICBhcmdzOiBhcmdzRnJvbUZpZWxkU3BlY2lmaWVyKGZpZWxkU3BlYyksXG4gICAgICAgIGZpZWxkOiBmaWVsZFNwZWMuZmllbGQgfHwgbnVsbCxcbiAgICAgICAgZmllbGROYW1lOiBmaWVsZE5hbWUsXG4gICAgICAgIHN0b3JlRmllbGROYW1lOiBzdG9yZUZpZWxkTmFtZSxcbiAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMsXG4gICAgICAgIGlzUmVmZXJlbmNlOiBpc1JlZmVyZW5jZSxcbiAgICAgICAgdG9SZWZlcmVuY2U6IHRvUmVmZXJlbmNlLFxuICAgICAgICBzdG9yYWdlOiBzdG9yYWdlLFxuICAgICAgICBjYWNoZTogcG9saWNpZXMuY2FjaGUsXG4gICAgICAgIGNhblJlYWQ6IGNhblJlYWQsXG4gICAgICAgIHJlYWRGaWVsZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHBvbGljaWVzLnJlYWRGaWVsZChub3JtYWxpemVSZWFkRmllbGRPcHRpb25zKGFyZ3VtZW50cywgb2JqZWN0T3JSZWZlcmVuY2UsIGNvbnRleHQpLCBjb250ZXh0KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyZ2VPYmplY3RzOiBtYWtlTWVyZ2VPYmplY3RzRnVuY3Rpb24oY29udGV4dC5zdG9yZSksXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVSZWFkRmllbGRPcHRpb25zKHJlYWRGaWVsZEFyZ3MsIG9iamVjdE9yUmVmZXJlbmNlLCB2YXJpYWJsZXMpIHtcbiAgICB2YXIgZmllbGROYW1lT3JPcHRpb25zID0gcmVhZEZpZWxkQXJnc1swXSwgZnJvbSA9IHJlYWRGaWVsZEFyZ3NbMV0sIGFyZ2MgPSByZWFkRmllbGRBcmdzLmxlbmd0aDtcbiAgICB2YXIgb3B0aW9ucztcbiAgICBpZiAodHlwZW9mIGZpZWxkTmFtZU9yT3B0aW9ucyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgZmllbGROYW1lOiBmaWVsZE5hbWVPck9wdGlvbnMsXG4gICAgICAgICAgICBmcm9tOiBhcmdjID4gMSA/IGZyb20gOiBvYmplY3RPclJlZmVyZW5jZSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIG9wdGlvbnMgPSBfX2Fzc2lnbih7fSwgZmllbGROYW1lT3JPcHRpb25zKTtcbiAgICAgICAgaWYgKCFoYXNPd24uY2FsbChvcHRpb25zLCBcImZyb21cIikpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuZnJvbSA9IG9iamVjdE9yUmVmZXJlbmNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChfX0RFVl9fICYmIG9wdGlvbnMuZnJvbSA9PT0gdm9pZCAwKSB7XG4gICAgICAgIF9fREVWX18gJiYgaW52YXJpYW50Lndhcm4oXCJVbmRlZmluZWQgJ2Zyb20nIHBhc3NlZCB0byByZWFkRmllbGQgd2l0aCBhcmd1bWVudHMgXCIuY29uY2F0KHN0cmluZ2lmeUZvckRpc3BsYXkoQXJyYXkuZnJvbShyZWFkRmllbGRBcmdzKSkpKTtcbiAgICB9XG4gICAgaWYgKHZvaWQgMCA9PT0gb3B0aW9ucy52YXJpYWJsZXMpIHtcbiAgICAgICAgb3B0aW9ucy52YXJpYWJsZXMgPSB2YXJpYWJsZXM7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xufVxuZnVuY3Rpb24gbWFrZU1lcmdlT2JqZWN0c0Z1bmN0aW9uKHN0b3JlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlT2JqZWN0cyhleGlzdGluZywgaW5jb21pbmcpIHtcbiAgICAgICAgaWYgKGlzQXJyYXkoZXhpc3RpbmcpIHx8IGlzQXJyYXkoaW5jb21pbmcpKSB7XG4gICAgICAgICAgICB0aHJvdyBfX0RFVl9fID8gbmV3IEludmFyaWFudEVycm9yKFwiQ2Fubm90IGF1dG9tYXRpY2FsbHkgbWVyZ2UgYXJyYXlzXCIpIDogbmV3IEludmFyaWFudEVycm9yKDQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc05vbk51bGxPYmplY3QoZXhpc3RpbmcpICYmXG4gICAgICAgICAgICBpc05vbk51bGxPYmplY3QoaW5jb21pbmcpKSB7XG4gICAgICAgICAgICB2YXIgZVR5cGUgPSBzdG9yZS5nZXRGaWVsZFZhbHVlKGV4aXN0aW5nLCBcIl9fdHlwZW5hbWVcIik7XG4gICAgICAgICAgICB2YXIgaVR5cGUgPSBzdG9yZS5nZXRGaWVsZFZhbHVlKGluY29taW5nLCBcIl9fdHlwZW5hbWVcIik7XG4gICAgICAgICAgICB2YXIgdHlwZXNEaWZmZXIgPSBlVHlwZSAmJiBpVHlwZSAmJiBlVHlwZSAhPT0gaVR5cGU7XG4gICAgICAgICAgICBpZiAodHlwZXNEaWZmZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5jb21pbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNSZWZlcmVuY2UoZXhpc3RpbmcpICYmXG4gICAgICAgICAgICAgICAgc3RvcmVWYWx1ZUlzU3RvcmVPYmplY3QoaW5jb21pbmcpKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUubWVyZ2UoZXhpc3RpbmcuX19yZWYsIGluY29taW5nKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RvcmVWYWx1ZUlzU3RvcmVPYmplY3QoZXhpc3RpbmcpICYmXG4gICAgICAgICAgICAgICAgaXNSZWZlcmVuY2UoaW5jb21pbmcpKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUubWVyZ2UoZXhpc3RpbmcsIGluY29taW5nLl9fcmVmKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5jb21pbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RvcmVWYWx1ZUlzU3RvcmVPYmplY3QoZXhpc3RpbmcpICYmXG4gICAgICAgICAgICAgICAgc3RvcmVWYWx1ZUlzU3RvcmVPYmplY3QoaW5jb21pbmcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBleGlzdGluZyksIGluY29taW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5jb21pbmc7XG4gICAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvbGljaWVzLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/cache/inmemory/policies.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/cache/inmemory/reactiveVars.js":
/*!********************************************************************!*\
  !*** ./node_modules/@apollo/client/cache/inmemory/reactiveVars.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"cacheSlot\": function() { return /* binding */ cacheSlot; },\n/* harmony export */   \"forgetCache\": function() { return /* binding */ forgetCache; },\n/* harmony export */   \"makeVar\": function() { return /* binding */ makeVar; },\n/* harmony export */   \"recallCache\": function() { return /* binding */ recallCache; }\n/* harmony export */ });\n/* harmony import */ var optimism__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! optimism */ \"./node_modules/optimism/lib/bundle.esm.js\");\n/* harmony import */ var _wry_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wry/context */ \"./node_modules/@wry/context/lib/context.esm.js\");\n\n\nvar cacheSlot = new _wry_context__WEBPACK_IMPORTED_MODULE_1__.Slot();\nvar cacheInfoMap = new WeakMap();\nfunction getCacheInfo(cache) {\n    var info = cacheInfoMap.get(cache);\n    if (!info) {\n        cacheInfoMap.set(cache, info = {\n            vars: new Set,\n            dep: (0,optimism__WEBPACK_IMPORTED_MODULE_0__.dep)(),\n        });\n    }\n    return info;\n}\nfunction forgetCache(cache) {\n    getCacheInfo(cache).vars.forEach(function (rv) { return rv.forgetCache(cache); });\n}\nfunction recallCache(cache) {\n    getCacheInfo(cache).vars.forEach(function (rv) { return rv.attachCache(cache); });\n}\nfunction makeVar(value) {\n    var caches = new Set();\n    var listeners = new Set();\n    var rv = function (newValue) {\n        if (arguments.length > 0) {\n            if (value !== newValue) {\n                value = newValue;\n                caches.forEach(function (cache) {\n                    getCacheInfo(cache).dep.dirty(rv);\n                    broadcast(cache);\n                });\n                var oldListeners = Array.from(listeners);\n                listeners.clear();\n                oldListeners.forEach(function (listener) { return listener(value); });\n            }\n        }\n        else {\n            var cache = cacheSlot.getValue();\n            if (cache) {\n                attach(cache);\n                getCacheInfo(cache).dep(rv);\n            }\n        }\n        return value;\n    };\n    rv.onNextChange = function (listener) {\n        listeners.add(listener);\n        return function () {\n            listeners.delete(listener);\n        };\n    };\n    var attach = rv.attachCache = function (cache) {\n        caches.add(cache);\n        getCacheInfo(cache).vars.add(rv);\n        return rv;\n    };\n    rv.forgetCache = function (cache) { return caches.delete(cache); };\n    return rv;\n}\nfunction broadcast(cache) {\n    if (cache.broadcastWatches) {\n        cache.broadcastWatches();\n    }\n}\n//# sourceMappingURL=reactiveVars.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvaW5tZW1vcnkvcmVhY3RpdmVWYXJzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUErQjtBQUNLO0FBQzdCLG9CQUFvQiw4Q0FBSTtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsNkNBQUc7QUFDcEIsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNPO0FBQ1AscURBQXFELCtCQUErQjtBQUNwRjtBQUNPO0FBQ1AscURBQXFELCtCQUErQjtBQUNwRjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSwyREFBMkQseUJBQXlCO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L2NhY2hlL2lubWVtb3J5L3JlYWN0aXZlVmFycy5qcz8zZTFhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlcCB9IGZyb20gXCJvcHRpbWlzbVwiO1xuaW1wb3J0IHsgU2xvdCB9IGZyb20gXCJAd3J5L2NvbnRleHRcIjtcbmV4cG9ydCB2YXIgY2FjaGVTbG90ID0gbmV3IFNsb3QoKTtcbnZhciBjYWNoZUluZm9NYXAgPSBuZXcgV2Vha01hcCgpO1xuZnVuY3Rpb24gZ2V0Q2FjaGVJbmZvKGNhY2hlKSB7XG4gICAgdmFyIGluZm8gPSBjYWNoZUluZm9NYXAuZ2V0KGNhY2hlKTtcbiAgICBpZiAoIWluZm8pIHtcbiAgICAgICAgY2FjaGVJbmZvTWFwLnNldChjYWNoZSwgaW5mbyA9IHtcbiAgICAgICAgICAgIHZhcnM6IG5ldyBTZXQsXG4gICAgICAgICAgICBkZXA6IGRlcCgpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGluZm87XG59XG5leHBvcnQgZnVuY3Rpb24gZm9yZ2V0Q2FjaGUoY2FjaGUpIHtcbiAgICBnZXRDYWNoZUluZm8oY2FjaGUpLnZhcnMuZm9yRWFjaChmdW5jdGlvbiAocnYpIHsgcmV0dXJuIHJ2LmZvcmdldENhY2hlKGNhY2hlKTsgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVjYWxsQ2FjaGUoY2FjaGUpIHtcbiAgICBnZXRDYWNoZUluZm8oY2FjaGUpLnZhcnMuZm9yRWFjaChmdW5jdGlvbiAocnYpIHsgcmV0dXJuIHJ2LmF0dGFjaENhY2hlKGNhY2hlKTsgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gbWFrZVZhcih2YWx1ZSkge1xuICAgIHZhciBjYWNoZXMgPSBuZXcgU2V0KCk7XG4gICAgdmFyIGxpc3RlbmVycyA9IG5ldyBTZXQoKTtcbiAgICB2YXIgcnYgPSBmdW5jdGlvbiAobmV3VmFsdWUpIHtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICBjYWNoZXMuZm9yRWFjaChmdW5jdGlvbiAoY2FjaGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0Q2FjaGVJbmZvKGNhY2hlKS5kZXAuZGlydHkocnYpO1xuICAgICAgICAgICAgICAgICAgICBicm9hZGNhc3QoY2FjaGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhciBvbGRMaXN0ZW5lcnMgPSBBcnJheS5mcm9tKGxpc3RlbmVycyk7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXJzLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgb2xkTGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24gKGxpc3RlbmVyKSB7IHJldHVybiBsaXN0ZW5lcih2YWx1ZSk7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIGNhY2hlID0gY2FjaGVTbG90LmdldFZhbHVlKCk7XG4gICAgICAgICAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgICAgICAgICBhdHRhY2goY2FjaGUpO1xuICAgICAgICAgICAgICAgIGdldENhY2hlSW5mbyhjYWNoZSkuZGVwKHJ2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICBydi5vbk5leHRDaGFuZ2UgPSBmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgbGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsaXN0ZW5lcnMuZGVsZXRlKGxpc3RlbmVyKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIHZhciBhdHRhY2ggPSBydi5hdHRhY2hDYWNoZSA9IGZ1bmN0aW9uIChjYWNoZSkge1xuICAgICAgICBjYWNoZXMuYWRkKGNhY2hlKTtcbiAgICAgICAgZ2V0Q2FjaGVJbmZvKGNhY2hlKS52YXJzLmFkZChydik7XG4gICAgICAgIHJldHVybiBydjtcbiAgICB9O1xuICAgIHJ2LmZvcmdldENhY2hlID0gZnVuY3Rpb24gKGNhY2hlKSB7IHJldHVybiBjYWNoZXMuZGVsZXRlKGNhY2hlKTsgfTtcbiAgICByZXR1cm4gcnY7XG59XG5mdW5jdGlvbiBicm9hZGNhc3QoY2FjaGUpIHtcbiAgICBpZiAoY2FjaGUuYnJvYWRjYXN0V2F0Y2hlcykge1xuICAgICAgICBjYWNoZS5icm9hZGNhc3RXYXRjaGVzKCk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVhY3RpdmVWYXJzLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/cache/inmemory/reactiveVars.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/cache/inmemory/readFromStore.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@apollo/client/cache/inmemory/readFromStore.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"StoreReader\": function() { return /* binding */ StoreReader; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var optimism__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! optimism */ \"./node_modules/optimism/lib/bundle.esm.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n/* harmony import */ var _entityStore_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./entityStore.js */ \"./node_modules/@apollo/client/cache/inmemory/entityStore.js\");\n/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers.js */ \"./node_modules/@apollo/client/cache/inmemory/helpers.js\");\n/* harmony import */ var _core_types_common_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../core/types/common.js */ \"./node_modules/@apollo/client/cache/core/types/common.js\");\n/* harmony import */ var _object_canon_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./object-canon.js */ \"./node_modules/@apollo/client/cache/inmemory/object-canon.js\");\n\n\n\n\n\n\n\n\n;\nfunction execSelectionSetKeyArgs(options) {\n    return [\n        options.selectionSet,\n        options.objectOrReference,\n        options.context,\n        options.context.canonizeResults,\n    ];\n}\nvar StoreReader = (function () {\n    function StoreReader(config) {\n        var _this = this;\n        this.knownResults = new (_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.canUseWeakMap ? WeakMap : Map)();\n        this.config = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.compact)(config, {\n            addTypename: config.addTypename !== false,\n            canonizeResults: (0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.shouldCanonizeResults)(config),\n        });\n        this.canon = config.canon || new _object_canon_js__WEBPACK_IMPORTED_MODULE_4__.ObjectCanon;\n        this.executeSelectionSet = (0,optimism__WEBPACK_IMPORTED_MODULE_1__.wrap)(function (options) {\n            var _a;\n            var canonizeResults = options.context.canonizeResults;\n            var peekArgs = execSelectionSetKeyArgs(options);\n            peekArgs[3] = !canonizeResults;\n            var other = (_a = _this.executeSelectionSet).peek.apply(_a, peekArgs);\n            if (other) {\n                if (canonizeResults) {\n                    return (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_5__.__assign)({}, other), { result: _this.canon.admit(other.result) });\n                }\n                return other;\n            }\n            (0,_entityStore_js__WEBPACK_IMPORTED_MODULE_6__.maybeDependOnExistenceOfEntity)(options.context.store, options.enclosingRef.__ref);\n            return _this.execSelectionSetImpl(options);\n        }, {\n            max: this.config.resultCacheMaxSize,\n            keyArgs: execSelectionSetKeyArgs,\n            makeCacheKey: function (selectionSet, parent, context, canonizeResults) {\n                if ((0,_entityStore_js__WEBPACK_IMPORTED_MODULE_6__.supportsResultCaching)(context.store)) {\n                    return context.store.makeCacheKey(selectionSet, (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isReference)(parent) ? parent.__ref : parent, context.varString, canonizeResults);\n                }\n            }\n        });\n        this.executeSubSelectedArray = (0,optimism__WEBPACK_IMPORTED_MODULE_1__.wrap)(function (options) {\n            (0,_entityStore_js__WEBPACK_IMPORTED_MODULE_6__.maybeDependOnExistenceOfEntity)(options.context.store, options.enclosingRef.__ref);\n            return _this.execSubSelectedArrayImpl(options);\n        }, {\n            max: this.config.resultCacheMaxSize,\n            makeCacheKey: function (_a) {\n                var field = _a.field, array = _a.array, context = _a.context;\n                if ((0,_entityStore_js__WEBPACK_IMPORTED_MODULE_6__.supportsResultCaching)(context.store)) {\n                    return context.store.makeCacheKey(field, array, context.varString);\n                }\n            }\n        });\n    }\n    StoreReader.prototype.resetCanon = function () {\n        this.canon = new _object_canon_js__WEBPACK_IMPORTED_MODULE_4__.ObjectCanon;\n    };\n    StoreReader.prototype.diffQueryAgainstStore = function (_a) {\n        var store = _a.store, query = _a.query, _b = _a.rootId, rootId = _b === void 0 ? 'ROOT_QUERY' : _b, variables = _a.variables, _c = _a.returnPartialData, returnPartialData = _c === void 0 ? true : _c, _d = _a.canonizeResults, canonizeResults = _d === void 0 ? this.config.canonizeResults : _d;\n        var policies = this.config.cache.policies;\n        variables = (0,tslib__WEBPACK_IMPORTED_MODULE_5__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_5__.__assign)({}, (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.getDefaultValues)((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.getQueryDefinition)(query))), variables);\n        var rootRef = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.makeReference)(rootId);\n        var merger = new _utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.DeepMerger;\n        var execResult = this.executeSelectionSet({\n            selectionSet: (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.getMainDefinition)(query).selectionSet,\n            objectOrReference: rootRef,\n            enclosingRef: rootRef,\n            context: {\n                store: store,\n                query: query,\n                policies: policies,\n                variables: variables,\n                varString: (0,_object_canon_js__WEBPACK_IMPORTED_MODULE_4__.canonicalStringify)(variables),\n                canonizeResults: canonizeResults,\n                fragmentMap: (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.createFragmentMap)((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.getFragmentDefinitions)(query)),\n                merge: function (a, b) {\n                    return merger.merge(a, b);\n                },\n            },\n        });\n        var missing;\n        if (execResult.missing) {\n            missing = [new _core_types_common_js__WEBPACK_IMPORTED_MODULE_7__.MissingFieldError(firstMissing(execResult.missing), execResult.missing, query, variables)];\n            if (!returnPartialData) {\n                throw missing[0];\n            }\n        }\n        return {\n            result: execResult.result,\n            complete: !missing,\n            missing: missing,\n        };\n    };\n    StoreReader.prototype.isFresh = function (result, parent, selectionSet, context) {\n        if ((0,_entityStore_js__WEBPACK_IMPORTED_MODULE_6__.supportsResultCaching)(context.store) &&\n            this.knownResults.get(result) === selectionSet) {\n            var latest = this.executeSelectionSet.peek(selectionSet, parent, context, this.canon.isKnown(result));\n            if (latest && result === latest.result) {\n                return true;\n            }\n        }\n        return false;\n    };\n    StoreReader.prototype.execSelectionSetImpl = function (_a) {\n        var _this = this;\n        var selectionSet = _a.selectionSet, objectOrReference = _a.objectOrReference, enclosingRef = _a.enclosingRef, context = _a.context;\n        if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isReference)(objectOrReference) &&\n            !context.policies.rootTypenamesById[objectOrReference.__ref] &&\n            !context.store.has(objectOrReference.__ref)) {\n            return {\n                result: this.canon.empty,\n                missing: \"Dangling reference to missing \".concat(objectOrReference.__ref, \" object\"),\n            };\n        }\n        var variables = context.variables, policies = context.policies, store = context.store;\n        var typename = store.getFieldValue(objectOrReference, \"__typename\");\n        var result = {};\n        var missing;\n        if (this.config.addTypename &&\n            typeof typename === \"string\" &&\n            !policies.rootIdsByTypename[typename]) {\n            result = { __typename: typename };\n        }\n        function handleMissing(result, resultName) {\n            var _a;\n            if (result.missing) {\n                missing = context.merge(missing, (_a = {}, _a[resultName] = result.missing, _a));\n            }\n            return result.result;\n        }\n        var workSet = new Set(selectionSet.selections);\n        workSet.forEach(function (selection) {\n            var _a, _b;\n            if (!(0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.shouldInclude)(selection, variables))\n                return;\n            if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isField)(selection)) {\n                var fieldValue = policies.readField({\n                    fieldName: selection.name.value,\n                    field: selection,\n                    variables: context.variables,\n                    from: objectOrReference,\n                }, context);\n                var resultName = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.resultKeyNameFromField)(selection);\n                if (fieldValue === void 0) {\n                    if (!_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.addTypenameToDocument.added(selection)) {\n                        missing = context.merge(missing, (_a = {},\n                            _a[resultName] = \"Can't find field '\".concat(selection.name.value, \"' on \").concat((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isReference)(objectOrReference)\n                                ? objectOrReference.__ref + \" object\"\n                                : \"object \" + JSON.stringify(objectOrReference, null, 2)),\n                            _a));\n                    }\n                }\n                else if ((0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.isArray)(fieldValue)) {\n                    fieldValue = handleMissing(_this.executeSubSelectedArray({\n                        field: selection,\n                        array: fieldValue,\n                        enclosingRef: enclosingRef,\n                        context: context,\n                    }), resultName);\n                }\n                else if (!selection.selectionSet) {\n                    if (context.canonizeResults) {\n                        fieldValue = _this.canon.pass(fieldValue);\n                    }\n                }\n                else if (fieldValue != null) {\n                    fieldValue = handleMissing(_this.executeSelectionSet({\n                        selectionSet: selection.selectionSet,\n                        objectOrReference: fieldValue,\n                        enclosingRef: (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isReference)(fieldValue) ? fieldValue : enclosingRef,\n                        context: context,\n                    }), resultName);\n                }\n                if (fieldValue !== void 0) {\n                    result = context.merge(result, (_b = {}, _b[resultName] = fieldValue, _b));\n                }\n            }\n            else {\n                var fragment = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.getFragmentFromSelection)(selection, context.fragmentMap);\n                if (fragment && policies.fragmentMatches(fragment, typename)) {\n                    fragment.selectionSet.selections.forEach(workSet.add, workSet);\n                }\n            }\n        });\n        var finalResult = { result: result, missing: missing };\n        var frozen = context.canonizeResults\n            ? this.canon.admit(finalResult)\n            : (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.maybeDeepFreeze)(finalResult);\n        if (frozen.result) {\n            this.knownResults.set(frozen.result, selectionSet);\n        }\n        return frozen;\n    };\n    StoreReader.prototype.execSubSelectedArrayImpl = function (_a) {\n        var _this = this;\n        var field = _a.field, array = _a.array, enclosingRef = _a.enclosingRef, context = _a.context;\n        var missing;\n        function handleMissing(childResult, i) {\n            var _a;\n            if (childResult.missing) {\n                missing = context.merge(missing, (_a = {}, _a[i] = childResult.missing, _a));\n            }\n            return childResult.result;\n        }\n        if (field.selectionSet) {\n            array = array.filter(context.store.canRead);\n        }\n        array = array.map(function (item, i) {\n            if (item === null) {\n                return null;\n            }\n            if ((0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.isArray)(item)) {\n                return handleMissing(_this.executeSubSelectedArray({\n                    field: field,\n                    array: item,\n                    enclosingRef: enclosingRef,\n                    context: context,\n                }), i);\n            }\n            if (field.selectionSet) {\n                return handleMissing(_this.executeSelectionSet({\n                    selectionSet: field.selectionSet,\n                    objectOrReference: item,\n                    enclosingRef: (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isReference)(item) ? item : enclosingRef,\n                    context: context,\n                }), i);\n            }\n            if (__DEV__) {\n                assertSelectionSetForIdValue(context.store, field, item);\n            }\n            return item;\n        });\n        return {\n            result: context.canonizeResults ? this.canon.admit(array) : array,\n            missing: missing,\n        };\n    };\n    return StoreReader;\n}());\n\nfunction firstMissing(tree) {\n    try {\n        JSON.stringify(tree, function (_, value) {\n            if (typeof value === \"string\")\n                throw value;\n            return value;\n        });\n    }\n    catch (result) {\n        return result;\n    }\n}\nfunction assertSelectionSetForIdValue(store, field, fieldValue) {\n    if (!field.selectionSet) {\n        var workSet_1 = new Set([fieldValue]);\n        workSet_1.forEach(function (value) {\n            if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isNonNullObject)(value)) {\n                __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(!(0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isReference)(value), \"Missing selection set for object of type \".concat((0,_helpers_js__WEBPACK_IMPORTED_MODULE_3__.getTypenameFromStoreObject)(store, value), \" returned for query field \").concat(field.name.value)) : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(!(0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isReference)(value), 5);\n                Object.values(value).forEach(workSet_1.add, workSet_1);\n            }\n        });\n    }\n}\n//# sourceMappingURL=readFromStore.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvaW5tZW1vcnkvcmVhZEZyb21TdG9yZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBaUM7QUFDNEI7QUFDN0I7QUFDa1Q7QUFDelA7QUFDQztBQUM5QjtBQUNRO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyw4REFBYTtBQUM5QyxzQkFBc0IsNERBQU87QUFDN0I7QUFDQSw2QkFBNkIsa0VBQXFCO0FBQ2xELFNBQVM7QUFDVCx5Q0FBeUMseURBQVc7QUFDcEQsbUNBQW1DLDhDQUFJO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxZQUFZLHlDQUF5QztBQUNwRztBQUNBO0FBQ0E7QUFDQSxZQUFZLCtFQUE4QjtBQUMxQztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isc0VBQXFCO0FBQ3pDLG9FQUFvRSxnRUFBVztBQUMvRTtBQUNBO0FBQ0EsU0FBUztBQUNULHVDQUF1Qyw4Q0FBSTtBQUMzQyxZQUFZLCtFQUE4QjtBQUMxQztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isc0VBQXFCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EseUJBQXlCLHlEQUFXO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxFQUFFLHFFQUFnQixDQUFDLHVFQUFrQjtBQUM3RSxzQkFBc0Isa0VBQWE7QUFDbkMseUJBQXlCLDJEQUFVO0FBQ25DO0FBQ0EsMEJBQTBCLHNFQUFpQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixvRUFBa0I7QUFDN0M7QUFDQSw2QkFBNkIsc0VBQWlCLENBQUMsMkVBQXNCO0FBQ3JFO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0EsMkJBQTJCLG9FQUFpQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxzRUFBcUI7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksZ0VBQVc7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsa0VBQWE7QUFDOUI7QUFDQSxnQkFBZ0IsNERBQU87QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixpQ0FBaUMsMkVBQXNCO0FBQ3ZEO0FBQ0EseUJBQXlCLDRFQUEyQjtBQUNwRCxpRUFBaUU7QUFDakUsK0dBQStHLGdFQUFXO0FBQzFIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsb0RBQU87QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxnRUFBVztBQUNqRDtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EsMkRBQTJEO0FBQzNEO0FBQ0E7QUFDQTtBQUNBLCtCQUErQiw2RUFBd0I7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQSxjQUFjLG9FQUFlO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvREFBTztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsZ0VBQVc7QUFDN0M7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ3NCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isb0VBQWU7QUFDL0IsMEJBQTBCLHNFQUFTLEVBQUUsZ0VBQVcsNERBQTRELHVFQUEwQiwwRUFBMEUsc0VBQVMsRUFBRSxnRUFBVztBQUN0TztBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvaW5tZW1vcnkvcmVhZEZyb21TdG9yZS5qcz9jM2QzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2dsb2JhbHMvaW5kZXguanNcIjtcbmltcG9ydCB7IHdyYXAgfSBmcm9tICdvcHRpbWlzbSc7XG5pbXBvcnQgeyBpc0ZpZWxkLCByZXN1bHRLZXlOYW1lRnJvbUZpZWxkLCBpc1JlZmVyZW5jZSwgbWFrZVJlZmVyZW5jZSwgY3JlYXRlRnJhZ21lbnRNYXAsIHNob3VsZEluY2x1ZGUsIGFkZFR5cGVuYW1lVG9Eb2N1bWVudCwgZ2V0RGVmYXVsdFZhbHVlcywgZ2V0RnJhZ21lbnREZWZpbml0aW9ucywgZ2V0TWFpbkRlZmluaXRpb24sIGdldFF1ZXJ5RGVmaW5pdGlvbiwgRGVlcE1lcmdlciwgZ2V0RnJhZ21lbnRGcm9tU2VsZWN0aW9uLCBtYXliZURlZXBGcmVlemUsIGlzTm9uTnVsbE9iamVjdCwgY2FuVXNlV2Vha01hcCwgY29tcGFjdCwgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtYXliZURlcGVuZE9uRXhpc3RlbmNlT2ZFbnRpdHksIHN1cHBvcnRzUmVzdWx0Q2FjaGluZyB9IGZyb20gXCIuL2VudGl0eVN0b3JlLmpzXCI7XG5pbXBvcnQgeyBnZXRUeXBlbmFtZUZyb21TdG9yZU9iamVjdCwgaXNBcnJheSwgc2hvdWxkQ2Fub25pemVSZXN1bHRzIH0gZnJvbSBcIi4vaGVscGVycy5qc1wiO1xuaW1wb3J0IHsgTWlzc2luZ0ZpZWxkRXJyb3IgfSBmcm9tIFwiLi4vY29yZS90eXBlcy9jb21tb24uanNcIjtcbmltcG9ydCB7IGNhbm9uaWNhbFN0cmluZ2lmeSwgT2JqZWN0Q2Fub24gfSBmcm9tIFwiLi9vYmplY3QtY2Fub24uanNcIjtcbjtcbmZ1bmN0aW9uIGV4ZWNTZWxlY3Rpb25TZXRLZXlBcmdzKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gW1xuICAgICAgICBvcHRpb25zLnNlbGVjdGlvblNldCxcbiAgICAgICAgb3B0aW9ucy5vYmplY3RPclJlZmVyZW5jZSxcbiAgICAgICAgb3B0aW9ucy5jb250ZXh0LFxuICAgICAgICBvcHRpb25zLmNvbnRleHQuY2Fub25pemVSZXN1bHRzLFxuICAgIF07XG59XG52YXIgU3RvcmVSZWFkZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFN0b3JlUmVhZGVyKGNvbmZpZykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLmtub3duUmVzdWx0cyA9IG5ldyAoY2FuVXNlV2Vha01hcCA/IFdlYWtNYXAgOiBNYXApKCk7XG4gICAgICAgIHRoaXMuY29uZmlnID0gY29tcGFjdChjb25maWcsIHtcbiAgICAgICAgICAgIGFkZFR5cGVuYW1lOiBjb25maWcuYWRkVHlwZW5hbWUgIT09IGZhbHNlLFxuICAgICAgICAgICAgY2Fub25pemVSZXN1bHRzOiBzaG91bGRDYW5vbml6ZVJlc3VsdHMoY29uZmlnKSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY2Fub24gPSBjb25maWcuY2Fub24gfHwgbmV3IE9iamVjdENhbm9uO1xuICAgICAgICB0aGlzLmV4ZWN1dGVTZWxlY3Rpb25TZXQgPSB3cmFwKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgY2Fub25pemVSZXN1bHRzID0gb3B0aW9ucy5jb250ZXh0LmNhbm9uaXplUmVzdWx0cztcbiAgICAgICAgICAgIHZhciBwZWVrQXJncyA9IGV4ZWNTZWxlY3Rpb25TZXRLZXlBcmdzKG9wdGlvbnMpO1xuICAgICAgICAgICAgcGVla0FyZ3NbM10gPSAhY2Fub25pemVSZXN1bHRzO1xuICAgICAgICAgICAgdmFyIG90aGVyID0gKF9hID0gX3RoaXMuZXhlY3V0ZVNlbGVjdGlvblNldCkucGVlay5hcHBseShfYSwgcGVla0FyZ3MpO1xuICAgICAgICAgICAgaWYgKG90aGVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNhbm9uaXplUmVzdWx0cykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIG90aGVyKSwgeyByZXN1bHQ6IF90aGlzLmNhbm9uLmFkbWl0KG90aGVyLnJlc3VsdCkgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBvdGhlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1heWJlRGVwZW5kT25FeGlzdGVuY2VPZkVudGl0eShvcHRpb25zLmNvbnRleHQuc3RvcmUsIG9wdGlvbnMuZW5jbG9zaW5nUmVmLl9fcmVmKTtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5leGVjU2VsZWN0aW9uU2V0SW1wbChvcHRpb25zKTtcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgbWF4OiB0aGlzLmNvbmZpZy5yZXN1bHRDYWNoZU1heFNpemUsXG4gICAgICAgICAgICBrZXlBcmdzOiBleGVjU2VsZWN0aW9uU2V0S2V5QXJncyxcbiAgICAgICAgICAgIG1ha2VDYWNoZUtleTogZnVuY3Rpb24gKHNlbGVjdGlvblNldCwgcGFyZW50LCBjb250ZXh0LCBjYW5vbml6ZVJlc3VsdHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydHNSZXN1bHRDYWNoaW5nKGNvbnRleHQuc3RvcmUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnN0b3JlLm1ha2VDYWNoZUtleShzZWxlY3Rpb25TZXQsIGlzUmVmZXJlbmNlKHBhcmVudCkgPyBwYXJlbnQuX19yZWYgOiBwYXJlbnQsIGNvbnRleHQudmFyU3RyaW5nLCBjYW5vbml6ZVJlc3VsdHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZXhlY3V0ZVN1YlNlbGVjdGVkQXJyYXkgPSB3cmFwKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgICAgICBtYXliZURlcGVuZE9uRXhpc3RlbmNlT2ZFbnRpdHkob3B0aW9ucy5jb250ZXh0LnN0b3JlLCBvcHRpb25zLmVuY2xvc2luZ1JlZi5fX3JlZik7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuZXhlY1N1YlNlbGVjdGVkQXJyYXlJbXBsKG9wdGlvbnMpO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBtYXg6IHRoaXMuY29uZmlnLnJlc3VsdENhY2hlTWF4U2l6ZSxcbiAgICAgICAgICAgIG1ha2VDYWNoZUtleTogZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZpZWxkID0gX2EuZmllbGQsIGFycmF5ID0gX2EuYXJyYXksIGNvbnRleHQgPSBfYS5jb250ZXh0O1xuICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0c1Jlc3VsdENhY2hpbmcoY29udGV4dC5zdG9yZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuc3RvcmUubWFrZUNhY2hlS2V5KGZpZWxkLCBhcnJheSwgY29udGV4dC52YXJTdHJpbmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIFN0b3JlUmVhZGVyLnByb3RvdHlwZS5yZXNldENhbm9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmNhbm9uID0gbmV3IE9iamVjdENhbm9uO1xuICAgIH07XG4gICAgU3RvcmVSZWFkZXIucHJvdG90eXBlLmRpZmZRdWVyeUFnYWluc3RTdG9yZSA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgc3RvcmUgPSBfYS5zdG9yZSwgcXVlcnkgPSBfYS5xdWVyeSwgX2IgPSBfYS5yb290SWQsIHJvb3RJZCA9IF9iID09PSB2b2lkIDAgPyAnUk9PVF9RVUVSWScgOiBfYiwgdmFyaWFibGVzID0gX2EudmFyaWFibGVzLCBfYyA9IF9hLnJldHVyblBhcnRpYWxEYXRhLCByZXR1cm5QYXJ0aWFsRGF0YSA9IF9jID09PSB2b2lkIDAgPyB0cnVlIDogX2MsIF9kID0gX2EuY2Fub25pemVSZXN1bHRzLCBjYW5vbml6ZVJlc3VsdHMgPSBfZCA9PT0gdm9pZCAwID8gdGhpcy5jb25maWcuY2Fub25pemVSZXN1bHRzIDogX2Q7XG4gICAgICAgIHZhciBwb2xpY2llcyA9IHRoaXMuY29uZmlnLmNhY2hlLnBvbGljaWVzO1xuICAgICAgICB2YXJpYWJsZXMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZ2V0RGVmYXVsdFZhbHVlcyhnZXRRdWVyeURlZmluaXRpb24ocXVlcnkpKSksIHZhcmlhYmxlcyk7XG4gICAgICAgIHZhciByb290UmVmID0gbWFrZVJlZmVyZW5jZShyb290SWQpO1xuICAgICAgICB2YXIgbWVyZ2VyID0gbmV3IERlZXBNZXJnZXI7XG4gICAgICAgIHZhciBleGVjUmVzdWx0ID0gdGhpcy5leGVjdXRlU2VsZWN0aW9uU2V0KHtcbiAgICAgICAgICAgIHNlbGVjdGlvblNldDogZ2V0TWFpbkRlZmluaXRpb24ocXVlcnkpLnNlbGVjdGlvblNldCxcbiAgICAgICAgICAgIG9iamVjdE9yUmVmZXJlbmNlOiByb290UmVmLFxuICAgICAgICAgICAgZW5jbG9zaW5nUmVmOiByb290UmVmLFxuICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgIHN0b3JlOiBzdG9yZSxcbiAgICAgICAgICAgICAgICBxdWVyeTogcXVlcnksXG4gICAgICAgICAgICAgICAgcG9saWNpZXM6IHBvbGljaWVzLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzLFxuICAgICAgICAgICAgICAgIHZhclN0cmluZzogY2Fub25pY2FsU3RyaW5naWZ5KHZhcmlhYmxlcyksXG4gICAgICAgICAgICAgICAgY2Fub25pemVSZXN1bHRzOiBjYW5vbml6ZVJlc3VsdHMsXG4gICAgICAgICAgICAgICAgZnJhZ21lbnRNYXA6IGNyZWF0ZUZyYWdtZW50TWFwKGdldEZyYWdtZW50RGVmaW5pdGlvbnMocXVlcnkpKSxcbiAgICAgICAgICAgICAgICBtZXJnZTogZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlci5tZXJnZShhLCBiKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBtaXNzaW5nO1xuICAgICAgICBpZiAoZXhlY1Jlc3VsdC5taXNzaW5nKSB7XG4gICAgICAgICAgICBtaXNzaW5nID0gW25ldyBNaXNzaW5nRmllbGRFcnJvcihmaXJzdE1pc3NpbmcoZXhlY1Jlc3VsdC5taXNzaW5nKSwgZXhlY1Jlc3VsdC5taXNzaW5nLCBxdWVyeSwgdmFyaWFibGVzKV07XG4gICAgICAgICAgICBpZiAoIXJldHVyblBhcnRpYWxEYXRhKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbWlzc2luZ1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdWx0OiBleGVjUmVzdWx0LnJlc3VsdCxcbiAgICAgICAgICAgIGNvbXBsZXRlOiAhbWlzc2luZyxcbiAgICAgICAgICAgIG1pc3Npbmc6IG1pc3NpbmcsXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBTdG9yZVJlYWRlci5wcm90b3R5cGUuaXNGcmVzaCA9IGZ1bmN0aW9uIChyZXN1bHQsIHBhcmVudCwgc2VsZWN0aW9uU2V0LCBjb250ZXh0KSB7XG4gICAgICAgIGlmIChzdXBwb3J0c1Jlc3VsdENhY2hpbmcoY29udGV4dC5zdG9yZSkgJiZcbiAgICAgICAgICAgIHRoaXMua25vd25SZXN1bHRzLmdldChyZXN1bHQpID09PSBzZWxlY3Rpb25TZXQpIHtcbiAgICAgICAgICAgIHZhciBsYXRlc3QgPSB0aGlzLmV4ZWN1dGVTZWxlY3Rpb25TZXQucGVlayhzZWxlY3Rpb25TZXQsIHBhcmVudCwgY29udGV4dCwgdGhpcy5jYW5vbi5pc0tub3duKHJlc3VsdCkpO1xuICAgICAgICAgICAgaWYgKGxhdGVzdCAmJiByZXN1bHQgPT09IGxhdGVzdC5yZXN1bHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBTdG9yZVJlYWRlci5wcm90b3R5cGUuZXhlY1NlbGVjdGlvblNldEltcGwgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHNlbGVjdGlvblNldCA9IF9hLnNlbGVjdGlvblNldCwgb2JqZWN0T3JSZWZlcmVuY2UgPSBfYS5vYmplY3RPclJlZmVyZW5jZSwgZW5jbG9zaW5nUmVmID0gX2EuZW5jbG9zaW5nUmVmLCBjb250ZXh0ID0gX2EuY29udGV4dDtcbiAgICAgICAgaWYgKGlzUmVmZXJlbmNlKG9iamVjdE9yUmVmZXJlbmNlKSAmJlxuICAgICAgICAgICAgIWNvbnRleHQucG9saWNpZXMucm9vdFR5cGVuYW1lc0J5SWRbb2JqZWN0T3JSZWZlcmVuY2UuX19yZWZdICYmXG4gICAgICAgICAgICAhY29udGV4dC5zdG9yZS5oYXMob2JqZWN0T3JSZWZlcmVuY2UuX19yZWYpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdDogdGhpcy5jYW5vbi5lbXB0eSxcbiAgICAgICAgICAgICAgICBtaXNzaW5nOiBcIkRhbmdsaW5nIHJlZmVyZW5jZSB0byBtaXNzaW5nIFwiLmNvbmNhdChvYmplY3RPclJlZmVyZW5jZS5fX3JlZiwgXCIgb2JqZWN0XCIpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdmFyaWFibGVzID0gY29udGV4dC52YXJpYWJsZXMsIHBvbGljaWVzID0gY29udGV4dC5wb2xpY2llcywgc3RvcmUgPSBjb250ZXh0LnN0b3JlO1xuICAgICAgICB2YXIgdHlwZW5hbWUgPSBzdG9yZS5nZXRGaWVsZFZhbHVlKG9iamVjdE9yUmVmZXJlbmNlLCBcIl9fdHlwZW5hbWVcIik7XG4gICAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgICAgdmFyIG1pc3Npbmc7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5hZGRUeXBlbmFtZSAmJlxuICAgICAgICAgICAgdHlwZW9mIHR5cGVuYW1lID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICAhcG9saWNpZXMucm9vdElkc0J5VHlwZW5hbWVbdHlwZW5hbWVdKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB7IF9fdHlwZW5hbWU6IHR5cGVuYW1lIH07XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlTWlzc2luZyhyZXN1bHQsIHJlc3VsdE5hbWUpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQubWlzc2luZykge1xuICAgICAgICAgICAgICAgIG1pc3NpbmcgPSBjb250ZXh0Lm1lcmdlKG1pc3NpbmcsIChfYSA9IHt9LCBfYVtyZXN1bHROYW1lXSA9IHJlc3VsdC5taXNzaW5nLCBfYSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHdvcmtTZXQgPSBuZXcgU2V0KHNlbGVjdGlvblNldC5zZWxlY3Rpb25zKTtcbiAgICAgICAgd29ya1NldC5mb3JFYWNoKGZ1bmN0aW9uIChzZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBpZiAoIXNob3VsZEluY2x1ZGUoc2VsZWN0aW9uLCB2YXJpYWJsZXMpKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGlmIChpc0ZpZWxkKHNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICB2YXIgZmllbGRWYWx1ZSA9IHBvbGljaWVzLnJlYWRGaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogc2VsZWN0aW9uLm5hbWUudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBzZWxlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogY29udGV4dC52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgICAgIGZyb206IG9iamVjdE9yUmVmZXJlbmNlLFxuICAgICAgICAgICAgICAgIH0sIGNvbnRleHQpO1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHROYW1lID0gcmVzdWx0S2V5TmFtZUZyb21GaWVsZChzZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZFZhbHVlID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRUeXBlbmFtZVRvRG9jdW1lbnQuYWRkZWQoc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2luZyA9IGNvbnRleHQubWVyZ2UobWlzc2luZywgKF9hID0ge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2FbcmVzdWx0TmFtZV0gPSBcIkNhbid0IGZpbmQgZmllbGQgJ1wiLmNvbmNhdChzZWxlY3Rpb24ubmFtZS52YWx1ZSwgXCInIG9uIFwiKS5jb25jYXQoaXNSZWZlcmVuY2Uob2JqZWN0T3JSZWZlcmVuY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gb2JqZWN0T3JSZWZlcmVuY2UuX19yZWYgKyBcIiBvYmplY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwib2JqZWN0IFwiICsgSlNPTi5zdHJpbmdpZnkob2JqZWN0T3JSZWZlcmVuY2UsIG51bGwsIDIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzQXJyYXkoZmllbGRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGRWYWx1ZSA9IGhhbmRsZU1pc3NpbmcoX3RoaXMuZXhlY3V0ZVN1YlNlbGVjdGVkQXJyYXkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IHNlbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5OiBmaWVsZFZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW5jbG9zaW5nUmVmOiBlbmNsb3NpbmdSZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICB9KSwgcmVzdWx0TmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzZWxlY3Rpb24uc2VsZWN0aW9uU2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LmNhbm9uaXplUmVzdWx0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRWYWx1ZSA9IF90aGlzLmNhbm9uLnBhc3MoZmllbGRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmllbGRWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkVmFsdWUgPSBoYW5kbGVNaXNzaW5nKF90aGlzLmV4ZWN1dGVTZWxlY3Rpb25TZXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uU2V0OiBzZWxlY3Rpb24uc2VsZWN0aW9uU2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0T3JSZWZlcmVuY2U6IGZpZWxkVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmNsb3NpbmdSZWY6IGlzUmVmZXJlbmNlKGZpZWxkVmFsdWUpID8gZmllbGRWYWx1ZSA6IGVuY2xvc2luZ1JlZixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgIH0pLCByZXN1bHROYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkVmFsdWUgIT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjb250ZXh0Lm1lcmdlKHJlc3VsdCwgKF9iID0ge30sIF9iW3Jlc3VsdE5hbWVdID0gZmllbGRWYWx1ZSwgX2IpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgZnJhZ21lbnQgPSBnZXRGcmFnbWVudEZyb21TZWxlY3Rpb24oc2VsZWN0aW9uLCBjb250ZXh0LmZyYWdtZW50TWFwKTtcbiAgICAgICAgICAgICAgICBpZiAoZnJhZ21lbnQgJiYgcG9saWNpZXMuZnJhZ21lbnRNYXRjaGVzKGZyYWdtZW50LCB0eXBlbmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQuc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMuZm9yRWFjaCh3b3JrU2V0LmFkZCwgd29ya1NldCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGZpbmFsUmVzdWx0ID0geyByZXN1bHQ6IHJlc3VsdCwgbWlzc2luZzogbWlzc2luZyB9O1xuICAgICAgICB2YXIgZnJvemVuID0gY29udGV4dC5jYW5vbml6ZVJlc3VsdHNcbiAgICAgICAgICAgID8gdGhpcy5jYW5vbi5hZG1pdChmaW5hbFJlc3VsdClcbiAgICAgICAgICAgIDogbWF5YmVEZWVwRnJlZXplKGZpbmFsUmVzdWx0KTtcbiAgICAgICAgaWYgKGZyb3plbi5yZXN1bHQpIHtcbiAgICAgICAgICAgIHRoaXMua25vd25SZXN1bHRzLnNldChmcm96ZW4ucmVzdWx0LCBzZWxlY3Rpb25TZXQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmcm96ZW47XG4gICAgfTtcbiAgICBTdG9yZVJlYWRlci5wcm90b3R5cGUuZXhlY1N1YlNlbGVjdGVkQXJyYXlJbXBsID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBmaWVsZCA9IF9hLmZpZWxkLCBhcnJheSA9IF9hLmFycmF5LCBlbmNsb3NpbmdSZWYgPSBfYS5lbmNsb3NpbmdSZWYsIGNvbnRleHQgPSBfYS5jb250ZXh0O1xuICAgICAgICB2YXIgbWlzc2luZztcbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlTWlzc2luZyhjaGlsZFJlc3VsdCwgaSkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgaWYgKGNoaWxkUmVzdWx0Lm1pc3NpbmcpIHtcbiAgICAgICAgICAgICAgICBtaXNzaW5nID0gY29udGV4dC5tZXJnZShtaXNzaW5nLCAoX2EgPSB7fSwgX2FbaV0gPSBjaGlsZFJlc3VsdC5taXNzaW5nLCBfYSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNoaWxkUmVzdWx0LnJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGQuc2VsZWN0aW9uU2V0KSB7XG4gICAgICAgICAgICBhcnJheSA9IGFycmF5LmZpbHRlcihjb250ZXh0LnN0b3JlLmNhblJlYWQpO1xuICAgICAgICB9XG4gICAgICAgIGFycmF5ID0gYXJyYXkubWFwKGZ1bmN0aW9uIChpdGVtLCBpKSB7XG4gICAgICAgICAgICBpZiAoaXRlbSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzQXJyYXkoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlTWlzc2luZyhfdGhpcy5leGVjdXRlU3ViU2VsZWN0ZWRBcnJheSh7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgYXJyYXk6IGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGVuY2xvc2luZ1JlZjogZW5jbG9zaW5nUmVmLFxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICAgICAgICAgIH0pLCBpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaWVsZC5zZWxlY3Rpb25TZXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlTWlzc2luZyhfdGhpcy5leGVjdXRlU2VsZWN0aW9uU2V0KHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uU2V0OiBmaWVsZC5zZWxlY3Rpb25TZXQsXG4gICAgICAgICAgICAgICAgICAgIG9iamVjdE9yUmVmZXJlbmNlOiBpdGVtLFxuICAgICAgICAgICAgICAgICAgICBlbmNsb3NpbmdSZWY6IGlzUmVmZXJlbmNlKGl0ZW0pID8gaXRlbSA6IGVuY2xvc2luZ1JlZixcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogY29udGV4dCxcbiAgICAgICAgICAgICAgICB9KSwgaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoX19ERVZfXykge1xuICAgICAgICAgICAgICAgIGFzc2VydFNlbGVjdGlvblNldEZvcklkVmFsdWUoY29udGV4dC5zdG9yZSwgZmllbGQsIGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzdWx0OiBjb250ZXh0LmNhbm9uaXplUmVzdWx0cyA/IHRoaXMuY2Fub24uYWRtaXQoYXJyYXkpIDogYXJyYXksXG4gICAgICAgICAgICBtaXNzaW5nOiBtaXNzaW5nLFxuICAgICAgICB9O1xuICAgIH07XG4gICAgcmV0dXJuIFN0b3JlUmVhZGVyO1xufSgpKTtcbmV4cG9ydCB7IFN0b3JlUmVhZGVyIH07XG5mdW5jdGlvbiBmaXJzdE1pc3NpbmcodHJlZSkge1xuICAgIHRyeSB7XG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHRyZWUsIGZ1bmN0aW9uIChfLCB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgICAgICAgICB0aHJvdyB2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNhdGNoIChyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG5mdW5jdGlvbiBhc3NlcnRTZWxlY3Rpb25TZXRGb3JJZFZhbHVlKHN0b3JlLCBmaWVsZCwgZmllbGRWYWx1ZSkge1xuICAgIGlmICghZmllbGQuc2VsZWN0aW9uU2V0KSB7XG4gICAgICAgIHZhciB3b3JrU2V0XzEgPSBuZXcgU2V0KFtmaWVsZFZhbHVlXSk7XG4gICAgICAgIHdvcmtTZXRfMS5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKGlzTm9uTnVsbE9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBfX0RFVl9fID8gaW52YXJpYW50KCFpc1JlZmVyZW5jZSh2YWx1ZSksIFwiTWlzc2luZyBzZWxlY3Rpb24gc2V0IGZvciBvYmplY3Qgb2YgdHlwZSBcIi5jb25jYXQoZ2V0VHlwZW5hbWVGcm9tU3RvcmVPYmplY3Qoc3RvcmUsIHZhbHVlKSwgXCIgcmV0dXJuZWQgZm9yIHF1ZXJ5IGZpZWxkIFwiKS5jb25jYXQoZmllbGQubmFtZS52YWx1ZSkpIDogaW52YXJpYW50KCFpc1JlZmVyZW5jZSh2YWx1ZSksIDUpO1xuICAgICAgICAgICAgICAgIE9iamVjdC52YWx1ZXModmFsdWUpLmZvckVhY2god29ya1NldF8xLmFkZCwgd29ya1NldF8xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVhZEZyb21TdG9yZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/cache/inmemory/readFromStore.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/cache/inmemory/types.js":
/*!*************************************************************!*\
  !*** ./node_modules/@apollo/client/cache/inmemory/types.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n;\n;\n\n//# sourceMappingURL=types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvaW5tZW1vcnkvdHlwZXMuanMuanMiLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDVTtBQUNWIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9jYWNoZS9pbm1lbW9yeS90eXBlcy5qcz8wZGMyIl0sInNvdXJjZXNDb250ZW50IjpbIjtcbjtcbmV4cG9ydCB7fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXR5cGVzLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/cache/inmemory/types.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/cache/inmemory/writeToStore.js":
/*!********************************************************************!*\
  !*** ./node_modules/@apollo/client/cache/inmemory/writeToStore.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"StoreWriter\": function() { return /* binding */ StoreWriter; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _wry_equality__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wry/equality */ \"./node_modules/@apollo/client/node_modules/@wry/equality/lib/equality.esm.js\");\n/* harmony import */ var _wry_trie__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wry/trie */ \"./node_modules/@wry/trie/lib/trie.esm.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n/* harmony import */ var _helpers_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./helpers.js */ \"./node_modules/@apollo/client/cache/inmemory/helpers.js\");\n/* harmony import */ var _object_canon_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./object-canon.js */ \"./node_modules/@apollo/client/cache/inmemory/object-canon.js\");\n/* harmony import */ var _policies_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./policies.js */ \"./node_modules/@apollo/client/cache/inmemory/policies.js\");\n\n\n\n\n\n\n\n\n;\nfunction getContextFlavor(context, clientOnly, deferred) {\n    var key = \"\".concat(clientOnly).concat(deferred);\n    var flavored = context.flavors.get(key);\n    if (!flavored) {\n        context.flavors.set(key, flavored = (context.clientOnly === clientOnly &&\n            context.deferred === deferred) ? context : (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, context), { clientOnly: clientOnly, deferred: deferred }));\n    }\n    return flavored;\n}\nvar StoreWriter = (function () {\n    function StoreWriter(cache, reader) {\n        this.cache = cache;\n        this.reader = reader;\n    }\n    StoreWriter.prototype.writeToStore = function (store, _a) {\n        var _this = this;\n        var query = _a.query, result = _a.result, dataId = _a.dataId, variables = _a.variables, overwrite = _a.overwrite;\n        var operationDefinition = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.getOperationDefinition)(query);\n        var merger = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__.makeProcessedFieldsMerger)();\n        variables = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.getDefaultValues)(operationDefinition)), variables);\n        var context = {\n            store: store,\n            written: Object.create(null),\n            merge: function (existing, incoming) {\n                return merger.merge(existing, incoming);\n            },\n            variables: variables,\n            varString: (0,_object_canon_js__WEBPACK_IMPORTED_MODULE_6__.canonicalStringify)(variables),\n            fragmentMap: (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.createFragmentMap)((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.getFragmentDefinitions)(query)),\n            overwrite: !!overwrite,\n            incomingById: new Map,\n            clientOnly: false,\n            deferred: false,\n            flavors: new Map,\n        };\n        var ref = this.processSelectionSet({\n            result: result || Object.create(null),\n            dataId: dataId,\n            selectionSet: operationDefinition.selectionSet,\n            mergeTree: { map: new Map },\n            context: context,\n        });\n        if (!(0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isReference)(ref)) {\n            throw __DEV__ ? new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(\"Could not identify object \".concat(JSON.stringify(result))) : new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(6);\n        }\n        context.incomingById.forEach(function (_a, dataId) {\n            var storeObject = _a.storeObject, mergeTree = _a.mergeTree, fieldNodeSet = _a.fieldNodeSet;\n            var entityRef = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.makeReference)(dataId);\n            if (mergeTree && mergeTree.map.size) {\n                var applied = _this.applyMerges(mergeTree, entityRef, storeObject, context);\n                if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isReference)(applied)) {\n                    return;\n                }\n                storeObject = applied;\n            }\n            if (__DEV__ && !context.overwrite) {\n                var fieldsWithSelectionSets_1 = Object.create(null);\n                fieldNodeSet.forEach(function (field) {\n                    if (field.selectionSet) {\n                        fieldsWithSelectionSets_1[field.name.value] = true;\n                    }\n                });\n                var hasSelectionSet_1 = function (storeFieldName) {\n                    return fieldsWithSelectionSets_1[(0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__.fieldNameFromStoreName)(storeFieldName)] === true;\n                };\n                var hasMergeFunction_1 = function (storeFieldName) {\n                    var childTree = mergeTree && mergeTree.map.get(storeFieldName);\n                    return Boolean(childTree && childTree.info && childTree.info.merge);\n                };\n                Object.keys(storeObject).forEach(function (storeFieldName) {\n                    if (hasSelectionSet_1(storeFieldName) &&\n                        !hasMergeFunction_1(storeFieldName)) {\n                        warnAboutDataLoss(entityRef, storeObject, storeFieldName, context.store);\n                    }\n                });\n            }\n            store.merge(dataId, storeObject);\n        });\n        store.retain(ref.__ref);\n        return ref;\n    };\n    StoreWriter.prototype.processSelectionSet = function (_a) {\n        var _this = this;\n        var dataId = _a.dataId, result = _a.result, selectionSet = _a.selectionSet, context = _a.context, mergeTree = _a.mergeTree;\n        var policies = this.cache.policies;\n        var incoming = Object.create(null);\n        var typename = (dataId && policies.rootTypenamesById[dataId]) ||\n            (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.getTypenameFromResult)(result, selectionSet, context.fragmentMap) ||\n            (dataId && context.store.get(dataId, \"__typename\"));\n        if (\"string\" === typeof typename) {\n            incoming.__typename = typename;\n        }\n        var readField = function () {\n            var options = (0,_policies_js__WEBPACK_IMPORTED_MODULE_7__.normalizeReadFieldOptions)(arguments, incoming, context.variables);\n            if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isReference)(options.from)) {\n                var info = context.incomingById.get(options.from.__ref);\n                if (info) {\n                    var result_1 = policies.readField((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, options), { from: info.storeObject }), context);\n                    if (result_1 !== void 0) {\n                        return result_1;\n                    }\n                }\n            }\n            return policies.readField(options, context);\n        };\n        var fieldNodeSet = new Set();\n        this.flattenFields(selectionSet, result, context, typename).forEach(function (context, field) {\n            var _a;\n            var resultFieldKey = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.resultKeyNameFromField)(field);\n            var value = result[resultFieldKey];\n            fieldNodeSet.add(field);\n            if (value !== void 0) {\n                var storeFieldName = policies.getStoreFieldName({\n                    typename: typename,\n                    fieldName: field.name.value,\n                    field: field,\n                    variables: context.variables,\n                });\n                var childTree = getChildMergeTree(mergeTree, storeFieldName);\n                var incomingValue = _this.processFieldValue(value, field, field.selectionSet\n                    ? getContextFlavor(context, false, false)\n                    : context, childTree);\n                var childTypename = void 0;\n                if (field.selectionSet &&\n                    ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isReference)(incomingValue) ||\n                        (0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__.storeValueIsStoreObject)(incomingValue))) {\n                    childTypename = readField(\"__typename\", incomingValue);\n                }\n                var merge = policies.getMergeFunction(typename, field.name.value, childTypename);\n                if (merge) {\n                    childTree.info = {\n                        field: field,\n                        typename: typename,\n                        merge: merge,\n                    };\n                }\n                else {\n                    maybeRecycleChildMergeTree(mergeTree, storeFieldName);\n                }\n                incoming = context.merge(incoming, (_a = {},\n                    _a[storeFieldName] = incomingValue,\n                    _a));\n            }\n            else if (__DEV__ &&\n                !context.clientOnly &&\n                !context.deferred &&\n                !_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.addTypenameToDocument.added(field) &&\n                !policies.getReadFunction(typename, field.name.value)) {\n                __DEV__ && _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant.error(\"Missing field '\".concat((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.resultKeyNameFromField)(field), \"' while writing result \").concat(JSON.stringify(result, null, 2)).substring(0, 1000));\n            }\n        });\n        try {\n            var _b = policies.identify(result, {\n                typename: typename,\n                selectionSet: selectionSet,\n                fragmentMap: context.fragmentMap,\n                storeObject: incoming,\n                readField: readField,\n            }), id = _b[0], keyObject = _b[1];\n            dataId = dataId || id;\n            if (keyObject) {\n                incoming = context.merge(incoming, keyObject);\n            }\n        }\n        catch (e) {\n            if (!dataId)\n                throw e;\n        }\n        if (\"string\" === typeof dataId) {\n            var dataRef = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.makeReference)(dataId);\n            var sets = context.written[dataId] || (context.written[dataId] = []);\n            if (sets.indexOf(selectionSet) >= 0)\n                return dataRef;\n            sets.push(selectionSet);\n            if (this.reader && this.reader.isFresh(result, dataRef, selectionSet, context)) {\n                return dataRef;\n            }\n            var previous_1 = context.incomingById.get(dataId);\n            if (previous_1) {\n                previous_1.storeObject = context.merge(previous_1.storeObject, incoming);\n                previous_1.mergeTree = mergeMergeTrees(previous_1.mergeTree, mergeTree);\n                fieldNodeSet.forEach(function (field) { return previous_1.fieldNodeSet.add(field); });\n            }\n            else {\n                context.incomingById.set(dataId, {\n                    storeObject: incoming,\n                    mergeTree: mergeTreeIsEmpty(mergeTree) ? void 0 : mergeTree,\n                    fieldNodeSet: fieldNodeSet,\n                });\n            }\n            return dataRef;\n        }\n        return incoming;\n    };\n    StoreWriter.prototype.processFieldValue = function (value, field, context, mergeTree) {\n        var _this = this;\n        if (!field.selectionSet || value === null) {\n            return __DEV__ ? (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.cloneDeep)(value) : value;\n        }\n        if ((0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__.isArray)(value)) {\n            return value.map(function (item, i) {\n                var value = _this.processFieldValue(item, field, context, getChildMergeTree(mergeTree, i));\n                maybeRecycleChildMergeTree(mergeTree, i);\n                return value;\n            });\n        }\n        return this.processSelectionSet({\n            result: value,\n            selectionSet: field.selectionSet,\n            context: context,\n            mergeTree: mergeTree,\n        });\n    };\n    StoreWriter.prototype.flattenFields = function (selectionSet, result, context, typename) {\n        if (typename === void 0) { typename = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.getTypenameFromResult)(result, selectionSet, context.fragmentMap); }\n        var fieldMap = new Map();\n        var policies = this.cache.policies;\n        var limitingTrie = new _wry_trie__WEBPACK_IMPORTED_MODULE_2__.Trie(false);\n        (function flatten(selectionSet, inheritedContext) {\n            var visitedNode = limitingTrie.lookup(selectionSet, inheritedContext.clientOnly, inheritedContext.deferred);\n            if (visitedNode.visited)\n                return;\n            visitedNode.visited = true;\n            selectionSet.selections.forEach(function (selection) {\n                if (!(0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.shouldInclude)(selection, context.variables))\n                    return;\n                var clientOnly = inheritedContext.clientOnly, deferred = inheritedContext.deferred;\n                if (!(clientOnly && deferred) &&\n                    (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isNonEmptyArray)(selection.directives)) {\n                    selection.directives.forEach(function (dir) {\n                        var name = dir.name.value;\n                        if (name === \"client\")\n                            clientOnly = true;\n                        if (name === \"defer\") {\n                            var args = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.argumentsObjectFromField)(dir, context.variables);\n                            if (!args || args.if !== false) {\n                                deferred = true;\n                            }\n                        }\n                    });\n                }\n                if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isField)(selection)) {\n                    var existing = fieldMap.get(selection);\n                    if (existing) {\n                        clientOnly = clientOnly && existing.clientOnly;\n                        deferred = deferred && existing.deferred;\n                    }\n                    fieldMap.set(selection, getContextFlavor(context, clientOnly, deferred));\n                }\n                else {\n                    var fragment = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.getFragmentFromSelection)(selection, context.fragmentMap);\n                    if (fragment &&\n                        policies.fragmentMatches(fragment, typename, result, context.variables)) {\n                        flatten(fragment.selectionSet, getContextFlavor(context, clientOnly, deferred));\n                    }\n                }\n            });\n        })(selectionSet, context);\n        return fieldMap;\n    };\n    StoreWriter.prototype.applyMerges = function (mergeTree, existing, incoming, context, getStorageArgs) {\n        var _a;\n        var _this = this;\n        if (mergeTree.map.size && !(0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isReference)(incoming)) {\n            var e_1 = (!(0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__.isArray)(incoming) &&\n                ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isReference)(existing) || (0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__.storeValueIsStoreObject)(existing))) ? existing : void 0;\n            var i_1 = incoming;\n            if (e_1 && !getStorageArgs) {\n                getStorageArgs = [(0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isReference)(e_1) ? e_1.__ref : e_1];\n            }\n            var changedFields_1;\n            var getValue_1 = function (from, name) {\n                return (0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__.isArray)(from)\n                    ? (typeof name === \"number\" ? from[name] : void 0)\n                    : context.store.getFieldValue(from, String(name));\n            };\n            mergeTree.map.forEach(function (childTree, storeFieldName) {\n                var eVal = getValue_1(e_1, storeFieldName);\n                var iVal = getValue_1(i_1, storeFieldName);\n                if (void 0 === iVal)\n                    return;\n                if (getStorageArgs) {\n                    getStorageArgs.push(storeFieldName);\n                }\n                var aVal = _this.applyMerges(childTree, eVal, iVal, context, getStorageArgs);\n                if (aVal !== iVal) {\n                    changedFields_1 = changedFields_1 || new Map;\n                    changedFields_1.set(storeFieldName, aVal);\n                }\n                if (getStorageArgs) {\n                    (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(getStorageArgs.pop() === storeFieldName);\n                }\n            });\n            if (changedFields_1) {\n                incoming = ((0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__.isArray)(i_1) ? i_1.slice(0) : (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, i_1));\n                changedFields_1.forEach(function (value, name) {\n                    incoming[name] = value;\n                });\n            }\n        }\n        if (mergeTree.info) {\n            return this.cache.policies.runMergeFunction(existing, incoming, mergeTree.info, context, getStorageArgs && (_a = context.store).getStorage.apply(_a, getStorageArgs));\n        }\n        return incoming;\n    };\n    return StoreWriter;\n}());\n\nvar emptyMergeTreePool = [];\nfunction getChildMergeTree(_a, name) {\n    var map = _a.map;\n    if (!map.has(name)) {\n        map.set(name, emptyMergeTreePool.pop() || { map: new Map });\n    }\n    return map.get(name);\n}\nfunction mergeMergeTrees(left, right) {\n    if (left === right || !right || mergeTreeIsEmpty(right))\n        return left;\n    if (!left || mergeTreeIsEmpty(left))\n        return right;\n    var info = left.info && right.info ? (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, left.info), right.info) : left.info || right.info;\n    var needToMergeMaps = left.map.size && right.map.size;\n    var map = needToMergeMaps ? new Map :\n        left.map.size ? left.map : right.map;\n    var merged = { info: info, map: map };\n    if (needToMergeMaps) {\n        var remainingRightKeys_1 = new Set(right.map.keys());\n        left.map.forEach(function (leftTree, key) {\n            merged.map.set(key, mergeMergeTrees(leftTree, right.map.get(key)));\n            remainingRightKeys_1.delete(key);\n        });\n        remainingRightKeys_1.forEach(function (key) {\n            merged.map.set(key, mergeMergeTrees(right.map.get(key), left.map.get(key)));\n        });\n    }\n    return merged;\n}\nfunction mergeTreeIsEmpty(tree) {\n    return !tree || !(tree.info || tree.map.size);\n}\nfunction maybeRecycleChildMergeTree(_a, name) {\n    var map = _a.map;\n    var childTree = map.get(name);\n    if (childTree && mergeTreeIsEmpty(childTree)) {\n        emptyMergeTreePool.push(childTree);\n        map.delete(name);\n    }\n}\nvar warnings = new Set();\nfunction warnAboutDataLoss(existingRef, incomingObj, storeFieldName, store) {\n    var getChild = function (objOrRef) {\n        var child = store.getFieldValue(objOrRef, storeFieldName);\n        return typeof child === \"object\" && child;\n    };\n    var existing = getChild(existingRef);\n    if (!existing)\n        return;\n    var incoming = getChild(incomingObj);\n    if (!incoming)\n        return;\n    if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_4__.isReference)(existing))\n        return;\n    if ((0,_wry_equality__WEBPACK_IMPORTED_MODULE_1__.equal)(existing, incoming))\n        return;\n    if (Object.keys(existing).every(function (key) { return store.getFieldValue(incoming, key) !== void 0; })) {\n        return;\n    }\n    var parentType = store.getFieldValue(existingRef, \"__typename\") ||\n        store.getFieldValue(incomingObj, \"__typename\");\n    var fieldName = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__.fieldNameFromStoreName)(storeFieldName);\n    var typeDotName = \"\".concat(parentType, \".\").concat(fieldName);\n    if (warnings.has(typeDotName))\n        return;\n    warnings.add(typeDotName);\n    var childTypenames = [];\n    if (!(0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__.isArray)(existing) &&\n        !(0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__.isArray)(incoming)) {\n        [existing, incoming].forEach(function (child) {\n            var typename = store.getFieldValue(child, \"__typename\");\n            if (typeof typename === \"string\" &&\n                !childTypenames.includes(typename)) {\n                childTypenames.push(typename);\n            }\n        });\n    }\n    __DEV__ && _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant.warn(\"Cache data may be lost when replacing the \".concat(fieldName, \" field of a \").concat(parentType, \" object.\\n\\nTo address this problem (which is not a bug in Apollo Client), \").concat(childTypenames.length\n        ? \"either ensure all objects of type \" +\n            childTypenames.join(\" and \") + \" have an ID or a custom merge function, or \"\n        : \"\", \"define a custom merge function for the \").concat(typeDotName, \" field, so InMemoryCache can safely merge these objects:\\n\\n  existing: \").concat(JSON.stringify(existing).slice(0, 1000), \"\\n  incoming: \").concat(JSON.stringify(incoming).slice(0, 1000), \"\\n\\nFor more information about these options, please refer to the documentation:\\n\\n  * Ensuring entity objects have IDs: https://go.apollo.dev/c/generating-unique-identifiers\\n  * Defining custom merge functions: https://go.apollo.dev/c/merging-non-normalized-objects\\n\"));\n}\n//# sourceMappingURL=writeToStore.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvaW5tZW1vcnkvd3JpdGVUb1N0b3JlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFpQztBQUM0QztBQUN2QztBQUNMO0FBQ3lTO0FBQ3ZOO0FBQzVEO0FBQ0c7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXVELCtDQUFRLENBQUMsK0NBQVEsR0FBRyxjQUFjLDRDQUE0QztBQUNySTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLDJFQUFzQjtBQUN4RCxxQkFBcUIsc0VBQXlCO0FBQzlDLG9CQUFvQiwrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsRUFBRSxxRUFBZ0I7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLHVCQUF1QixvRUFBa0I7QUFDekMseUJBQXlCLHNFQUFpQixDQUFDLDJFQUFzQjtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixjQUFjO0FBQ3ZDO0FBQ0EsU0FBUztBQUNULGFBQWEsZ0VBQVc7QUFDeEIsZ0NBQWdDLHVFQUFjLG9FQUFvRSx1RUFBYztBQUNoSTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsa0VBQWE7QUFDekM7QUFDQTtBQUNBLG9CQUFvQixnRUFBVztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLHFEQUFxRCxtRUFBc0I7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDBFQUFxQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLHVFQUF5QjtBQUNuRCxnQkFBZ0IsZ0VBQVc7QUFDM0I7QUFDQTtBQUNBLHNEQUFzRCwrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsY0FBYyx3QkFBd0I7QUFDaEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsMkVBQXNCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGdFQUFXO0FBQ2hDLHdCQUF3QixvRUFBdUI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQ7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDRFQUEyQjtBQUM1QztBQUNBLDJCQUEyQix3RUFBZSwwQkFBMEIsMkVBQXNCO0FBQzFGO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGtFQUFhO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0QsNENBQTRDO0FBQ3BHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLDhEQUFTO0FBQ3RDO0FBQ0EsWUFBWSxvREFBTztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLG1DQUFtQyxXQUFXLDBFQUFxQjtBQUNuRTtBQUNBO0FBQ0EsK0JBQStCLDJDQUFJO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixrRUFBYTtBQUNsQztBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0VBQWU7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qyw2RUFBd0I7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSxvQkFBb0IsNERBQU87QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyw2RUFBd0I7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxnRUFBVztBQUM5Qyx3QkFBd0Isb0RBQU87QUFDL0IsaUJBQWlCLGdFQUFXLGNBQWMsb0VBQXVCO0FBQ2pFO0FBQ0E7QUFDQSxrQ0FBa0MsZ0VBQVc7QUFDN0M7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLG9EQUFPO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isc0VBQVM7QUFDN0I7QUFDQSxhQUFhO0FBQ2I7QUFDQSw0QkFBNEIsb0RBQU8sdUJBQXVCLCtDQUFRLEdBQUc7QUFDckU7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNzQjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxjQUFjO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHO0FBQzdEO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsZ0VBQVc7QUFDbkI7QUFDQSxRQUFRLG9EQUFLO0FBQ2I7QUFDQSxxREFBcUQsdURBQXVEO0FBQzVHO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG1FQUFzQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxvREFBTztBQUNoQixTQUFTLG9EQUFPO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLGVBQWUsdUVBQWM7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY2FjaGUvaW5tZW1vcnkvd3JpdGVUb1N0b3JlLmpzPzUzNDQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGludmFyaWFudCwgSW52YXJpYW50RXJyb3IgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2dsb2JhbHMvaW5kZXguanNcIjtcbmltcG9ydCB7IGVxdWFsIH0gZnJvbSAnQHdyeS9lcXVhbGl0eSc7XG5pbXBvcnQgeyBUcmllIH0gZnJvbSAnQHdyeS90cmllJztcbmltcG9ydCB7IGNyZWF0ZUZyYWdtZW50TWFwLCBnZXRGcmFnbWVudEZyb21TZWxlY3Rpb24sIGdldERlZmF1bHRWYWx1ZXMsIGdldEZyYWdtZW50RGVmaW5pdGlvbnMsIGdldE9wZXJhdGlvbkRlZmluaXRpb24sIGdldFR5cGVuYW1lRnJvbVJlc3VsdCwgbWFrZVJlZmVyZW5jZSwgaXNGaWVsZCwgcmVzdWx0S2V5TmFtZUZyb21GaWVsZCwgaXNSZWZlcmVuY2UsIHNob3VsZEluY2x1ZGUsIGNsb25lRGVlcCwgYWRkVHlwZW5hbWVUb0RvY3VtZW50LCBpc05vbkVtcHR5QXJyYXksIGFyZ3VtZW50c09iamVjdEZyb21GaWVsZCwgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBtYWtlUHJvY2Vzc2VkRmllbGRzTWVyZ2VyLCBmaWVsZE5hbWVGcm9tU3RvcmVOYW1lLCBzdG9yZVZhbHVlSXNTdG9yZU9iamVjdCwgaXNBcnJheSB9IGZyb20gXCIuL2hlbHBlcnMuanNcIjtcbmltcG9ydCB7IGNhbm9uaWNhbFN0cmluZ2lmeSB9IGZyb20gXCIuL29iamVjdC1jYW5vbi5qc1wiO1xuaW1wb3J0IHsgbm9ybWFsaXplUmVhZEZpZWxkT3B0aW9ucyB9IGZyb20gXCIuL3BvbGljaWVzLmpzXCI7XG47XG5mdW5jdGlvbiBnZXRDb250ZXh0Rmxhdm9yKGNvbnRleHQsIGNsaWVudE9ubHksIGRlZmVycmVkKSB7XG4gICAgdmFyIGtleSA9IFwiXCIuY29uY2F0KGNsaWVudE9ubHkpLmNvbmNhdChkZWZlcnJlZCk7XG4gICAgdmFyIGZsYXZvcmVkID0gY29udGV4dC5mbGF2b3JzLmdldChrZXkpO1xuICAgIGlmICghZmxhdm9yZWQpIHtcbiAgICAgICAgY29udGV4dC5mbGF2b3JzLnNldChrZXksIGZsYXZvcmVkID0gKGNvbnRleHQuY2xpZW50T25seSA9PT0gY2xpZW50T25seSAmJlxuICAgICAgICAgICAgY29udGV4dC5kZWZlcnJlZCA9PT0gZGVmZXJyZWQpID8gY29udGV4dCA6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBjb250ZXh0KSwgeyBjbGllbnRPbmx5OiBjbGllbnRPbmx5LCBkZWZlcnJlZDogZGVmZXJyZWQgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gZmxhdm9yZWQ7XG59XG52YXIgU3RvcmVXcml0ZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFN0b3JlV3JpdGVyKGNhY2hlLCByZWFkZXIpIHtcbiAgICAgICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICAgICAgICB0aGlzLnJlYWRlciA9IHJlYWRlcjtcbiAgICB9XG4gICAgU3RvcmVXcml0ZXIucHJvdG90eXBlLndyaXRlVG9TdG9yZSA9IGZ1bmN0aW9uIChzdG9yZSwgX2EpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHF1ZXJ5ID0gX2EucXVlcnksIHJlc3VsdCA9IF9hLnJlc3VsdCwgZGF0YUlkID0gX2EuZGF0YUlkLCB2YXJpYWJsZXMgPSBfYS52YXJpYWJsZXMsIG92ZXJ3cml0ZSA9IF9hLm92ZXJ3cml0ZTtcbiAgICAgICAgdmFyIG9wZXJhdGlvbkRlZmluaXRpb24gPSBnZXRPcGVyYXRpb25EZWZpbml0aW9uKHF1ZXJ5KTtcbiAgICAgICAgdmFyIG1lcmdlciA9IG1ha2VQcm9jZXNzZWRGaWVsZHNNZXJnZXIoKTtcbiAgICAgICAgdmFyaWFibGVzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGdldERlZmF1bHRWYWx1ZXMob3BlcmF0aW9uRGVmaW5pdGlvbikpLCB2YXJpYWJsZXMpO1xuICAgICAgICB2YXIgY29udGV4dCA9IHtcbiAgICAgICAgICAgIHN0b3JlOiBzdG9yZSxcbiAgICAgICAgICAgIHdyaXR0ZW46IE9iamVjdC5jcmVhdGUobnVsbCksXG4gICAgICAgICAgICBtZXJnZTogZnVuY3Rpb24gKGV4aXN0aW5nLCBpbmNvbWluZykge1xuICAgICAgICAgICAgICAgIHJldHVybiBtZXJnZXIubWVyZ2UoZXhpc3RpbmcsIGluY29taW5nKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2YXJpYWJsZXM6IHZhcmlhYmxlcyxcbiAgICAgICAgICAgIHZhclN0cmluZzogY2Fub25pY2FsU3RyaW5naWZ5KHZhcmlhYmxlcyksXG4gICAgICAgICAgICBmcmFnbWVudE1hcDogY3JlYXRlRnJhZ21lbnRNYXAoZ2V0RnJhZ21lbnREZWZpbml0aW9ucyhxdWVyeSkpLFxuICAgICAgICAgICAgb3ZlcndyaXRlOiAhIW92ZXJ3cml0ZSxcbiAgICAgICAgICAgIGluY29taW5nQnlJZDogbmV3IE1hcCxcbiAgICAgICAgICAgIGNsaWVudE9ubHk6IGZhbHNlLFxuICAgICAgICAgICAgZGVmZXJyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZmxhdm9yczogbmV3IE1hcCxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJlZiA9IHRoaXMucHJvY2Vzc1NlbGVjdGlvblNldCh7XG4gICAgICAgICAgICByZXN1bHQ6IHJlc3VsdCB8fCBPYmplY3QuY3JlYXRlKG51bGwpLFxuICAgICAgICAgICAgZGF0YUlkOiBkYXRhSWQsXG4gICAgICAgICAgICBzZWxlY3Rpb25TZXQ6IG9wZXJhdGlvbkRlZmluaXRpb24uc2VsZWN0aW9uU2V0LFxuICAgICAgICAgICAgbWVyZ2VUcmVlOiB7IG1hcDogbmV3IE1hcCB9LFxuICAgICAgICAgICAgY29udGV4dDogY29udGV4dCxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghaXNSZWZlcmVuY2UocmVmKSkge1xuICAgICAgICAgICAgdGhyb3cgX19ERVZfXyA/IG5ldyBJbnZhcmlhbnRFcnJvcihcIkNvdWxkIG5vdCBpZGVudGlmeSBvYmplY3QgXCIuY29uY2F0KEpTT04uc3RyaW5naWZ5KHJlc3VsdCkpKSA6IG5ldyBJbnZhcmlhbnRFcnJvcig2KTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0LmluY29taW5nQnlJZC5mb3JFYWNoKGZ1bmN0aW9uIChfYSwgZGF0YUlkKSB7XG4gICAgICAgICAgICB2YXIgc3RvcmVPYmplY3QgPSBfYS5zdG9yZU9iamVjdCwgbWVyZ2VUcmVlID0gX2EubWVyZ2VUcmVlLCBmaWVsZE5vZGVTZXQgPSBfYS5maWVsZE5vZGVTZXQ7XG4gICAgICAgICAgICB2YXIgZW50aXR5UmVmID0gbWFrZVJlZmVyZW5jZShkYXRhSWQpO1xuICAgICAgICAgICAgaWYgKG1lcmdlVHJlZSAmJiBtZXJnZVRyZWUubWFwLnNpemUpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXBwbGllZCA9IF90aGlzLmFwcGx5TWVyZ2VzKG1lcmdlVHJlZSwgZW50aXR5UmVmLCBzdG9yZU9iamVjdCwgY29udGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKGlzUmVmZXJlbmNlKGFwcGxpZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RvcmVPYmplY3QgPSBhcHBsaWVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF9fREVWX18gJiYgIWNvbnRleHQub3ZlcndyaXRlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZpZWxkc1dpdGhTZWxlY3Rpb25TZXRzXzEgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgICAgICAgIGZpZWxkTm9kZVNldC5mb3JFYWNoKGZ1bmN0aW9uIChmaWVsZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQuc2VsZWN0aW9uU2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNXaXRoU2VsZWN0aW9uU2V0c18xW2ZpZWxkLm5hbWUudmFsdWVdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHZhciBoYXNTZWxlY3Rpb25TZXRfMSA9IGZ1bmN0aW9uIChzdG9yZUZpZWxkTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmllbGRzV2l0aFNlbGVjdGlvblNldHNfMVtmaWVsZE5hbWVGcm9tU3RvcmVOYW1lKHN0b3JlRmllbGROYW1lKV0gPT09IHRydWU7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB2YXIgaGFzTWVyZ2VGdW5jdGlvbl8xID0gZnVuY3Rpb24gKHN0b3JlRmllbGROYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZFRyZWUgPSBtZXJnZVRyZWUgJiYgbWVyZ2VUcmVlLm1hcC5nZXQoc3RvcmVGaWVsZE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbihjaGlsZFRyZWUgJiYgY2hpbGRUcmVlLmluZm8gJiYgY2hpbGRUcmVlLmluZm8ubWVyZ2UpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoc3RvcmVPYmplY3QpLmZvckVhY2goZnVuY3Rpb24gKHN0b3JlRmllbGROYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNTZWxlY3Rpb25TZXRfMShzdG9yZUZpZWxkTmFtZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFoYXNNZXJnZUZ1bmN0aW9uXzEoc3RvcmVGaWVsZE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuQWJvdXREYXRhTG9zcyhlbnRpdHlSZWYsIHN0b3JlT2JqZWN0LCBzdG9yZUZpZWxkTmFtZSwgY29udGV4dC5zdG9yZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0b3JlLm1lcmdlKGRhdGFJZCwgc3RvcmVPYmplY3QpO1xuICAgICAgICB9KTtcbiAgICAgICAgc3RvcmUucmV0YWluKHJlZi5fX3JlZik7XG4gICAgICAgIHJldHVybiByZWY7XG4gICAgfTtcbiAgICBTdG9yZVdyaXRlci5wcm90b3R5cGUucHJvY2Vzc1NlbGVjdGlvblNldCA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZGF0YUlkID0gX2EuZGF0YUlkLCByZXN1bHQgPSBfYS5yZXN1bHQsIHNlbGVjdGlvblNldCA9IF9hLnNlbGVjdGlvblNldCwgY29udGV4dCA9IF9hLmNvbnRleHQsIG1lcmdlVHJlZSA9IF9hLm1lcmdlVHJlZTtcbiAgICAgICAgdmFyIHBvbGljaWVzID0gdGhpcy5jYWNoZS5wb2xpY2llcztcbiAgICAgICAgdmFyIGluY29taW5nID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdmFyIHR5cGVuYW1lID0gKGRhdGFJZCAmJiBwb2xpY2llcy5yb290VHlwZW5hbWVzQnlJZFtkYXRhSWRdKSB8fFxuICAgICAgICAgICAgZ2V0VHlwZW5hbWVGcm9tUmVzdWx0KHJlc3VsdCwgc2VsZWN0aW9uU2V0LCBjb250ZXh0LmZyYWdtZW50TWFwKSB8fFxuICAgICAgICAgICAgKGRhdGFJZCAmJiBjb250ZXh0LnN0b3JlLmdldChkYXRhSWQsIFwiX190eXBlbmFtZVwiKSk7XG4gICAgICAgIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgdHlwZW5hbWUpIHtcbiAgICAgICAgICAgIGluY29taW5nLl9fdHlwZW5hbWUgPSB0eXBlbmFtZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVhZEZpZWxkID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG9wdGlvbnMgPSBub3JtYWxpemVSZWFkRmllbGRPcHRpb25zKGFyZ3VtZW50cywgaW5jb21pbmcsIGNvbnRleHQudmFyaWFibGVzKTtcbiAgICAgICAgICAgIGlmIChpc1JlZmVyZW5jZShvcHRpb25zLmZyb20pKSB7XG4gICAgICAgICAgICAgICAgdmFyIGluZm8gPSBjb250ZXh0LmluY29taW5nQnlJZC5nZXQob3B0aW9ucy5mcm9tLl9fcmVmKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5mbykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0XzEgPSBwb2xpY2llcy5yZWFkRmllbGQoX19hc3NpZ24oX19hc3NpZ24oe30sIG9wdGlvbnMpLCB7IGZyb206IGluZm8uc3RvcmVPYmplY3QgfSksIGNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0XzEgIT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdF8xO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBvbGljaWVzLnJlYWRGaWVsZChvcHRpb25zLCBjb250ZXh0KTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGZpZWxkTm9kZVNldCA9IG5ldyBTZXQoKTtcbiAgICAgICAgdGhpcy5mbGF0dGVuRmllbGRzKHNlbGVjdGlvblNldCwgcmVzdWx0LCBjb250ZXh0LCB0eXBlbmFtZSkuZm9yRWFjaChmdW5jdGlvbiAoY29udGV4dCwgZmllbGQpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciByZXN1bHRGaWVsZEtleSA9IHJlc3VsdEtleU5hbWVGcm9tRmllbGQoZmllbGQpO1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gcmVzdWx0W3Jlc3VsdEZpZWxkS2V5XTtcbiAgICAgICAgICAgIGZpZWxkTm9kZVNldC5hZGQoZmllbGQpO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgICB2YXIgc3RvcmVGaWVsZE5hbWUgPSBwb2xpY2llcy5nZXRTdG9yZUZpZWxkTmFtZSh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lOiB0eXBlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZmllbGROYW1lOiBmaWVsZC5uYW1lLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZDogZmllbGQsXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogY29udGV4dC52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkVHJlZSA9IGdldENoaWxkTWVyZ2VUcmVlKG1lcmdlVHJlZSwgc3RvcmVGaWVsZE5hbWUpO1xuICAgICAgICAgICAgICAgIHZhciBpbmNvbWluZ1ZhbHVlID0gX3RoaXMucHJvY2Vzc0ZpZWxkVmFsdWUodmFsdWUsIGZpZWxkLCBmaWVsZC5zZWxlY3Rpb25TZXRcbiAgICAgICAgICAgICAgICAgICAgPyBnZXRDb250ZXh0Rmxhdm9yKGNvbnRleHQsIGZhbHNlLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgOiBjb250ZXh0LCBjaGlsZFRyZWUpO1xuICAgICAgICAgICAgICAgIHZhciBjaGlsZFR5cGVuYW1lID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZC5zZWxlY3Rpb25TZXQgJiZcbiAgICAgICAgICAgICAgICAgICAgKGlzUmVmZXJlbmNlKGluY29taW5nVmFsdWUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yZVZhbHVlSXNTdG9yZU9iamVjdChpbmNvbWluZ1ZhbHVlKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRUeXBlbmFtZSA9IHJlYWRGaWVsZChcIl9fdHlwZW5hbWVcIiwgaW5jb21pbmdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBtZXJnZSA9IHBvbGljaWVzLmdldE1lcmdlRnVuY3Rpb24odHlwZW5hbWUsIGZpZWxkLm5hbWUudmFsdWUsIGNoaWxkVHlwZW5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChtZXJnZSkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZFRyZWUuaW5mbyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBmaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lOiB0eXBlbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlOiBtZXJnZSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG1heWJlUmVjeWNsZUNoaWxkTWVyZ2VUcmVlKG1lcmdlVHJlZSwgc3RvcmVGaWVsZE5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbmNvbWluZyA9IGNvbnRleHQubWVyZ2UoaW5jb21pbmcsIChfYSA9IHt9LFxuICAgICAgICAgICAgICAgICAgICBfYVtzdG9yZUZpZWxkTmFtZV0gPSBpbmNvbWluZ1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBfYSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoX19ERVZfXyAmJlxuICAgICAgICAgICAgICAgICFjb250ZXh0LmNsaWVudE9ubHkgJiZcbiAgICAgICAgICAgICAgICAhY29udGV4dC5kZWZlcnJlZCAmJlxuICAgICAgICAgICAgICAgICFhZGRUeXBlbmFtZVRvRG9jdW1lbnQuYWRkZWQoZmllbGQpICYmXG4gICAgICAgICAgICAgICAgIXBvbGljaWVzLmdldFJlYWRGdW5jdGlvbih0eXBlbmFtZSwgZmllbGQubmFtZS52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBfX0RFVl9fICYmIGludmFyaWFudC5lcnJvcihcIk1pc3NpbmcgZmllbGQgJ1wiLmNvbmNhdChyZXN1bHRLZXlOYW1lRnJvbUZpZWxkKGZpZWxkKSwgXCInIHdoaWxlIHdyaXRpbmcgcmVzdWx0IFwiKS5jb25jYXQoSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBudWxsLCAyKSkuc3Vic3RyaW5nKDAsIDEwMDApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgX2IgPSBwb2xpY2llcy5pZGVudGlmeShyZXN1bHQsIHtcbiAgICAgICAgICAgICAgICB0eXBlbmFtZTogdHlwZW5hbWUsXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uU2V0OiBzZWxlY3Rpb25TZXQsXG4gICAgICAgICAgICAgICAgZnJhZ21lbnRNYXA6IGNvbnRleHQuZnJhZ21lbnRNYXAsXG4gICAgICAgICAgICAgICAgc3RvcmVPYmplY3Q6IGluY29taW5nLFxuICAgICAgICAgICAgICAgIHJlYWRGaWVsZDogcmVhZEZpZWxkLFxuICAgICAgICAgICAgfSksIGlkID0gX2JbMF0sIGtleU9iamVjdCA9IF9iWzFdO1xuICAgICAgICAgICAgZGF0YUlkID0gZGF0YUlkIHx8IGlkO1xuICAgICAgICAgICAgaWYgKGtleU9iamVjdCkge1xuICAgICAgICAgICAgICAgIGluY29taW5nID0gY29udGV4dC5tZXJnZShpbmNvbWluZywga2V5T2JqZWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKCFkYXRhSWQpXG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGRhdGFJZCkge1xuICAgICAgICAgICAgdmFyIGRhdGFSZWYgPSBtYWtlUmVmZXJlbmNlKGRhdGFJZCk7XG4gICAgICAgICAgICB2YXIgc2V0cyA9IGNvbnRleHQud3JpdHRlbltkYXRhSWRdIHx8IChjb250ZXh0LndyaXR0ZW5bZGF0YUlkXSA9IFtdKTtcbiAgICAgICAgICAgIGlmIChzZXRzLmluZGV4T2Yoc2VsZWN0aW9uU2V0KSA+PSAwKVxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhUmVmO1xuICAgICAgICAgICAgc2V0cy5wdXNoKHNlbGVjdGlvblNldCk7XG4gICAgICAgICAgICBpZiAodGhpcy5yZWFkZXIgJiYgdGhpcy5yZWFkZXIuaXNGcmVzaChyZXN1bHQsIGRhdGFSZWYsIHNlbGVjdGlvblNldCwgY29udGV4dCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YVJlZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBwcmV2aW91c18xID0gY29udGV4dC5pbmNvbWluZ0J5SWQuZ2V0KGRhdGFJZCk7XG4gICAgICAgICAgICBpZiAocHJldmlvdXNfMSkge1xuICAgICAgICAgICAgICAgIHByZXZpb3VzXzEuc3RvcmVPYmplY3QgPSBjb250ZXh0Lm1lcmdlKHByZXZpb3VzXzEuc3RvcmVPYmplY3QsIGluY29taW5nKTtcbiAgICAgICAgICAgICAgICBwcmV2aW91c18xLm1lcmdlVHJlZSA9IG1lcmdlTWVyZ2VUcmVlcyhwcmV2aW91c18xLm1lcmdlVHJlZSwgbWVyZ2VUcmVlKTtcbiAgICAgICAgICAgICAgICBmaWVsZE5vZGVTZXQuZm9yRWFjaChmdW5jdGlvbiAoZmllbGQpIHsgcmV0dXJuIHByZXZpb3VzXzEuZmllbGROb2RlU2V0LmFkZChmaWVsZCk7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5pbmNvbWluZ0J5SWQuc2V0KGRhdGFJZCwge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZU9iamVjdDogaW5jb21pbmcsXG4gICAgICAgICAgICAgICAgICAgIG1lcmdlVHJlZTogbWVyZ2VUcmVlSXNFbXB0eShtZXJnZVRyZWUpID8gdm9pZCAwIDogbWVyZ2VUcmVlLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZE5vZGVTZXQ6IGZpZWxkTm9kZVNldCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkYXRhUmVmO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbmNvbWluZztcbiAgICB9O1xuICAgIFN0b3JlV3JpdGVyLnByb3RvdHlwZS5wcm9jZXNzRmllbGRWYWx1ZSA9IGZ1bmN0aW9uICh2YWx1ZSwgZmllbGQsIGNvbnRleHQsIG1lcmdlVHJlZSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAoIWZpZWxkLnNlbGVjdGlvblNldCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fREVWX18gPyBjbG9uZURlZXAodmFsdWUpIDogdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKGZ1bmN0aW9uIChpdGVtLCBpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gX3RoaXMucHJvY2Vzc0ZpZWxkVmFsdWUoaXRlbSwgZmllbGQsIGNvbnRleHQsIGdldENoaWxkTWVyZ2VUcmVlKG1lcmdlVHJlZSwgaSkpO1xuICAgICAgICAgICAgICAgIG1heWJlUmVjeWNsZUNoaWxkTWVyZ2VUcmVlKG1lcmdlVHJlZSwgaSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1NlbGVjdGlvblNldCh7XG4gICAgICAgICAgICByZXN1bHQ6IHZhbHVlLFxuICAgICAgICAgICAgc2VsZWN0aW9uU2V0OiBmaWVsZC5zZWxlY3Rpb25TZXQsXG4gICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LFxuICAgICAgICAgICAgbWVyZ2VUcmVlOiBtZXJnZVRyZWUsXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3RvcmVXcml0ZXIucHJvdG90eXBlLmZsYXR0ZW5GaWVsZHMgPSBmdW5jdGlvbiAoc2VsZWN0aW9uU2V0LCByZXN1bHQsIGNvbnRleHQsIHR5cGVuYW1lKSB7XG4gICAgICAgIGlmICh0eXBlbmFtZSA9PT0gdm9pZCAwKSB7IHR5cGVuYW1lID0gZ2V0VHlwZW5hbWVGcm9tUmVzdWx0KHJlc3VsdCwgc2VsZWN0aW9uU2V0LCBjb250ZXh0LmZyYWdtZW50TWFwKTsgfVxuICAgICAgICB2YXIgZmllbGRNYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIHZhciBwb2xpY2llcyA9IHRoaXMuY2FjaGUucG9saWNpZXM7XG4gICAgICAgIHZhciBsaW1pdGluZ1RyaWUgPSBuZXcgVHJpZShmYWxzZSk7XG4gICAgICAgIChmdW5jdGlvbiBmbGF0dGVuKHNlbGVjdGlvblNldCwgaW5oZXJpdGVkQ29udGV4dCkge1xuICAgICAgICAgICAgdmFyIHZpc2l0ZWROb2RlID0gbGltaXRpbmdUcmllLmxvb2t1cChzZWxlY3Rpb25TZXQsIGluaGVyaXRlZENvbnRleHQuY2xpZW50T25seSwgaW5oZXJpdGVkQ29udGV4dC5kZWZlcnJlZCk7XG4gICAgICAgICAgICBpZiAodmlzaXRlZE5vZGUudmlzaXRlZClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB2aXNpdGVkTm9kZS52aXNpdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHNlbGVjdGlvblNldC5zZWxlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24gKHNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIGlmICghc2hvdWxkSW5jbHVkZShzZWxlY3Rpb24sIGNvbnRleHQudmFyaWFibGVzKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIHZhciBjbGllbnRPbmx5ID0gaW5oZXJpdGVkQ29udGV4dC5jbGllbnRPbmx5LCBkZWZlcnJlZCA9IGluaGVyaXRlZENvbnRleHQuZGVmZXJyZWQ7XG4gICAgICAgICAgICAgICAgaWYgKCEoY2xpZW50T25seSAmJiBkZWZlcnJlZCkgJiZcbiAgICAgICAgICAgICAgICAgICAgaXNOb25FbXB0eUFycmF5KHNlbGVjdGlvbi5kaXJlY3RpdmVzKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb24uZGlyZWN0aXZlcy5mb3JFYWNoKGZ1bmN0aW9uIChkaXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gZGlyLm5hbWUudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gXCJjbGllbnRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRPbmx5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lID09PSBcImRlZmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50c09iamVjdEZyb21GaWVsZChkaXIsIGNvbnRleHQudmFyaWFibGVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZ3MgfHwgYXJncy5pZiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc0ZpZWxkKHNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGV4aXN0aW5nID0gZmllbGRNYXAuZ2V0KHNlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50T25seSA9IGNsaWVudE9ubHkgJiYgZXhpc3RpbmcuY2xpZW50T25seTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkID0gZGVmZXJyZWQgJiYgZXhpc3RpbmcuZGVmZXJyZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmllbGRNYXAuc2V0KHNlbGVjdGlvbiwgZ2V0Q29udGV4dEZsYXZvcihjb250ZXh0LCBjbGllbnRPbmx5LCBkZWZlcnJlZCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZyYWdtZW50ID0gZ2V0RnJhZ21lbnRGcm9tU2VsZWN0aW9uKHNlbGVjdGlvbiwgY29udGV4dC5mcmFnbWVudE1hcCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmcmFnbWVudCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgcG9saWNpZXMuZnJhZ21lbnRNYXRjaGVzKGZyYWdtZW50LCB0eXBlbmFtZSwgcmVzdWx0LCBjb250ZXh0LnZhcmlhYmxlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYXR0ZW4oZnJhZ21lbnQuc2VsZWN0aW9uU2V0LCBnZXRDb250ZXh0Rmxhdm9yKGNvbnRleHQsIGNsaWVudE9ubHksIGRlZmVycmVkKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkoc2VsZWN0aW9uU2V0LCBjb250ZXh0KTtcbiAgICAgICAgcmV0dXJuIGZpZWxkTWFwO1xuICAgIH07XG4gICAgU3RvcmVXcml0ZXIucHJvdG90eXBlLmFwcGx5TWVyZ2VzID0gZnVuY3Rpb24gKG1lcmdlVHJlZSwgZXhpc3RpbmcsIGluY29taW5nLCBjb250ZXh0LCBnZXRTdG9yYWdlQXJncykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmIChtZXJnZVRyZWUubWFwLnNpemUgJiYgIWlzUmVmZXJlbmNlKGluY29taW5nKSkge1xuICAgICAgICAgICAgdmFyIGVfMSA9ICghaXNBcnJheShpbmNvbWluZykgJiZcbiAgICAgICAgICAgICAgICAoaXNSZWZlcmVuY2UoZXhpc3RpbmcpIHx8IHN0b3JlVmFsdWVJc1N0b3JlT2JqZWN0KGV4aXN0aW5nKSkpID8gZXhpc3RpbmcgOiB2b2lkIDA7XG4gICAgICAgICAgICB2YXIgaV8xID0gaW5jb21pbmc7XG4gICAgICAgICAgICBpZiAoZV8xICYmICFnZXRTdG9yYWdlQXJncykge1xuICAgICAgICAgICAgICAgIGdldFN0b3JhZ2VBcmdzID0gW2lzUmVmZXJlbmNlKGVfMSkgPyBlXzEuX19yZWYgOiBlXzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGNoYW5nZWRGaWVsZHNfMTtcbiAgICAgICAgICAgIHZhciBnZXRWYWx1ZV8xID0gZnVuY3Rpb24gKGZyb20sIG5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNBcnJheShmcm9tKVxuICAgICAgICAgICAgICAgICAgICA/ICh0eXBlb2YgbmFtZSA9PT0gXCJudW1iZXJcIiA/IGZyb21bbmFtZV0gOiB2b2lkIDApXG4gICAgICAgICAgICAgICAgICAgIDogY29udGV4dC5zdG9yZS5nZXRGaWVsZFZhbHVlKGZyb20sIFN0cmluZyhuYW1lKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbWVyZ2VUcmVlLm1hcC5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZFRyZWUsIHN0b3JlRmllbGROYW1lKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVWYWwgPSBnZXRWYWx1ZV8xKGVfMSwgc3RvcmVGaWVsZE5hbWUpO1xuICAgICAgICAgICAgICAgIHZhciBpVmFsID0gZ2V0VmFsdWVfMShpXzEsIHN0b3JlRmllbGROYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBpVmFsKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgaWYgKGdldFN0b3JhZ2VBcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgIGdldFN0b3JhZ2VBcmdzLnB1c2goc3RvcmVGaWVsZE5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgYVZhbCA9IF90aGlzLmFwcGx5TWVyZ2VzKGNoaWxkVHJlZSwgZVZhbCwgaVZhbCwgY29udGV4dCwgZ2V0U3RvcmFnZUFyZ3MpO1xuICAgICAgICAgICAgICAgIGlmIChhVmFsICE9PSBpVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWRGaWVsZHNfMSA9IGNoYW5nZWRGaWVsZHNfMSB8fCBuZXcgTWFwO1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkRmllbGRzXzEuc2V0KHN0b3JlRmllbGROYW1lLCBhVmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGdldFN0b3JhZ2VBcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgIGludmFyaWFudChnZXRTdG9yYWdlQXJncy5wb3AoKSA9PT0gc3RvcmVGaWVsZE5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGNoYW5nZWRGaWVsZHNfMSkge1xuICAgICAgICAgICAgICAgIGluY29taW5nID0gKGlzQXJyYXkoaV8xKSA/IGlfMS5zbGljZSgwKSA6IF9fYXNzaWduKHt9LCBpXzEpKTtcbiAgICAgICAgICAgICAgICBjaGFuZ2VkRmllbGRzXzEuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUsIG5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5jb21pbmdbbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWVyZ2VUcmVlLmluZm8pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhY2hlLnBvbGljaWVzLnJ1bk1lcmdlRnVuY3Rpb24oZXhpc3RpbmcsIGluY29taW5nLCBtZXJnZVRyZWUuaW5mbywgY29udGV4dCwgZ2V0U3RvcmFnZUFyZ3MgJiYgKF9hID0gY29udGV4dC5zdG9yZSkuZ2V0U3RvcmFnZS5hcHBseShfYSwgZ2V0U3RvcmFnZUFyZ3MpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5jb21pbmc7XG4gICAgfTtcbiAgICByZXR1cm4gU3RvcmVXcml0ZXI7XG59KCkpO1xuZXhwb3J0IHsgU3RvcmVXcml0ZXIgfTtcbnZhciBlbXB0eU1lcmdlVHJlZVBvb2wgPSBbXTtcbmZ1bmN0aW9uIGdldENoaWxkTWVyZ2VUcmVlKF9hLCBuYW1lKSB7XG4gICAgdmFyIG1hcCA9IF9hLm1hcDtcbiAgICBpZiAoIW1hcC5oYXMobmFtZSkpIHtcbiAgICAgICAgbWFwLnNldChuYW1lLCBlbXB0eU1lcmdlVHJlZVBvb2wucG9wKCkgfHwgeyBtYXA6IG5ldyBNYXAgfSk7XG4gICAgfVxuICAgIHJldHVybiBtYXAuZ2V0KG5hbWUpO1xufVxuZnVuY3Rpb24gbWVyZ2VNZXJnZVRyZWVzKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQgPT09IHJpZ2h0IHx8ICFyaWdodCB8fCBtZXJnZVRyZWVJc0VtcHR5KHJpZ2h0KSlcbiAgICAgICAgcmV0dXJuIGxlZnQ7XG4gICAgaWYgKCFsZWZ0IHx8IG1lcmdlVHJlZUlzRW1wdHkobGVmdCkpXG4gICAgICAgIHJldHVybiByaWdodDtcbiAgICB2YXIgaW5mbyA9IGxlZnQuaW5mbyAmJiByaWdodC5pbmZvID8gX19hc3NpZ24oX19hc3NpZ24oe30sIGxlZnQuaW5mbyksIHJpZ2h0LmluZm8pIDogbGVmdC5pbmZvIHx8IHJpZ2h0LmluZm87XG4gICAgdmFyIG5lZWRUb01lcmdlTWFwcyA9IGxlZnQubWFwLnNpemUgJiYgcmlnaHQubWFwLnNpemU7XG4gICAgdmFyIG1hcCA9IG5lZWRUb01lcmdlTWFwcyA/IG5ldyBNYXAgOlxuICAgICAgICBsZWZ0Lm1hcC5zaXplID8gbGVmdC5tYXAgOiByaWdodC5tYXA7XG4gICAgdmFyIG1lcmdlZCA9IHsgaW5mbzogaW5mbywgbWFwOiBtYXAgfTtcbiAgICBpZiAobmVlZFRvTWVyZ2VNYXBzKSB7XG4gICAgICAgIHZhciByZW1haW5pbmdSaWdodEtleXNfMSA9IG5ldyBTZXQocmlnaHQubWFwLmtleXMoKSk7XG4gICAgICAgIGxlZnQubWFwLmZvckVhY2goZnVuY3Rpb24gKGxlZnRUcmVlLCBrZXkpIHtcbiAgICAgICAgICAgIG1lcmdlZC5tYXAuc2V0KGtleSwgbWVyZ2VNZXJnZVRyZWVzKGxlZnRUcmVlLCByaWdodC5tYXAuZ2V0KGtleSkpKTtcbiAgICAgICAgICAgIHJlbWFpbmluZ1JpZ2h0S2V5c18xLmRlbGV0ZShrZXkpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmVtYWluaW5nUmlnaHRLZXlzXzEuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBtZXJnZWQubWFwLnNldChrZXksIG1lcmdlTWVyZ2VUcmVlcyhyaWdodC5tYXAuZ2V0KGtleSksIGxlZnQubWFwLmdldChrZXkpKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbWVyZ2VkO1xufVxuZnVuY3Rpb24gbWVyZ2VUcmVlSXNFbXB0eSh0cmVlKSB7XG4gICAgcmV0dXJuICF0cmVlIHx8ICEodHJlZS5pbmZvIHx8IHRyZWUubWFwLnNpemUpO1xufVxuZnVuY3Rpb24gbWF5YmVSZWN5Y2xlQ2hpbGRNZXJnZVRyZWUoX2EsIG5hbWUpIHtcbiAgICB2YXIgbWFwID0gX2EubWFwO1xuICAgIHZhciBjaGlsZFRyZWUgPSBtYXAuZ2V0KG5hbWUpO1xuICAgIGlmIChjaGlsZFRyZWUgJiYgbWVyZ2VUcmVlSXNFbXB0eShjaGlsZFRyZWUpKSB7XG4gICAgICAgIGVtcHR5TWVyZ2VUcmVlUG9vbC5wdXNoKGNoaWxkVHJlZSk7XG4gICAgICAgIG1hcC5kZWxldGUobmFtZSk7XG4gICAgfVxufVxudmFyIHdhcm5pbmdzID0gbmV3IFNldCgpO1xuZnVuY3Rpb24gd2FybkFib3V0RGF0YUxvc3MoZXhpc3RpbmdSZWYsIGluY29taW5nT2JqLCBzdG9yZUZpZWxkTmFtZSwgc3RvcmUpIHtcbiAgICB2YXIgZ2V0Q2hpbGQgPSBmdW5jdGlvbiAob2JqT3JSZWYpIHtcbiAgICAgICAgdmFyIGNoaWxkID0gc3RvcmUuZ2V0RmllbGRWYWx1ZShvYmpPclJlZiwgc3RvcmVGaWVsZE5hbWUpO1xuICAgICAgICByZXR1cm4gdHlwZW9mIGNoaWxkID09PSBcIm9iamVjdFwiICYmIGNoaWxkO1xuICAgIH07XG4gICAgdmFyIGV4aXN0aW5nID0gZ2V0Q2hpbGQoZXhpc3RpbmdSZWYpO1xuICAgIGlmICghZXhpc3RpbmcpXG4gICAgICAgIHJldHVybjtcbiAgICB2YXIgaW5jb21pbmcgPSBnZXRDaGlsZChpbmNvbWluZ09iaik7XG4gICAgaWYgKCFpbmNvbWluZylcbiAgICAgICAgcmV0dXJuO1xuICAgIGlmIChpc1JlZmVyZW5jZShleGlzdGluZykpXG4gICAgICAgIHJldHVybjtcbiAgICBpZiAoZXF1YWwoZXhpc3RpbmcsIGluY29taW5nKSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGlmIChPYmplY3Qua2V5cyhleGlzdGluZykuZXZlcnkoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gc3RvcmUuZ2V0RmllbGRWYWx1ZShpbmNvbWluZywga2V5KSAhPT0gdm9pZCAwOyB9KSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBwYXJlbnRUeXBlID0gc3RvcmUuZ2V0RmllbGRWYWx1ZShleGlzdGluZ1JlZiwgXCJfX3R5cGVuYW1lXCIpIHx8XG4gICAgICAgIHN0b3JlLmdldEZpZWxkVmFsdWUoaW5jb21pbmdPYmosIFwiX190eXBlbmFtZVwiKTtcbiAgICB2YXIgZmllbGROYW1lID0gZmllbGROYW1lRnJvbVN0b3JlTmFtZShzdG9yZUZpZWxkTmFtZSk7XG4gICAgdmFyIHR5cGVEb3ROYW1lID0gXCJcIi5jb25jYXQocGFyZW50VHlwZSwgXCIuXCIpLmNvbmNhdChmaWVsZE5hbWUpO1xuICAgIGlmICh3YXJuaW5ncy5oYXModHlwZURvdE5hbWUpKVxuICAgICAgICByZXR1cm47XG4gICAgd2FybmluZ3MuYWRkKHR5cGVEb3ROYW1lKTtcbiAgICB2YXIgY2hpbGRUeXBlbmFtZXMgPSBbXTtcbiAgICBpZiAoIWlzQXJyYXkoZXhpc3RpbmcpICYmXG4gICAgICAgICFpc0FycmF5KGluY29taW5nKSkge1xuICAgICAgICBbZXhpc3RpbmcsIGluY29taW5nXS5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICAgICAgdmFyIHR5cGVuYW1lID0gc3RvcmUuZ2V0RmllbGRWYWx1ZShjaGlsZCwgXCJfX3R5cGVuYW1lXCIpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB0eXBlbmFtZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgICFjaGlsZFR5cGVuYW1lcy5pbmNsdWRlcyh0eXBlbmFtZSkpIHtcbiAgICAgICAgICAgICAgICBjaGlsZFR5cGVuYW1lcy5wdXNoKHR5cGVuYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9fREVWX18gJiYgaW52YXJpYW50Lndhcm4oXCJDYWNoZSBkYXRhIG1heSBiZSBsb3N0IHdoZW4gcmVwbGFjaW5nIHRoZSBcIi5jb25jYXQoZmllbGROYW1lLCBcIiBmaWVsZCBvZiBhIFwiKS5jb25jYXQocGFyZW50VHlwZSwgXCIgb2JqZWN0LlxcblxcblRvIGFkZHJlc3MgdGhpcyBwcm9ibGVtICh3aGljaCBpcyBub3QgYSBidWcgaW4gQXBvbGxvIENsaWVudCksIFwiKS5jb25jYXQoY2hpbGRUeXBlbmFtZXMubGVuZ3RoXG4gICAgICAgID8gXCJlaXRoZXIgZW5zdXJlIGFsbCBvYmplY3RzIG9mIHR5cGUgXCIgK1xuICAgICAgICAgICAgY2hpbGRUeXBlbmFtZXMuam9pbihcIiBhbmQgXCIpICsgXCIgaGF2ZSBhbiBJRCBvciBhIGN1c3RvbSBtZXJnZSBmdW5jdGlvbiwgb3IgXCJcbiAgICAgICAgOiBcIlwiLCBcImRlZmluZSBhIGN1c3RvbSBtZXJnZSBmdW5jdGlvbiBmb3IgdGhlIFwiKS5jb25jYXQodHlwZURvdE5hbWUsIFwiIGZpZWxkLCBzbyBJbk1lbW9yeUNhY2hlIGNhbiBzYWZlbHkgbWVyZ2UgdGhlc2Ugb2JqZWN0czpcXG5cXG4gIGV4aXN0aW5nOiBcIikuY29uY2F0KEpTT04uc3RyaW5naWZ5KGV4aXN0aW5nKS5zbGljZSgwLCAxMDAwKSwgXCJcXG4gIGluY29taW5nOiBcIikuY29uY2F0KEpTT04uc3RyaW5naWZ5KGluY29taW5nKS5zbGljZSgwLCAxMDAwKSwgXCJcXG5cXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVzZSBvcHRpb25zLCBwbGVhc2UgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb246XFxuXFxuICAqIEVuc3VyaW5nIGVudGl0eSBvYmplY3RzIGhhdmUgSURzOiBodHRwczovL2dvLmFwb2xsby5kZXYvYy9nZW5lcmF0aW5nLXVuaXF1ZS1pZGVudGlmaWVyc1xcbiAgKiBEZWZpbmluZyBjdXN0b20gbWVyZ2UgZnVuY3Rpb25zOiBodHRwczovL2dvLmFwb2xsby5kZXYvYy9tZXJnaW5nLW5vbi1ub3JtYWxpemVkLW9iamVjdHNcXG5cIikpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9d3JpdGVUb1N0b3JlLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/cache/inmemory/writeToStore.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/core/ApolloClient.js":
/*!**********************************************************!*\
  !*** ./node_modules/@apollo/client/core/ApolloClient.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloClient\": function() { return /* binding */ ApolloClient; },\n/* harmony export */   \"mergeOptions\": function() { return /* binding */ mergeOptions; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _link_core_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../link/core/index.js */ \"./node_modules/@apollo/client/link/core/index.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n/* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../version.js */ \"./node_modules/@apollo/client/version.js\");\n/* harmony import */ var _link_http_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../link/http/index.js */ \"./node_modules/@apollo/client/link/http/index.js\");\n/* harmony import */ var _QueryManager_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./QueryManager.js */ \"./node_modules/@apollo/client/core/QueryManager.js\");\n/* harmony import */ var _LocalState_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./LocalState.js */ \"./node_modules/@apollo/client/core/LocalState.js\");\n\n\n\n\n\n\n\n\nvar hasSuggestedDevtools = false;\nfunction mergeOptions(defaults, options) {\n    return (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.compact)(defaults, options, options.variables && {\n        variables: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, defaults.variables), options.variables),\n    });\n}\nvar ApolloClient = (function () {\n    function ApolloClient(options) {\n        var _this = this;\n        this.defaultOptions = {};\n        this.resetStoreCallbacks = [];\n        this.clearStoreCallbacks = [];\n        var uri = options.uri, credentials = options.credentials, headers = options.headers, cache = options.cache, _a = options.ssrMode, ssrMode = _a === void 0 ? false : _a, _b = options.ssrForceFetchDelay, ssrForceFetchDelay = _b === void 0 ? 0 : _b, _c = options.connectToDevTools, connectToDevTools = _c === void 0 ? typeof window === 'object' &&\n            !window.__APOLLO_CLIENT__ &&\n            __DEV__ : _c, _d = options.queryDeduplication, queryDeduplication = _d === void 0 ? true : _d, defaultOptions = options.defaultOptions, _e = options.assumeImmutableResults, assumeImmutableResults = _e === void 0 ? false : _e, resolvers = options.resolvers, typeDefs = options.typeDefs, fragmentMatcher = options.fragmentMatcher, clientAwarenessName = options.name, clientAwarenessVersion = options.version;\n        var link = options.link;\n        if (!link) {\n            link = uri\n                ? new _link_http_index_js__WEBPACK_IMPORTED_MODULE_3__.HttpLink({ uri: uri, credentials: credentials, headers: headers })\n                : _link_core_index_js__WEBPACK_IMPORTED_MODULE_4__.ApolloLink.empty();\n        }\n        if (!cache) {\n            throw __DEV__ ? new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(\"To initialize Apollo Client, you must specify a 'cache' property \" +\n                \"in the options object. \\n\" +\n                \"For more information, please visit: https://go.apollo.dev/c/docs\") : new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(7);\n        }\n        this.link = link;\n        this.cache = cache;\n        this.disableNetworkFetches = ssrMode || ssrForceFetchDelay > 0;\n        this.queryDeduplication = queryDeduplication;\n        this.defaultOptions = defaultOptions || {};\n        this.typeDefs = typeDefs;\n        if (ssrForceFetchDelay) {\n            setTimeout(function () { return (_this.disableNetworkFetches = false); }, ssrForceFetchDelay);\n        }\n        this.watchQuery = this.watchQuery.bind(this);\n        this.query = this.query.bind(this);\n        this.mutate = this.mutate.bind(this);\n        this.resetStore = this.resetStore.bind(this);\n        this.reFetchObservableQueries = this.reFetchObservableQueries.bind(this);\n        if (connectToDevTools && typeof window === 'object') {\n            window.__APOLLO_CLIENT__ = this;\n        }\n        if (!hasSuggestedDevtools && __DEV__) {\n            hasSuggestedDevtools = true;\n            if (typeof window !== 'undefined' &&\n                window.document &&\n                window.top === window.self &&\n                !window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__) {\n                var nav = window.navigator;\n                var ua = nav && nav.userAgent;\n                var url = void 0;\n                if (typeof ua === \"string\") {\n                    if (ua.indexOf(\"Chrome/\") > -1) {\n                        url = \"https://chrome.google.com/webstore/detail/\" +\n                            \"apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm\";\n                    }\n                    else if (ua.indexOf(\"Firefox/\") > -1) {\n                        url = \"https://addons.mozilla.org/en-US/firefox/addon/apollo-developer-tools/\";\n                    }\n                }\n                if (url) {\n                    __DEV__ && _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant.log(\"Download the Apollo DevTools for a better development \" +\n                        \"experience: \" + url);\n                }\n            }\n        }\n        this.version = _version_js__WEBPACK_IMPORTED_MODULE_5__.version;\n        this.localState = new _LocalState_js__WEBPACK_IMPORTED_MODULE_6__.LocalState({\n            cache: cache,\n            client: this,\n            resolvers: resolvers,\n            fragmentMatcher: fragmentMatcher,\n        });\n        this.queryManager = new _QueryManager_js__WEBPACK_IMPORTED_MODULE_7__.QueryManager({\n            cache: this.cache,\n            link: this.link,\n            queryDeduplication: queryDeduplication,\n            ssrMode: ssrMode,\n            clientAwareness: {\n                name: clientAwarenessName,\n                version: clientAwarenessVersion,\n            },\n            localState: this.localState,\n            assumeImmutableResults: assumeImmutableResults,\n            onBroadcast: connectToDevTools ? function () {\n                if (_this.devToolsHookCb) {\n                    _this.devToolsHookCb({\n                        action: {},\n                        state: {\n                            queries: _this.queryManager.getQueryStore(),\n                            mutations: _this.queryManager.mutationStore || {},\n                        },\n                        dataWithOptimisticResults: _this.cache.extract(true),\n                    });\n                }\n            } : void 0,\n        });\n    }\n    ApolloClient.prototype.stop = function () {\n        this.queryManager.stop();\n    };\n    ApolloClient.prototype.watchQuery = function (options) {\n        if (this.defaultOptions.watchQuery) {\n            options = mergeOptions(this.defaultOptions.watchQuery, options);\n        }\n        if (this.disableNetworkFetches &&\n            (options.fetchPolicy === 'network-only' ||\n                options.fetchPolicy === 'cache-and-network')) {\n            options = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, options), { fetchPolicy: 'cache-first' });\n        }\n        return this.queryManager.watchQuery(options);\n    };\n    ApolloClient.prototype.query = function (options) {\n        if (this.defaultOptions.query) {\n            options = mergeOptions(this.defaultOptions.query, options);\n        }\n        __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(options.fetchPolicy !== 'cache-and-network', 'The cache-and-network fetchPolicy does not work with client.query, because ' +\n            'client.query can only return a single result. Please use client.watchQuery ' +\n            'to receive multiple results from the cache and the network, or consider ' +\n            'using a different fetchPolicy, such as cache-first or network-only.') : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(options.fetchPolicy !== 'cache-and-network', 8);\n        if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {\n            options = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, options), { fetchPolicy: 'cache-first' });\n        }\n        return this.queryManager.query(options);\n    };\n    ApolloClient.prototype.mutate = function (options) {\n        if (this.defaultOptions.mutate) {\n            options = mergeOptions(this.defaultOptions.mutate, options);\n        }\n        return this.queryManager.mutate(options);\n    };\n    ApolloClient.prototype.subscribe = function (options) {\n        return this.queryManager.startGraphQLSubscription(options);\n    };\n    ApolloClient.prototype.readQuery = function (options, optimistic) {\n        if (optimistic === void 0) { optimistic = false; }\n        return this.cache.readQuery(options, optimistic);\n    };\n    ApolloClient.prototype.readFragment = function (options, optimistic) {\n        if (optimistic === void 0) { optimistic = false; }\n        return this.cache.readFragment(options, optimistic);\n    };\n    ApolloClient.prototype.writeQuery = function (options) {\n        this.cache.writeQuery(options);\n        this.queryManager.broadcastQueries();\n    };\n    ApolloClient.prototype.writeFragment = function (options) {\n        this.cache.writeFragment(options);\n        this.queryManager.broadcastQueries();\n    };\n    ApolloClient.prototype.__actionHookForDevTools = function (cb) {\n        this.devToolsHookCb = cb;\n    };\n    ApolloClient.prototype.__requestRaw = function (payload) {\n        return (0,_link_core_index_js__WEBPACK_IMPORTED_MODULE_4__.execute)(this.link, payload);\n    };\n    ApolloClient.prototype.resetStore = function () {\n        var _this = this;\n        return Promise.resolve()\n            .then(function () { return _this.queryManager.clearStore({\n            discardWatches: false,\n        }); })\n            .then(function () { return Promise.all(_this.resetStoreCallbacks.map(function (fn) { return fn(); })); })\n            .then(function () { return _this.reFetchObservableQueries(); });\n    };\n    ApolloClient.prototype.clearStore = function () {\n        var _this = this;\n        return Promise.resolve()\n            .then(function () { return _this.queryManager.clearStore({\n            discardWatches: true,\n        }); })\n            .then(function () { return Promise.all(_this.clearStoreCallbacks.map(function (fn) { return fn(); })); });\n    };\n    ApolloClient.prototype.onResetStore = function (cb) {\n        var _this = this;\n        this.resetStoreCallbacks.push(cb);\n        return function () {\n            _this.resetStoreCallbacks = _this.resetStoreCallbacks.filter(function (c) { return c !== cb; });\n        };\n    };\n    ApolloClient.prototype.onClearStore = function (cb) {\n        var _this = this;\n        this.clearStoreCallbacks.push(cb);\n        return function () {\n            _this.clearStoreCallbacks = _this.clearStoreCallbacks.filter(function (c) { return c !== cb; });\n        };\n    };\n    ApolloClient.prototype.reFetchObservableQueries = function (includeStandby) {\n        return this.queryManager.reFetchObservableQueries(includeStandby);\n    };\n    ApolloClient.prototype.refetchQueries = function (options) {\n        var map = this.queryManager.refetchQueries(options);\n        var queries = [];\n        var results = [];\n        map.forEach(function (result, obsQuery) {\n            queries.push(obsQuery);\n            results.push(result);\n        });\n        var result = Promise.all(results);\n        result.queries = queries;\n        result.results = results;\n        result.catch(function (error) {\n            __DEV__ && _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant.debug(\"In client.refetchQueries, Promise.all promise rejected with error \".concat(error));\n        });\n        return result;\n    };\n    ApolloClient.prototype.getObservableQueries = function (include) {\n        if (include === void 0) { include = \"active\"; }\n        return this.queryManager.getObservableQueries(include);\n    };\n    ApolloClient.prototype.extract = function (optimistic) {\n        return this.cache.extract(optimistic);\n    };\n    ApolloClient.prototype.restore = function (serializedState) {\n        return this.cache.restore(serializedState);\n    };\n    ApolloClient.prototype.addResolvers = function (resolvers) {\n        this.localState.addResolvers(resolvers);\n    };\n    ApolloClient.prototype.setResolvers = function (resolvers) {\n        this.localState.setResolvers(resolvers);\n    };\n    ApolloClient.prototype.getResolvers = function () {\n        return this.localState.getResolvers();\n    };\n    ApolloClient.prototype.setLocalStateFragmentMatcher = function (fragmentMatcher) {\n        this.localState.setFragmentMatcher(fragmentMatcher);\n    };\n    ApolloClient.prototype.setLink = function (newLink) {\n        this.link = this.queryManager.link = newLink;\n    };\n    return ApolloClient;\n}());\n\n//# sourceMappingURL=ApolloClient.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY29yZS9BcG9sbG9DbGllbnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFpQztBQUN5QztBQUNkO0FBQ1o7QUFDUjtBQUNTO0FBQ0E7QUFDSDtBQUM5QztBQUNPO0FBQ1AsV0FBVyw0REFBTztBQUNsQixtQkFBbUIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHO0FBQ3ZDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQix5REFBUSxHQUFHLHNEQUFzRDtBQUN2RixrQkFBa0IsaUVBQWdCO0FBQ2xDO0FBQ0E7QUFDQSxnQ0FBZ0MsdUVBQWM7QUFDOUM7QUFDQSwwRkFBMEYsdUVBQWM7QUFDeEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQywrQ0FBK0M7QUFDcEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0Isc0VBQWE7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsZ0RBQU87QUFDOUIsOEJBQThCLHNEQUFVO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULGdDQUFnQywwREFBWTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQSw2RUFBNkU7QUFDN0UseUJBQXlCO0FBQ3pCO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0EsY0FBYztBQUNkLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxjQUFjLDRCQUE0QjtBQUNwRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixzRUFBUztBQUMzQjtBQUNBO0FBQ0EscUZBQXFGLHNFQUFTO0FBQzlGO0FBQ0Esc0JBQXNCLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxjQUFjLDRCQUE0QjtBQUNwRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNERBQU87QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQSxTQUFTLElBQUk7QUFDYixnQ0FBZ0MsaUVBQWlFLGNBQWMsS0FBSztBQUNwSCxnQ0FBZ0MsMENBQTBDO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0EsU0FBUyxJQUFJO0FBQ2IsZ0NBQWdDLGlFQUFpRSxjQUFjLEtBQUs7QUFDcEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdGQUF3RixrQkFBa0I7QUFDMUc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0ZBQXdGLGtCQUFrQjtBQUMxRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsd0VBQWU7QUFDdEMsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ3VCO0FBQ3hCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9jb3JlL0Fwb2xsb0NsaWVudC5qcz84YWEwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpbnZhcmlhbnQsIEludmFyaWFudEVycm9yIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9nbG9iYWxzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBBcG9sbG9MaW5rLCBleGVjdXRlIH0gZnJvbSBcIi4uL2xpbmsvY29yZS9pbmRleC5qc1wiO1xuaW1wb3J0IHsgY29tcGFjdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvaW5kZXguanNcIjtcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tIFwiLi4vdmVyc2lvbi5qc1wiO1xuaW1wb3J0IHsgSHR0cExpbmsgfSBmcm9tIFwiLi4vbGluay9odHRwL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBRdWVyeU1hbmFnZXIgfSBmcm9tIFwiLi9RdWVyeU1hbmFnZXIuanNcIjtcbmltcG9ydCB7IExvY2FsU3RhdGUsIH0gZnJvbSBcIi4vTG9jYWxTdGF0ZS5qc1wiO1xudmFyIGhhc1N1Z2dlc3RlZERldnRvb2xzID0gZmFsc2U7XG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VPcHRpb25zKGRlZmF1bHRzLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGNvbXBhY3QoZGVmYXVsdHMsIG9wdGlvbnMsIG9wdGlvbnMudmFyaWFibGVzICYmIHtcbiAgICAgICAgdmFyaWFibGVzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZGVmYXVsdHMudmFyaWFibGVzKSwgb3B0aW9ucy52YXJpYWJsZXMpLFxuICAgIH0pO1xufVxudmFyIEFwb2xsb0NsaWVudCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQXBvbGxvQ2xpZW50KG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdGhpcy5kZWZhdWx0T3B0aW9ucyA9IHt9O1xuICAgICAgICB0aGlzLnJlc2V0U3RvcmVDYWxsYmFja3MgPSBbXTtcbiAgICAgICAgdGhpcy5jbGVhclN0b3JlQ2FsbGJhY2tzID0gW107XG4gICAgICAgIHZhciB1cmkgPSBvcHRpb25zLnVyaSwgY3JlZGVudGlhbHMgPSBvcHRpb25zLmNyZWRlbnRpYWxzLCBoZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzLCBjYWNoZSA9IG9wdGlvbnMuY2FjaGUsIF9hID0gb3B0aW9ucy5zc3JNb2RlLCBzc3JNb2RlID0gX2EgPT09IHZvaWQgMCA/IGZhbHNlIDogX2EsIF9iID0gb3B0aW9ucy5zc3JGb3JjZUZldGNoRGVsYXksIHNzckZvcmNlRmV0Y2hEZWxheSA9IF9iID09PSB2b2lkIDAgPyAwIDogX2IsIF9jID0gb3B0aW9ucy5jb25uZWN0VG9EZXZUb29scywgY29ubmVjdFRvRGV2VG9vbHMgPSBfYyA9PT0gdm9pZCAwID8gdHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICF3aW5kb3cuX19BUE9MTE9fQ0xJRU5UX18gJiZcbiAgICAgICAgICAgIF9fREVWX18gOiBfYywgX2QgPSBvcHRpb25zLnF1ZXJ5RGVkdXBsaWNhdGlvbiwgcXVlcnlEZWR1cGxpY2F0aW9uID0gX2QgPT09IHZvaWQgMCA/IHRydWUgOiBfZCwgZGVmYXVsdE9wdGlvbnMgPSBvcHRpb25zLmRlZmF1bHRPcHRpb25zLCBfZSA9IG9wdGlvbnMuYXNzdW1lSW1tdXRhYmxlUmVzdWx0cywgYXNzdW1lSW1tdXRhYmxlUmVzdWx0cyA9IF9lID09PSB2b2lkIDAgPyBmYWxzZSA6IF9lLCByZXNvbHZlcnMgPSBvcHRpb25zLnJlc29sdmVycywgdHlwZURlZnMgPSBvcHRpb25zLnR5cGVEZWZzLCBmcmFnbWVudE1hdGNoZXIgPSBvcHRpb25zLmZyYWdtZW50TWF0Y2hlciwgY2xpZW50QXdhcmVuZXNzTmFtZSA9IG9wdGlvbnMubmFtZSwgY2xpZW50QXdhcmVuZXNzVmVyc2lvbiA9IG9wdGlvbnMudmVyc2lvbjtcbiAgICAgICAgdmFyIGxpbmsgPSBvcHRpb25zLmxpbms7XG4gICAgICAgIGlmICghbGluaykge1xuICAgICAgICAgICAgbGluayA9IHVyaVxuICAgICAgICAgICAgICAgID8gbmV3IEh0dHBMaW5rKHsgdXJpOiB1cmksIGNyZWRlbnRpYWxzOiBjcmVkZW50aWFscywgaGVhZGVyczogaGVhZGVycyB9KVxuICAgICAgICAgICAgICAgIDogQXBvbGxvTGluay5lbXB0eSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY2FjaGUpIHtcbiAgICAgICAgICAgIHRocm93IF9fREVWX18gPyBuZXcgSW52YXJpYW50RXJyb3IoXCJUbyBpbml0aWFsaXplIEFwb2xsbyBDbGllbnQsIHlvdSBtdXN0IHNwZWNpZnkgYSAnY2FjaGUnIHByb3BlcnR5IFwiICtcbiAgICAgICAgICAgICAgICBcImluIHRoZSBvcHRpb25zIG9iamVjdC4gXFxuXCIgK1xuICAgICAgICAgICAgICAgIFwiRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSB2aXNpdDogaHR0cHM6Ly9nby5hcG9sbG8uZGV2L2MvZG9jc1wiKSA6IG5ldyBJbnZhcmlhbnRFcnJvcig3KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxpbmsgPSBsaW5rO1xuICAgICAgICB0aGlzLmNhY2hlID0gY2FjaGU7XG4gICAgICAgIHRoaXMuZGlzYWJsZU5ldHdvcmtGZXRjaGVzID0gc3NyTW9kZSB8fCBzc3JGb3JjZUZldGNoRGVsYXkgPiAwO1xuICAgICAgICB0aGlzLnF1ZXJ5RGVkdXBsaWNhdGlvbiA9IHF1ZXJ5RGVkdXBsaWNhdGlvbjtcbiAgICAgICAgdGhpcy5kZWZhdWx0T3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zIHx8IHt9O1xuICAgICAgICB0aGlzLnR5cGVEZWZzID0gdHlwZURlZnM7XG4gICAgICAgIGlmIChzc3JGb3JjZUZldGNoRGVsYXkpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gKF90aGlzLmRpc2FibGVOZXR3b3JrRmV0Y2hlcyA9IGZhbHNlKTsgfSwgc3NyRm9yY2VGZXRjaERlbGF5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLndhdGNoUXVlcnkgPSB0aGlzLndhdGNoUXVlcnkuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5xdWVyeSA9IHRoaXMucXVlcnkuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5tdXRhdGUgPSB0aGlzLm11dGF0ZS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnJlc2V0U3RvcmUgPSB0aGlzLnJlc2V0U3RvcmUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5yZUZldGNoT2JzZXJ2YWJsZVF1ZXJpZXMgPSB0aGlzLnJlRmV0Y2hPYnNlcnZhYmxlUXVlcmllcy5iaW5kKHRoaXMpO1xuICAgICAgICBpZiAoY29ubmVjdFRvRGV2VG9vbHMgJiYgdHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHdpbmRvdy5fX0FQT0xMT19DTElFTlRfXyA9IHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFoYXNTdWdnZXN0ZWREZXZ0b29scyAmJiBfX0RFVl9fKSB7XG4gICAgICAgICAgICBoYXNTdWdnZXN0ZWREZXZ0b29scyA9IHRydWU7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgICAgICB3aW5kb3cuZG9jdW1lbnQgJiZcbiAgICAgICAgICAgICAgICB3aW5kb3cudG9wID09PSB3aW5kb3cuc2VsZiAmJlxuICAgICAgICAgICAgICAgICF3aW5kb3cuX19BUE9MTE9fREVWVE9PTFNfR0xPQkFMX0hPT0tfXykge1xuICAgICAgICAgICAgICAgIHZhciBuYXYgPSB3aW5kb3cubmF2aWdhdG9yO1xuICAgICAgICAgICAgICAgIHZhciB1YSA9IG5hdiAmJiBuYXYudXNlckFnZW50O1xuICAgICAgICAgICAgICAgIHZhciB1cmwgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB1YSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodWEuaW5kZXhPZihcIkNocm9tZS9cIikgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gXCJodHRwczovL2Nocm9tZS5nb29nbGUuY29tL3dlYnN0b3JlL2RldGFpbC9cIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJhcG9sbG8tY2xpZW50LWRldmVsb3Blci10L2pka2tua2tiZWJiYXBpbGdvZWNjY2lnbGtmYm1ibmZtXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodWEuaW5kZXhPZihcIkZpcmVmb3gvXCIpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IFwiaHR0cHM6Ly9hZGRvbnMubW96aWxsYS5vcmcvZW4tVVMvZmlyZWZveC9hZGRvbi9hcG9sbG8tZGV2ZWxvcGVyLXRvb2xzL1wiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgX19ERVZfXyAmJiBpbnZhcmlhbnQubG9nKFwiRG93bmxvYWQgdGhlIEFwb2xsbyBEZXZUb29scyBmb3IgYSBiZXR0ZXIgZGV2ZWxvcG1lbnQgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJleHBlcmllbmNlOiBcIiArIHVybCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudmVyc2lvbiA9IHZlcnNpb247XG4gICAgICAgIHRoaXMubG9jYWxTdGF0ZSA9IG5ldyBMb2NhbFN0YXRlKHtcbiAgICAgICAgICAgIGNhY2hlOiBjYWNoZSxcbiAgICAgICAgICAgIGNsaWVudDogdGhpcyxcbiAgICAgICAgICAgIHJlc29sdmVyczogcmVzb2x2ZXJzLFxuICAgICAgICAgICAgZnJhZ21lbnRNYXRjaGVyOiBmcmFnbWVudE1hdGNoZXIsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnF1ZXJ5TWFuYWdlciA9IG5ldyBRdWVyeU1hbmFnZXIoe1xuICAgICAgICAgICAgY2FjaGU6IHRoaXMuY2FjaGUsXG4gICAgICAgICAgICBsaW5rOiB0aGlzLmxpbmssXG4gICAgICAgICAgICBxdWVyeURlZHVwbGljYXRpb246IHF1ZXJ5RGVkdXBsaWNhdGlvbixcbiAgICAgICAgICAgIHNzck1vZGU6IHNzck1vZGUsXG4gICAgICAgICAgICBjbGllbnRBd2FyZW5lc3M6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBjbGllbnRBd2FyZW5lc3NOYW1lLFxuICAgICAgICAgICAgICAgIHZlcnNpb246IGNsaWVudEF3YXJlbmVzc1ZlcnNpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9jYWxTdGF0ZTogdGhpcy5sb2NhbFN0YXRlLFxuICAgICAgICAgICAgYXNzdW1lSW1tdXRhYmxlUmVzdWx0czogYXNzdW1lSW1tdXRhYmxlUmVzdWx0cyxcbiAgICAgICAgICAgIG9uQnJvYWRjYXN0OiBjb25uZWN0VG9EZXZUb29scyA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMuZGV2VG9vbHNIb29rQ2IpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuZGV2VG9vbHNIb29rQ2Ioe1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcmllczogX3RoaXMucXVlcnlNYW5hZ2VyLmdldFF1ZXJ5U3RvcmUoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbnM6IF90aGlzLnF1ZXJ5TWFuYWdlci5tdXRhdGlvblN0b3JlIHx8IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFXaXRoT3B0aW1pc3RpY1Jlc3VsdHM6IF90aGlzLmNhY2hlLmV4dHJhY3QodHJ1ZSksXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gOiB2b2lkIDAsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBBcG9sbG9DbGllbnQucHJvdG90eXBlLnN0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucXVlcnlNYW5hZ2VyLnN0b3AoKTtcbiAgICB9O1xuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUud2F0Y2hRdWVyeSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRPcHRpb25zLndhdGNoUXVlcnkpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBtZXJnZU9wdGlvbnModGhpcy5kZWZhdWx0T3B0aW9ucy53YXRjaFF1ZXJ5LCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlTmV0d29ya0ZldGNoZXMgJiZcbiAgICAgICAgICAgIChvcHRpb25zLmZldGNoUG9saWN5ID09PSAnbmV0d29yay1vbmx5JyB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbnMuZmV0Y2hQb2xpY3kgPT09ICdjYWNoZS1hbmQtbmV0d29yaycpKSB7XG4gICAgICAgICAgICBvcHRpb25zID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9wdGlvbnMpLCB7IGZldGNoUG9saWN5OiAnY2FjaGUtZmlyc3QnIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5TWFuYWdlci53YXRjaFF1ZXJ5KG9wdGlvbnMpO1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRPcHRpb25zLnF1ZXJ5KSB7XG4gICAgICAgICAgICBvcHRpb25zID0gbWVyZ2VPcHRpb25zKHRoaXMuZGVmYXVsdE9wdGlvbnMucXVlcnksIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIF9fREVWX18gPyBpbnZhcmlhbnQob3B0aW9ucy5mZXRjaFBvbGljeSAhPT0gJ2NhY2hlLWFuZC1uZXR3b3JrJywgJ1RoZSBjYWNoZS1hbmQtbmV0d29yayBmZXRjaFBvbGljeSBkb2VzIG5vdCB3b3JrIHdpdGggY2xpZW50LnF1ZXJ5LCBiZWNhdXNlICcgK1xuICAgICAgICAgICAgJ2NsaWVudC5xdWVyeSBjYW4gb25seSByZXR1cm4gYSBzaW5nbGUgcmVzdWx0LiBQbGVhc2UgdXNlIGNsaWVudC53YXRjaFF1ZXJ5ICcgK1xuICAgICAgICAgICAgJ3RvIHJlY2VpdmUgbXVsdGlwbGUgcmVzdWx0cyBmcm9tIHRoZSBjYWNoZSBhbmQgdGhlIG5ldHdvcmssIG9yIGNvbnNpZGVyICcgK1xuICAgICAgICAgICAgJ3VzaW5nIGEgZGlmZmVyZW50IGZldGNoUG9saWN5LCBzdWNoIGFzIGNhY2hlLWZpcnN0IG9yIG5ldHdvcmstb25seS4nKSA6IGludmFyaWFudChvcHRpb25zLmZldGNoUG9saWN5ICE9PSAnY2FjaGUtYW5kLW5ldHdvcmsnLCA4KTtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZU5ldHdvcmtGZXRjaGVzICYmIG9wdGlvbnMuZmV0Y2hQb2xpY3kgPT09ICduZXR3b3JrLW9ubHknKSB7XG4gICAgICAgICAgICBvcHRpb25zID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9wdGlvbnMpLCB7IGZldGNoUG9saWN5OiAnY2FjaGUtZmlyc3QnIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5TWFuYWdlci5xdWVyeShvcHRpb25zKTtcbiAgICB9O1xuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUubXV0YXRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVmYXVsdE9wdGlvbnMubXV0YXRlKSB7XG4gICAgICAgICAgICBvcHRpb25zID0gbWVyZ2VPcHRpb25zKHRoaXMuZGVmYXVsdE9wdGlvbnMubXV0YXRlLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5xdWVyeU1hbmFnZXIubXV0YXRlKG9wdGlvbnMpO1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS5zdWJzY3JpYmUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5xdWVyeU1hbmFnZXIuc3RhcnRHcmFwaFFMU3Vic2NyaXB0aW9uKG9wdGlvbnMpO1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS5yZWFkUXVlcnkgPSBmdW5jdGlvbiAob3B0aW9ucywgb3B0aW1pc3RpYykge1xuICAgICAgICBpZiAob3B0aW1pc3RpYyA9PT0gdm9pZCAwKSB7IG9wdGltaXN0aWMgPSBmYWxzZTsgfVxuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZS5yZWFkUXVlcnkob3B0aW9ucywgb3B0aW1pc3RpYyk7XG4gICAgfTtcbiAgICBBcG9sbG9DbGllbnQucHJvdG90eXBlLnJlYWRGcmFnbWVudCA9IGZ1bmN0aW9uIChvcHRpb25zLCBvcHRpbWlzdGljKSB7XG4gICAgICAgIGlmIChvcHRpbWlzdGljID09PSB2b2lkIDApIHsgb3B0aW1pc3RpYyA9IGZhbHNlOyB9XG4gICAgICAgIHJldHVybiB0aGlzLmNhY2hlLnJlYWRGcmFnbWVudChvcHRpb25zLCBvcHRpbWlzdGljKTtcbiAgICB9O1xuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUud3JpdGVRdWVyeSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuY2FjaGUud3JpdGVRdWVyeShvcHRpb25zKTtcbiAgICAgICAgdGhpcy5xdWVyeU1hbmFnZXIuYnJvYWRjYXN0UXVlcmllcygpO1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS53cml0ZUZyYWdtZW50ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5jYWNoZS53cml0ZUZyYWdtZW50KG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnF1ZXJ5TWFuYWdlci5icm9hZGNhc3RRdWVyaWVzKCk7XG4gICAgfTtcbiAgICBBcG9sbG9DbGllbnQucHJvdG90eXBlLl9fYWN0aW9uSG9va0ZvckRldlRvb2xzID0gZnVuY3Rpb24gKGNiKSB7XG4gICAgICAgIHRoaXMuZGV2VG9vbHNIb29rQ2IgPSBjYjtcbiAgICB9O1xuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUuX19yZXF1ZXN0UmF3ID0gZnVuY3Rpb24gKHBheWxvYWQpIHtcbiAgICAgICAgcmV0dXJuIGV4ZWN1dGUodGhpcy5saW5rLCBwYXlsb2FkKTtcbiAgICB9O1xuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUucmVzZXRTdG9yZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBfdGhpcy5xdWVyeU1hbmFnZXIuY2xlYXJTdG9yZSh7XG4gICAgICAgICAgICBkaXNjYXJkV2F0Y2hlczogZmFsc2UsXG4gICAgICAgIH0pOyB9KVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gUHJvbWlzZS5hbGwoX3RoaXMucmVzZXRTdG9yZUNhbGxiYWNrcy5tYXAoZnVuY3Rpb24gKGZuKSB7IHJldHVybiBmbigpOyB9KSk7IH0pXG4gICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBfdGhpcy5yZUZldGNoT2JzZXJ2YWJsZVF1ZXJpZXMoKTsgfSk7XG4gICAgfTtcbiAgICBBcG9sbG9DbGllbnQucHJvdG90eXBlLmNsZWFyU3RvcmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gX3RoaXMucXVlcnlNYW5hZ2VyLmNsZWFyU3RvcmUoe1xuICAgICAgICAgICAgZGlzY2FyZFdhdGNoZXM6IHRydWUsXG4gICAgICAgIH0pOyB9KVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gUHJvbWlzZS5hbGwoX3RoaXMuY2xlYXJTdG9yZUNhbGxiYWNrcy5tYXAoZnVuY3Rpb24gKGZuKSB7IHJldHVybiBmbigpOyB9KSk7IH0pO1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS5vblJlc2V0U3RvcmUgPSBmdW5jdGlvbiAoY2IpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdGhpcy5yZXNldFN0b3JlQ2FsbGJhY2tzLnB1c2goY2IpO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXMucmVzZXRTdG9yZUNhbGxiYWNrcyA9IF90aGlzLnJlc2V0U3RvcmVDYWxsYmFja3MuZmlsdGVyKGZ1bmN0aW9uIChjKSB7IHJldHVybiBjICE9PSBjYjsgfSk7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICBBcG9sbG9DbGllbnQucHJvdG90eXBlLm9uQ2xlYXJTdG9yZSA9IGZ1bmN0aW9uIChjYikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLmNsZWFyU3RvcmVDYWxsYmFja3MucHVzaChjYik7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpcy5jbGVhclN0b3JlQ2FsbGJhY2tzID0gX3RoaXMuY2xlYXJTdG9yZUNhbGxiYWNrcy5maWx0ZXIoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMgIT09IGNiOyB9KTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUucmVGZXRjaE9ic2VydmFibGVRdWVyaWVzID0gZnVuY3Rpb24gKGluY2x1ZGVTdGFuZGJ5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5TWFuYWdlci5yZUZldGNoT2JzZXJ2YWJsZVF1ZXJpZXMoaW5jbHVkZVN0YW5kYnkpO1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS5yZWZldGNoUXVlcmllcyA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIHZhciBtYXAgPSB0aGlzLnF1ZXJ5TWFuYWdlci5yZWZldGNoUXVlcmllcyhvcHRpb25zKTtcbiAgICAgICAgdmFyIHF1ZXJpZXMgPSBbXTtcbiAgICAgICAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgICAgICAgbWFwLmZvckVhY2goZnVuY3Rpb24gKHJlc3VsdCwgb2JzUXVlcnkpIHtcbiAgICAgICAgICAgIHF1ZXJpZXMucHVzaChvYnNRdWVyeSk7XG4gICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZXN1bHQgPSBQcm9taXNlLmFsbChyZXN1bHRzKTtcbiAgICAgICAgcmVzdWx0LnF1ZXJpZXMgPSBxdWVyaWVzO1xuICAgICAgICByZXN1bHQucmVzdWx0cyA9IHJlc3VsdHM7XG4gICAgICAgIHJlc3VsdC5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIF9fREVWX18gJiYgaW52YXJpYW50LmRlYnVnKFwiSW4gY2xpZW50LnJlZmV0Y2hRdWVyaWVzLCBQcm9taXNlLmFsbCBwcm9taXNlIHJlamVjdGVkIHdpdGggZXJyb3IgXCIuY29uY2F0KGVycm9yKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS5nZXRPYnNlcnZhYmxlUXVlcmllcyA9IGZ1bmN0aW9uIChpbmNsdWRlKSB7XG4gICAgICAgIGlmIChpbmNsdWRlID09PSB2b2lkIDApIHsgaW5jbHVkZSA9IFwiYWN0aXZlXCI7IH1cbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlNYW5hZ2VyLmdldE9ic2VydmFibGVRdWVyaWVzKGluY2x1ZGUpO1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24gKG9wdGltaXN0aWMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGUuZXh0cmFjdChvcHRpbWlzdGljKTtcbiAgICB9O1xuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUucmVzdG9yZSA9IGZ1bmN0aW9uIChzZXJpYWxpemVkU3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGUucmVzdG9yZShzZXJpYWxpemVkU3RhdGUpO1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS5hZGRSZXNvbHZlcnMgPSBmdW5jdGlvbiAocmVzb2x2ZXJzKSB7XG4gICAgICAgIHRoaXMubG9jYWxTdGF0ZS5hZGRSZXNvbHZlcnMocmVzb2x2ZXJzKTtcbiAgICB9O1xuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUuc2V0UmVzb2x2ZXJzID0gZnVuY3Rpb24gKHJlc29sdmVycykge1xuICAgICAgICB0aGlzLmxvY2FsU3RhdGUuc2V0UmVzb2x2ZXJzKHJlc29sdmVycyk7XG4gICAgfTtcbiAgICBBcG9sbG9DbGllbnQucHJvdG90eXBlLmdldFJlc29sdmVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxTdGF0ZS5nZXRSZXNvbHZlcnMoKTtcbiAgICB9O1xuICAgIEFwb2xsb0NsaWVudC5wcm90b3R5cGUuc2V0TG9jYWxTdGF0ZUZyYWdtZW50TWF0Y2hlciA9IGZ1bmN0aW9uIChmcmFnbWVudE1hdGNoZXIpIHtcbiAgICAgICAgdGhpcy5sb2NhbFN0YXRlLnNldEZyYWdtZW50TWF0Y2hlcihmcmFnbWVudE1hdGNoZXIpO1xuICAgIH07XG4gICAgQXBvbGxvQ2xpZW50LnByb3RvdHlwZS5zZXRMaW5rID0gZnVuY3Rpb24gKG5ld0xpbmspIHtcbiAgICAgICAgdGhpcy5saW5rID0gdGhpcy5xdWVyeU1hbmFnZXIubGluayA9IG5ld0xpbms7XG4gICAgfTtcbiAgICByZXR1cm4gQXBvbGxvQ2xpZW50O1xufSgpKTtcbmV4cG9ydCB7IEFwb2xsb0NsaWVudCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXBvbGxvQ2xpZW50LmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/core/ApolloClient.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/core/LocalState.js":
/*!********************************************************!*\
  !*** ./node_modules/@apollo/client/core/LocalState.js ***!
  \********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"LocalState\": function() { return /* binding */ LocalState; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var graphql__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! graphql */ \"./node_modules/graphql/index.mjs\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n/* harmony import */ var _cache_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../cache/index.js */ \"./node_modules/@apollo/client/cache/index.js\");\n\n\n\n\n\nvar LocalState = (function () {\n    function LocalState(_a) {\n        var cache = _a.cache, client = _a.client, resolvers = _a.resolvers, fragmentMatcher = _a.fragmentMatcher;\n        this.cache = cache;\n        if (client) {\n            this.client = client;\n        }\n        if (resolvers) {\n            this.addResolvers(resolvers);\n        }\n        if (fragmentMatcher) {\n            this.setFragmentMatcher(fragmentMatcher);\n        }\n    }\n    LocalState.prototype.addResolvers = function (resolvers) {\n        var _this = this;\n        this.resolvers = this.resolvers || {};\n        if (Array.isArray(resolvers)) {\n            resolvers.forEach(function (resolverGroup) {\n                _this.resolvers = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.mergeDeep)(_this.resolvers, resolverGroup);\n            });\n        }\n        else {\n            this.resolvers = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.mergeDeep)(this.resolvers, resolvers);\n        }\n    };\n    LocalState.prototype.setResolvers = function (resolvers) {\n        this.resolvers = {};\n        this.addResolvers(resolvers);\n    };\n    LocalState.prototype.getResolvers = function () {\n        return this.resolvers || {};\n    };\n    LocalState.prototype.runResolvers = function (_a) {\n        var document = _a.document, remoteResult = _a.remoteResult, context = _a.context, variables = _a.variables, _b = _a.onlyRunForcedResolvers, onlyRunForcedResolvers = _b === void 0 ? false : _b;\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(this, void 0, void 0, function () {\n            return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__generator)(this, function (_c) {\n                if (document) {\n                    return [2, this.resolveDocument(document, remoteResult.data, context, variables, this.fragmentMatcher, onlyRunForcedResolvers).then(function (localResult) { return ((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, remoteResult), { data: localResult.result })); })];\n                }\n                return [2, remoteResult];\n            });\n        });\n    };\n    LocalState.prototype.setFragmentMatcher = function (fragmentMatcher) {\n        this.fragmentMatcher = fragmentMatcher;\n    };\n    LocalState.prototype.getFragmentMatcher = function () {\n        return this.fragmentMatcher;\n    };\n    LocalState.prototype.clientQuery = function (document) {\n        if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.hasDirectives)(['client'], document)) {\n            if (this.resolvers) {\n                return document;\n            }\n        }\n        return null;\n    };\n    LocalState.prototype.serverQuery = function (document) {\n        return (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.removeClientSetsFromDocument)(document);\n    };\n    LocalState.prototype.prepareContext = function (context) {\n        var cache = this.cache;\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, context), { cache: cache, getCacheKey: function (obj) {\n                return cache.identify(obj);\n            } });\n    };\n    LocalState.prototype.addExportedVariables = function (document, variables, context) {\n        if (variables === void 0) { variables = {}; }\n        if (context === void 0) { context = {}; }\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(this, void 0, void 0, function () {\n            return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__generator)(this, function (_a) {\n                if (document) {\n                    return [2, this.resolveDocument(document, this.buildRootValueFromCache(document, variables) || {}, this.prepareContext(context), variables).then(function (data) { return ((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, variables), data.exportedVariables)); })];\n                }\n                return [2, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, variables)];\n            });\n        });\n    };\n    LocalState.prototype.shouldForceResolvers = function (document) {\n        var forceResolvers = false;\n        (0,graphql__WEBPACK_IMPORTED_MODULE_3__.visit)(document, {\n            Directive: {\n                enter: function (node) {\n                    if (node.name.value === 'client' && node.arguments) {\n                        forceResolvers = node.arguments.some(function (arg) {\n                            return arg.name.value === 'always' &&\n                                arg.value.kind === 'BooleanValue' &&\n                                arg.value.value === true;\n                        });\n                        if (forceResolvers) {\n                            return graphql__WEBPACK_IMPORTED_MODULE_3__.BREAK;\n                        }\n                    }\n                },\n            },\n        });\n        return forceResolvers;\n    };\n    LocalState.prototype.buildRootValueFromCache = function (document, variables) {\n        return this.cache.diff({\n            query: (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.buildQueryFromSelectionSet)(document),\n            variables: variables,\n            returnPartialData: true,\n            optimistic: false,\n        }).result;\n    };\n    LocalState.prototype.resolveDocument = function (document, rootValue, context, variables, fragmentMatcher, onlyRunForcedResolvers) {\n        if (context === void 0) { context = {}; }\n        if (variables === void 0) { variables = {}; }\n        if (fragmentMatcher === void 0) { fragmentMatcher = function () { return true; }; }\n        if (onlyRunForcedResolvers === void 0) { onlyRunForcedResolvers = false; }\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(this, void 0, void 0, function () {\n            var mainDefinition, fragments, fragmentMap, definitionOperation, defaultOperationType, _a, cache, client, execContext;\n            return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__generator)(this, function (_b) {\n                mainDefinition = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.getMainDefinition)(document);\n                fragments = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.getFragmentDefinitions)(document);\n                fragmentMap = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.createFragmentMap)(fragments);\n                definitionOperation = mainDefinition\n                    .operation;\n                defaultOperationType = definitionOperation\n                    ? definitionOperation.charAt(0).toUpperCase() +\n                        definitionOperation.slice(1)\n                    : 'Query';\n                _a = this, cache = _a.cache, client = _a.client;\n                execContext = {\n                    fragmentMap: fragmentMap,\n                    context: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, context), { cache: cache, client: client }),\n                    variables: variables,\n                    fragmentMatcher: fragmentMatcher,\n                    defaultOperationType: defaultOperationType,\n                    exportedVariables: {},\n                    onlyRunForcedResolvers: onlyRunForcedResolvers,\n                };\n                return [2, this.resolveSelectionSet(mainDefinition.selectionSet, rootValue, execContext).then(function (result) { return ({\n                        result: result,\n                        exportedVariables: execContext.exportedVariables,\n                    }); })];\n            });\n        });\n    };\n    LocalState.prototype.resolveSelectionSet = function (selectionSet, rootValue, execContext) {\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(this, void 0, void 0, function () {\n            var fragmentMap, context, variables, resultsToMerge, execute;\n            var _this = this;\n            return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__generator)(this, function (_a) {\n                fragmentMap = execContext.fragmentMap, context = execContext.context, variables = execContext.variables;\n                resultsToMerge = [rootValue];\n                execute = function (selection) { return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(_this, void 0, void 0, function () {\n                    var fragment, typeCondition;\n                    return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__generator)(this, function (_a) {\n                        if (!(0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.shouldInclude)(selection, variables)) {\n                            return [2];\n                        }\n                        if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.isField)(selection)) {\n                            return [2, this.resolveField(selection, rootValue, execContext).then(function (fieldResult) {\n                                    var _a;\n                                    if (typeof fieldResult !== 'undefined') {\n                                        resultsToMerge.push((_a = {},\n                                            _a[(0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.resultKeyNameFromField)(selection)] = fieldResult,\n                                            _a));\n                                    }\n                                })];\n                        }\n                        if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.isInlineFragment)(selection)) {\n                            fragment = selection;\n                        }\n                        else {\n                            fragment = fragmentMap[selection.name.value];\n                            __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(fragment, \"No fragment named \".concat(selection.name.value)) : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(fragment, 9);\n                        }\n                        if (fragment && fragment.typeCondition) {\n                            typeCondition = fragment.typeCondition.name.value;\n                            if (execContext.fragmentMatcher(rootValue, typeCondition, context)) {\n                                return [2, this.resolveSelectionSet(fragment.selectionSet, rootValue, execContext).then(function (fragmentResult) {\n                                        resultsToMerge.push(fragmentResult);\n                                    })];\n                            }\n                        }\n                        return [2];\n                    });\n                }); };\n                return [2, Promise.all(selectionSet.selections.map(execute)).then(function () {\n                        return (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.mergeDeepArray)(resultsToMerge);\n                    })];\n            });\n        });\n    };\n    LocalState.prototype.resolveField = function (field, rootValue, execContext) {\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__awaiter)(this, void 0, void 0, function () {\n            var variables, fieldName, aliasedFieldName, aliasUsed, defaultResult, resultPromise, resolverType, resolverMap, resolve;\n            var _this = this;\n            return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__generator)(this, function (_a) {\n                variables = execContext.variables;\n                fieldName = field.name.value;\n                aliasedFieldName = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.resultKeyNameFromField)(field);\n                aliasUsed = fieldName !== aliasedFieldName;\n                defaultResult = rootValue[aliasedFieldName] || rootValue[fieldName];\n                resultPromise = Promise.resolve(defaultResult);\n                if (!execContext.onlyRunForcedResolvers ||\n                    this.shouldForceResolvers(field)) {\n                    resolverType = rootValue.__typename || execContext.defaultOperationType;\n                    resolverMap = this.resolvers && this.resolvers[resolverType];\n                    if (resolverMap) {\n                        resolve = resolverMap[aliasUsed ? fieldName : aliasedFieldName];\n                        if (resolve) {\n                            resultPromise = Promise.resolve(_cache_index_js__WEBPACK_IMPORTED_MODULE_4__.cacheSlot.withValue(this.cache, resolve, [\n                                rootValue,\n                                (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.argumentsObjectFromField)(field, variables),\n                                execContext.context,\n                                { field: field, fragmentMap: execContext.fragmentMap },\n                            ]));\n                        }\n                    }\n                }\n                return [2, resultPromise.then(function (result) {\n                        if (result === void 0) { result = defaultResult; }\n                        if (field.directives) {\n                            field.directives.forEach(function (directive) {\n                                if (directive.name.value === 'export' && directive.arguments) {\n                                    directive.arguments.forEach(function (arg) {\n                                        if (arg.name.value === 'as' && arg.value.kind === 'StringValue') {\n                                            execContext.exportedVariables[arg.value.value] = result;\n                                        }\n                                    });\n                                }\n                            });\n                        }\n                        if (!field.selectionSet) {\n                            return result;\n                        }\n                        if (result == null) {\n                            return result;\n                        }\n                        if (Array.isArray(result)) {\n                            return _this.resolveSubSelectedArray(field, result, execContext);\n                        }\n                        if (field.selectionSet) {\n                            return _this.resolveSelectionSet(field.selectionSet, result, execContext);\n                        }\n                    })];\n            });\n        });\n    };\n    LocalState.prototype.resolveSubSelectedArray = function (field, result, execContext) {\n        var _this = this;\n        return Promise.all(result.map(function (item) {\n            if (item === null) {\n                return null;\n            }\n            if (Array.isArray(item)) {\n                return _this.resolveSubSelectedArray(field, item, execContext);\n            }\n            if (field.selectionSet) {\n                return _this.resolveSelectionSet(field.selectionSet, item, execContext);\n            }\n        }));\n    };\n    return LocalState;\n}());\n\n//# sourceMappingURL=LocalState.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY29yZS9Mb2NhbFN0YXRlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUF5RDtBQUNDO0FBQ2xCO0FBQzhQO0FBQ3hQO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLDhEQUFTO0FBQzNDLGFBQWE7QUFDYjtBQUNBO0FBQ0EsNkJBQTZCLDhEQUFTO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGdEQUFTO0FBQ3hCLG1CQUFtQixrREFBVztBQUM5QjtBQUNBLGlMQUFpTCxRQUFRLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxtQkFBbUIsMEJBQTBCLEtBQUs7QUFDL1A7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksa0VBQWE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlGQUE0QjtBQUMzQztBQUNBO0FBQ0E7QUFDQSxlQUFlLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxjQUFjO0FBQ2pEO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEMsa0NBQWtDO0FBQ2xDLGVBQWUsZ0RBQVM7QUFDeEIsbUJBQW1CLGtEQUFXO0FBQzlCO0FBQ0EscUhBQXFILGtFQUFrRSxRQUFRLCtDQUFRLENBQUMsK0NBQVEsR0FBRyx5Q0FBeUM7QUFDNVA7QUFDQSwyQkFBMkIsK0NBQVEsR0FBRztBQUN0QyxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFFBQVEsOENBQUs7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBLG1DQUFtQywwQ0FBSztBQUN4QztBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsK0VBQTBCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDLG9DQUFvQztBQUNwQywwQ0FBMEMsZ0NBQWdDO0FBQzFFLGlEQUFpRDtBQUNqRCxlQUFlLGdEQUFTO0FBQ3hCO0FBQ0EsbUJBQW1CLGtEQUFXO0FBQzlCLGlDQUFpQyxzRUFBaUI7QUFDbEQsNEJBQTRCLDJFQUFzQjtBQUNsRCw4QkFBOEIsc0VBQWlCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QiwrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsY0FBYyw4QkFBOEI7QUFDN0Y7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQSxrSUFBa0k7QUFDbEk7QUFDQTtBQUNBLHFCQUFxQixJQUFJO0FBQ3pCLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBLGVBQWUsZ0RBQVM7QUFDeEI7QUFDQTtBQUNBLG1CQUFtQixrREFBVztBQUM5QjtBQUNBO0FBQ0EsaURBQWlELE9BQU8sZ0RBQVM7QUFDakU7QUFDQSwyQkFBMkIsa0RBQVc7QUFDdEMsNkJBQTZCLGtFQUFhO0FBQzFDO0FBQ0E7QUFDQSw0QkFBNEIsNERBQU87QUFDbkM7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FO0FBQ3BFLCtDQUErQywyRUFBc0I7QUFDckU7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBLDRCQUE0QixxRUFBZ0I7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0Msc0VBQVMsZ0VBQWdFLHNFQUFTO0FBQ3hIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCO0FBQ0EsK0JBQStCLG1FQUFjO0FBQzdDLHFCQUFxQjtBQUNyQixhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQSxlQUFlLGdEQUFTO0FBQ3hCO0FBQ0E7QUFDQSxtQkFBbUIsa0RBQVc7QUFDOUI7QUFDQTtBQUNBLG1DQUFtQywyRUFBc0I7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQsZ0VBQW1CO0FBQy9FO0FBQ0EsZ0NBQWdDLDZFQUF3QjtBQUN4RDtBQUNBLGtDQUFrQyxvREFBb0Q7QUFDdEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRDtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQztBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQixhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxDQUFDO0FBQ3FCO0FBQ3RCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9jb3JlL0xvY2FsU3RhdGUuanM/MWFlNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19hd2FpdGVyLCBfX2dlbmVyYXRvciB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9nbG9iYWxzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyB2aXNpdCwgQlJFQUssIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBhcmd1bWVudHNPYmplY3RGcm9tRmllbGQsIGJ1aWxkUXVlcnlGcm9tU2VsZWN0aW9uU2V0LCBjcmVhdGVGcmFnbWVudE1hcCwgZ2V0RnJhZ21lbnREZWZpbml0aW9ucywgZ2V0TWFpbkRlZmluaXRpb24sIGhhc0RpcmVjdGl2ZXMsIGlzRmllbGQsIGlzSW5saW5lRnJhZ21lbnQsIG1lcmdlRGVlcCwgbWVyZ2VEZWVwQXJyYXksIHJlbW92ZUNsaWVudFNldHNGcm9tRG9jdW1lbnQsIHJlc3VsdEtleU5hbWVGcm9tRmllbGQsIHNob3VsZEluY2x1ZGUsIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgY2FjaGVTbG90IH0gZnJvbSBcIi4uL2NhY2hlL2luZGV4LmpzXCI7XG52YXIgTG9jYWxTdGF0ZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gTG9jYWxTdGF0ZShfYSkge1xuICAgICAgICB2YXIgY2FjaGUgPSBfYS5jYWNoZSwgY2xpZW50ID0gX2EuY2xpZW50LCByZXNvbHZlcnMgPSBfYS5yZXNvbHZlcnMsIGZyYWdtZW50TWF0Y2hlciA9IF9hLmZyYWdtZW50TWF0Y2hlcjtcbiAgICAgICAgdGhpcy5jYWNoZSA9IGNhY2hlO1xuICAgICAgICBpZiAoY2xpZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNsaWVudCA9IGNsaWVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzb2x2ZXJzKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFJlc29sdmVycyhyZXNvbHZlcnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmcmFnbWVudE1hdGNoZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RnJhZ21lbnRNYXRjaGVyKGZyYWdtZW50TWF0Y2hlcik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgTG9jYWxTdGF0ZS5wcm90b3R5cGUuYWRkUmVzb2x2ZXJzID0gZnVuY3Rpb24gKHJlc29sdmVycykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLnJlc29sdmVycyA9IHRoaXMucmVzb2x2ZXJzIHx8IHt9O1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXNvbHZlcnMpKSB7XG4gICAgICAgICAgICByZXNvbHZlcnMuZm9yRWFjaChmdW5jdGlvbiAocmVzb2x2ZXJHcm91cCkge1xuICAgICAgICAgICAgICAgIF90aGlzLnJlc29sdmVycyA9IG1lcmdlRGVlcChfdGhpcy5yZXNvbHZlcnMsIHJlc29sdmVyR3JvdXApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc29sdmVycyA9IG1lcmdlRGVlcCh0aGlzLnJlc29sdmVycywgcmVzb2x2ZXJzKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgTG9jYWxTdGF0ZS5wcm90b3R5cGUuc2V0UmVzb2x2ZXJzID0gZnVuY3Rpb24gKHJlc29sdmVycykge1xuICAgICAgICB0aGlzLnJlc29sdmVycyA9IHt9O1xuICAgICAgICB0aGlzLmFkZFJlc29sdmVycyhyZXNvbHZlcnMpO1xuICAgIH07XG4gICAgTG9jYWxTdGF0ZS5wcm90b3R5cGUuZ2V0UmVzb2x2ZXJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlcnMgfHwge307XG4gICAgfTtcbiAgICBMb2NhbFN0YXRlLnByb3RvdHlwZS5ydW5SZXNvbHZlcnMgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIGRvY3VtZW50ID0gX2EuZG9jdW1lbnQsIHJlbW90ZVJlc3VsdCA9IF9hLnJlbW90ZVJlc3VsdCwgY29udGV4dCA9IF9hLmNvbnRleHQsIHZhcmlhYmxlcyA9IF9hLnZhcmlhYmxlcywgX2IgPSBfYS5vbmx5UnVuRm9yY2VkUmVzb2x2ZXJzLCBvbmx5UnVuRm9yY2VkUmVzb2x2ZXJzID0gX2IgPT09IHZvaWQgMCA/IGZhbHNlIDogX2I7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2MpIHtcbiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyLCB0aGlzLnJlc29sdmVEb2N1bWVudChkb2N1bWVudCwgcmVtb3RlUmVzdWx0LmRhdGEsIGNvbnRleHQsIHZhcmlhYmxlcywgdGhpcy5mcmFnbWVudE1hdGNoZXIsIG9ubHlSdW5Gb3JjZWRSZXNvbHZlcnMpLnRoZW4oZnVuY3Rpb24gKGxvY2FsUmVzdWx0KSB7IHJldHVybiAoX19hc3NpZ24oX19hc3NpZ24oe30sIHJlbW90ZVJlc3VsdCksIHsgZGF0YTogbG9jYWxSZXN1bHQucmVzdWx0IH0pKTsgfSldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gWzIsIHJlbW90ZVJlc3VsdF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBMb2NhbFN0YXRlLnByb3RvdHlwZS5zZXRGcmFnbWVudE1hdGNoZXIgPSBmdW5jdGlvbiAoZnJhZ21lbnRNYXRjaGVyKSB7XG4gICAgICAgIHRoaXMuZnJhZ21lbnRNYXRjaGVyID0gZnJhZ21lbnRNYXRjaGVyO1xuICAgIH07XG4gICAgTG9jYWxTdGF0ZS5wcm90b3R5cGUuZ2V0RnJhZ21lbnRNYXRjaGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcmFnbWVudE1hdGNoZXI7XG4gICAgfTtcbiAgICBMb2NhbFN0YXRlLnByb3RvdHlwZS5jbGllbnRRdWVyeSA9IGZ1bmN0aW9uIChkb2N1bWVudCkge1xuICAgICAgICBpZiAoaGFzRGlyZWN0aXZlcyhbJ2NsaWVudCddLCBkb2N1bWVudCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlc29sdmVycykge1xuICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIExvY2FsU3RhdGUucHJvdG90eXBlLnNlcnZlclF1ZXJ5ID0gZnVuY3Rpb24gKGRvY3VtZW50KSB7XG4gICAgICAgIHJldHVybiByZW1vdmVDbGllbnRTZXRzRnJvbURvY3VtZW50KGRvY3VtZW50KTtcbiAgICB9O1xuICAgIExvY2FsU3RhdGUucHJvdG90eXBlLnByZXBhcmVDb250ZXh0ID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIGNhY2hlID0gdGhpcy5jYWNoZTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBjb250ZXh0KSwgeyBjYWNoZTogY2FjaGUsIGdldENhY2hlS2V5OiBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhY2hlLmlkZW50aWZ5KG9iaik7XG4gICAgICAgICAgICB9IH0pO1xuICAgIH07XG4gICAgTG9jYWxTdGF0ZS5wcm90b3R5cGUuYWRkRXhwb3J0ZWRWYXJpYWJsZXMgPSBmdW5jdGlvbiAoZG9jdW1lbnQsIHZhcmlhYmxlcywgY29udGV4dCkge1xuICAgICAgICBpZiAodmFyaWFibGVzID09PSB2b2lkIDApIHsgdmFyaWFibGVzID0ge307IH1cbiAgICAgICAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkgeyBjb250ZXh0ID0ge307IH1cbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIsIHRoaXMucmVzb2x2ZURvY3VtZW50KGRvY3VtZW50LCB0aGlzLmJ1aWxkUm9vdFZhbHVlRnJvbUNhY2hlKGRvY3VtZW50LCB2YXJpYWJsZXMpIHx8IHt9LCB0aGlzLnByZXBhcmVDb250ZXh0KGNvbnRleHQpLCB2YXJpYWJsZXMpLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHsgcmV0dXJuIChfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdmFyaWFibGVzKSwgZGF0YS5leHBvcnRlZFZhcmlhYmxlcykpOyB9KV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBbMiwgX19hc3NpZ24oe30sIHZhcmlhYmxlcyldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgTG9jYWxTdGF0ZS5wcm90b3R5cGUuc2hvdWxkRm9yY2VSZXNvbHZlcnMgPSBmdW5jdGlvbiAoZG9jdW1lbnQpIHtcbiAgICAgICAgdmFyIGZvcmNlUmVzb2x2ZXJzID0gZmFsc2U7XG4gICAgICAgIHZpc2l0KGRvY3VtZW50LCB7XG4gICAgICAgICAgICBEaXJlY3RpdmU6IHtcbiAgICAgICAgICAgICAgICBlbnRlcjogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUubmFtZS52YWx1ZSA9PT0gJ2NsaWVudCcgJiYgbm9kZS5hcmd1bWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlUmVzb2x2ZXJzID0gbm9kZS5hcmd1bWVudHMuc29tZShmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZy5uYW1lLnZhbHVlID09PSAnYWx3YXlzJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcudmFsdWUua2luZCA9PT0gJ0Jvb2xlYW5WYWx1ZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLnZhbHVlLnZhbHVlID09PSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9yY2VSZXNvbHZlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQlJFQUs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmb3JjZVJlc29sdmVycztcbiAgICB9O1xuICAgIExvY2FsU3RhdGUucHJvdG90eXBlLmJ1aWxkUm9vdFZhbHVlRnJvbUNhY2hlID0gZnVuY3Rpb24gKGRvY3VtZW50LCB2YXJpYWJsZXMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FjaGUuZGlmZih7XG4gICAgICAgICAgICBxdWVyeTogYnVpbGRRdWVyeUZyb21TZWxlY3Rpb25TZXQoZG9jdW1lbnQpLFxuICAgICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMsXG4gICAgICAgICAgICByZXR1cm5QYXJ0aWFsRGF0YTogdHJ1ZSxcbiAgICAgICAgICAgIG9wdGltaXN0aWM6IGZhbHNlLFxuICAgICAgICB9KS5yZXN1bHQ7XG4gICAgfTtcbiAgICBMb2NhbFN0YXRlLnByb3RvdHlwZS5yZXNvbHZlRG9jdW1lbnQgPSBmdW5jdGlvbiAoZG9jdW1lbnQsIHJvb3RWYWx1ZSwgY29udGV4dCwgdmFyaWFibGVzLCBmcmFnbWVudE1hdGNoZXIsIG9ubHlSdW5Gb3JjZWRSZXNvbHZlcnMpIHtcbiAgICAgICAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkgeyBjb250ZXh0ID0ge307IH1cbiAgICAgICAgaWYgKHZhcmlhYmxlcyA9PT0gdm9pZCAwKSB7IHZhcmlhYmxlcyA9IHt9OyB9XG4gICAgICAgIGlmIChmcmFnbWVudE1hdGNoZXIgPT09IHZvaWQgMCkgeyBmcmFnbWVudE1hdGNoZXIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9OyB9XG4gICAgICAgIGlmIChvbmx5UnVuRm9yY2VkUmVzb2x2ZXJzID09PSB2b2lkIDApIHsgb25seVJ1bkZvcmNlZFJlc29sdmVycyA9IGZhbHNlOyB9XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBtYWluRGVmaW5pdGlvbiwgZnJhZ21lbnRzLCBmcmFnbWVudE1hcCwgZGVmaW5pdGlvbk9wZXJhdGlvbiwgZGVmYXVsdE9wZXJhdGlvblR5cGUsIF9hLCBjYWNoZSwgY2xpZW50LCBleGVjQ29udGV4dDtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2IpIHtcbiAgICAgICAgICAgICAgICBtYWluRGVmaW5pdGlvbiA9IGdldE1haW5EZWZpbml0aW9uKGRvY3VtZW50KTtcbiAgICAgICAgICAgICAgICBmcmFnbWVudHMgPSBnZXRGcmFnbWVudERlZmluaXRpb25zKGRvY3VtZW50KTtcbiAgICAgICAgICAgICAgICBmcmFnbWVudE1hcCA9IGNyZWF0ZUZyYWdtZW50TWFwKGZyYWdtZW50cyk7XG4gICAgICAgICAgICAgICAgZGVmaW5pdGlvbk9wZXJhdGlvbiA9IG1haW5EZWZpbml0aW9uXG4gICAgICAgICAgICAgICAgICAgIC5vcGVyYXRpb247XG4gICAgICAgICAgICAgICAgZGVmYXVsdE9wZXJhdGlvblR5cGUgPSBkZWZpbml0aW9uT3BlcmF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gZGVmaW5pdGlvbk9wZXJhdGlvbi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uT3BlcmF0aW9uLnNsaWNlKDEpXG4gICAgICAgICAgICAgICAgICAgIDogJ1F1ZXJ5JztcbiAgICAgICAgICAgICAgICBfYSA9IHRoaXMsIGNhY2hlID0gX2EuY2FjaGUsIGNsaWVudCA9IF9hLmNsaWVudDtcbiAgICAgICAgICAgICAgICBleGVjQ29udGV4dCA9IHtcbiAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRNYXA6IGZyYWdtZW50TWFwLFxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgY29udGV4dCksIHsgY2FjaGU6IGNhY2hlLCBjbGllbnQ6IGNsaWVudCB9KSxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgICAgIGZyYWdtZW50TWF0Y2hlcjogZnJhZ21lbnRNYXRjaGVyLFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0T3BlcmF0aW9uVHlwZTogZGVmYXVsdE9wZXJhdGlvblR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGV4cG9ydGVkVmFyaWFibGVzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgb25seVJ1bkZvcmNlZFJlc29sdmVyczogb25seVJ1bkZvcmNlZFJlc29sdmVycyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHJldHVybiBbMiwgdGhpcy5yZXNvbHZlU2VsZWN0aW9uU2V0KG1haW5EZWZpbml0aW9uLnNlbGVjdGlvblNldCwgcm9vdFZhbHVlLCBleGVjQ29udGV4dCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7IHJldHVybiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRlZFZhcmlhYmxlczogZXhlY0NvbnRleHQuZXhwb3J0ZWRWYXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgICAgIH0pOyB9KV07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBMb2NhbFN0YXRlLnByb3RvdHlwZS5yZXNvbHZlU2VsZWN0aW9uU2V0ID0gZnVuY3Rpb24gKHNlbGVjdGlvblNldCwgcm9vdFZhbHVlLCBleGVjQ29udGV4dCkge1xuICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZnJhZ21lbnRNYXAsIGNvbnRleHQsIHZhcmlhYmxlcywgcmVzdWx0c1RvTWVyZ2UsIGV4ZWN1dGU7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50TWFwID0gZXhlY0NvbnRleHQuZnJhZ21lbnRNYXAsIGNvbnRleHQgPSBleGVjQ29udGV4dC5jb250ZXh0LCB2YXJpYWJsZXMgPSBleGVjQ29udGV4dC52YXJpYWJsZXM7XG4gICAgICAgICAgICAgICAgcmVzdWx0c1RvTWVyZ2UgPSBbcm9vdFZhbHVlXTtcbiAgICAgICAgICAgICAgICBleGVjdXRlID0gZnVuY3Rpb24gKHNlbGVjdGlvbikgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZnJhZ21lbnQsIHR5cGVDb25kaXRpb247XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkSW5jbHVkZShzZWxlY3Rpb24sIHZhcmlhYmxlcykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRmllbGQoc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiwgdGhpcy5yZXNvbHZlRmllbGQoc2VsZWN0aW9uLCByb290VmFsdWUsIGV4ZWNDb250ZXh0KS50aGVuKGZ1bmN0aW9uIChmaWVsZFJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZFJlc3VsdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzVG9NZXJnZS5wdXNoKChfYSA9IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYVtyZXN1bHRLZXlOYW1lRnJvbUZpZWxkKHNlbGVjdGlvbildID0gZmllbGRSZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0lubGluZUZyYWdtZW50KHNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHNlbGVjdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50ID0gZnJhZ21lbnRNYXBbc2VsZWN0aW9uLm5hbWUudmFsdWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fREVWX18gPyBpbnZhcmlhbnQoZnJhZ21lbnQsIFwiTm8gZnJhZ21lbnQgbmFtZWQgXCIuY29uY2F0KHNlbGVjdGlvbi5uYW1lLnZhbHVlKSkgOiBpbnZhcmlhbnQoZnJhZ21lbnQsIDkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZyYWdtZW50ICYmIGZyYWdtZW50LnR5cGVDb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlQ29uZGl0aW9uID0gZnJhZ21lbnQudHlwZUNvbmRpdGlvbi5uYW1lLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGVjQ29udGV4dC5mcmFnbWVudE1hdGNoZXIocm9vdFZhbHVlLCB0eXBlQ29uZGl0aW9uLCBjb250ZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIsIHRoaXMucmVzb2x2ZVNlbGVjdGlvblNldChmcmFnbWVudC5zZWxlY3Rpb25TZXQsIHJvb3RWYWx1ZSwgZXhlY0NvbnRleHQpLnRoZW4oZnVuY3Rpb24gKGZyYWdtZW50UmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1RvTWVyZ2UucHVzaChmcmFnbWVudFJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyXTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7IH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsyLCBQcm9taXNlLmFsbChzZWxlY3Rpb25TZXQuc2VsZWN0aW9ucy5tYXAoZXhlY3V0ZSkpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlRGVlcEFycmF5KHJlc3VsdHNUb01lcmdlKTtcbiAgICAgICAgICAgICAgICAgICAgfSldO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgTG9jYWxTdGF0ZS5wcm90b3R5cGUucmVzb2x2ZUZpZWxkID0gZnVuY3Rpb24gKGZpZWxkLCByb290VmFsdWUsIGV4ZWNDb250ZXh0KSB7XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB2YXJpYWJsZXMsIGZpZWxkTmFtZSwgYWxpYXNlZEZpZWxkTmFtZSwgYWxpYXNVc2VkLCBkZWZhdWx0UmVzdWx0LCByZXN1bHRQcm9taXNlLCByZXNvbHZlclR5cGUsIHJlc29sdmVyTWFwLCByZXNvbHZlO1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBleGVjQ29udGV4dC52YXJpYWJsZXM7XG4gICAgICAgICAgICAgICAgZmllbGROYW1lID0gZmllbGQubmFtZS52YWx1ZTtcbiAgICAgICAgICAgICAgICBhbGlhc2VkRmllbGROYW1lID0gcmVzdWx0S2V5TmFtZUZyb21GaWVsZChmaWVsZCk7XG4gICAgICAgICAgICAgICAgYWxpYXNVc2VkID0gZmllbGROYW1lICE9PSBhbGlhc2VkRmllbGROYW1lO1xuICAgICAgICAgICAgICAgIGRlZmF1bHRSZXN1bHQgPSByb290VmFsdWVbYWxpYXNlZEZpZWxkTmFtZV0gfHwgcm9vdFZhbHVlW2ZpZWxkTmFtZV07XG4gICAgICAgICAgICAgICAgcmVzdWx0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShkZWZhdWx0UmVzdWx0KTtcbiAgICAgICAgICAgICAgICBpZiAoIWV4ZWNDb250ZXh0Lm9ubHlSdW5Gb3JjZWRSZXNvbHZlcnMgfHxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG91bGRGb3JjZVJlc29sdmVycyhmaWVsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXJUeXBlID0gcm9vdFZhbHVlLl9fdHlwZW5hbWUgfHwgZXhlY0NvbnRleHQuZGVmYXVsdE9wZXJhdGlvblR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVyTWFwID0gdGhpcy5yZXNvbHZlcnMgJiYgdGhpcy5yZXNvbHZlcnNbcmVzb2x2ZXJUeXBlXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc29sdmVyTWFwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlID0gcmVzb2x2ZXJNYXBbYWxpYXNVc2VkID8gZmllbGROYW1lIDogYWxpYXNlZEZpZWxkTmFtZV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzb2x2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoY2FjaGVTbG90LndpdGhWYWx1ZSh0aGlzLmNhY2hlLCByZXNvbHZlLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzT2JqZWN0RnJvbUZpZWxkKGZpZWxkLCB2YXJpYWJsZXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjQ29udGV4dC5jb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGZpZWxkOiBmaWVsZCwgZnJhZ21lbnRNYXA6IGV4ZWNDb250ZXh0LmZyYWdtZW50TWFwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBbMiwgcmVzdWx0UHJvbWlzZS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgeyByZXN1bHQgPSBkZWZhdWx0UmVzdWx0OyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQuZGlyZWN0aXZlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmRpcmVjdGl2ZXMuZm9yRWFjaChmdW5jdGlvbiAoZGlyZWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXJlY3RpdmUubmFtZS52YWx1ZSA9PT0gJ2V4cG9ydCcgJiYgZGlyZWN0aXZlLmFyZ3VtZW50cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlLmFyZ3VtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnLm5hbWUudmFsdWUgPT09ICdhcycgJiYgYXJnLnZhbHVlLmtpbmQgPT09ICdTdHJpbmdWYWx1ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY0NvbnRleHQuZXhwb3J0ZWRWYXJpYWJsZXNbYXJnLnZhbHVlLnZhbHVlXSA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWVsZC5zZWxlY3Rpb25TZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMucmVzb2x2ZVN1YlNlbGVjdGVkQXJyYXkoZmllbGQsIHJlc3VsdCwgZXhlY0NvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLnNlbGVjdGlvblNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpcy5yZXNvbHZlU2VsZWN0aW9uU2V0KGZpZWxkLnNlbGVjdGlvblNldCwgcmVzdWx0LCBleGVjQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIExvY2FsU3RhdGUucHJvdG90eXBlLnJlc29sdmVTdWJTZWxlY3RlZEFycmF5ID0gZnVuY3Rpb24gKGZpZWxkLCByZXN1bHQsIGV4ZWNDb250ZXh0KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChyZXN1bHQubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICBpZiAoaXRlbSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMucmVzb2x2ZVN1YlNlbGVjdGVkQXJyYXkoZmllbGQsIGl0ZW0sIGV4ZWNDb250ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaWVsZC5zZWxlY3Rpb25TZXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMucmVzb2x2ZVNlbGVjdGlvblNldChmaWVsZC5zZWxlY3Rpb25TZXQsIGl0ZW0sIGV4ZWNDb250ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgIH07XG4gICAgcmV0dXJuIExvY2FsU3RhdGU7XG59KCkpO1xuZXhwb3J0IHsgTG9jYWxTdGF0ZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9TG9jYWxTdGF0ZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/core/LocalState.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/core/ObservableQuery.js":
/*!*************************************************************!*\
  !*** ./node_modules/@apollo/client/core/ObservableQuery.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ObservableQuery\": function() { return /* binding */ ObservableQuery; },\n/* harmony export */   \"applyNextFetchPolicy\": function() { return /* binding */ applyNextFetchPolicy; },\n/* harmony export */   \"logMissingFieldErrors\": function() { return /* binding */ logMissingFieldErrors; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _wry_equality__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wry/equality */ \"./node_modules/@apollo/client/node_modules/@wry/equality/lib/equality.esm.js\");\n/* harmony import */ var _networkStatus_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./networkStatus.js */ \"./node_modules/@apollo/client/core/networkStatus.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n\n\n\n\n\nvar assign = Object.assign, hasOwnProperty = Object.hasOwnProperty;\nvar warnedAboutUpdateQuery = false;\nvar ObservableQuery = (function (_super) {\n    (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(ObservableQuery, _super);\n    function ObservableQuery(_a) {\n        var queryManager = _a.queryManager, queryInfo = _a.queryInfo, options = _a.options;\n        var _this = _super.call(this, function (observer) {\n            try {\n                var subObserver = observer._subscription._observer;\n                if (subObserver && !subObserver.error) {\n                    subObserver.error = defaultSubscriptionObserverErrorCallback;\n                }\n            }\n            catch (_a) { }\n            var first = !_this.observers.size;\n            _this.observers.add(observer);\n            var last = _this.last;\n            if (last && last.error) {\n                observer.error && observer.error(last.error);\n            }\n            else if (last && last.result) {\n                observer.next && observer.next(last.result);\n            }\n            if (first) {\n                _this.reobserve().catch(function () { });\n            }\n            return function () {\n                if (_this.observers.delete(observer) && !_this.observers.size) {\n                    _this.tearDownQuery();\n                }\n            };\n        }) || this;\n        _this.observers = new Set();\n        _this.subscriptions = new Set();\n        _this.isTornDown = false;\n        _this.options = options;\n        _this.queryId = queryInfo.queryId || queryManager.generateQueryId();\n        var opDef = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_3__.getOperationDefinition)(options.query);\n        _this.queryName = opDef && opDef.name && opDef.name.value;\n        _this.initialFetchPolicy = options.fetchPolicy || \"cache-first\";\n        _this.queryManager = queryManager;\n        _this.queryInfo = queryInfo;\n        return _this;\n    }\n    Object.defineProperty(ObservableQuery.prototype, \"variables\", {\n        get: function () {\n            return this.options.variables;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    ObservableQuery.prototype.result = function () {\n        var _this = this;\n        return new Promise(function (resolve, reject) {\n            var observer = {\n                next: function (result) {\n                    resolve(result);\n                    _this.observers.delete(observer);\n                    if (!_this.observers.size) {\n                        _this.queryManager.removeQuery(_this.queryId);\n                    }\n                    setTimeout(function () {\n                        subscription.unsubscribe();\n                    }, 0);\n                },\n                error: reject,\n            };\n            var subscription = _this.subscribe(observer);\n        });\n    };\n    ObservableQuery.prototype.getCurrentResult = function (saveAsLastResult) {\n        if (saveAsLastResult === void 0) { saveAsLastResult = true; }\n        var lastResult = this.getLastResult(true);\n        var networkStatus = this.queryInfo.networkStatus ||\n            (lastResult && lastResult.networkStatus) ||\n            _networkStatus_js__WEBPACK_IMPORTED_MODULE_4__.NetworkStatus.ready;\n        var result = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, lastResult), { loading: (0,_networkStatus_js__WEBPACK_IMPORTED_MODULE_4__.isNetworkRequestInFlight)(networkStatus), networkStatus: networkStatus });\n        var _a = this.options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a;\n        if (fetchPolicy === 'network-only' ||\n            fetchPolicy === 'no-cache' ||\n            fetchPolicy === 'standby' ||\n            this.queryManager.transform(this.options.query).hasForcedResolvers) {\n        }\n        else {\n            var diff = this.queryInfo.getDiff();\n            if (diff.complete || this.options.returnPartialData) {\n                result.data = diff.result;\n            }\n            if ((0,_wry_equality__WEBPACK_IMPORTED_MODULE_1__.equal)(result.data, {})) {\n                result.data = void 0;\n            }\n            if (diff.complete) {\n                delete result.partial;\n                if (diff.complete &&\n                    result.networkStatus === _networkStatus_js__WEBPACK_IMPORTED_MODULE_4__.NetworkStatus.loading &&\n                    (fetchPolicy === 'cache-first' ||\n                        fetchPolicy === 'cache-only')) {\n                    result.networkStatus = _networkStatus_js__WEBPACK_IMPORTED_MODULE_4__.NetworkStatus.ready;\n                    result.loading = false;\n                }\n            }\n            else {\n                result.partial = true;\n            }\n            if (__DEV__ &&\n                !diff.complete &&\n                !this.options.partialRefetch &&\n                !result.loading &&\n                !result.data &&\n                !result.error) {\n                logMissingFieldErrors(diff.missing);\n            }\n        }\n        if (saveAsLastResult) {\n            this.updateLastResult(result);\n        }\n        return result;\n    };\n    ObservableQuery.prototype.isDifferentFromLastResult = function (newResult) {\n        return !this.last || !(0,_wry_equality__WEBPACK_IMPORTED_MODULE_1__.equal)(this.last.result, newResult);\n    };\n    ObservableQuery.prototype.getLast = function (key, variablesMustMatch) {\n        var last = this.last;\n        if (last &&\n            last[key] &&\n            (!variablesMustMatch || (0,_wry_equality__WEBPACK_IMPORTED_MODULE_1__.equal)(last.variables, this.variables))) {\n            return last[key];\n        }\n    };\n    ObservableQuery.prototype.getLastResult = function (variablesMustMatch) {\n        return this.getLast(\"result\", variablesMustMatch);\n    };\n    ObservableQuery.prototype.getLastError = function (variablesMustMatch) {\n        return this.getLast(\"error\", variablesMustMatch);\n    };\n    ObservableQuery.prototype.resetLastResults = function () {\n        delete this.last;\n        this.isTornDown = false;\n    };\n    ObservableQuery.prototype.resetQueryStoreErrors = function () {\n        this.queryManager.resetErrors(this.queryId);\n    };\n    ObservableQuery.prototype.refetch = function (variables) {\n        var _a;\n        var reobserveOptions = {\n            pollInterval: 0,\n        };\n        var fetchPolicy = this.options.fetchPolicy;\n        if (fetchPolicy === 'cache-and-network') {\n            reobserveOptions.fetchPolicy = fetchPolicy;\n        }\n        else if (fetchPolicy === 'no-cache') {\n            reobserveOptions.fetchPolicy = 'no-cache';\n        }\n        else {\n            reobserveOptions.fetchPolicy = 'network-only';\n        }\n        if (__DEV__ && variables && hasOwnProperty.call(variables, \"variables\")) {\n            var queryDef = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_3__.getQueryDefinition)(this.options.query);\n            var vars = queryDef.variableDefinitions;\n            if (!vars || !vars.some(function (v) { return v.variable.name.value === \"variables\"; })) {\n                __DEV__ && _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant.warn(\"Called refetch(\".concat(JSON.stringify(variables), \") for query \").concat(((_a = queryDef.name) === null || _a === void 0 ? void 0 : _a.value) || JSON.stringify(queryDef), \", which does not declare a $variables variable.\\nDid you mean to call refetch(variables) instead of refetch({ variables })?\"));\n            }\n        }\n        if (variables && !(0,_wry_equality__WEBPACK_IMPORTED_MODULE_1__.equal)(this.options.variables, variables)) {\n            reobserveOptions.variables = this.options.variables = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.options.variables), variables);\n        }\n        this.queryInfo.resetLastWrite();\n        return this.reobserve(reobserveOptions, _networkStatus_js__WEBPACK_IMPORTED_MODULE_4__.NetworkStatus.refetch);\n    };\n    ObservableQuery.prototype.fetchMore = function (fetchMoreOptions) {\n        var _this = this;\n        var combinedOptions = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, (fetchMoreOptions.query ? fetchMoreOptions : (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.options), fetchMoreOptions), { variables: (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.options.variables), fetchMoreOptions.variables) }))), { fetchPolicy: \"no-cache\" });\n        var qid = this.queryManager.generateQueryId();\n        if (combinedOptions.notifyOnNetworkStatusChange) {\n            this.queryInfo.networkStatus = _networkStatus_js__WEBPACK_IMPORTED_MODULE_4__.NetworkStatus.fetchMore;\n            this.observe();\n        }\n        return this.queryManager.fetchQuery(qid, combinedOptions, _networkStatus_js__WEBPACK_IMPORTED_MODULE_4__.NetworkStatus.fetchMore).then(function (fetchMoreResult) {\n            var data = fetchMoreResult.data;\n            var updateQuery = fetchMoreOptions.updateQuery;\n            if (updateQuery) {\n                if (__DEV__ &&\n                    !warnedAboutUpdateQuery) {\n                    __DEV__ && _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant.warn(\"The updateQuery callback for fetchMore is deprecated, and will be removed\\nin the next major version of Apollo Client.\\n\\nPlease convert updateQuery functions to field policies with appropriate\\nread and merge functions, or use/adapt a helper function (such as\\nconcatPagination, offsetLimitPagination, or relayStylePagination) from\\n@apollo/client/utilities.\\n\\nThe field policy system handles pagination more effectively than a\\nhand-written updateQuery function, and you only need to define the policy\\nonce, rather than every time you call fetchMore.\");\n                    warnedAboutUpdateQuery = true;\n                }\n                _this.updateQuery(function (previous) { return updateQuery(previous, {\n                    fetchMoreResult: data,\n                    variables: combinedOptions.variables,\n                }); });\n            }\n            else {\n                _this.queryManager.cache.writeQuery({\n                    query: combinedOptions.query,\n                    variables: combinedOptions.variables,\n                    data: data,\n                });\n            }\n            return fetchMoreResult;\n        }).finally(function () {\n            _this.queryManager.stopQuery(qid);\n            _this.reobserve();\n        });\n    };\n    ObservableQuery.prototype.subscribeToMore = function (options) {\n        var _this = this;\n        var subscription = this.queryManager\n            .startGraphQLSubscription({\n            query: options.document,\n            variables: options.variables,\n            context: options.context,\n        })\n            .subscribe({\n            next: function (subscriptionData) {\n                var updateQuery = options.updateQuery;\n                if (updateQuery) {\n                    _this.updateQuery(function (previous, _a) {\n                        var variables = _a.variables;\n                        return updateQuery(previous, {\n                            subscriptionData: subscriptionData,\n                            variables: variables,\n                        });\n                    });\n                }\n            },\n            error: function (err) {\n                if (options.onError) {\n                    options.onError(err);\n                    return;\n                }\n                __DEV__ && _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant.error('Unhandled GraphQL subscription error', err);\n            },\n        });\n        this.subscriptions.add(subscription);\n        return function () {\n            if (_this.subscriptions.delete(subscription)) {\n                subscription.unsubscribe();\n            }\n        };\n    };\n    ObservableQuery.prototype.setOptions = function (newOptions) {\n        return this.reobserve(newOptions);\n    };\n    ObservableQuery.prototype.setVariables = function (variables) {\n        if ((0,_wry_equality__WEBPACK_IMPORTED_MODULE_1__.equal)(this.variables, variables)) {\n            return this.observers.size\n                ? this.result()\n                : Promise.resolve();\n        }\n        this.options.variables = variables;\n        if (!this.observers.size) {\n            return Promise.resolve();\n        }\n        return this.reobserve({\n            fetchPolicy: this.initialFetchPolicy,\n            variables: variables,\n        }, _networkStatus_js__WEBPACK_IMPORTED_MODULE_4__.NetworkStatus.setVariables);\n    };\n    ObservableQuery.prototype.updateQuery = function (mapFn) {\n        var queryManager = this.queryManager;\n        var result = queryManager.cache.diff({\n            query: this.options.query,\n            variables: this.variables,\n            returnPartialData: true,\n            optimistic: false,\n        }).result;\n        var newResult = mapFn(result, {\n            variables: this.variables,\n        });\n        if (newResult) {\n            queryManager.cache.writeQuery({\n                query: this.options.query,\n                data: newResult,\n                variables: this.variables,\n            });\n            queryManager.broadcastQueries();\n        }\n    };\n    ObservableQuery.prototype.startPolling = function (pollInterval) {\n        this.options.pollInterval = pollInterval;\n        this.updatePolling();\n    };\n    ObservableQuery.prototype.stopPolling = function () {\n        this.options.pollInterval = 0;\n        this.updatePolling();\n    };\n    ObservableQuery.prototype.fetch = function (options, newNetworkStatus) {\n        this.queryManager.setObservableQuery(this);\n        return this.queryManager.fetchQueryObservable(this.queryId, options, newNetworkStatus);\n    };\n    ObservableQuery.prototype.updatePolling = function () {\n        var _this = this;\n        if (this.queryManager.ssrMode) {\n            return;\n        }\n        var _a = this, pollingInfo = _a.pollingInfo, pollInterval = _a.options.pollInterval;\n        if (!pollInterval) {\n            if (pollingInfo) {\n                clearTimeout(pollingInfo.timeout);\n                delete this.pollingInfo;\n            }\n            return;\n        }\n        if (pollingInfo &&\n            pollingInfo.interval === pollInterval) {\n            return;\n        }\n        __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(pollInterval, 'Attempted to start a polling query without a polling interval.') : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(pollInterval, 10);\n        var info = pollingInfo || (this.pollingInfo = {});\n        info.interval = pollInterval;\n        var maybeFetch = function () {\n            if (_this.pollingInfo) {\n                if (!(0,_networkStatus_js__WEBPACK_IMPORTED_MODULE_4__.isNetworkRequestInFlight)(_this.queryInfo.networkStatus)) {\n                    _this.reobserve({\n                        fetchPolicy: \"network-only\",\n                    }, _networkStatus_js__WEBPACK_IMPORTED_MODULE_4__.NetworkStatus.poll).then(poll, poll);\n                }\n                else {\n                    poll();\n                }\n            }\n            ;\n        };\n        var poll = function () {\n            var info = _this.pollingInfo;\n            if (info) {\n                clearTimeout(info.timeout);\n                info.timeout = setTimeout(maybeFetch, info.interval);\n            }\n        };\n        poll();\n    };\n    ObservableQuery.prototype.updateLastResult = function (newResult, variables) {\n        if (variables === void 0) { variables = this.variables; }\n        this.last = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.last), { result: this.queryManager.assumeImmutableResults\n                ? newResult\n                : (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_3__.cloneDeep)(newResult), variables: variables });\n        if (!(0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_3__.isNonEmptyArray)(newResult.errors)) {\n            delete this.last.error;\n        }\n        return this.last;\n    };\n    ObservableQuery.prototype.reobserve = function (newOptions, newNetworkStatus) {\n        var _this = this;\n        this.isTornDown = false;\n        var useDisposableConcast = newNetworkStatus === _networkStatus_js__WEBPACK_IMPORTED_MODULE_4__.NetworkStatus.refetch ||\n            newNetworkStatus === _networkStatus_js__WEBPACK_IMPORTED_MODULE_4__.NetworkStatus.fetchMore ||\n            newNetworkStatus === _networkStatus_js__WEBPACK_IMPORTED_MODULE_4__.NetworkStatus.poll;\n        var oldVariables = this.options.variables;\n        var options = useDisposableConcast\n            ? (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_3__.compact)(this.options, newOptions)\n            : assign(this.options, (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_3__.compact)(newOptions));\n        if (!useDisposableConcast) {\n            this.updatePolling();\n            if (newOptions &&\n                newOptions.variables &&\n                !newOptions.fetchPolicy &&\n                !(0,_wry_equality__WEBPACK_IMPORTED_MODULE_1__.equal)(newOptions.variables, oldVariables)) {\n                options.fetchPolicy = this.initialFetchPolicy;\n                if (newNetworkStatus === void 0) {\n                    newNetworkStatus = _networkStatus_js__WEBPACK_IMPORTED_MODULE_4__.NetworkStatus.setVariables;\n                }\n            }\n        }\n        var variables = options.variables && (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, options.variables);\n        var concast = this.fetch(options, newNetworkStatus);\n        var observer = {\n            next: function (result) {\n                _this.reportResult(result, variables);\n            },\n            error: function (error) {\n                _this.reportError(error, variables);\n            },\n        };\n        if (!useDisposableConcast) {\n            if (this.concast && this.observer) {\n                this.concast.removeObserver(this.observer, true);\n            }\n            this.concast = concast;\n            this.observer = observer;\n        }\n        concast.addObserver(observer);\n        return concast.promise;\n    };\n    ObservableQuery.prototype.observe = function () {\n        this.reportResult(this.getCurrentResult(false), this.variables);\n    };\n    ObservableQuery.prototype.reportResult = function (result, variables) {\n        var lastError = this.getLastError();\n        if (lastError || this.isDifferentFromLastResult(result)) {\n            if (lastError || !result.partial || this.options.returnPartialData) {\n                this.updateLastResult(result, variables);\n            }\n            (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_3__.iterateObserversSafely)(this.observers, 'next', result);\n        }\n    };\n    ObservableQuery.prototype.reportError = function (error, variables) {\n        var errorResult = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, this.getLastResult()), { error: error, errors: error.graphQLErrors, networkStatus: _networkStatus_js__WEBPACK_IMPORTED_MODULE_4__.NetworkStatus.error, loading: false });\n        this.updateLastResult(errorResult, variables);\n        (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_3__.iterateObserversSafely)(this.observers, 'error', this.last.error = error);\n    };\n    ObservableQuery.prototype.hasObservers = function () {\n        return this.observers.size > 0;\n    };\n    ObservableQuery.prototype.tearDownQuery = function () {\n        if (this.isTornDown)\n            return;\n        if (this.concast && this.observer) {\n            this.concast.removeObserver(this.observer);\n            delete this.concast;\n            delete this.observer;\n        }\n        this.stopPolling();\n        this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });\n        this.subscriptions.clear();\n        this.queryManager.stopQuery(this.queryId);\n        this.observers.clear();\n        this.isTornDown = true;\n    };\n    return ObservableQuery;\n}(_utilities_index_js__WEBPACK_IMPORTED_MODULE_3__.Observable));\n\n(0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_3__.fixObservableSubclass)(ObservableQuery);\nfunction defaultSubscriptionObserverErrorCallback(error) {\n    __DEV__ && _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant.error('Unhandled error', error.message, error.stack);\n}\nfunction logMissingFieldErrors(missing) {\n    if (__DEV__ && missing) {\n        __DEV__ && _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant.debug(\"Missing cache result fields: \".concat(JSON.stringify(missing)), missing);\n    }\n}\nfunction applyNextFetchPolicy(options) {\n    var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a, nextFetchPolicy = options.nextFetchPolicy;\n    if (nextFetchPolicy) {\n        options.fetchPolicy = typeof nextFetchPolicy === \"function\"\n            ? nextFetchPolicy.call(options, fetchPolicy)\n            : nextFetchPolicy;\n    }\n}\n//# sourceMappingURL=ObservableQuery.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY29yZS9PYnNlcnZhYmxlUXVlcnkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBNEM7QUFDYztBQUNwQjtBQUN1QztBQUN1RztBQUNwTDtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVEQUF1RDtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwyRUFBc0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQSxZQUFZLGtFQUFtQjtBQUMvQixxQkFBcUIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGlCQUFpQixTQUFTLDJFQUF3QiwrQ0FBK0M7QUFDMUk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixvREFBSyxnQkFBZ0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QyxvRUFBcUI7QUFDbEU7QUFDQTtBQUNBLDJDQUEyQyxrRUFBbUI7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLG9EQUFLO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msb0RBQUs7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQix1RUFBa0I7QUFDN0M7QUFDQSxtREFBbUQsK0NBQStDO0FBQ2xHLDJCQUEyQix1RUFBYyw2UkFBNlIsV0FBVztBQUNqVjtBQUNBO0FBQ0EsMEJBQTBCLG9EQUFLO0FBQy9CLGtFQUFrRSwrQ0FBUSxDQUFDLCtDQUFRLEdBQUc7QUFDdEY7QUFDQTtBQUNBLGdEQUFnRCxvRUFBcUI7QUFDckU7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLCtDQUFRLENBQUMsK0NBQVEsR0FBRywrQ0FBK0MsK0NBQVEsQ0FBQywrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsc0NBQXNDLFdBQVcsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLHdEQUF3RCxPQUFPLHlCQUF5QjtBQUMzUjtBQUNBO0FBQ0EsMkNBQTJDLHNFQUF1QjtBQUNsRTtBQUNBO0FBQ0Esa0VBQWtFLHNFQUF1QjtBQUN6RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHVFQUFjO0FBQzdDO0FBQ0E7QUFDQSx3REFBd0Q7QUFDeEQ7QUFDQTtBQUNBLGlCQUFpQixJQUFJO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIscUJBQXFCO0FBQ3JCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsd0VBQWU7QUFDMUMsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxvREFBSztBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxFQUFFLHlFQUEwQjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHNFQUFTLG1GQUFtRixzRUFBUztBQUN2SCx3REFBd0Q7QUFDeEQ7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDJFQUF3QjtBQUM3QztBQUNBO0FBQ0EscUJBQXFCLEVBQUUsaUVBQWtCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEMsb0JBQW9CLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxnQkFBZ0I7QUFDeEQ7QUFDQSxrQkFBa0IsOERBQVMsbUNBQW1DO0FBQzlELGFBQWEsb0VBQWU7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0Qsb0VBQXFCO0FBQzdFLGlDQUFpQyxzRUFBdUI7QUFDeEQsaUNBQWlDLGlFQUFrQjtBQUNuRDtBQUNBO0FBQ0EsY0FBYyw0REFBTztBQUNyQixtQ0FBbUMsNERBQU87QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixvREFBSztBQUN0QjtBQUNBO0FBQ0EsdUNBQXVDLHlFQUEwQjtBQUNqRTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsK0NBQVEsR0FBRztBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJFQUFzQjtBQUNsQztBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLDJCQUEyQiwwREFBMEQsa0VBQW1CLGtCQUFrQjtBQUN4SztBQUNBLFFBQVEsMkVBQXNCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELDJCQUEyQjtBQUMvRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsMkRBQVU7QUFDZTtBQUMzQiwwRUFBcUI7QUFDckI7QUFDQSxlQUFlLHdFQUFlO0FBQzlCO0FBQ087QUFDUDtBQUNBLG1CQUFtQix3RUFBZTtBQUNsQztBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9jb3JlL09ic2VydmFibGVRdWVyeS5qcz8xNjJiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGludmFyaWFudCB9IGZyb20gXCIuLi91dGlsaXRpZXMvZ2xvYmFscy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZXF1YWwgfSBmcm9tICdAd3J5L2VxdWFsaXR5JztcbmltcG9ydCB7IE5ldHdvcmtTdGF0dXMsIGlzTmV0d29ya1JlcXVlc3RJbkZsaWdodCB9IGZyb20gXCIuL25ldHdvcmtTdGF0dXMuanNcIjtcbmltcG9ydCB7IGNvbXBhY3QsIGNsb25lRGVlcCwgZ2V0T3BlcmF0aW9uRGVmaW5pdGlvbiwgT2JzZXJ2YWJsZSwgaXRlcmF0ZU9ic2VydmVyc1NhZmVseSwgaXNOb25FbXB0eUFycmF5LCBmaXhPYnNlcnZhYmxlU3ViY2xhc3MsIGdldFF1ZXJ5RGVmaW5pdGlvbiwgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2luZGV4LmpzXCI7XG52YXIgYXNzaWduID0gT2JqZWN0LmFzc2lnbiwgaGFzT3duUHJvcGVydHkgPSBPYmplY3QuaGFzT3duUHJvcGVydHk7XG52YXIgd2FybmVkQWJvdXRVcGRhdGVRdWVyeSA9IGZhbHNlO1xudmFyIE9ic2VydmFibGVRdWVyeSA9IChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKE9ic2VydmFibGVRdWVyeSwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBPYnNlcnZhYmxlUXVlcnkoX2EpIHtcbiAgICAgICAgdmFyIHF1ZXJ5TWFuYWdlciA9IF9hLnF1ZXJ5TWFuYWdlciwgcXVlcnlJbmZvID0gX2EucXVlcnlJbmZvLCBvcHRpb25zID0gX2Eub3B0aW9ucztcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZnVuY3Rpb24gKG9ic2VydmVyKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciBzdWJPYnNlcnZlciA9IG9ic2VydmVyLl9zdWJzY3JpcHRpb24uX29ic2VydmVyO1xuICAgICAgICAgICAgICAgIGlmIChzdWJPYnNlcnZlciAmJiAhc3ViT2JzZXJ2ZXIuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgc3ViT2JzZXJ2ZXIuZXJyb3IgPSBkZWZhdWx0U3Vic2NyaXB0aW9uT2JzZXJ2ZXJFcnJvckNhbGxiYWNrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChfYSkgeyB9XG4gICAgICAgICAgICB2YXIgZmlyc3QgPSAhX3RoaXMub2JzZXJ2ZXJzLnNpemU7XG4gICAgICAgICAgICBfdGhpcy5vYnNlcnZlcnMuYWRkKG9ic2VydmVyKTtcbiAgICAgICAgICAgIHZhciBsYXN0ID0gX3RoaXMubGFzdDtcbiAgICAgICAgICAgIGlmIChsYXN0ICYmIGxhc3QuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5lcnJvciAmJiBvYnNlcnZlci5lcnJvcihsYXN0LmVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGxhc3QgJiYgbGFzdC5yZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0ICYmIG9ic2VydmVyLm5leHQobGFzdC5yZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZpcnN0KSB7XG4gICAgICAgICAgICAgICAgX3RoaXMucmVvYnNlcnZlKCkuY2F0Y2goZnVuY3Rpb24gKCkgeyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKF90aGlzLm9ic2VydmVycy5kZWxldGUob2JzZXJ2ZXIpICYmICFfdGhpcy5vYnNlcnZlcnMuc2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy50ZWFyRG93blF1ZXJ5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkgfHwgdGhpcztcbiAgICAgICAgX3RoaXMub2JzZXJ2ZXJzID0gbmV3IFNldCgpO1xuICAgICAgICBfdGhpcy5zdWJzY3JpcHRpb25zID0gbmV3IFNldCgpO1xuICAgICAgICBfdGhpcy5pc1Rvcm5Eb3duID0gZmFsc2U7XG4gICAgICAgIF90aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICBfdGhpcy5xdWVyeUlkID0gcXVlcnlJbmZvLnF1ZXJ5SWQgfHwgcXVlcnlNYW5hZ2VyLmdlbmVyYXRlUXVlcnlJZCgpO1xuICAgICAgICB2YXIgb3BEZWYgPSBnZXRPcGVyYXRpb25EZWZpbml0aW9uKG9wdGlvbnMucXVlcnkpO1xuICAgICAgICBfdGhpcy5xdWVyeU5hbWUgPSBvcERlZiAmJiBvcERlZi5uYW1lICYmIG9wRGVmLm5hbWUudmFsdWU7XG4gICAgICAgIF90aGlzLmluaXRpYWxGZXRjaFBvbGljeSA9IG9wdGlvbnMuZmV0Y2hQb2xpY3kgfHwgXCJjYWNoZS1maXJzdFwiO1xuICAgICAgICBfdGhpcy5xdWVyeU1hbmFnZXIgPSBxdWVyeU1hbmFnZXI7XG4gICAgICAgIF90aGlzLnF1ZXJ5SW5mbyA9IHF1ZXJ5SW5mbztcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JzZXJ2YWJsZVF1ZXJ5LnByb3RvdHlwZSwgXCJ2YXJpYWJsZXNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMudmFyaWFibGVzO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JzZXJ2YWJsZVF1ZXJ5LnByb3RvdHlwZS5yZXN1bHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB2YXIgb2JzZXJ2ZXIgPSB7XG4gICAgICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLm9ic2VydmVycy5kZWxldGUob2JzZXJ2ZXIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIV90aGlzLm9ic2VydmVycy5zaXplKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5xdWVyeU1hbmFnZXIucmVtb3ZlUXVlcnkoX3RoaXMucXVlcnlJZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogcmVqZWN0LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciBzdWJzY3JpcHRpb24gPSBfdGhpcy5zdWJzY3JpYmUob2JzZXJ2ZXIpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIE9ic2VydmFibGVRdWVyeS5wcm90b3R5cGUuZ2V0Q3VycmVudFJlc3VsdCA9IGZ1bmN0aW9uIChzYXZlQXNMYXN0UmVzdWx0KSB7XG4gICAgICAgIGlmIChzYXZlQXNMYXN0UmVzdWx0ID09PSB2b2lkIDApIHsgc2F2ZUFzTGFzdFJlc3VsdCA9IHRydWU7IH1cbiAgICAgICAgdmFyIGxhc3RSZXN1bHQgPSB0aGlzLmdldExhc3RSZXN1bHQodHJ1ZSk7XG4gICAgICAgIHZhciBuZXR3b3JrU3RhdHVzID0gdGhpcy5xdWVyeUluZm8ubmV0d29ya1N0YXR1cyB8fFxuICAgICAgICAgICAgKGxhc3RSZXN1bHQgJiYgbGFzdFJlc3VsdC5uZXR3b3JrU3RhdHVzKSB8fFxuICAgICAgICAgICAgTmV0d29ya1N0YXR1cy5yZWFkeTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBsYXN0UmVzdWx0KSwgeyBsb2FkaW5nOiBpc05ldHdvcmtSZXF1ZXN0SW5GbGlnaHQobmV0d29ya1N0YXR1cyksIG5ldHdvcmtTdGF0dXM6IG5ldHdvcmtTdGF0dXMgfSk7XG4gICAgICAgIHZhciBfYSA9IHRoaXMub3B0aW9ucy5mZXRjaFBvbGljeSwgZmV0Y2hQb2xpY3kgPSBfYSA9PT0gdm9pZCAwID8gXCJjYWNoZS1maXJzdFwiIDogX2E7XG4gICAgICAgIGlmIChmZXRjaFBvbGljeSA9PT0gJ25ldHdvcmstb25seScgfHxcbiAgICAgICAgICAgIGZldGNoUG9saWN5ID09PSAnbm8tY2FjaGUnIHx8XG4gICAgICAgICAgICBmZXRjaFBvbGljeSA9PT0gJ3N0YW5kYnknIHx8XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5TWFuYWdlci50cmFuc2Zvcm0odGhpcy5vcHRpb25zLnF1ZXJ5KS5oYXNGb3JjZWRSZXNvbHZlcnMpIHtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBkaWZmID0gdGhpcy5xdWVyeUluZm8uZ2V0RGlmZigpO1xuICAgICAgICAgICAgaWYgKGRpZmYuY29tcGxldGUgfHwgdGhpcy5vcHRpb25zLnJldHVyblBhcnRpYWxEYXRhKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmRhdGEgPSBkaWZmLnJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcXVhbChyZXN1bHQuZGF0YSwge30pKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmRhdGEgPSB2b2lkIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGlmZi5jb21wbGV0ZSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSByZXN1bHQucGFydGlhbDtcbiAgICAgICAgICAgICAgICBpZiAoZGlmZi5jb21wbGV0ZSAmJlxuICAgICAgICAgICAgICAgICAgICByZXN1bHQubmV0d29ya1N0YXR1cyA9PT0gTmV0d29ya1N0YXR1cy5sb2FkaW5nICYmXG4gICAgICAgICAgICAgICAgICAgIChmZXRjaFBvbGljeSA9PT0gJ2NhY2hlLWZpcnN0JyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hQb2xpY3kgPT09ICdjYWNoZS1vbmx5JykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm5ldHdvcmtTdGF0dXMgPSBOZXR3b3JrU3RhdHVzLnJlYWR5O1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wYXJ0aWFsID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChfX0RFVl9fICYmXG4gICAgICAgICAgICAgICAgIWRpZmYuY29tcGxldGUgJiZcbiAgICAgICAgICAgICAgICAhdGhpcy5vcHRpb25zLnBhcnRpYWxSZWZldGNoICYmXG4gICAgICAgICAgICAgICAgIXJlc3VsdC5sb2FkaW5nICYmXG4gICAgICAgICAgICAgICAgIXJlc3VsdC5kYXRhICYmXG4gICAgICAgICAgICAgICAgIXJlc3VsdC5lcnJvcikge1xuICAgICAgICAgICAgICAgIGxvZ01pc3NpbmdGaWVsZEVycm9ycyhkaWZmLm1pc3NpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzYXZlQXNMYXN0UmVzdWx0KSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxhc3RSZXN1bHQocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZVF1ZXJ5LnByb3RvdHlwZS5pc0RpZmZlcmVudEZyb21MYXN0UmVzdWx0ID0gZnVuY3Rpb24gKG5ld1Jlc3VsdCkge1xuICAgICAgICByZXR1cm4gIXRoaXMubGFzdCB8fCAhZXF1YWwodGhpcy5sYXN0LnJlc3VsdCwgbmV3UmVzdWx0KTtcbiAgICB9O1xuICAgIE9ic2VydmFibGVRdWVyeS5wcm90b3R5cGUuZ2V0TGFzdCA9IGZ1bmN0aW9uIChrZXksIHZhcmlhYmxlc011c3RNYXRjaCkge1xuICAgICAgICB2YXIgbGFzdCA9IHRoaXMubGFzdDtcbiAgICAgICAgaWYgKGxhc3QgJiZcbiAgICAgICAgICAgIGxhc3Rba2V5XSAmJlxuICAgICAgICAgICAgKCF2YXJpYWJsZXNNdXN0TWF0Y2ggfHwgZXF1YWwobGFzdC52YXJpYWJsZXMsIHRoaXMudmFyaWFibGVzKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBsYXN0W2tleV07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIE9ic2VydmFibGVRdWVyeS5wcm90b3R5cGUuZ2V0TGFzdFJlc3VsdCA9IGZ1bmN0aW9uICh2YXJpYWJsZXNNdXN0TWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGFzdChcInJlc3VsdFwiLCB2YXJpYWJsZXNNdXN0TWF0Y2gpO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZVF1ZXJ5LnByb3RvdHlwZS5nZXRMYXN0RXJyb3IgPSBmdW5jdGlvbiAodmFyaWFibGVzTXVzdE1hdGNoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldExhc3QoXCJlcnJvclwiLCB2YXJpYWJsZXNNdXN0TWF0Y2gpO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZVF1ZXJ5LnByb3RvdHlwZS5yZXNldExhc3RSZXN1bHRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBkZWxldGUgdGhpcy5sYXN0O1xuICAgICAgICB0aGlzLmlzVG9ybkRvd24gPSBmYWxzZTtcbiAgICB9O1xuICAgIE9ic2VydmFibGVRdWVyeS5wcm90b3R5cGUucmVzZXRRdWVyeVN0b3JlRXJyb3JzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnF1ZXJ5TWFuYWdlci5yZXNldEVycm9ycyh0aGlzLnF1ZXJ5SWQpO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZVF1ZXJ5LnByb3RvdHlwZS5yZWZldGNoID0gZnVuY3Rpb24gKHZhcmlhYmxlcykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciByZW9ic2VydmVPcHRpb25zID0ge1xuICAgICAgICAgICAgcG9sbEludGVydmFsOiAwLFxuICAgICAgICB9O1xuICAgICAgICB2YXIgZmV0Y2hQb2xpY3kgPSB0aGlzLm9wdGlvbnMuZmV0Y2hQb2xpY3k7XG4gICAgICAgIGlmIChmZXRjaFBvbGljeSA9PT0gJ2NhY2hlLWFuZC1uZXR3b3JrJykge1xuICAgICAgICAgICAgcmVvYnNlcnZlT3B0aW9ucy5mZXRjaFBvbGljeSA9IGZldGNoUG9saWN5O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGZldGNoUG9saWN5ID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAgICAgICByZW9ic2VydmVPcHRpb25zLmZldGNoUG9saWN5ID0gJ25vLWNhY2hlJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlb2JzZXJ2ZU9wdGlvbnMuZmV0Y2hQb2xpY3kgPSAnbmV0d29yay1vbmx5JztcbiAgICAgICAgfVxuICAgICAgICBpZiAoX19ERVZfXyAmJiB2YXJpYWJsZXMgJiYgaGFzT3duUHJvcGVydHkuY2FsbCh2YXJpYWJsZXMsIFwidmFyaWFibGVzXCIpKSB7XG4gICAgICAgICAgICB2YXIgcXVlcnlEZWYgPSBnZXRRdWVyeURlZmluaXRpb24odGhpcy5vcHRpb25zLnF1ZXJ5KTtcbiAgICAgICAgICAgIHZhciB2YXJzID0gcXVlcnlEZWYudmFyaWFibGVEZWZpbml0aW9ucztcbiAgICAgICAgICAgIGlmICghdmFycyB8fCAhdmFycy5zb21lKGZ1bmN0aW9uICh2KSB7IHJldHVybiB2LnZhcmlhYmxlLm5hbWUudmFsdWUgPT09IFwidmFyaWFibGVzXCI7IH0pKSB7XG4gICAgICAgICAgICAgICAgX19ERVZfXyAmJiBpbnZhcmlhbnQud2FybihcIkNhbGxlZCByZWZldGNoKFwiLmNvbmNhdChKU09OLnN0cmluZ2lmeSh2YXJpYWJsZXMpLCBcIikgZm9yIHF1ZXJ5IFwiKS5jb25jYXQoKChfYSA9IHF1ZXJ5RGVmLm5hbWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS52YWx1ZSkgfHwgSlNPTi5zdHJpbmdpZnkocXVlcnlEZWYpLCBcIiwgd2hpY2ggZG9lcyBub3QgZGVjbGFyZSBhICR2YXJpYWJsZXMgdmFyaWFibGUuXFxuRGlkIHlvdSBtZWFuIHRvIGNhbGwgcmVmZXRjaCh2YXJpYWJsZXMpIGluc3RlYWQgb2YgcmVmZXRjaCh7IHZhcmlhYmxlcyB9KT9cIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh2YXJpYWJsZXMgJiYgIWVxdWFsKHRoaXMub3B0aW9ucy52YXJpYWJsZXMsIHZhcmlhYmxlcykpIHtcbiAgICAgICAgICAgIHJlb2JzZXJ2ZU9wdGlvbnMudmFyaWFibGVzID0gdGhpcy5vcHRpb25zLnZhcmlhYmxlcyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCB0aGlzLm9wdGlvbnMudmFyaWFibGVzKSwgdmFyaWFibGVzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnF1ZXJ5SW5mby5yZXNldExhc3RXcml0ZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5yZW9ic2VydmUocmVvYnNlcnZlT3B0aW9ucywgTmV0d29ya1N0YXR1cy5yZWZldGNoKTtcbiAgICB9O1xuICAgIE9ic2VydmFibGVRdWVyeS5wcm90b3R5cGUuZmV0Y2hNb3JlID0gZnVuY3Rpb24gKGZldGNoTW9yZU9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGNvbWJpbmVkT3B0aW9ucyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCAoZmV0Y2hNb3JlT3B0aW9ucy5xdWVyeSA/IGZldGNoTW9yZU9wdGlvbnMgOiBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdGhpcy5vcHRpb25zKSwgZmV0Y2hNb3JlT3B0aW9ucyksIHsgdmFyaWFibGVzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdGhpcy5vcHRpb25zLnZhcmlhYmxlcyksIGZldGNoTW9yZU9wdGlvbnMudmFyaWFibGVzKSB9KSkpLCB7IGZldGNoUG9saWN5OiBcIm5vLWNhY2hlXCIgfSk7XG4gICAgICAgIHZhciBxaWQgPSB0aGlzLnF1ZXJ5TWFuYWdlci5nZW5lcmF0ZVF1ZXJ5SWQoKTtcbiAgICAgICAgaWYgKGNvbWJpbmVkT3B0aW9ucy5ub3RpZnlPbk5ldHdvcmtTdGF0dXNDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlJbmZvLm5ldHdvcmtTdGF0dXMgPSBOZXR3b3JrU3RhdHVzLmZldGNoTW9yZTtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5TWFuYWdlci5mZXRjaFF1ZXJ5KHFpZCwgY29tYmluZWRPcHRpb25zLCBOZXR3b3JrU3RhdHVzLmZldGNoTW9yZSkudGhlbihmdW5jdGlvbiAoZmV0Y2hNb3JlUmVzdWx0KSB7XG4gICAgICAgICAgICB2YXIgZGF0YSA9IGZldGNoTW9yZVJlc3VsdC5kYXRhO1xuICAgICAgICAgICAgdmFyIHVwZGF0ZVF1ZXJ5ID0gZmV0Y2hNb3JlT3B0aW9ucy51cGRhdGVRdWVyeTtcbiAgICAgICAgICAgIGlmICh1cGRhdGVRdWVyeSkge1xuICAgICAgICAgICAgICAgIGlmIChfX0RFVl9fICYmXG4gICAgICAgICAgICAgICAgICAgICF3YXJuZWRBYm91dFVwZGF0ZVF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIF9fREVWX18gJiYgaW52YXJpYW50Lndhcm4oXCJUaGUgdXBkYXRlUXVlcnkgY2FsbGJhY2sgZm9yIGZldGNoTW9yZSBpcyBkZXByZWNhdGVkLCBhbmQgd2lsbCBiZSByZW1vdmVkXFxuaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiBvZiBBcG9sbG8gQ2xpZW50LlxcblxcblBsZWFzZSBjb252ZXJ0IHVwZGF0ZVF1ZXJ5IGZ1bmN0aW9ucyB0byBmaWVsZCBwb2xpY2llcyB3aXRoIGFwcHJvcHJpYXRlXFxucmVhZCBhbmQgbWVyZ2UgZnVuY3Rpb25zLCBvciB1c2UvYWRhcHQgYSBoZWxwZXIgZnVuY3Rpb24gKHN1Y2ggYXNcXG5jb25jYXRQYWdpbmF0aW9uLCBvZmZzZXRMaW1pdFBhZ2luYXRpb24sIG9yIHJlbGF5U3R5bGVQYWdpbmF0aW9uKSBmcm9tXFxuQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzLlxcblxcblRoZSBmaWVsZCBwb2xpY3kgc3lzdGVtIGhhbmRsZXMgcGFnaW5hdGlvbiBtb3JlIGVmZmVjdGl2ZWx5IHRoYW4gYVxcbmhhbmQtd3JpdHRlbiB1cGRhdGVRdWVyeSBmdW5jdGlvbiwgYW5kIHlvdSBvbmx5IG5lZWQgdG8gZGVmaW5lIHRoZSBwb2xpY3lcXG5vbmNlLCByYXRoZXIgdGhhbiBldmVyeSB0aW1lIHlvdSBjYWxsIGZldGNoTW9yZS5cIik7XG4gICAgICAgICAgICAgICAgICAgIHdhcm5lZEFib3V0VXBkYXRlUXVlcnkgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBfdGhpcy51cGRhdGVRdWVyeShmdW5jdGlvbiAocHJldmlvdXMpIHsgcmV0dXJuIHVwZGF0ZVF1ZXJ5KHByZXZpb3VzLCB7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoTW9yZVJlc3VsdDogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiBjb21iaW5lZE9wdGlvbnMudmFyaWFibGVzLFxuICAgICAgICAgICAgICAgIH0pOyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIF90aGlzLnF1ZXJ5TWFuYWdlci5jYWNoZS53cml0ZVF1ZXJ5KHtcbiAgICAgICAgICAgICAgICAgICAgcXVlcnk6IGNvbWJpbmVkT3B0aW9ucy5xdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiBjb21iaW5lZE9wdGlvbnMudmFyaWFibGVzLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZldGNoTW9yZVJlc3VsdDtcbiAgICAgICAgfSkuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpcy5xdWVyeU1hbmFnZXIuc3RvcFF1ZXJ5KHFpZCk7XG4gICAgICAgICAgICBfdGhpcy5yZW9ic2VydmUoKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlUXVlcnkucHJvdG90eXBlLnN1YnNjcmliZVRvTW9yZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBzdWJzY3JpcHRpb24gPSB0aGlzLnF1ZXJ5TWFuYWdlclxuICAgICAgICAgICAgLnN0YXJ0R3JhcGhRTFN1YnNjcmlwdGlvbih7XG4gICAgICAgICAgICBxdWVyeTogb3B0aW9ucy5kb2N1bWVudCxcbiAgICAgICAgICAgIHZhcmlhYmxlczogb3B0aW9ucy52YXJpYWJsZXMsXG4gICAgICAgICAgICBjb250ZXh0OiBvcHRpb25zLmNvbnRleHQsXG4gICAgICAgIH0pXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uIChzdWJzY3JpcHRpb25EYXRhKSB7XG4gICAgICAgICAgICAgICAgdmFyIHVwZGF0ZVF1ZXJ5ID0gb3B0aW9ucy51cGRhdGVRdWVyeTtcbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlUXVlcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMudXBkYXRlUXVlcnkoZnVuY3Rpb24gKHByZXZpb3VzLCBfYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhcmlhYmxlcyA9IF9hLnZhcmlhYmxlcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cGRhdGVRdWVyeShwcmV2aW91cywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbkRhdGE6IHN1YnNjcmlwdGlvbkRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMub25FcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm9uRXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBfX0RFVl9fICYmIGludmFyaWFudC5lcnJvcignVW5oYW5kbGVkIEdyYXBoUUwgc3Vic2NyaXB0aW9uIGVycm9yJywgZXJyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHN1YnNjcmlwdGlvbik7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoX3RoaXMuc3Vic2NyaXB0aW9ucy5kZWxldGUoc3Vic2NyaXB0aW9uKSkge1xuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZVF1ZXJ5LnByb3RvdHlwZS5zZXRPcHRpb25zID0gZnVuY3Rpb24gKG5ld09wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVvYnNlcnZlKG5ld09wdGlvbnMpO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZVF1ZXJ5LnByb3RvdHlwZS5zZXRWYXJpYWJsZXMgPSBmdW5jdGlvbiAodmFyaWFibGVzKSB7XG4gICAgICAgIGlmIChlcXVhbCh0aGlzLnZhcmlhYmxlcywgdmFyaWFibGVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub2JzZXJ2ZXJzLnNpemVcbiAgICAgICAgICAgICAgICA/IHRoaXMucmVzdWx0KClcbiAgICAgICAgICAgICAgICA6IFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3B0aW9ucy52YXJpYWJsZXMgPSB2YXJpYWJsZXM7XG4gICAgICAgIGlmICghdGhpcy5vYnNlcnZlcnMuc2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlb2JzZXJ2ZSh7XG4gICAgICAgICAgICBmZXRjaFBvbGljeTogdGhpcy5pbml0aWFsRmV0Y2hQb2xpY3ksXG4gICAgICAgICAgICB2YXJpYWJsZXM6IHZhcmlhYmxlcyxcbiAgICAgICAgfSwgTmV0d29ya1N0YXR1cy5zZXRWYXJpYWJsZXMpO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZVF1ZXJ5LnByb3RvdHlwZS51cGRhdGVRdWVyeSA9IGZ1bmN0aW9uIChtYXBGbikge1xuICAgICAgICB2YXIgcXVlcnlNYW5hZ2VyID0gdGhpcy5xdWVyeU1hbmFnZXI7XG4gICAgICAgIHZhciByZXN1bHQgPSBxdWVyeU1hbmFnZXIuY2FjaGUuZGlmZih7XG4gICAgICAgICAgICBxdWVyeTogdGhpcy5vcHRpb25zLnF1ZXJ5LFxuICAgICAgICAgICAgdmFyaWFibGVzOiB0aGlzLnZhcmlhYmxlcyxcbiAgICAgICAgICAgIHJldHVyblBhcnRpYWxEYXRhOiB0cnVlLFxuICAgICAgICAgICAgb3B0aW1pc3RpYzogZmFsc2UsXG4gICAgICAgIH0pLnJlc3VsdDtcbiAgICAgICAgdmFyIG5ld1Jlc3VsdCA9IG1hcEZuKHJlc3VsdCwge1xuICAgICAgICAgICAgdmFyaWFibGVzOiB0aGlzLnZhcmlhYmxlcyxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChuZXdSZXN1bHQpIHtcbiAgICAgICAgICAgIHF1ZXJ5TWFuYWdlci5jYWNoZS53cml0ZVF1ZXJ5KHtcbiAgICAgICAgICAgICAgICBxdWVyeTogdGhpcy5vcHRpb25zLnF1ZXJ5LFxuICAgICAgICAgICAgICAgIGRhdGE6IG5ld1Jlc3VsdCxcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHRoaXMudmFyaWFibGVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBxdWVyeU1hbmFnZXIuYnJvYWRjYXN0UXVlcmllcygpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlUXVlcnkucHJvdG90eXBlLnN0YXJ0UG9sbGluZyA9IGZ1bmN0aW9uIChwb2xsSW50ZXJ2YWwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnBvbGxJbnRlcnZhbCA9IHBvbGxJbnRlcnZhbDtcbiAgICAgICAgdGhpcy51cGRhdGVQb2xsaW5nKCk7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlUXVlcnkucHJvdG90eXBlLnN0b3BQb2xsaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMucG9sbEludGVydmFsID0gMDtcbiAgICAgICAgdGhpcy51cGRhdGVQb2xsaW5nKCk7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlUXVlcnkucHJvdG90eXBlLmZldGNoID0gZnVuY3Rpb24gKG9wdGlvbnMsIG5ld05ldHdvcmtTdGF0dXMpIHtcbiAgICAgICAgdGhpcy5xdWVyeU1hbmFnZXIuc2V0T2JzZXJ2YWJsZVF1ZXJ5KHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5xdWVyeU1hbmFnZXIuZmV0Y2hRdWVyeU9ic2VydmFibGUodGhpcy5xdWVyeUlkLCBvcHRpb25zLCBuZXdOZXR3b3JrU3RhdHVzKTtcbiAgICB9O1xuICAgIE9ic2VydmFibGVRdWVyeS5wcm90b3R5cGUudXBkYXRlUG9sbGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHRoaXMucXVlcnlNYW5hZ2VyLnNzck1vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX2EgPSB0aGlzLCBwb2xsaW5nSW5mbyA9IF9hLnBvbGxpbmdJbmZvLCBwb2xsSW50ZXJ2YWwgPSBfYS5vcHRpb25zLnBvbGxJbnRlcnZhbDtcbiAgICAgICAgaWYgKCFwb2xsSW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIGlmIChwb2xsaW5nSW5mbykge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChwb2xsaW5nSW5mby50aW1lb3V0KTtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5wb2xsaW5nSW5mbztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9sbGluZ0luZm8gJiZcbiAgICAgICAgICAgIHBvbGxpbmdJbmZvLmludGVydmFsID09PSBwb2xsSW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBfX0RFVl9fID8gaW52YXJpYW50KHBvbGxJbnRlcnZhbCwgJ0F0dGVtcHRlZCB0byBzdGFydCBhIHBvbGxpbmcgcXVlcnkgd2l0aG91dCBhIHBvbGxpbmcgaW50ZXJ2YWwuJykgOiBpbnZhcmlhbnQocG9sbEludGVydmFsLCAxMCk7XG4gICAgICAgIHZhciBpbmZvID0gcG9sbGluZ0luZm8gfHwgKHRoaXMucG9sbGluZ0luZm8gPSB7fSk7XG4gICAgICAgIGluZm8uaW50ZXJ2YWwgPSBwb2xsSW50ZXJ2YWw7XG4gICAgICAgIHZhciBtYXliZUZldGNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKF90aGlzLnBvbGxpbmdJbmZvKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc05ldHdvcmtSZXF1ZXN0SW5GbGlnaHQoX3RoaXMucXVlcnlJbmZvLm5ldHdvcmtTdGF0dXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLnJlb2JzZXJ2ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmZXRjaFBvbGljeTogXCJuZXR3b3JrLW9ubHlcIixcbiAgICAgICAgICAgICAgICAgICAgfSwgTmV0d29ya1N0YXR1cy5wb2xsKS50aGVuKHBvbGwsIHBvbGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcG9sbCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHBvbGwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgaW5mbyA9IF90aGlzLnBvbGxpbmdJbmZvO1xuICAgICAgICAgICAgaWYgKGluZm8pIHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoaW5mby50aW1lb3V0KTtcbiAgICAgICAgICAgICAgICBpbmZvLnRpbWVvdXQgPSBzZXRUaW1lb3V0KG1heWJlRmV0Y2gsIGluZm8uaW50ZXJ2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBwb2xsKCk7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlUXVlcnkucHJvdG90eXBlLnVwZGF0ZUxhc3RSZXN1bHQgPSBmdW5jdGlvbiAobmV3UmVzdWx0LCB2YXJpYWJsZXMpIHtcbiAgICAgICAgaWYgKHZhcmlhYmxlcyA9PT0gdm9pZCAwKSB7IHZhcmlhYmxlcyA9IHRoaXMudmFyaWFibGVzOyB9XG4gICAgICAgIHRoaXMubGFzdCA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCB0aGlzLmxhc3QpLCB7IHJlc3VsdDogdGhpcy5xdWVyeU1hbmFnZXIuYXNzdW1lSW1tdXRhYmxlUmVzdWx0c1xuICAgICAgICAgICAgICAgID8gbmV3UmVzdWx0XG4gICAgICAgICAgICAgICAgOiBjbG9uZURlZXAobmV3UmVzdWx0KSwgdmFyaWFibGVzOiB2YXJpYWJsZXMgfSk7XG4gICAgICAgIGlmICghaXNOb25FbXB0eUFycmF5KG5ld1Jlc3VsdC5lcnJvcnMpKSB7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5sYXN0LmVycm9yO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmxhc3Q7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlUXVlcnkucHJvdG90eXBlLnJlb2JzZXJ2ZSA9IGZ1bmN0aW9uIChuZXdPcHRpb25zLCBuZXdOZXR3b3JrU3RhdHVzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHRoaXMuaXNUb3JuRG93biA9IGZhbHNlO1xuICAgICAgICB2YXIgdXNlRGlzcG9zYWJsZUNvbmNhc3QgPSBuZXdOZXR3b3JrU3RhdHVzID09PSBOZXR3b3JrU3RhdHVzLnJlZmV0Y2ggfHxcbiAgICAgICAgICAgIG5ld05ldHdvcmtTdGF0dXMgPT09IE5ldHdvcmtTdGF0dXMuZmV0Y2hNb3JlIHx8XG4gICAgICAgICAgICBuZXdOZXR3b3JrU3RhdHVzID09PSBOZXR3b3JrU3RhdHVzLnBvbGw7XG4gICAgICAgIHZhciBvbGRWYXJpYWJsZXMgPSB0aGlzLm9wdGlvbnMudmFyaWFibGVzO1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHVzZURpc3Bvc2FibGVDb25jYXN0XG4gICAgICAgICAgICA/IGNvbXBhY3QodGhpcy5vcHRpb25zLCBuZXdPcHRpb25zKVxuICAgICAgICAgICAgOiBhc3NpZ24odGhpcy5vcHRpb25zLCBjb21wYWN0KG5ld09wdGlvbnMpKTtcbiAgICAgICAgaWYgKCF1c2VEaXNwb3NhYmxlQ29uY2FzdCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQb2xsaW5nKCk7XG4gICAgICAgICAgICBpZiAobmV3T3B0aW9ucyAmJlxuICAgICAgICAgICAgICAgIG5ld09wdGlvbnMudmFyaWFibGVzICYmXG4gICAgICAgICAgICAgICAgIW5ld09wdGlvbnMuZmV0Y2hQb2xpY3kgJiZcbiAgICAgICAgICAgICAgICAhZXF1YWwobmV3T3B0aW9ucy52YXJpYWJsZXMsIG9sZFZhcmlhYmxlcykpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmZldGNoUG9saWN5ID0gdGhpcy5pbml0aWFsRmV0Y2hQb2xpY3k7XG4gICAgICAgICAgICAgICAgaWYgKG5ld05ldHdvcmtTdGF0dXMgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdOZXR3b3JrU3RhdHVzID0gTmV0d29ya1N0YXR1cy5zZXRWYXJpYWJsZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciB2YXJpYWJsZXMgPSBvcHRpb25zLnZhcmlhYmxlcyAmJiBfX2Fzc2lnbih7fSwgb3B0aW9ucy52YXJpYWJsZXMpO1xuICAgICAgICB2YXIgY29uY2FzdCA9IHRoaXMuZmV0Y2gob3B0aW9ucywgbmV3TmV0d29ya1N0YXR1cyk7XG4gICAgICAgIHZhciBvYnNlcnZlciA9IHtcbiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5yZXBvcnRSZXN1bHQocmVzdWx0LCB2YXJpYWJsZXMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5yZXBvcnRFcnJvcihlcnJvciwgdmFyaWFibGVzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGlmICghdXNlRGlzcG9zYWJsZUNvbmNhc3QpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbmNhc3QgJiYgdGhpcy5vYnNlcnZlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uY2FzdC5yZW1vdmVPYnNlcnZlcih0aGlzLm9ic2VydmVyLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY29uY2FzdCA9IGNvbmNhc3Q7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmVyID0gb2JzZXJ2ZXI7XG4gICAgICAgIH1cbiAgICAgICAgY29uY2FzdC5hZGRPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgICAgIHJldHVybiBjb25jYXN0LnByb21pc2U7XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlUXVlcnkucHJvdG90eXBlLm9ic2VydmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucmVwb3J0UmVzdWx0KHRoaXMuZ2V0Q3VycmVudFJlc3VsdChmYWxzZSksIHRoaXMudmFyaWFibGVzKTtcbiAgICB9O1xuICAgIE9ic2VydmFibGVRdWVyeS5wcm90b3R5cGUucmVwb3J0UmVzdWx0ID0gZnVuY3Rpb24gKHJlc3VsdCwgdmFyaWFibGVzKSB7XG4gICAgICAgIHZhciBsYXN0RXJyb3IgPSB0aGlzLmdldExhc3RFcnJvcigpO1xuICAgICAgICBpZiAobGFzdEVycm9yIHx8IHRoaXMuaXNEaWZmZXJlbnRGcm9tTGFzdFJlc3VsdChyZXN1bHQpKSB7XG4gICAgICAgICAgICBpZiAobGFzdEVycm9yIHx8ICFyZXN1bHQucGFydGlhbCB8fCB0aGlzLm9wdGlvbnMucmV0dXJuUGFydGlhbERhdGEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxhc3RSZXN1bHQocmVzdWx0LCB2YXJpYWJsZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXRlcmF0ZU9ic2VydmVyc1NhZmVseSh0aGlzLm9ic2VydmVycywgJ25leHQnLCByZXN1bHQpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBPYnNlcnZhYmxlUXVlcnkucHJvdG90eXBlLnJlcG9ydEVycm9yID0gZnVuY3Rpb24gKGVycm9yLCB2YXJpYWJsZXMpIHtcbiAgICAgICAgdmFyIGVycm9yUmVzdWx0ID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHRoaXMuZ2V0TGFzdFJlc3VsdCgpKSwgeyBlcnJvcjogZXJyb3IsIGVycm9yczogZXJyb3IuZ3JhcGhRTEVycm9ycywgbmV0d29ya1N0YXR1czogTmV0d29ya1N0YXR1cy5lcnJvciwgbG9hZGluZzogZmFsc2UgfSk7XG4gICAgICAgIHRoaXMudXBkYXRlTGFzdFJlc3VsdChlcnJvclJlc3VsdCwgdmFyaWFibGVzKTtcbiAgICAgICAgaXRlcmF0ZU9ic2VydmVyc1NhZmVseSh0aGlzLm9ic2VydmVycywgJ2Vycm9yJywgdGhpcy5sYXN0LmVycm9yID0gZXJyb3IpO1xuICAgIH07XG4gICAgT2JzZXJ2YWJsZVF1ZXJ5LnByb3RvdHlwZS5oYXNPYnNlcnZlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9ic2VydmVycy5zaXplID4gMDtcbiAgICB9O1xuICAgIE9ic2VydmFibGVRdWVyeS5wcm90b3R5cGUudGVhckRvd25RdWVyeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNUb3JuRG93bilcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHRoaXMuY29uY2FzdCAmJiB0aGlzLm9ic2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmNhc3QucmVtb3ZlT2JzZXJ2ZXIodGhpcy5vYnNlcnZlcik7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5jb25jYXN0O1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMub2JzZXJ2ZXI7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdG9wUG9sbGluZygpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIudW5zdWJzY3JpYmUoKTsgfSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5jbGVhcigpO1xuICAgICAgICB0aGlzLnF1ZXJ5TWFuYWdlci5zdG9wUXVlcnkodGhpcy5xdWVyeUlkKTtcbiAgICAgICAgdGhpcy5vYnNlcnZlcnMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5pc1Rvcm5Eb3duID0gdHJ1ZTtcbiAgICB9O1xuICAgIHJldHVybiBPYnNlcnZhYmxlUXVlcnk7XG59KE9ic2VydmFibGUpKTtcbmV4cG9ydCB7IE9ic2VydmFibGVRdWVyeSB9O1xuZml4T2JzZXJ2YWJsZVN1YmNsYXNzKE9ic2VydmFibGVRdWVyeSk7XG5mdW5jdGlvbiBkZWZhdWx0U3Vic2NyaXB0aW9uT2JzZXJ2ZXJFcnJvckNhbGxiYWNrKGVycm9yKSB7XG4gICAgX19ERVZfXyAmJiBpbnZhcmlhbnQuZXJyb3IoJ1VuaGFuZGxlZCBlcnJvcicsIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBsb2dNaXNzaW5nRmllbGRFcnJvcnMobWlzc2luZykge1xuICAgIGlmIChfX0RFVl9fICYmIG1pc3NpbmcpIHtcbiAgICAgICAgX19ERVZfXyAmJiBpbnZhcmlhbnQuZGVidWcoXCJNaXNzaW5nIGNhY2hlIHJlc3VsdCBmaWVsZHM6IFwiLmNvbmNhdChKU09OLnN0cmluZ2lmeShtaXNzaW5nKSksIG1pc3NpbmcpO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBhcHBseU5leHRGZXRjaFBvbGljeShvcHRpb25zKSB7XG4gICAgdmFyIF9hID0gb3B0aW9ucy5mZXRjaFBvbGljeSwgZmV0Y2hQb2xpY3kgPSBfYSA9PT0gdm9pZCAwID8gXCJjYWNoZS1maXJzdFwiIDogX2EsIG5leHRGZXRjaFBvbGljeSA9IG9wdGlvbnMubmV4dEZldGNoUG9saWN5O1xuICAgIGlmIChuZXh0RmV0Y2hQb2xpY3kpIHtcbiAgICAgICAgb3B0aW9ucy5mZXRjaFBvbGljeSA9IHR5cGVvZiBuZXh0RmV0Y2hQb2xpY3kgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgPyBuZXh0RmV0Y2hQb2xpY3kuY2FsbChvcHRpb25zLCBmZXRjaFBvbGljeSlcbiAgICAgICAgICAgIDogbmV4dEZldGNoUG9saWN5O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU9ic2VydmFibGVRdWVyeS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/core/ObservableQuery.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/core/QueryInfo.js":
/*!*******************************************************!*\
  !*** ./node_modules/@apollo/client/core/QueryInfo.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"QueryInfo\": function() { return /* binding */ QueryInfo; },\n/* harmony export */   \"shouldWriteResult\": function() { return /* binding */ shouldWriteResult; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _wry_equality__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wry/equality */ \"./node_modules/@apollo/client/node_modules/@wry/equality/lib/equality.esm.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n/* harmony import */ var _networkStatus_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./networkStatus.js */ \"./node_modules/@apollo/client/core/networkStatus.js\");\n\n\n\n\n;\nvar destructiveMethodCounts = new (_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.canUseWeakMap ? WeakMap : Map)();\nfunction wrapDestructiveCacheMethod(cache, methodName) {\n    var original = cache[methodName];\n    if (typeof original === \"function\") {\n        cache[methodName] = function () {\n            destructiveMethodCounts.set(cache, (destructiveMethodCounts.get(cache) + 1) % 1e15);\n            return original.apply(this, arguments);\n        };\n    }\n}\nfunction cancelNotifyTimeout(info) {\n    if (info[\"notifyTimeout\"]) {\n        clearTimeout(info[\"notifyTimeout\"]);\n        info[\"notifyTimeout\"] = void 0;\n    }\n}\nvar QueryInfo = (function () {\n    function QueryInfo(queryManager, queryId) {\n        if (queryId === void 0) { queryId = queryManager.generateQueryId(); }\n        this.queryId = queryId;\n        this.listeners = new Set();\n        this.document = null;\n        this.lastRequestId = 1;\n        this.subscriptions = new Set();\n        this.stopped = false;\n        this.dirty = false;\n        this.observableQuery = null;\n        var cache = this.cache = queryManager.cache;\n        if (!destructiveMethodCounts.has(cache)) {\n            destructiveMethodCounts.set(cache, 0);\n            wrapDestructiveCacheMethod(cache, \"evict\");\n            wrapDestructiveCacheMethod(cache, \"modify\");\n            wrapDestructiveCacheMethod(cache, \"reset\");\n        }\n    }\n    QueryInfo.prototype.init = function (query) {\n        var networkStatus = query.networkStatus || _networkStatus_js__WEBPACK_IMPORTED_MODULE_2__.NetworkStatus.loading;\n        if (this.variables &&\n            this.networkStatus !== _networkStatus_js__WEBPACK_IMPORTED_MODULE_2__.NetworkStatus.loading &&\n            !(0,_wry_equality__WEBPACK_IMPORTED_MODULE_0__.equal)(this.variables, query.variables)) {\n            networkStatus = _networkStatus_js__WEBPACK_IMPORTED_MODULE_2__.NetworkStatus.setVariables;\n        }\n        if (!(0,_wry_equality__WEBPACK_IMPORTED_MODULE_0__.equal)(query.variables, this.variables)) {\n            this.lastDiff = void 0;\n        }\n        Object.assign(this, {\n            document: query.document,\n            variables: query.variables,\n            networkError: null,\n            graphQLErrors: this.graphQLErrors || [],\n            networkStatus: networkStatus,\n        });\n        if (query.observableQuery) {\n            this.setObservableQuery(query.observableQuery);\n        }\n        if (query.lastRequestId) {\n            this.lastRequestId = query.lastRequestId;\n        }\n        return this;\n    };\n    QueryInfo.prototype.reset = function () {\n        cancelNotifyTimeout(this);\n        this.lastDiff = void 0;\n        this.dirty = false;\n    };\n    QueryInfo.prototype.getDiff = function (variables) {\n        if (variables === void 0) { variables = this.variables; }\n        var options = this.getDiffOptions(variables);\n        if (this.lastDiff && (0,_wry_equality__WEBPACK_IMPORTED_MODULE_0__.equal)(options, this.lastDiff.options)) {\n            return this.lastDiff.diff;\n        }\n        this.updateWatch(this.variables = variables);\n        var oq = this.observableQuery;\n        if (oq && oq.options.fetchPolicy === \"no-cache\") {\n            return { complete: false };\n        }\n        var diff = this.cache.diff(options);\n        this.updateLastDiff(diff, options);\n        return diff;\n    };\n    QueryInfo.prototype.updateLastDiff = function (diff, options) {\n        this.lastDiff = diff ? {\n            diff: diff,\n            options: options || this.getDiffOptions(),\n        } : void 0;\n    };\n    QueryInfo.prototype.getDiffOptions = function (variables) {\n        var _a;\n        if (variables === void 0) { variables = this.variables; }\n        return {\n            query: this.document,\n            variables: variables,\n            returnPartialData: true,\n            optimistic: true,\n            canonizeResults: (_a = this.observableQuery) === null || _a === void 0 ? void 0 : _a.options.canonizeResults,\n        };\n    };\n    QueryInfo.prototype.setDiff = function (diff) {\n        var _this = this;\n        var oldDiff = this.lastDiff && this.lastDiff.diff;\n        this.updateLastDiff(diff);\n        if (!this.dirty &&\n            !(0,_wry_equality__WEBPACK_IMPORTED_MODULE_0__.equal)(oldDiff && oldDiff.result, diff && diff.result)) {\n            this.dirty = true;\n            if (!this.notifyTimeout) {\n                this.notifyTimeout = setTimeout(function () { return _this.notify(); }, 0);\n            }\n        }\n    };\n    QueryInfo.prototype.setObservableQuery = function (oq) {\n        var _this = this;\n        if (oq === this.observableQuery)\n            return;\n        if (this.oqListener) {\n            this.listeners.delete(this.oqListener);\n        }\n        this.observableQuery = oq;\n        if (oq) {\n            oq[\"queryInfo\"] = this;\n            this.listeners.add(this.oqListener = function () {\n                if (_this.getDiff().fromOptimisticTransaction) {\n                    oq[\"observe\"]();\n                }\n                else {\n                    oq.reobserve();\n                }\n            });\n        }\n        else {\n            delete this.oqListener;\n        }\n    };\n    QueryInfo.prototype.notify = function () {\n        var _this = this;\n        cancelNotifyTimeout(this);\n        if (this.shouldNotify()) {\n            this.listeners.forEach(function (listener) { return listener(_this); });\n        }\n        this.dirty = false;\n    };\n    QueryInfo.prototype.shouldNotify = function () {\n        if (!this.dirty || !this.listeners.size) {\n            return false;\n        }\n        if ((0,_networkStatus_js__WEBPACK_IMPORTED_MODULE_2__.isNetworkRequestInFlight)(this.networkStatus) &&\n            this.observableQuery) {\n            var fetchPolicy = this.observableQuery.options.fetchPolicy;\n            if (fetchPolicy !== \"cache-only\" &&\n                fetchPolicy !== \"cache-and-network\") {\n                return false;\n            }\n        }\n        return true;\n    };\n    QueryInfo.prototype.stop = function () {\n        if (!this.stopped) {\n            this.stopped = true;\n            this.reset();\n            this.cancel();\n            this.cancel = QueryInfo.prototype.cancel;\n            this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });\n            var oq = this.observableQuery;\n            if (oq)\n                oq.stopPolling();\n        }\n    };\n    QueryInfo.prototype.cancel = function () { };\n    QueryInfo.prototype.updateWatch = function (variables) {\n        var _this = this;\n        if (variables === void 0) { variables = this.variables; }\n        var oq = this.observableQuery;\n        if (oq && oq.options.fetchPolicy === \"no-cache\") {\n            return;\n        }\n        var watchOptions = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, this.getDiffOptions(variables)), { watcher: this, callback: function (diff) { return _this.setDiff(diff); } });\n        if (!this.lastWatch ||\n            !(0,_wry_equality__WEBPACK_IMPORTED_MODULE_0__.equal)(watchOptions, this.lastWatch)) {\n            this.cancel();\n            this.cancel = this.cache.watch(this.lastWatch = watchOptions);\n        }\n    };\n    QueryInfo.prototype.resetLastWrite = function () {\n        this.lastWrite = void 0;\n    };\n    QueryInfo.prototype.shouldWrite = function (result, variables) {\n        var lastWrite = this.lastWrite;\n        return !(lastWrite &&\n            lastWrite.dmCount === destructiveMethodCounts.get(this.cache) &&\n            (0,_wry_equality__WEBPACK_IMPORTED_MODULE_0__.equal)(variables, lastWrite.variables) &&\n            (0,_wry_equality__WEBPACK_IMPORTED_MODULE_0__.equal)(result.data, lastWrite.result.data));\n    };\n    QueryInfo.prototype.markResult = function (result, options, cacheWriteBehavior) {\n        var _this = this;\n        this.graphQLErrors = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.isNonEmptyArray)(result.errors) ? result.errors : [];\n        this.reset();\n        if (options.fetchPolicy === 'no-cache') {\n            this.updateLastDiff({ result: result.data, complete: true }, this.getDiffOptions(options.variables));\n        }\n        else if (cacheWriteBehavior !== 0) {\n            if (shouldWriteResult(result, options.errorPolicy)) {\n                this.cache.performTransaction(function (cache) {\n                    if (_this.shouldWrite(result, options.variables)) {\n                        cache.writeQuery({\n                            query: _this.document,\n                            data: result.data,\n                            variables: options.variables,\n                            overwrite: cacheWriteBehavior === 1,\n                        });\n                        _this.lastWrite = {\n                            result: result,\n                            variables: options.variables,\n                            dmCount: destructiveMethodCounts.get(_this.cache),\n                        };\n                    }\n                    else {\n                        if (_this.lastDiff &&\n                            _this.lastDiff.diff.complete) {\n                            result.data = _this.lastDiff.diff.result;\n                            return;\n                        }\n                    }\n                    var diffOptions = _this.getDiffOptions(options.variables);\n                    var diff = cache.diff(diffOptions);\n                    if (!_this.stopped) {\n                        _this.updateWatch(options.variables);\n                    }\n                    _this.updateLastDiff(diff, diffOptions);\n                    if (diff.complete) {\n                        result.data = diff.result;\n                    }\n                });\n            }\n            else {\n                this.lastWrite = void 0;\n            }\n        }\n    };\n    QueryInfo.prototype.markReady = function () {\n        this.networkError = null;\n        return this.networkStatus = _networkStatus_js__WEBPACK_IMPORTED_MODULE_2__.NetworkStatus.ready;\n    };\n    QueryInfo.prototype.markError = function (error) {\n        this.networkStatus = _networkStatus_js__WEBPACK_IMPORTED_MODULE_2__.NetworkStatus.error;\n        this.lastWrite = void 0;\n        this.reset();\n        if (error.graphQLErrors) {\n            this.graphQLErrors = error.graphQLErrors;\n        }\n        if (error.networkError) {\n            this.networkError = error.networkError;\n        }\n        return error;\n    };\n    return QueryInfo;\n}());\n\nfunction shouldWriteResult(result, errorPolicy) {\n    if (errorPolicy === void 0) { errorPolicy = \"none\"; }\n    var ignoreErrors = errorPolicy === \"ignore\" ||\n        errorPolicy === \"all\";\n    var writeWithErrors = !(0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.graphQLResultHasError)(result);\n    if (!writeWithErrors && ignoreErrors && result.data) {\n        writeWithErrors = true;\n    }\n    return writeWithErrors;\n}\n//# sourceMappingURL=QueryInfo.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY29yZS9RdWVyeUluZm8uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWlDO0FBQ0s7QUFDeUQ7QUFDakI7QUFDOUU7QUFDQSxtQ0FBbUMsOERBQWE7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1ELG9FQUFxQjtBQUN4RTtBQUNBLG1DQUFtQyxvRUFBcUI7QUFDeEQsYUFBYSxvREFBSztBQUNsQiw0QkFBNEIseUVBQTBCO0FBQ3REO0FBQ0EsYUFBYSxvREFBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQSw2QkFBNkIsb0RBQUs7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvREFBSztBQUNsQjtBQUNBO0FBQ0EsOERBQThELHdCQUF3QjtBQUN0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCx5QkFBeUI7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLDJFQUF3QjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3REFBd0QsMkJBQTJCO0FBQ25GO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLHFDQUFxQywyQ0FBMkMsK0JBQStCO0FBQzlKO0FBQ0EsYUFBYSxvREFBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxvREFBSztBQUNqQixZQUFZLG9EQUFLO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixvRUFBZTtBQUM1QztBQUNBO0FBQ0Esa0NBQWtDLHFDQUFxQztBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLGtFQUFtQjtBQUN2RDtBQUNBO0FBQ0EsNkJBQTZCLGtFQUFtQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNvQjtBQUNkO0FBQ1Asa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQSwyQkFBMkIsMEVBQXFCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY29yZS9RdWVyeUluZm8uanM/ZWMyMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgZXF1YWwgfSBmcm9tIFwiQHdyeS9lcXVhbGl0eVwiO1xuaW1wb3J0IHsgaXNOb25FbXB0eUFycmF5LCBncmFwaFFMUmVzdWx0SGFzRXJyb3IsIGNhblVzZVdlYWtNYXAsIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgTmV0d29ya1N0YXR1cywgaXNOZXR3b3JrUmVxdWVzdEluRmxpZ2h0LCB9IGZyb20gXCIuL25ldHdvcmtTdGF0dXMuanNcIjtcbjtcbnZhciBkZXN0cnVjdGl2ZU1ldGhvZENvdW50cyA9IG5ldyAoY2FuVXNlV2Vha01hcCA/IFdlYWtNYXAgOiBNYXApKCk7XG5mdW5jdGlvbiB3cmFwRGVzdHJ1Y3RpdmVDYWNoZU1ldGhvZChjYWNoZSwgbWV0aG9kTmFtZSkge1xuICAgIHZhciBvcmlnaW5hbCA9IGNhY2hlW21ldGhvZE5hbWVdO1xuICAgIGlmICh0eXBlb2Ygb3JpZ2luYWwgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjYWNoZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRlc3RydWN0aXZlTWV0aG9kQ291bnRzLnNldChjYWNoZSwgKGRlc3RydWN0aXZlTWV0aG9kQ291bnRzLmdldChjYWNoZSkgKyAxKSAlIDFlMTUpO1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgfVxufVxuZnVuY3Rpb24gY2FuY2VsTm90aWZ5VGltZW91dChpbmZvKSB7XG4gICAgaWYgKGluZm9bXCJub3RpZnlUaW1lb3V0XCJdKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChpbmZvW1wibm90aWZ5VGltZW91dFwiXSk7XG4gICAgICAgIGluZm9bXCJub3RpZnlUaW1lb3V0XCJdID0gdm9pZCAwO1xuICAgIH1cbn1cbnZhciBRdWVyeUluZm8gPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFF1ZXJ5SW5mbyhxdWVyeU1hbmFnZXIsIHF1ZXJ5SWQpIHtcbiAgICAgICAgaWYgKHF1ZXJ5SWQgPT09IHZvaWQgMCkgeyBxdWVyeUlkID0gcXVlcnlNYW5hZ2VyLmdlbmVyYXRlUXVlcnlJZCgpOyB9XG4gICAgICAgIHRoaXMucXVlcnlJZCA9IHF1ZXJ5SWQ7XG4gICAgICAgIHRoaXMubGlzdGVuZXJzID0gbmV3IFNldCgpO1xuICAgICAgICB0aGlzLmRvY3VtZW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5sYXN0UmVxdWVzdElkID0gMTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zID0gbmV3IFNldCgpO1xuICAgICAgICB0aGlzLnN0b3BwZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9ic2VydmFibGVRdWVyeSA9IG51bGw7XG4gICAgICAgIHZhciBjYWNoZSA9IHRoaXMuY2FjaGUgPSBxdWVyeU1hbmFnZXIuY2FjaGU7XG4gICAgICAgIGlmICghZGVzdHJ1Y3RpdmVNZXRob2RDb3VudHMuaGFzKGNhY2hlKSkge1xuICAgICAgICAgICAgZGVzdHJ1Y3RpdmVNZXRob2RDb3VudHMuc2V0KGNhY2hlLCAwKTtcbiAgICAgICAgICAgIHdyYXBEZXN0cnVjdGl2ZUNhY2hlTWV0aG9kKGNhY2hlLCBcImV2aWN0XCIpO1xuICAgICAgICAgICAgd3JhcERlc3RydWN0aXZlQ2FjaGVNZXRob2QoY2FjaGUsIFwibW9kaWZ5XCIpO1xuICAgICAgICAgICAgd3JhcERlc3RydWN0aXZlQ2FjaGVNZXRob2QoY2FjaGUsIFwicmVzZXRcIik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgUXVlcnlJbmZvLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKHF1ZXJ5KSB7XG4gICAgICAgIHZhciBuZXR3b3JrU3RhdHVzID0gcXVlcnkubmV0d29ya1N0YXR1cyB8fCBOZXR3b3JrU3RhdHVzLmxvYWRpbmc7XG4gICAgICAgIGlmICh0aGlzLnZhcmlhYmxlcyAmJlxuICAgICAgICAgICAgdGhpcy5uZXR3b3JrU3RhdHVzICE9PSBOZXR3b3JrU3RhdHVzLmxvYWRpbmcgJiZcbiAgICAgICAgICAgICFlcXVhbCh0aGlzLnZhcmlhYmxlcywgcXVlcnkudmFyaWFibGVzKSkge1xuICAgICAgICAgICAgbmV0d29ya1N0YXR1cyA9IE5ldHdvcmtTdGF0dXMuc2V0VmFyaWFibGVzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZXF1YWwocXVlcnkudmFyaWFibGVzLCB0aGlzLnZhcmlhYmxlcykpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdERpZmYgPSB2b2lkIDA7XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCB7XG4gICAgICAgICAgICBkb2N1bWVudDogcXVlcnkuZG9jdW1lbnQsXG4gICAgICAgICAgICB2YXJpYWJsZXM6IHF1ZXJ5LnZhcmlhYmxlcyxcbiAgICAgICAgICAgIG5ldHdvcmtFcnJvcjogbnVsbCxcbiAgICAgICAgICAgIGdyYXBoUUxFcnJvcnM6IHRoaXMuZ3JhcGhRTEVycm9ycyB8fCBbXSxcbiAgICAgICAgICAgIG5ldHdvcmtTdGF0dXM6IG5ldHdvcmtTdGF0dXMsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocXVlcnkub2JzZXJ2YWJsZVF1ZXJ5KSB7XG4gICAgICAgICAgICB0aGlzLnNldE9ic2VydmFibGVRdWVyeShxdWVyeS5vYnNlcnZhYmxlUXVlcnkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChxdWVyeS5sYXN0UmVxdWVzdElkKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RSZXF1ZXN0SWQgPSBxdWVyeS5sYXN0UmVxdWVzdElkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgUXVlcnlJbmZvLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FuY2VsTm90aWZ5VGltZW91dCh0aGlzKTtcbiAgICAgICAgdGhpcy5sYXN0RGlmZiA9IHZvaWQgMDtcbiAgICAgICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xuICAgIH07XG4gICAgUXVlcnlJbmZvLnByb3RvdHlwZS5nZXREaWZmID0gZnVuY3Rpb24gKHZhcmlhYmxlcykge1xuICAgICAgICBpZiAodmFyaWFibGVzID09PSB2b2lkIDApIHsgdmFyaWFibGVzID0gdGhpcy52YXJpYWJsZXM7IH1cbiAgICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLmdldERpZmZPcHRpb25zKHZhcmlhYmxlcyk7XG4gICAgICAgIGlmICh0aGlzLmxhc3REaWZmICYmIGVxdWFsKG9wdGlvbnMsIHRoaXMubGFzdERpZmYub3B0aW9ucykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxhc3REaWZmLmRpZmY7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVXYXRjaCh0aGlzLnZhcmlhYmxlcyA9IHZhcmlhYmxlcyk7XG4gICAgICAgIHZhciBvcSA9IHRoaXMub2JzZXJ2YWJsZVF1ZXJ5O1xuICAgICAgICBpZiAob3EgJiYgb3Eub3B0aW9ucy5mZXRjaFBvbGljeSA9PT0gXCJuby1jYWNoZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4geyBjb21wbGV0ZTogZmFsc2UgfTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGlmZiA9IHRoaXMuY2FjaGUuZGlmZihvcHRpb25zKTtcbiAgICAgICAgdGhpcy51cGRhdGVMYXN0RGlmZihkaWZmLCBvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIGRpZmY7XG4gICAgfTtcbiAgICBRdWVyeUluZm8ucHJvdG90eXBlLnVwZGF0ZUxhc3REaWZmID0gZnVuY3Rpb24gKGRpZmYsIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5sYXN0RGlmZiA9IGRpZmYgPyB7XG4gICAgICAgICAgICBkaWZmOiBkaWZmLFxuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9ucyB8fCB0aGlzLmdldERpZmZPcHRpb25zKCksXG4gICAgICAgIH0gOiB2b2lkIDA7XG4gICAgfTtcbiAgICBRdWVyeUluZm8ucHJvdG90eXBlLmdldERpZmZPcHRpb25zID0gZnVuY3Rpb24gKHZhcmlhYmxlcykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICh2YXJpYWJsZXMgPT09IHZvaWQgMCkgeyB2YXJpYWJsZXMgPSB0aGlzLnZhcmlhYmxlczsgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcXVlcnk6IHRoaXMuZG9jdW1lbnQsXG4gICAgICAgICAgICB2YXJpYWJsZXM6IHZhcmlhYmxlcyxcbiAgICAgICAgICAgIHJldHVyblBhcnRpYWxEYXRhOiB0cnVlLFxuICAgICAgICAgICAgb3B0aW1pc3RpYzogdHJ1ZSxcbiAgICAgICAgICAgIGNhbm9uaXplUmVzdWx0czogKF9hID0gdGhpcy5vYnNlcnZhYmxlUXVlcnkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5vcHRpb25zLmNhbm9uaXplUmVzdWx0cyxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIFF1ZXJ5SW5mby5wcm90b3R5cGUuc2V0RGlmZiA9IGZ1bmN0aW9uIChkaWZmKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBvbGREaWZmID0gdGhpcy5sYXN0RGlmZiAmJiB0aGlzLmxhc3REaWZmLmRpZmY7XG4gICAgICAgIHRoaXMudXBkYXRlTGFzdERpZmYoZGlmZik7XG4gICAgICAgIGlmICghdGhpcy5kaXJ0eSAmJlxuICAgICAgICAgICAgIWVxdWFsKG9sZERpZmYgJiYgb2xkRGlmZi5yZXN1bHQsIGRpZmYgJiYgZGlmZi5yZXN1bHQpKSB7XG4gICAgICAgICAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub3RpZnlUaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiBfdGhpcy5ub3RpZnkoKTsgfSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFF1ZXJ5SW5mby5wcm90b3R5cGUuc2V0T2JzZXJ2YWJsZVF1ZXJ5ID0gZnVuY3Rpb24gKG9xKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmIChvcSA9PT0gdGhpcy5vYnNlcnZhYmxlUXVlcnkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0aGlzLm9xTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzLmRlbGV0ZSh0aGlzLm9xTGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub2JzZXJ2YWJsZVF1ZXJ5ID0gb3E7XG4gICAgICAgIGlmIChvcSkge1xuICAgICAgICAgICAgb3FbXCJxdWVyeUluZm9cIl0gPSB0aGlzO1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMuYWRkKHRoaXMub3FMaXN0ZW5lciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMuZ2V0RGlmZigpLmZyb21PcHRpbWlzdGljVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgb3FbXCJvYnNlcnZlXCJdKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvcS5yZW9ic2VydmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLm9xTGlzdGVuZXI7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFF1ZXJ5SW5mby5wcm90b3R5cGUubm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBjYW5jZWxOb3RpZnlUaW1lb3V0KHRoaXMpO1xuICAgICAgICBpZiAodGhpcy5zaG91bGROb3RpZnkoKSkge1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXIpIHsgcmV0dXJuIGxpc3RlbmVyKF90aGlzKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xuICAgIH07XG4gICAgUXVlcnlJbmZvLnByb3RvdHlwZS5zaG91bGROb3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5kaXJ0eSB8fCAhdGhpcy5saXN0ZW5lcnMuc2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc05ldHdvcmtSZXF1ZXN0SW5GbGlnaHQodGhpcy5uZXR3b3JrU3RhdHVzKSAmJlxuICAgICAgICAgICAgdGhpcy5vYnNlcnZhYmxlUXVlcnkpIHtcbiAgICAgICAgICAgIHZhciBmZXRjaFBvbGljeSA9IHRoaXMub2JzZXJ2YWJsZVF1ZXJ5Lm9wdGlvbnMuZmV0Y2hQb2xpY3k7XG4gICAgICAgICAgICBpZiAoZmV0Y2hQb2xpY3kgIT09IFwiY2FjaGUtb25seVwiICYmXG4gICAgICAgICAgICAgICAgZmV0Y2hQb2xpY3kgIT09IFwiY2FjaGUtYW5kLW5ldHdvcmtcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIFF1ZXJ5SW5mby5wcm90b3R5cGUuc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnN0b3BwZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcHBlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbCgpO1xuICAgICAgICAgICAgdGhpcy5jYW5jZWwgPSBRdWVyeUluZm8ucHJvdG90eXBlLmNhbmNlbDtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi51bnN1YnNjcmliZSgpOyB9KTtcbiAgICAgICAgICAgIHZhciBvcSA9IHRoaXMub2JzZXJ2YWJsZVF1ZXJ5O1xuICAgICAgICAgICAgaWYgKG9xKVxuICAgICAgICAgICAgICAgIG9xLnN0b3BQb2xsaW5nKCk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFF1ZXJ5SW5mby5wcm90b3R5cGUuY2FuY2VsID0gZnVuY3Rpb24gKCkgeyB9O1xuICAgIFF1ZXJ5SW5mby5wcm90b3R5cGUudXBkYXRlV2F0Y2ggPSBmdW5jdGlvbiAodmFyaWFibGVzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICh2YXJpYWJsZXMgPT09IHZvaWQgMCkgeyB2YXJpYWJsZXMgPSB0aGlzLnZhcmlhYmxlczsgfVxuICAgICAgICB2YXIgb3EgPSB0aGlzLm9ic2VydmFibGVRdWVyeTtcbiAgICAgICAgaWYgKG9xICYmIG9xLm9wdGlvbnMuZmV0Y2hQb2xpY3kgPT09IFwibm8tY2FjaGVcIikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciB3YXRjaE9wdGlvbnMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdGhpcy5nZXREaWZmT3B0aW9ucyh2YXJpYWJsZXMpKSwgeyB3YXRjaGVyOiB0aGlzLCBjYWxsYmFjazogZnVuY3Rpb24gKGRpZmYpIHsgcmV0dXJuIF90aGlzLnNldERpZmYoZGlmZik7IH0gfSk7XG4gICAgICAgIGlmICghdGhpcy5sYXN0V2F0Y2ggfHxcbiAgICAgICAgICAgICFlcXVhbCh3YXRjaE9wdGlvbnMsIHRoaXMubGFzdFdhdGNoKSkge1xuICAgICAgICAgICAgdGhpcy5jYW5jZWwoKTtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsID0gdGhpcy5jYWNoZS53YXRjaCh0aGlzLmxhc3RXYXRjaCA9IHdhdGNoT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFF1ZXJ5SW5mby5wcm90b3R5cGUucmVzZXRMYXN0V3JpdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMubGFzdFdyaXRlID0gdm9pZCAwO1xuICAgIH07XG4gICAgUXVlcnlJbmZvLnByb3RvdHlwZS5zaG91bGRXcml0ZSA9IGZ1bmN0aW9uIChyZXN1bHQsIHZhcmlhYmxlcykge1xuICAgICAgICB2YXIgbGFzdFdyaXRlID0gdGhpcy5sYXN0V3JpdGU7XG4gICAgICAgIHJldHVybiAhKGxhc3RXcml0ZSAmJlxuICAgICAgICAgICAgbGFzdFdyaXRlLmRtQ291bnQgPT09IGRlc3RydWN0aXZlTWV0aG9kQ291bnRzLmdldCh0aGlzLmNhY2hlKSAmJlxuICAgICAgICAgICAgZXF1YWwodmFyaWFibGVzLCBsYXN0V3JpdGUudmFyaWFibGVzKSAmJlxuICAgICAgICAgICAgZXF1YWwocmVzdWx0LmRhdGEsIGxhc3RXcml0ZS5yZXN1bHQuZGF0YSkpO1xuICAgIH07XG4gICAgUXVlcnlJbmZvLnByb3RvdHlwZS5tYXJrUmVzdWx0ID0gZnVuY3Rpb24gKHJlc3VsdCwgb3B0aW9ucywgY2FjaGVXcml0ZUJlaGF2aW9yKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHRoaXMuZ3JhcGhRTEVycm9ycyA9IGlzTm9uRW1wdHlBcnJheShyZXN1bHQuZXJyb3JzKSA/IHJlc3VsdC5lcnJvcnMgOiBbXTtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICBpZiAob3B0aW9ucy5mZXRjaFBvbGljeSA9PT0gJ25vLWNhY2hlJykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMYXN0RGlmZih7IHJlc3VsdDogcmVzdWx0LmRhdGEsIGNvbXBsZXRlOiB0cnVlIH0sIHRoaXMuZ2V0RGlmZk9wdGlvbnMob3B0aW9ucy52YXJpYWJsZXMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjYWNoZVdyaXRlQmVoYXZpb3IgIT09IDApIHtcbiAgICAgICAgICAgIGlmIChzaG91bGRXcml0ZVJlc3VsdChyZXN1bHQsIG9wdGlvbnMuZXJyb3JQb2xpY3kpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZS5wZXJmb3JtVHJhbnNhY3Rpb24oZnVuY3Rpb24gKGNhY2hlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfdGhpcy5zaG91bGRXcml0ZShyZXN1bHQsIG9wdGlvbnMudmFyaWFibGVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUud3JpdGVRdWVyeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IF90aGlzLmRvY3VtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHJlc3VsdC5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogb3B0aW9ucy52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcndyaXRlOiBjYWNoZVdyaXRlQmVoYXZpb3IgPT09IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLmxhc3RXcml0ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ6IHJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IG9wdGlvbnMudmFyaWFibGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtQ291bnQ6IGRlc3RydWN0aXZlTWV0aG9kQ291bnRzLmdldChfdGhpcy5jYWNoZSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF90aGlzLmxhc3REaWZmICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMubGFzdERpZmYuZGlmZi5jb21wbGV0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5kYXRhID0gX3RoaXMubGFzdERpZmYuZGlmZi5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBkaWZmT3B0aW9ucyA9IF90aGlzLmdldERpZmZPcHRpb25zKG9wdGlvbnMudmFyaWFibGVzKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpZmYgPSBjYWNoZS5kaWZmKGRpZmZPcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFfdGhpcy5zdG9wcGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy51cGRhdGVXYXRjaChvcHRpb25zLnZhcmlhYmxlcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX3RoaXMudXBkYXRlTGFzdERpZmYoZGlmZiwgZGlmZk9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGlmZi5jb21wbGV0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmRhdGEgPSBkaWZmLnJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0V3JpdGUgPSB2b2lkIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFF1ZXJ5SW5mby5wcm90b3R5cGUubWFya1JlYWR5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLm5ldHdvcmtFcnJvciA9IG51bGw7XG4gICAgICAgIHJldHVybiB0aGlzLm5ldHdvcmtTdGF0dXMgPSBOZXR3b3JrU3RhdHVzLnJlYWR5O1xuICAgIH07XG4gICAgUXVlcnlJbmZvLnByb3RvdHlwZS5tYXJrRXJyb3IgPSBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5uZXR3b3JrU3RhdHVzID0gTmV0d29ya1N0YXR1cy5lcnJvcjtcbiAgICAgICAgdGhpcy5sYXN0V3JpdGUgPSB2b2lkIDA7XG4gICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JhcGhRTEVycm9ycyA9IGVycm9yLmdyYXBoUUxFcnJvcnM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yLm5ldHdvcmtFcnJvcikge1xuICAgICAgICAgICAgdGhpcy5uZXR3b3JrRXJyb3IgPSBlcnJvci5uZXR3b3JrRXJyb3I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH07XG4gICAgcmV0dXJuIFF1ZXJ5SW5mbztcbn0oKSk7XG5leHBvcnQgeyBRdWVyeUluZm8gfTtcbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRXcml0ZVJlc3VsdChyZXN1bHQsIGVycm9yUG9saWN5KSB7XG4gICAgaWYgKGVycm9yUG9saWN5ID09PSB2b2lkIDApIHsgZXJyb3JQb2xpY3kgPSBcIm5vbmVcIjsgfVxuICAgIHZhciBpZ25vcmVFcnJvcnMgPSBlcnJvclBvbGljeSA9PT0gXCJpZ25vcmVcIiB8fFxuICAgICAgICBlcnJvclBvbGljeSA9PT0gXCJhbGxcIjtcbiAgICB2YXIgd3JpdGVXaXRoRXJyb3JzID0gIWdyYXBoUUxSZXN1bHRIYXNFcnJvcihyZXN1bHQpO1xuICAgIGlmICghd3JpdGVXaXRoRXJyb3JzICYmIGlnbm9yZUVycm9ycyAmJiByZXN1bHQuZGF0YSkge1xuICAgICAgICB3cml0ZVdpdGhFcnJvcnMgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdGVXaXRoRXJyb3JzO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9UXVlcnlJbmZvLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/core/QueryInfo.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/core/QueryManager.js":
/*!**********************************************************!*\
  !*** ./node_modules/@apollo/client/core/QueryManager.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"QueryManager\": function() { return /* binding */ QueryManager; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _wry_equality__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wry/equality */ \"./node_modules/@apollo/client/node_modules/@wry/equality/lib/equality.esm.js\");\n/* harmony import */ var _link_core_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../link/core/index.js */ \"./node_modules/@apollo/client/link/core/index.js\");\n/* harmony import */ var _cache_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../cache/index.js */ \"./node_modules/@apollo/client/cache/index.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n/* harmony import */ var _errors_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../errors/index.js */ \"./node_modules/@apollo/client/errors/index.js\");\n/* harmony import */ var _ObservableQuery_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ObservableQuery.js */ \"./node_modules/@apollo/client/core/ObservableQuery.js\");\n/* harmony import */ var _networkStatus_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./networkStatus.js */ \"./node_modules/@apollo/client/core/networkStatus.js\");\n/* harmony import */ var _LocalState_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./LocalState.js */ \"./node_modules/@apollo/client/core/LocalState.js\");\n/* harmony import */ var _QueryInfo_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./QueryInfo.js */ \"./node_modules/@apollo/client/core/QueryInfo.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar QueryManager = (function () {\n    function QueryManager(_a) {\n        var cache = _a.cache, link = _a.link, _b = _a.queryDeduplication, queryDeduplication = _b === void 0 ? false : _b, onBroadcast = _a.onBroadcast, _c = _a.ssrMode, ssrMode = _c === void 0 ? false : _c, _d = _a.clientAwareness, clientAwareness = _d === void 0 ? {} : _d, localState = _a.localState, assumeImmutableResults = _a.assumeImmutableResults;\n        this.clientAwareness = {};\n        this.queries = new Map();\n        this.fetchCancelFns = new Map();\n        this.transformCache = new (_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.canUseWeakMap ? WeakMap : Map)();\n        this.queryIdCounter = 1;\n        this.requestIdCounter = 1;\n        this.mutationIdCounter = 1;\n        this.inFlightLinkObservables = new Map();\n        this.cache = cache;\n        this.link = link;\n        this.queryDeduplication = queryDeduplication;\n        this.clientAwareness = clientAwareness;\n        this.localState = localState || new _LocalState_js__WEBPACK_IMPORTED_MODULE_3__.LocalState({ cache: cache });\n        this.ssrMode = ssrMode;\n        this.assumeImmutableResults = !!assumeImmutableResults;\n        if ((this.onBroadcast = onBroadcast)) {\n            this.mutationStore = Object.create(null);\n        }\n    }\n    QueryManager.prototype.stop = function () {\n        var _this = this;\n        this.queries.forEach(function (_info, queryId) {\n            _this.stopQueryNoBroadcast(queryId);\n        });\n        this.cancelPendingFetches(__DEV__ ? new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError('QueryManager stopped while query was in flight') : new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(11));\n    };\n    QueryManager.prototype.cancelPendingFetches = function (error) {\n        this.fetchCancelFns.forEach(function (cancel) { return cancel(error); });\n        this.fetchCancelFns.clear();\n    };\n    QueryManager.prototype.mutate = function (_a) {\n        var mutation = _a.mutation, variables = _a.variables, optimisticResponse = _a.optimisticResponse, updateQueries = _a.updateQueries, _b = _a.refetchQueries, refetchQueries = _b === void 0 ? [] : _b, _c = _a.awaitRefetchQueries, awaitRefetchQueries = _c === void 0 ? false : _c, updateWithProxyFn = _a.update, onQueryUpdated = _a.onQueryUpdated, _d = _a.errorPolicy, errorPolicy = _d === void 0 ? 'none' : _d, _e = _a.fetchPolicy, fetchPolicy = _e === void 0 ? 'network-only' : _e, keepRootFields = _a.keepRootFields, context = _a.context;\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__awaiter)(this, void 0, void 0, function () {\n            var mutationId, mutationStoreValue, self;\n            return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__generator)(this, function (_f) {\n                switch (_f.label) {\n                    case 0:\n                        __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(mutation, 'mutation option is required. You must specify your GraphQL document in the mutation option.') : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(mutation, 12);\n                        __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(fetchPolicy === 'network-only' ||\n                            fetchPolicy === 'no-cache', \"Mutations support only 'network-only' or 'no-cache' fetchPolicy strings. The default `network-only` behavior automatically writes mutation results to the cache. Passing `no-cache` skips the cache write.\") : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(fetchPolicy === 'network-only' ||\n                            fetchPolicy === 'no-cache', 13);\n                        mutationId = this.generateMutationId();\n                        mutation = this.transform(mutation).document;\n                        variables = this.getVariables(mutation, variables);\n                        if (!this.transform(mutation).hasClientExports) return [3, 2];\n                        return [4, this.localState.addExportedVariables(mutation, variables, context)];\n                    case 1:\n                        variables = (_f.sent());\n                        _f.label = 2;\n                    case 2:\n                        mutationStoreValue = this.mutationStore &&\n                            (this.mutationStore[mutationId] = {\n                                mutation: mutation,\n                                variables: variables,\n                                loading: true,\n                                error: null,\n                            });\n                        if (optimisticResponse) {\n                            this.markMutationOptimistic(optimisticResponse, {\n                                mutationId: mutationId,\n                                document: mutation,\n                                variables: variables,\n                                fetchPolicy: fetchPolicy,\n                                errorPolicy: errorPolicy,\n                                context: context,\n                                updateQueries: updateQueries,\n                                update: updateWithProxyFn,\n                                keepRootFields: keepRootFields,\n                            });\n                        }\n                        this.broadcastQueries();\n                        self = this;\n                        return [2, new Promise(function (resolve, reject) {\n                                return (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.asyncMap)(self.getObservableFromLink(mutation, (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, context), { optimisticResponse: optimisticResponse }), variables, false), function (result) {\n                                    if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.graphQLResultHasError)(result) && errorPolicy === 'none') {\n                                        throw new _errors_index_js__WEBPACK_IMPORTED_MODULE_5__.ApolloError({\n                                            graphQLErrors: result.errors,\n                                        });\n                                    }\n                                    if (mutationStoreValue) {\n                                        mutationStoreValue.loading = false;\n                                        mutationStoreValue.error = null;\n                                    }\n                                    var storeResult = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, result);\n                                    if (typeof refetchQueries === \"function\") {\n                                        refetchQueries = refetchQueries(storeResult);\n                                    }\n                                    if (errorPolicy === 'ignore' &&\n                                        (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.graphQLResultHasError)(storeResult)) {\n                                        delete storeResult.errors;\n                                    }\n                                    return self.markMutationResult({\n                                        mutationId: mutationId,\n                                        result: storeResult,\n                                        document: mutation,\n                                        variables: variables,\n                                        fetchPolicy: fetchPolicy,\n                                        errorPolicy: errorPolicy,\n                                        context: context,\n                                        update: updateWithProxyFn,\n                                        updateQueries: updateQueries,\n                                        awaitRefetchQueries: awaitRefetchQueries,\n                                        refetchQueries: refetchQueries,\n                                        removeOptimistic: optimisticResponse ? mutationId : void 0,\n                                        onQueryUpdated: onQueryUpdated,\n                                        keepRootFields: keepRootFields,\n                                    });\n                                }).subscribe({\n                                    next: function (storeResult) {\n                                        self.broadcastQueries();\n                                        resolve(storeResult);\n                                    },\n                                    error: function (err) {\n                                        if (mutationStoreValue) {\n                                            mutationStoreValue.loading = false;\n                                            mutationStoreValue.error = err;\n                                        }\n                                        if (optimisticResponse) {\n                                            self.cache.removeOptimistic(mutationId);\n                                        }\n                                        self.broadcastQueries();\n                                        reject(err instanceof _errors_index_js__WEBPACK_IMPORTED_MODULE_5__.ApolloError ? err : new _errors_index_js__WEBPACK_IMPORTED_MODULE_5__.ApolloError({\n                                            networkError: err,\n                                        }));\n                                    },\n                                });\n                            })];\n                }\n            });\n        });\n    };\n    QueryManager.prototype.markMutationResult = function (mutation, cache) {\n        var _this = this;\n        if (cache === void 0) { cache = this.cache; }\n        var result = mutation.result;\n        var cacheWrites = [];\n        var skipCache = mutation.fetchPolicy === \"no-cache\";\n        if (!skipCache && (0,_QueryInfo_js__WEBPACK_IMPORTED_MODULE_6__.shouldWriteResult)(result, mutation.errorPolicy)) {\n            cacheWrites.push({\n                result: result.data,\n                dataId: 'ROOT_MUTATION',\n                query: mutation.document,\n                variables: mutation.variables,\n            });\n            var updateQueries_1 = mutation.updateQueries;\n            if (updateQueries_1) {\n                this.queries.forEach(function (_a, queryId) {\n                    var observableQuery = _a.observableQuery;\n                    var queryName = observableQuery && observableQuery.queryName;\n                    if (!queryName || !hasOwnProperty.call(updateQueries_1, queryName)) {\n                        return;\n                    }\n                    var updater = updateQueries_1[queryName];\n                    var _b = _this.queries.get(queryId), document = _b.document, variables = _b.variables;\n                    var _c = cache.diff({\n                        query: document,\n                        variables: variables,\n                        returnPartialData: true,\n                        optimistic: false,\n                    }), currentQueryResult = _c.result, complete = _c.complete;\n                    if (complete && currentQueryResult) {\n                        var nextQueryResult = updater(currentQueryResult, {\n                            mutationResult: result,\n                            queryName: document && (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.getOperationName)(document) || void 0,\n                            queryVariables: variables,\n                        });\n                        if (nextQueryResult) {\n                            cacheWrites.push({\n                                result: nextQueryResult,\n                                dataId: 'ROOT_QUERY',\n                                query: document,\n                                variables: variables,\n                            });\n                        }\n                    }\n                });\n            }\n        }\n        if (cacheWrites.length > 0 ||\n            mutation.refetchQueries ||\n            mutation.update ||\n            mutation.onQueryUpdated ||\n            mutation.removeOptimistic) {\n            var results_1 = [];\n            this.refetchQueries({\n                updateCache: function (cache) {\n                    if (!skipCache) {\n                        cacheWrites.forEach(function (write) { return cache.write(write); });\n                    }\n                    var update = mutation.update;\n                    if (update) {\n                        if (!skipCache) {\n                            var diff = cache.diff({\n                                id: \"ROOT_MUTATION\",\n                                query: _this.transform(mutation.document).asQuery,\n                                variables: mutation.variables,\n                                optimistic: false,\n                                returnPartialData: true,\n                            });\n                            if (diff.complete) {\n                                result = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, result), { data: diff.result });\n                            }\n                        }\n                        update(cache, result, {\n                            context: mutation.context,\n                            variables: mutation.variables,\n                        });\n                    }\n                    if (!skipCache && !mutation.keepRootFields) {\n                        cache.modify({\n                            id: 'ROOT_MUTATION',\n                            fields: function (value, _a) {\n                                var fieldName = _a.fieldName, DELETE = _a.DELETE;\n                                return fieldName === \"__typename\" ? value : DELETE;\n                            },\n                        });\n                    }\n                },\n                include: mutation.refetchQueries,\n                optimistic: false,\n                removeOptimistic: mutation.removeOptimistic,\n                onQueryUpdated: mutation.onQueryUpdated || null,\n            }).forEach(function (result) { return results_1.push(result); });\n            if (mutation.awaitRefetchQueries || mutation.onQueryUpdated) {\n                return Promise.all(results_1).then(function () { return result; });\n            }\n        }\n        return Promise.resolve(result);\n    };\n    QueryManager.prototype.markMutationOptimistic = function (optimisticResponse, mutation) {\n        var _this = this;\n        var data = typeof optimisticResponse === \"function\"\n            ? optimisticResponse(mutation.variables)\n            : optimisticResponse;\n        return this.cache.recordOptimisticTransaction(function (cache) {\n            try {\n                _this.markMutationResult((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, mutation), { result: { data: data } }), cache);\n            }\n            catch (error) {\n                __DEV__ && _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant.error(error);\n            }\n        }, mutation.mutationId);\n    };\n    QueryManager.prototype.fetchQuery = function (queryId, options, networkStatus) {\n        return this.fetchQueryObservable(queryId, options, networkStatus).promise;\n    };\n    QueryManager.prototype.getQueryStore = function () {\n        var store = Object.create(null);\n        this.queries.forEach(function (info, queryId) {\n            store[queryId] = {\n                variables: info.variables,\n                networkStatus: info.networkStatus,\n                networkError: info.networkError,\n                graphQLErrors: info.graphQLErrors,\n            };\n        });\n        return store;\n    };\n    QueryManager.prototype.resetErrors = function (queryId) {\n        var queryInfo = this.queries.get(queryId);\n        if (queryInfo) {\n            queryInfo.networkError = undefined;\n            queryInfo.graphQLErrors = [];\n        }\n    };\n    QueryManager.prototype.transform = function (document) {\n        var transformCache = this.transformCache;\n        if (!transformCache.has(document)) {\n            var transformed = this.cache.transformDocument(document);\n            var forLink = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.removeConnectionDirectiveFromDocument)(this.cache.transformForLink(transformed));\n            var clientQuery = this.localState.clientQuery(transformed);\n            var serverQuery = forLink && this.localState.serverQuery(forLink);\n            var cacheEntry_1 = {\n                document: transformed,\n                hasClientExports: (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.hasClientExports)(transformed),\n                hasForcedResolvers: this.localState.shouldForceResolvers(transformed),\n                clientQuery: clientQuery,\n                serverQuery: serverQuery,\n                defaultVars: (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.getDefaultValues)((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.getOperationDefinition)(transformed)),\n                asQuery: (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, transformed), { definitions: transformed.definitions.map(function (def) {\n                        if (def.kind === \"OperationDefinition\" &&\n                            def.operation !== \"query\") {\n                            return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, def), { operation: \"query\" });\n                        }\n                        return def;\n                    }) })\n            };\n            var add = function (doc) {\n                if (doc && !transformCache.has(doc)) {\n                    transformCache.set(doc, cacheEntry_1);\n                }\n            };\n            add(document);\n            add(transformed);\n            add(clientQuery);\n            add(serverQuery);\n        }\n        return transformCache.get(document);\n    };\n    QueryManager.prototype.getVariables = function (document, variables) {\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, this.transform(document).defaultVars), variables);\n    };\n    QueryManager.prototype.watchQuery = function (options) {\n        options = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, options), { variables: this.getVariables(options.query, options.variables) });\n        if (typeof options.notifyOnNetworkStatusChange === 'undefined') {\n            options.notifyOnNetworkStatusChange = false;\n        }\n        var queryInfo = new _QueryInfo_js__WEBPACK_IMPORTED_MODULE_6__.QueryInfo(this);\n        var observable = new _ObservableQuery_js__WEBPACK_IMPORTED_MODULE_7__.ObservableQuery({\n            queryManager: this,\n            queryInfo: queryInfo,\n            options: options,\n        });\n        this.queries.set(observable.queryId, queryInfo);\n        queryInfo.init({\n            document: options.query,\n            observableQuery: observable,\n            variables: options.variables,\n        });\n        return observable;\n    };\n    QueryManager.prototype.query = function (options, queryId) {\n        var _this = this;\n        if (queryId === void 0) { queryId = this.generateQueryId(); }\n        __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(options.query, 'query option is required. You must specify your GraphQL document ' +\n            'in the query option.') : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(options.query, 14);\n        __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(options.query.kind === 'Document', 'You must wrap the query string in a \"gql\" tag.') : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(options.query.kind === 'Document', 15);\n        __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(!options.returnPartialData, 'returnPartialData option only supported on watchQuery.') : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(!options.returnPartialData, 16);\n        __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(!options.pollInterval, 'pollInterval option only supported on watchQuery.') : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(!options.pollInterval, 17);\n        return this.fetchQuery(queryId, options).finally(function () { return _this.stopQuery(queryId); });\n    };\n    QueryManager.prototype.generateQueryId = function () {\n        return String(this.queryIdCounter++);\n    };\n    QueryManager.prototype.generateRequestId = function () {\n        return this.requestIdCounter++;\n    };\n    QueryManager.prototype.generateMutationId = function () {\n        return String(this.mutationIdCounter++);\n    };\n    QueryManager.prototype.stopQueryInStore = function (queryId) {\n        this.stopQueryInStoreNoBroadcast(queryId);\n        this.broadcastQueries();\n    };\n    QueryManager.prototype.stopQueryInStoreNoBroadcast = function (queryId) {\n        var queryInfo = this.queries.get(queryId);\n        if (queryInfo)\n            queryInfo.stop();\n    };\n    QueryManager.prototype.clearStore = function (options) {\n        if (options === void 0) { options = {\n            discardWatches: true,\n        }; }\n        this.cancelPendingFetches(__DEV__ ? new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError('Store reset while query was in flight (not completed in link chain)') : new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(18));\n        this.queries.forEach(function (queryInfo) {\n            if (queryInfo.observableQuery) {\n                queryInfo.networkStatus = _networkStatus_js__WEBPACK_IMPORTED_MODULE_8__.NetworkStatus.loading;\n            }\n            else {\n                queryInfo.stop();\n            }\n        });\n        if (this.mutationStore) {\n            this.mutationStore = Object.create(null);\n        }\n        return this.cache.reset(options);\n    };\n    QueryManager.prototype.getObservableQueries = function (include) {\n        var _this = this;\n        if (include === void 0) { include = \"active\"; }\n        var queries = new Map();\n        var queryNamesAndDocs = new Map();\n        var legacyQueryOptions = new Set();\n        if (Array.isArray(include)) {\n            include.forEach(function (desc) {\n                if (typeof desc === \"string\") {\n                    queryNamesAndDocs.set(desc, false);\n                }\n                else if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isDocumentNode)(desc)) {\n                    queryNamesAndDocs.set(_this.transform(desc).document, false);\n                }\n                else if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isNonNullObject)(desc) && desc.query) {\n                    legacyQueryOptions.add(desc);\n                }\n            });\n        }\n        this.queries.forEach(function (_a, queryId) {\n            var oq = _a.observableQuery, document = _a.document;\n            if (oq) {\n                if (include === \"all\") {\n                    queries.set(queryId, oq);\n                    return;\n                }\n                var queryName = oq.queryName, fetchPolicy = oq.options.fetchPolicy;\n                if (fetchPolicy === \"standby\" ||\n                    (include === \"active\" && !oq.hasObservers())) {\n                    return;\n                }\n                if (include === \"active\" ||\n                    (queryName && queryNamesAndDocs.has(queryName)) ||\n                    (document && queryNamesAndDocs.has(document))) {\n                    queries.set(queryId, oq);\n                    if (queryName)\n                        queryNamesAndDocs.set(queryName, true);\n                    if (document)\n                        queryNamesAndDocs.set(document, true);\n                }\n            }\n        });\n        if (legacyQueryOptions.size) {\n            legacyQueryOptions.forEach(function (options) {\n                var queryId = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.makeUniqueId)(\"legacyOneTimeQuery\");\n                var queryInfo = _this.getQuery(queryId).init({\n                    document: options.query,\n                    variables: options.variables,\n                });\n                var oq = new _ObservableQuery_js__WEBPACK_IMPORTED_MODULE_7__.ObservableQuery({\n                    queryManager: _this,\n                    queryInfo: queryInfo,\n                    options: (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, options), { fetchPolicy: \"network-only\" }),\n                });\n                (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(oq.queryId === queryId);\n                queryInfo.setObservableQuery(oq);\n                queries.set(queryId, oq);\n            });\n        }\n        if (__DEV__ && queryNamesAndDocs.size) {\n            queryNamesAndDocs.forEach(function (included, nameOrDoc) {\n                if (!included) {\n                    __DEV__ && _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant.warn(\"Unknown query \".concat(typeof nameOrDoc === \"string\" ? \"named \" : \"\").concat(JSON.stringify(nameOrDoc, null, 2), \" requested in refetchQueries options.include array\"));\n                }\n            });\n        }\n        return queries;\n    };\n    QueryManager.prototype.reFetchObservableQueries = function (includeStandby) {\n        var _this = this;\n        if (includeStandby === void 0) { includeStandby = false; }\n        var observableQueryPromises = [];\n        this.getObservableQueries(includeStandby ? \"all\" : \"active\").forEach(function (observableQuery, queryId) {\n            var fetchPolicy = observableQuery.options.fetchPolicy;\n            observableQuery.resetLastResults();\n            if (includeStandby ||\n                (fetchPolicy !== \"standby\" &&\n                    fetchPolicy !== \"cache-only\")) {\n                observableQueryPromises.push(observableQuery.refetch());\n            }\n            _this.getQuery(queryId).setDiff(null);\n        });\n        this.broadcastQueries();\n        return Promise.all(observableQueryPromises);\n    };\n    QueryManager.prototype.setObservableQuery = function (observableQuery) {\n        this.getQuery(observableQuery.queryId).setObservableQuery(observableQuery);\n    };\n    QueryManager.prototype.startGraphQLSubscription = function (_a) {\n        var _this = this;\n        var query = _a.query, fetchPolicy = _a.fetchPolicy, errorPolicy = _a.errorPolicy, variables = _a.variables, _b = _a.context, context = _b === void 0 ? {} : _b;\n        query = this.transform(query).document;\n        variables = this.getVariables(query, variables);\n        var makeObservable = function (variables) {\n            return _this.getObservableFromLink(query, context, variables).map(function (result) {\n                if (fetchPolicy !== 'no-cache') {\n                    if ((0,_QueryInfo_js__WEBPACK_IMPORTED_MODULE_6__.shouldWriteResult)(result, errorPolicy)) {\n                        _this.cache.write({\n                            query: query,\n                            result: result.data,\n                            dataId: 'ROOT_SUBSCRIPTION',\n                            variables: variables,\n                        });\n                    }\n                    _this.broadcastQueries();\n                }\n                if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.graphQLResultHasError)(result)) {\n                    throw new _errors_index_js__WEBPACK_IMPORTED_MODULE_5__.ApolloError({\n                        graphQLErrors: result.errors,\n                    });\n                }\n                return result;\n            });\n        };\n        if (this.transform(query).hasClientExports) {\n            var observablePromise_1 = this.localState.addExportedVariables(query, variables, context).then(makeObservable);\n            return new _utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.Observable(function (observer) {\n                var sub = null;\n                observablePromise_1.then(function (observable) { return sub = observable.subscribe(observer); }, observer.error);\n                return function () { return sub && sub.unsubscribe(); };\n            });\n        }\n        return makeObservable(variables);\n    };\n    QueryManager.prototype.stopQuery = function (queryId) {\n        this.stopQueryNoBroadcast(queryId);\n        this.broadcastQueries();\n    };\n    QueryManager.prototype.stopQueryNoBroadcast = function (queryId) {\n        this.stopQueryInStoreNoBroadcast(queryId);\n        this.removeQuery(queryId);\n    };\n    QueryManager.prototype.removeQuery = function (queryId) {\n        this.fetchCancelFns.delete(queryId);\n        this.getQuery(queryId).stop();\n        this.queries.delete(queryId);\n    };\n    QueryManager.prototype.broadcastQueries = function () {\n        if (this.onBroadcast)\n            this.onBroadcast();\n        this.queries.forEach(function (info) { return info.notify(); });\n    };\n    QueryManager.prototype.getLocalState = function () {\n        return this.localState;\n    };\n    QueryManager.prototype.getObservableFromLink = function (query, context, variables, deduplication) {\n        var _this = this;\n        var _a;\n        if (deduplication === void 0) { deduplication = (_a = context === null || context === void 0 ? void 0 : context.queryDeduplication) !== null && _a !== void 0 ? _a : this.queryDeduplication; }\n        var observable;\n        var serverQuery = this.transform(query).serverQuery;\n        if (serverQuery) {\n            var _b = this, inFlightLinkObservables_1 = _b.inFlightLinkObservables, link = _b.link;\n            var operation = {\n                query: serverQuery,\n                variables: variables,\n                operationName: (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.getOperationName)(serverQuery) || void 0,\n                context: this.prepareContext((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, context), { forceFetch: !deduplication })),\n            };\n            context = operation.context;\n            if (deduplication) {\n                var byVariables_1 = inFlightLinkObservables_1.get(serverQuery) || new Map();\n                inFlightLinkObservables_1.set(serverQuery, byVariables_1);\n                var varJson_1 = (0,_cache_index_js__WEBPACK_IMPORTED_MODULE_9__.canonicalStringify)(variables);\n                observable = byVariables_1.get(varJson_1);\n                if (!observable) {\n                    var concast = new _utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.Concast([\n                        (0,_link_core_index_js__WEBPACK_IMPORTED_MODULE_10__.execute)(link, operation)\n                    ]);\n                    byVariables_1.set(varJson_1, observable = concast);\n                    concast.cleanup(function () {\n                        if (byVariables_1.delete(varJson_1) &&\n                            byVariables_1.size < 1) {\n                            inFlightLinkObservables_1.delete(serverQuery);\n                        }\n                    });\n                }\n            }\n            else {\n                observable = new _utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.Concast([\n                    (0,_link_core_index_js__WEBPACK_IMPORTED_MODULE_10__.execute)(link, operation)\n                ]);\n            }\n        }\n        else {\n            observable = new _utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.Concast([\n                _utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.Observable.of({ data: {} })\n            ]);\n            context = this.prepareContext(context);\n        }\n        var clientQuery = this.transform(query).clientQuery;\n        if (clientQuery) {\n            observable = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.asyncMap)(observable, function (result) {\n                return _this.localState.runResolvers({\n                    document: clientQuery,\n                    remoteResult: result,\n                    context: context,\n                    variables: variables,\n                });\n            });\n        }\n        return observable;\n    };\n    QueryManager.prototype.getResultsFromLink = function (queryInfo, cacheWriteBehavior, options) {\n        var requestId = queryInfo.lastRequestId = this.generateRequestId();\n        return (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.asyncMap)(this.getObservableFromLink(queryInfo.document, options.context, options.variables), function (result) {\n            var hasErrors = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.isNonEmptyArray)(result.errors);\n            if (requestId >= queryInfo.lastRequestId) {\n                if (hasErrors && options.errorPolicy === \"none\") {\n                    throw queryInfo.markError(new _errors_index_js__WEBPACK_IMPORTED_MODULE_5__.ApolloError({\n                        graphQLErrors: result.errors,\n                    }));\n                }\n                queryInfo.markResult(result, options, cacheWriteBehavior);\n                queryInfo.markReady();\n            }\n            var aqr = {\n                data: result.data,\n                loading: false,\n                networkStatus: queryInfo.networkStatus || _networkStatus_js__WEBPACK_IMPORTED_MODULE_8__.NetworkStatus.ready,\n            };\n            if (hasErrors && options.errorPolicy !== \"ignore\") {\n                aqr.errors = result.errors;\n            }\n            return aqr;\n        }, function (networkError) {\n            var error = (0,_errors_index_js__WEBPACK_IMPORTED_MODULE_5__.isApolloError)(networkError)\n                ? networkError\n                : new _errors_index_js__WEBPACK_IMPORTED_MODULE_5__.ApolloError({ networkError: networkError });\n            if (requestId >= queryInfo.lastRequestId) {\n                queryInfo.markError(error);\n            }\n            throw error;\n        });\n    };\n    QueryManager.prototype.fetchQueryObservable = function (queryId, options, networkStatus) {\n        var _this = this;\n        if (networkStatus === void 0) { networkStatus = _networkStatus_js__WEBPACK_IMPORTED_MODULE_8__.NetworkStatus.loading; }\n        var query = this.transform(options.query).document;\n        var variables = this.getVariables(query, options.variables);\n        var queryInfo = this.getQuery(queryId);\n        var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a, _b = options.errorPolicy, errorPolicy = _b === void 0 ? \"none\" : _b, _c = options.returnPartialData, returnPartialData = _c === void 0 ? false : _c, _d = options.notifyOnNetworkStatusChange, notifyOnNetworkStatusChange = _d === void 0 ? false : _d, _e = options.context, context = _e === void 0 ? {} : _e;\n        var normalized = Object.assign({}, options, {\n            query: query,\n            variables: variables,\n            fetchPolicy: fetchPolicy,\n            errorPolicy: errorPolicy,\n            returnPartialData: returnPartialData,\n            notifyOnNetworkStatusChange: notifyOnNetworkStatusChange,\n            context: context,\n        });\n        var fromVariables = function (variables) {\n            normalized.variables = variables;\n            return _this.fetchQueryByPolicy(queryInfo, normalized, networkStatus);\n        };\n        this.fetchCancelFns.set(queryId, function (reason) {\n            setTimeout(function () { return concast.cancel(reason); });\n        });\n        var concast = new _utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.Concast(this.transform(normalized.query).hasClientExports\n            ? this.localState.addExportedVariables(normalized.query, normalized.variables, normalized.context).then(fromVariables)\n            : fromVariables(normalized.variables));\n        concast.cleanup(function () {\n            _this.fetchCancelFns.delete(queryId);\n            (0,_ObservableQuery_js__WEBPACK_IMPORTED_MODULE_7__.applyNextFetchPolicy)(options);\n        });\n        return concast;\n    };\n    QueryManager.prototype.refetchQueries = function (_a) {\n        var _this = this;\n        var updateCache = _a.updateCache, include = _a.include, _b = _a.optimistic, optimistic = _b === void 0 ? false : _b, _c = _a.removeOptimistic, removeOptimistic = _c === void 0 ? optimistic ? (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.makeUniqueId)(\"refetchQueries\") : void 0 : _c, onQueryUpdated = _a.onQueryUpdated;\n        var includedQueriesById = new Map();\n        if (include) {\n            this.getObservableQueries(include).forEach(function (oq, queryId) {\n                includedQueriesById.set(queryId, {\n                    oq: oq,\n                    lastDiff: _this.getQuery(queryId).getDiff(),\n                });\n            });\n        }\n        var results = new Map;\n        if (updateCache) {\n            this.cache.batch({\n                update: updateCache,\n                optimistic: optimistic && removeOptimistic || false,\n                removeOptimistic: removeOptimistic,\n                onWatchUpdated: function (watch, diff, lastDiff) {\n                    var oq = watch.watcher instanceof _QueryInfo_js__WEBPACK_IMPORTED_MODULE_6__.QueryInfo &&\n                        watch.watcher.observableQuery;\n                    if (oq) {\n                        if (onQueryUpdated) {\n                            includedQueriesById.delete(oq.queryId);\n                            var result = onQueryUpdated(oq, diff, lastDiff);\n                            if (result === true) {\n                                result = oq.refetch();\n                            }\n                            if (result !== false) {\n                                results.set(oq, result);\n                            }\n                            return result;\n                        }\n                        if (onQueryUpdated !== null) {\n                            includedQueriesById.set(oq.queryId, { oq: oq, lastDiff: lastDiff, diff: diff });\n                        }\n                    }\n                },\n            });\n        }\n        if (includedQueriesById.size) {\n            includedQueriesById.forEach(function (_a, queryId) {\n                var oq = _a.oq, lastDiff = _a.lastDiff, diff = _a.diff;\n                var result;\n                if (onQueryUpdated) {\n                    if (!diff) {\n                        var info = oq[\"queryInfo\"];\n                        info.reset();\n                        diff = info.getDiff();\n                    }\n                    result = onQueryUpdated(oq, diff, lastDiff);\n                }\n                if (!onQueryUpdated || result === true) {\n                    result = oq.refetch();\n                }\n                if (result !== false) {\n                    results.set(oq, result);\n                }\n                if (queryId.indexOf(\"legacyOneTimeQuery\") >= 0) {\n                    _this.stopQueryNoBroadcast(queryId);\n                }\n            });\n        }\n        if (removeOptimistic) {\n            this.cache.removeOptimistic(removeOptimistic);\n        }\n        return results;\n    };\n    QueryManager.prototype.fetchQueryByPolicy = function (queryInfo, _a, networkStatus) {\n        var _this = this;\n        var query = _a.query, variables = _a.variables, fetchPolicy = _a.fetchPolicy, refetchWritePolicy = _a.refetchWritePolicy, errorPolicy = _a.errorPolicy, returnPartialData = _a.returnPartialData, context = _a.context, notifyOnNetworkStatusChange = _a.notifyOnNetworkStatusChange;\n        var oldNetworkStatus = queryInfo.networkStatus;\n        queryInfo.init({\n            document: query,\n            variables: variables,\n            networkStatus: networkStatus,\n        });\n        var readCache = function () { return queryInfo.getDiff(variables); };\n        var resultsFromCache = function (diff, networkStatus) {\n            if (networkStatus === void 0) { networkStatus = queryInfo.networkStatus || _networkStatus_js__WEBPACK_IMPORTED_MODULE_8__.NetworkStatus.loading; }\n            var data = diff.result;\n            if (__DEV__ &&\n                !returnPartialData &&\n                !(0,_wry_equality__WEBPACK_IMPORTED_MODULE_1__.equal)(data, {})) {\n                (0,_ObservableQuery_js__WEBPACK_IMPORTED_MODULE_7__.logMissingFieldErrors)(diff.missing);\n            }\n            var fromData = function (data) { return _utilities_index_js__WEBPACK_IMPORTED_MODULE_2__.Observable.of((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({ data: data, loading: (0,_networkStatus_js__WEBPACK_IMPORTED_MODULE_8__.isNetworkRequestInFlight)(networkStatus), networkStatus: networkStatus }, (diff.complete ? null : { partial: true }))); };\n            if (data && _this.transform(query).hasForcedResolvers) {\n                return _this.localState.runResolvers({\n                    document: query,\n                    remoteResult: { data: data },\n                    context: context,\n                    variables: variables,\n                    onlyRunForcedResolvers: true,\n                }).then(function (resolved) { return fromData(resolved.data || void 0); });\n            }\n            return fromData(data);\n        };\n        var cacheWriteBehavior = fetchPolicy === \"no-cache\" ? 0 :\n            (networkStatus === _networkStatus_js__WEBPACK_IMPORTED_MODULE_8__.NetworkStatus.refetch &&\n                refetchWritePolicy !== \"merge\") ? 1\n                : 2;\n        var resultsFromLink = function () {\n            return _this.getResultsFromLink(queryInfo, cacheWriteBehavior, {\n                variables: variables,\n                context: context,\n                fetchPolicy: fetchPolicy,\n                errorPolicy: errorPolicy,\n            });\n        };\n        var shouldNotify = notifyOnNetworkStatusChange &&\n            typeof oldNetworkStatus === \"number\" &&\n            oldNetworkStatus !== networkStatus &&\n            (0,_networkStatus_js__WEBPACK_IMPORTED_MODULE_8__.isNetworkRequestInFlight)(networkStatus);\n        switch (fetchPolicy) {\n            default:\n            case \"cache-first\": {\n                var diff = readCache();\n                if (diff.complete) {\n                    return [\n                        resultsFromCache(diff, queryInfo.markReady()),\n                    ];\n                }\n                if (returnPartialData || shouldNotify) {\n                    return [\n                        resultsFromCache(diff),\n                        resultsFromLink(),\n                    ];\n                }\n                return [\n                    resultsFromLink(),\n                ];\n            }\n            case \"cache-and-network\": {\n                var diff = readCache();\n                if (diff.complete || returnPartialData || shouldNotify) {\n                    return [\n                        resultsFromCache(diff),\n                        resultsFromLink(),\n                    ];\n                }\n                return [\n                    resultsFromLink(),\n                ];\n            }\n            case \"cache-only\":\n                return [\n                    resultsFromCache(readCache(), queryInfo.markReady()),\n                ];\n            case \"network-only\":\n                if (shouldNotify) {\n                    return [\n                        resultsFromCache(readCache()),\n                        resultsFromLink(),\n                    ];\n                }\n                return [resultsFromLink()];\n            case \"no-cache\":\n                if (shouldNotify) {\n                    return [\n                        resultsFromCache(queryInfo.getDiff()),\n                        resultsFromLink(),\n                    ];\n                }\n                return [resultsFromLink()];\n            case \"standby\":\n                return [];\n        }\n    };\n    QueryManager.prototype.getQuery = function (queryId) {\n        if (queryId && !this.queries.has(queryId)) {\n            this.queries.set(queryId, new _QueryInfo_js__WEBPACK_IMPORTED_MODULE_6__.QueryInfo(this, queryId));\n        }\n        return this.queries.get(queryId);\n    };\n    QueryManager.prototype.prepareContext = function (context) {\n        if (context === void 0) { context = {}; }\n        var newContext = this.localState.prepareContext(context);\n        return (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, newContext), { clientAwareness: this.clientAwareness });\n    };\n    return QueryManager;\n}());\n\n//# sourceMappingURL=QueryManager.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY29yZS9RdWVyeU1hbmFnZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQXlEO0FBQ2lCO0FBQ3BDO0FBQ1U7QUFDTztBQUMyTztBQUNsTztBQUNvQztBQUN2QjtBQUNoQztBQUNrQjtBQUMvRDtBQUNBO0FBQ0E7QUFDQSw4UUFBOFE7QUFDOVE7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLDhEQUFhO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsc0RBQVUsR0FBRyxjQUFjO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULGdEQUFnRCx1RUFBYyx5REFBeUQsdUVBQWM7QUFDckk7QUFDQTtBQUNBLHdEQUF3RCx1QkFBdUI7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGdEQUFTO0FBQ3hCO0FBQ0EsbUJBQW1CLGtEQUFXO0FBQzlCO0FBQ0E7QUFDQSxrQ0FBa0Msc0VBQVMsNEdBQTRHLHNFQUFTO0FBQ2hLLGtDQUFrQyxzRUFBUztBQUMzQyx3UUFBd1Esc0VBQVM7QUFDalI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qyw2REFBUSxzQ0FBc0MsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGNBQWMsd0NBQXdDO0FBQy9KLHdDQUF3QywwRUFBcUI7QUFDN0Qsa0RBQWtELHlEQUFXO0FBQzdEO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0QsK0NBQVEsR0FBRztBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QywwRUFBcUI7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQztBQUNyQyxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RCx5REFBVyxhQUFhLHlEQUFXO0FBQ2pHO0FBQ0EseUNBQXlDO0FBQ3pDLHFDQUFxQztBQUNyQyxpQ0FBaUM7QUFDakMsNkJBQTZCO0FBQzdCO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGdFQUFpQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxtREFBbUQscUVBQWdCO0FBQ25FO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrREFBK0QsNEJBQTRCO0FBQzNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0EseUNBQXlDLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxhQUFhLG1CQUFtQjtBQUM3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCLHlCQUF5QjtBQUN6QjtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsOEJBQThCLGdDQUFnQztBQUMzRTtBQUNBLGlFQUFpRSxnQkFBZ0I7QUFDakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QywrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsZUFBZSxVQUFVLGNBQWM7QUFDcEc7QUFDQTtBQUNBLDJCQUEyQix3RUFBZTtBQUMxQztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiwwRkFBcUM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MscUVBQWdCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixxRUFBZ0IsQ0FBQywyRUFBc0I7QUFDcEUseUJBQXlCLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxrQkFBa0I7QUFDL0Q7QUFDQTtBQUNBLG1DQUFtQywrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsVUFBVSxvQkFBb0I7QUFDckY7QUFDQTtBQUNBLHFCQUFxQixHQUFHO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLCtDQUFRLENBQUMsK0NBQVEsR0FBRztBQUNuQztBQUNBO0FBQ0Esa0JBQWtCLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxjQUFjLGdFQUFnRTtBQUNwSDtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsb0RBQVM7QUFDckMsNkJBQTZCLGdFQUFlO0FBQzVDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDLGtCQUFrQixzRUFBUztBQUMzQixzQ0FBc0Msc0VBQVM7QUFDL0Msa0JBQWtCLHNFQUFTLHdGQUF3RixzRUFBUztBQUM1SCxrQkFBa0Isc0VBQVMseUZBQXlGLHNFQUFTO0FBQzdILGtCQUFrQixzRUFBUywrRUFBK0Usc0VBQVM7QUFDbkgsdUVBQXVFLGtDQUFrQztBQUN6RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQSxnREFBZ0QsdUVBQWMsOEVBQThFLHVFQUFjO0FBQzFKO0FBQ0E7QUFDQSwwQ0FBMEMsb0VBQXFCO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsbUVBQWM7QUFDdkM7QUFDQTtBQUNBLHlCQUF5QixvRUFBZTtBQUN4QztBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLDhCQUE4QixpRUFBWTtBQUMxQztBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsNkJBQTZCLGdFQUFlO0FBQzVDO0FBQ0E7QUFDQSw2QkFBNkIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGNBQWMsNkJBQTZCO0FBQzVGLGlCQUFpQjtBQUNqQixnQkFBZ0Isc0VBQVM7QUFDekI7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQix1RUFBYztBQUM3QztBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrS0FBa0s7QUFDbEs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixnRUFBaUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMEVBQXFCO0FBQ3pDLDhCQUE4Qix5REFBVztBQUN6QztBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwyREFBVTtBQUNqQztBQUNBLGlFQUFpRSw4Q0FBOEM7QUFDL0cscUNBQXFDO0FBQ3JDLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyx1QkFBdUI7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IscUVBQWdCO0FBQy9DLDZDQUE2QywrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsY0FBYyw0QkFBNEI7QUFDM0c7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxtRUFBa0I7QUFDbEQ7QUFDQTtBQUNBLHNDQUFzQyx3REFBTztBQUM3Qyx3QkFBd0IsNkRBQU87QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLHdEQUFPO0FBQ3hDLG9CQUFvQiw2REFBTztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qix3REFBTztBQUNwQyxnQkFBZ0IsOERBQWEsR0FBRyxVQUFVO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsNkRBQVE7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsNkRBQVE7QUFDdkIsNEJBQTRCLG9FQUFlO0FBQzNDO0FBQ0E7QUFDQSxrREFBa0QseURBQVc7QUFDN0Q7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwREFBMEQsa0VBQW1CO0FBQzdFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Qsd0JBQXdCLCtEQUFhO0FBQ3JDO0FBQ0Esc0JBQXNCLHlEQUFXLEdBQUcsNEJBQTRCO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxnQkFBZ0Isb0VBQXFCO0FBQzdFO0FBQ0E7QUFDQTtBQUNBLG9ZQUFvWTtBQUNwWSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFDQUFxQyxnQ0FBZ0M7QUFDckUsU0FBUztBQUNULDBCQUEwQix3REFBTztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseUVBQW9CO0FBQ2hDLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVNQUF1TSxpRUFBWTtBQUNuTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0Qsb0RBQVM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtFQUFrRSx3Q0FBd0M7QUFDMUc7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxzQ0FBc0M7QUFDdEM7QUFDQSw0Q0FBNEMsMkNBQTJDLG9FQUFxQjtBQUM1RztBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsb0RBQUssU0FBUztBQUMvQixnQkFBZ0IsMEVBQXFCO0FBQ3JDO0FBQ0EsNkNBQTZDLE9BQU8sOERBQWEsQ0FBQywrQ0FBUSxHQUFHLHFCQUFxQiwyRUFBd0IsK0NBQStDLDRCQUE0QixlQUFlO0FBQ3BOO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxZQUFZO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw2QkFBNkIsMkNBQTJDO0FBQ3pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLG9FQUFxQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwyRUFBd0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLG9EQUFTO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0EsZUFBZSwrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsaUJBQWlCLHVDQUF1QztBQUMzRjtBQUNBO0FBQ0EsQ0FBQztBQUN1QjtBQUN4QiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY29yZS9RdWVyeU1hbmFnZXIuanM/MTFjZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiwgX19hd2FpdGVyLCBfX2dlbmVyYXRvciB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgaW52YXJpYW50LCBJbnZhcmlhbnRFcnJvciB9IGZyb20gXCIuLi91dGlsaXRpZXMvZ2xvYmFscy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZXF1YWwgfSBmcm9tICdAd3J5L2VxdWFsaXR5JztcbmltcG9ydCB7IGV4ZWN1dGUgfSBmcm9tIFwiLi4vbGluay9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBjYW5vbmljYWxTdHJpbmdpZnkgfSBmcm9tIFwiLi4vY2FjaGUvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRWYWx1ZXMsIGdldE9wZXJhdGlvbkRlZmluaXRpb24sIGdldE9wZXJhdGlvbk5hbWUsIGhhc0NsaWVudEV4cG9ydHMsIGdyYXBoUUxSZXN1bHRIYXNFcnJvciwgcmVtb3ZlQ29ubmVjdGlvbkRpcmVjdGl2ZUZyb21Eb2N1bWVudCwgY2FuVXNlV2Vha01hcCwgT2JzZXJ2YWJsZSwgYXN5bmNNYXAsIGlzTm9uRW1wdHlBcnJheSwgQ29uY2FzdCwgbWFrZVVuaXF1ZUlkLCBpc0RvY3VtZW50Tm9kZSwgaXNOb25OdWxsT2JqZWN0LCB9IGZyb20gXCIuLi91dGlsaXRpZXMvaW5kZXguanNcIjtcbmltcG9ydCB7IEFwb2xsb0Vycm9yLCBpc0Fwb2xsb0Vycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZVF1ZXJ5LCBhcHBseU5leHRGZXRjaFBvbGljeSwgbG9nTWlzc2luZ0ZpZWxkRXJyb3JzIH0gZnJvbSBcIi4vT2JzZXJ2YWJsZVF1ZXJ5LmpzXCI7XG5pbXBvcnQgeyBOZXR3b3JrU3RhdHVzLCBpc05ldHdvcmtSZXF1ZXN0SW5GbGlnaHQgfSBmcm9tIFwiLi9uZXR3b3JrU3RhdHVzLmpzXCI7XG5pbXBvcnQgeyBMb2NhbFN0YXRlIH0gZnJvbSBcIi4vTG9jYWxTdGF0ZS5qc1wiO1xuaW1wb3J0IHsgUXVlcnlJbmZvLCBzaG91bGRXcml0ZVJlc3VsdCwgfSBmcm9tIFwiLi9RdWVyeUluZm8uanNcIjtcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgUXVlcnlNYW5hZ2VyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBRdWVyeU1hbmFnZXIoX2EpIHtcbiAgICAgICAgdmFyIGNhY2hlID0gX2EuY2FjaGUsIGxpbmsgPSBfYS5saW5rLCBfYiA9IF9hLnF1ZXJ5RGVkdXBsaWNhdGlvbiwgcXVlcnlEZWR1cGxpY2F0aW9uID0gX2IgPT09IHZvaWQgMCA/IGZhbHNlIDogX2IsIG9uQnJvYWRjYXN0ID0gX2Eub25Ccm9hZGNhc3QsIF9jID0gX2Euc3NyTW9kZSwgc3NyTW9kZSA9IF9jID09PSB2b2lkIDAgPyBmYWxzZSA6IF9jLCBfZCA9IF9hLmNsaWVudEF3YXJlbmVzcywgY2xpZW50QXdhcmVuZXNzID0gX2QgPT09IHZvaWQgMCA/IHt9IDogX2QsIGxvY2FsU3RhdGUgPSBfYS5sb2NhbFN0YXRlLCBhc3N1bWVJbW11dGFibGVSZXN1bHRzID0gX2EuYXNzdW1lSW1tdXRhYmxlUmVzdWx0cztcbiAgICAgICAgdGhpcy5jbGllbnRBd2FyZW5lc3MgPSB7fTtcbiAgICAgICAgdGhpcy5xdWVyaWVzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLmZldGNoQ2FuY2VsRm5zID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLnRyYW5zZm9ybUNhY2hlID0gbmV3IChjYW5Vc2VXZWFrTWFwID8gV2Vha01hcCA6IE1hcCkoKTtcbiAgICAgICAgdGhpcy5xdWVyeUlkQ291bnRlciA9IDE7XG4gICAgICAgIHRoaXMucmVxdWVzdElkQ291bnRlciA9IDE7XG4gICAgICAgIHRoaXMubXV0YXRpb25JZENvdW50ZXIgPSAxO1xuICAgICAgICB0aGlzLmluRmxpZ2h0TGlua09ic2VydmFibGVzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLmNhY2hlID0gY2FjaGU7XG4gICAgICAgIHRoaXMubGluayA9IGxpbms7XG4gICAgICAgIHRoaXMucXVlcnlEZWR1cGxpY2F0aW9uID0gcXVlcnlEZWR1cGxpY2F0aW9uO1xuICAgICAgICB0aGlzLmNsaWVudEF3YXJlbmVzcyA9IGNsaWVudEF3YXJlbmVzcztcbiAgICAgICAgdGhpcy5sb2NhbFN0YXRlID0gbG9jYWxTdGF0ZSB8fCBuZXcgTG9jYWxTdGF0ZSh7IGNhY2hlOiBjYWNoZSB9KTtcbiAgICAgICAgdGhpcy5zc3JNb2RlID0gc3NyTW9kZTtcbiAgICAgICAgdGhpcy5hc3N1bWVJbW11dGFibGVSZXN1bHRzID0gISFhc3N1bWVJbW11dGFibGVSZXN1bHRzO1xuICAgICAgICBpZiAoKHRoaXMub25Ccm9hZGNhc3QgPSBvbkJyb2FkY2FzdCkpIHtcbiAgICAgICAgICAgIHRoaXMubXV0YXRpb25TdG9yZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLnF1ZXJpZXMuZm9yRWFjaChmdW5jdGlvbiAoX2luZm8sIHF1ZXJ5SWQpIHtcbiAgICAgICAgICAgIF90aGlzLnN0b3BRdWVyeU5vQnJvYWRjYXN0KHF1ZXJ5SWQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jYW5jZWxQZW5kaW5nRmV0Y2hlcyhfX0RFVl9fID8gbmV3IEludmFyaWFudEVycm9yKCdRdWVyeU1hbmFnZXIgc3RvcHBlZCB3aGlsZSBxdWVyeSB3YXMgaW4gZmxpZ2h0JykgOiBuZXcgSW52YXJpYW50RXJyb3IoMTEpKTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUuY2FuY2VsUGVuZGluZ0ZldGNoZXMgPSBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5mZXRjaENhbmNlbEZucy5mb3JFYWNoKGZ1bmN0aW9uIChjYW5jZWwpIHsgcmV0dXJuIGNhbmNlbChlcnJvcik7IH0pO1xuICAgICAgICB0aGlzLmZldGNoQ2FuY2VsRm5zLmNsZWFyKCk7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLm11dGF0ZSA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgbXV0YXRpb24gPSBfYS5tdXRhdGlvbiwgdmFyaWFibGVzID0gX2EudmFyaWFibGVzLCBvcHRpbWlzdGljUmVzcG9uc2UgPSBfYS5vcHRpbWlzdGljUmVzcG9uc2UsIHVwZGF0ZVF1ZXJpZXMgPSBfYS51cGRhdGVRdWVyaWVzLCBfYiA9IF9hLnJlZmV0Y2hRdWVyaWVzLCByZWZldGNoUXVlcmllcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iLCBfYyA9IF9hLmF3YWl0UmVmZXRjaFF1ZXJpZXMsIGF3YWl0UmVmZXRjaFF1ZXJpZXMgPSBfYyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYywgdXBkYXRlV2l0aFByb3h5Rm4gPSBfYS51cGRhdGUsIG9uUXVlcnlVcGRhdGVkID0gX2Eub25RdWVyeVVwZGF0ZWQsIF9kID0gX2EuZXJyb3JQb2xpY3ksIGVycm9yUG9saWN5ID0gX2QgPT09IHZvaWQgMCA/ICdub25lJyA6IF9kLCBfZSA9IF9hLmZldGNoUG9saWN5LCBmZXRjaFBvbGljeSA9IF9lID09PSB2b2lkIDAgPyAnbmV0d29yay1vbmx5JyA6IF9lLCBrZWVwUm9vdEZpZWxkcyA9IF9hLmtlZXBSb290RmllbGRzLCBjb250ZXh0ID0gX2EuY29udGV4dDtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG11dGF0aW9uSWQsIG11dGF0aW9uU3RvcmVWYWx1ZSwgc2VsZjtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2YpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9mLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fREVWX18gPyBpbnZhcmlhbnQobXV0YXRpb24sICdtdXRhdGlvbiBvcHRpb24gaXMgcmVxdWlyZWQuIFlvdSBtdXN0IHNwZWNpZnkgeW91ciBHcmFwaFFMIGRvY3VtZW50IGluIHRoZSBtdXRhdGlvbiBvcHRpb24uJykgOiBpbnZhcmlhbnQobXV0YXRpb24sIDEyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9fREVWX18gPyBpbnZhcmlhbnQoZmV0Y2hQb2xpY3kgPT09ICduZXR3b3JrLW9ubHknIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hQb2xpY3kgPT09ICduby1jYWNoZScsIFwiTXV0YXRpb25zIHN1cHBvcnQgb25seSAnbmV0d29yay1vbmx5JyBvciAnbm8tY2FjaGUnIGZldGNoUG9saWN5IHN0cmluZ3MuIFRoZSBkZWZhdWx0IGBuZXR3b3JrLW9ubHlgIGJlaGF2aW9yIGF1dG9tYXRpY2FsbHkgd3JpdGVzIG11dGF0aW9uIHJlc3VsdHMgdG8gdGhlIGNhY2hlLiBQYXNzaW5nIGBuby1jYWNoZWAgc2tpcHMgdGhlIGNhY2hlIHdyaXRlLlwiKSA6IGludmFyaWFudChmZXRjaFBvbGljeSA9PT0gJ25ldHdvcmstb25seScgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaFBvbGljeSA9PT0gJ25vLWNhY2hlJywgMTMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb25JZCA9IHRoaXMuZ2VuZXJhdGVNdXRhdGlvbklkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbiA9IHRoaXMudHJhbnNmb3JtKG11dGF0aW9uKS5kb2N1bWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHRoaXMuZ2V0VmFyaWFibGVzKG11dGF0aW9uLCB2YXJpYWJsZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRyYW5zZm9ybShtdXRhdGlvbikuaGFzQ2xpZW50RXhwb3J0cykgcmV0dXJuIFszLCAyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCwgdGhpcy5sb2NhbFN0YXRlLmFkZEV4cG9ydGVkVmFyaWFibGVzKG11dGF0aW9uLCB2YXJpYWJsZXMsIGNvbnRleHQpXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzID0gKF9mLnNlbnQoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBfZi5sYWJlbCA9IDI7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uU3RvcmVWYWx1ZSA9IHRoaXMubXV0YXRpb25TdG9yZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm11dGF0aW9uU3RvcmVbbXV0YXRpb25JZF0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uOiBtdXRhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGltaXN0aWNSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFya011dGF0aW9uT3B0aW1pc3RpYyhvcHRpbWlzdGljUmVzcG9uc2UsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb25JZDogbXV0YXRpb25JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ6IG11dGF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hQb2xpY3k6IGZldGNoUG9saWN5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvclBvbGljeTogZXJyb3JQb2xpY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVF1ZXJpZXM6IHVwZGF0ZVF1ZXJpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZTogdXBkYXRlV2l0aFByb3h5Rm4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBSb290RmllbGRzOiBrZWVwUm9vdEZpZWxkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYnJvYWRjYXN0UXVlcmllcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIsIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFzeW5jTWFwKHNlbGYuZ2V0T2JzZXJ2YWJsZUZyb21MaW5rKG11dGF0aW9uLCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgY29udGV4dCksIHsgb3B0aW1pc3RpY1Jlc3BvbnNlOiBvcHRpbWlzdGljUmVzcG9uc2UgfSksIHZhcmlhYmxlcywgZmFsc2UpLCBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3JhcGhRTFJlc3VsdEhhc0Vycm9yKHJlc3VsdCkgJiYgZXJyb3JQb2xpY3kgPT09ICdub25lJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcG9sbG9FcnJvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoUUxFcnJvcnM6IHJlc3VsdC5lcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXV0YXRpb25TdG9yZVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb25TdG9yZVZhbHVlLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvblN0b3JlVmFsdWUuZXJyb3IgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0b3JlUmVzdWx0ID0gX19hc3NpZ24oe30sIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlZmV0Y2hRdWVyaWVzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZldGNoUXVlcmllcyA9IHJlZmV0Y2hRdWVyaWVzKHN0b3JlUmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvclBvbGljeSA9PT0gJ2lnbm9yZScgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFwaFFMUmVzdWx0SGFzRXJyb3Ioc3RvcmVSZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHN0b3JlUmVzdWx0LmVycm9ycztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLm1hcmtNdXRhdGlvblJlc3VsdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb25JZDogbXV0YXRpb25JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ6IHN0b3JlUmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50OiBtdXRhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaFBvbGljeTogZmV0Y2hQb2xpY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JQb2xpY3k6IGVycm9yUG9saWN5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlOiB1cGRhdGVXaXRoUHJveHlGbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVRdWVyaWVzOiB1cGRhdGVRdWVyaWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0UmVmZXRjaFF1ZXJpZXM6IGF3YWl0UmVmZXRjaFF1ZXJpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXRjaFF1ZXJpZXM6IHJlZmV0Y2hRdWVyaWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZU9wdGltaXN0aWM6IG9wdGltaXN0aWNSZXNwb25zZSA/IG11dGF0aW9uSWQgOiB2b2lkIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25RdWVyeVVwZGF0ZWQ6IG9uUXVlcnlVcGRhdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtlZXBSb290RmllbGRzOiBrZWVwUm9vdEZpZWxkcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24gKHN0b3JlUmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RRdWVyaWVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShzdG9yZVJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXV0YXRpb25TdG9yZVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uU3RvcmVWYWx1ZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uU3RvcmVWYWx1ZS5lcnJvciA9IGVycjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGltaXN0aWNSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNhY2hlLnJlbW92ZU9wdGltaXN0aWMobXV0YXRpb25JZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0UXVlcmllcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIgaW5zdGFuY2VvZiBBcG9sbG9FcnJvciA/IGVyciA6IG5ldyBBcG9sbG9FcnJvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtFcnJvcjogZXJyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLm1hcmtNdXRhdGlvblJlc3VsdCA9IGZ1bmN0aW9uIChtdXRhdGlvbiwgY2FjaGUpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKGNhY2hlID09PSB2b2lkIDApIHsgY2FjaGUgPSB0aGlzLmNhY2hlOyB9XG4gICAgICAgIHZhciByZXN1bHQgPSBtdXRhdGlvbi5yZXN1bHQ7XG4gICAgICAgIHZhciBjYWNoZVdyaXRlcyA9IFtdO1xuICAgICAgICB2YXIgc2tpcENhY2hlID0gbXV0YXRpb24uZmV0Y2hQb2xpY3kgPT09IFwibm8tY2FjaGVcIjtcbiAgICAgICAgaWYgKCFza2lwQ2FjaGUgJiYgc2hvdWxkV3JpdGVSZXN1bHQocmVzdWx0LCBtdXRhdGlvbi5lcnJvclBvbGljeSkpIHtcbiAgICAgICAgICAgIGNhY2hlV3JpdGVzLnB1c2goe1xuICAgICAgICAgICAgICAgIHJlc3VsdDogcmVzdWx0LmRhdGEsXG4gICAgICAgICAgICAgICAgZGF0YUlkOiAnUk9PVF9NVVRBVElPTicsXG4gICAgICAgICAgICAgICAgcXVlcnk6IG11dGF0aW9uLmRvY3VtZW50LFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlczogbXV0YXRpb24udmFyaWFibGVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgdXBkYXRlUXVlcmllc18xID0gbXV0YXRpb24udXBkYXRlUXVlcmllcztcbiAgICAgICAgICAgIGlmICh1cGRhdGVRdWVyaWVzXzEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJpZXMuZm9yRWFjaChmdW5jdGlvbiAoX2EsIHF1ZXJ5SWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG9ic2VydmFibGVRdWVyeSA9IF9hLm9ic2VydmFibGVRdWVyeTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHF1ZXJ5TmFtZSA9IG9ic2VydmFibGVRdWVyeSAmJiBvYnNlcnZhYmxlUXVlcnkucXVlcnlOYW1lO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXF1ZXJ5TmFtZSB8fCAhaGFzT3duUHJvcGVydHkuY2FsbCh1cGRhdGVRdWVyaWVzXzEsIHF1ZXJ5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgdXBkYXRlciA9IHVwZGF0ZVF1ZXJpZXNfMVtxdWVyeU5hbWVdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2IgPSBfdGhpcy5xdWVyaWVzLmdldChxdWVyeUlkKSwgZG9jdW1lbnQgPSBfYi5kb2N1bWVudCwgdmFyaWFibGVzID0gX2IudmFyaWFibGVzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2MgPSBjYWNoZS5kaWZmKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBkb2N1bWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuUGFydGlhbERhdGE6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWlzdGljOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSksIGN1cnJlbnRRdWVyeVJlc3VsdCA9IF9jLnJlc3VsdCwgY29tcGxldGUgPSBfYy5jb21wbGV0ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBsZXRlICYmIGN1cnJlbnRRdWVyeVJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5leHRRdWVyeVJlc3VsdCA9IHVwZGF0ZXIoY3VycmVudFF1ZXJ5UmVzdWx0LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRpb25SZXN1bHQ6IHJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeU5hbWU6IGRvY3VtZW50ICYmIGdldE9wZXJhdGlvbk5hbWUoZG9jdW1lbnQpIHx8IHZvaWQgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeVZhcmlhYmxlczogdmFyaWFibGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV4dFF1ZXJ5UmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVXcml0ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDogbmV4dFF1ZXJ5UmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhSWQ6ICdST09UX1FVRVJZJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IGRvY3VtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjYWNoZVdyaXRlcy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICBtdXRhdGlvbi5yZWZldGNoUXVlcmllcyB8fFxuICAgICAgICAgICAgbXV0YXRpb24udXBkYXRlIHx8XG4gICAgICAgICAgICBtdXRhdGlvbi5vblF1ZXJ5VXBkYXRlZCB8fFxuICAgICAgICAgICAgbXV0YXRpb24ucmVtb3ZlT3B0aW1pc3RpYykge1xuICAgICAgICAgICAgdmFyIHJlc3VsdHNfMSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5yZWZldGNoUXVlcmllcyh7XG4gICAgICAgICAgICAgICAgdXBkYXRlQ2FjaGU6IGZ1bmN0aW9uIChjYWNoZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXNraXBDYWNoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVXcml0ZXMuZm9yRWFjaChmdW5jdGlvbiAod3JpdGUpIHsgcmV0dXJuIGNhY2hlLndyaXRlKHdyaXRlKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIHVwZGF0ZSA9IG11dGF0aW9uLnVwZGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVwZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFza2lwQ2FjaGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IGNhY2hlLmRpZmYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJST09UX01VVEFUSU9OXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBfdGhpcy50cmFuc2Zvcm0obXV0YXRpb24uZG9jdW1lbnQpLmFzUXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogbXV0YXRpb24udmFyaWFibGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWlzdGljOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuUGFydGlhbERhdGE6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpZmYuY29tcGxldGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3VsdCksIHsgZGF0YTogZGlmZi5yZXN1bHQgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlKGNhY2hlLCByZXN1bHQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBtdXRhdGlvbi5jb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogbXV0YXRpb24udmFyaWFibGVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFza2lwQ2FjaGUgJiYgIW11dGF0aW9uLmtlZXBSb290RmllbGRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZS5tb2RpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnUk9PVF9NVVRBVElPTicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzOiBmdW5jdGlvbiAodmFsdWUsIF9hKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaWVsZE5hbWUgPSBfYS5maWVsZE5hbWUsIERFTEVURSA9IF9hLkRFTEVURTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkTmFtZSA9PT0gXCJfX3R5cGVuYW1lXCIgPyB2YWx1ZSA6IERFTEVURTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGluY2x1ZGU6IG11dGF0aW9uLnJlZmV0Y2hRdWVyaWVzLFxuICAgICAgICAgICAgICAgIG9wdGltaXN0aWM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlbW92ZU9wdGltaXN0aWM6IG11dGF0aW9uLnJlbW92ZU9wdGltaXN0aWMsXG4gICAgICAgICAgICAgICAgb25RdWVyeVVwZGF0ZWQ6IG11dGF0aW9uLm9uUXVlcnlVcGRhdGVkIHx8IG51bGwsXG4gICAgICAgICAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChyZXN1bHQpIHsgcmV0dXJuIHJlc3VsdHNfMS5wdXNoKHJlc3VsdCk7IH0pO1xuICAgICAgICAgICAgaWYgKG11dGF0aW9uLmF3YWl0UmVmZXRjaFF1ZXJpZXMgfHwgbXV0YXRpb24ub25RdWVyeVVwZGF0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocmVzdWx0c18xKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc3VsdDsgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5tYXJrTXV0YXRpb25PcHRpbWlzdGljID0gZnVuY3Rpb24gKG9wdGltaXN0aWNSZXNwb25zZSwgbXV0YXRpb24pIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGRhdGEgPSB0eXBlb2Ygb3B0aW1pc3RpY1Jlc3BvbnNlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgID8gb3B0aW1pc3RpY1Jlc3BvbnNlKG11dGF0aW9uLnZhcmlhYmxlcylcbiAgICAgICAgICAgIDogb3B0aW1pc3RpY1Jlc3BvbnNlO1xuICAgICAgICByZXR1cm4gdGhpcy5jYWNoZS5yZWNvcmRPcHRpbWlzdGljVHJhbnNhY3Rpb24oZnVuY3Rpb24gKGNhY2hlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIF90aGlzLm1hcmtNdXRhdGlvblJlc3VsdChfX2Fzc2lnbihfX2Fzc2lnbih7fSwgbXV0YXRpb24pLCB7IHJlc3VsdDogeyBkYXRhOiBkYXRhIH0gfSksIGNhY2hlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIF9fREVWX18gJiYgaW52YXJpYW50LmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgbXV0YXRpb24ubXV0YXRpb25JZCk7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLmZldGNoUXVlcnkgPSBmdW5jdGlvbiAocXVlcnlJZCwgb3B0aW9ucywgbmV0d29ya1N0YXR1cykge1xuICAgICAgICByZXR1cm4gdGhpcy5mZXRjaFF1ZXJ5T2JzZXJ2YWJsZShxdWVyeUlkLCBvcHRpb25zLCBuZXR3b3JrU3RhdHVzKS5wcm9taXNlO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5nZXRRdWVyeVN0b3JlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc3RvcmUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICB0aGlzLnF1ZXJpZXMuZm9yRWFjaChmdW5jdGlvbiAoaW5mbywgcXVlcnlJZCkge1xuICAgICAgICAgICAgc3RvcmVbcXVlcnlJZF0gPSB7XG4gICAgICAgICAgICAgICAgdmFyaWFibGVzOiBpbmZvLnZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgICBuZXR3b3JrU3RhdHVzOiBpbmZvLm5ldHdvcmtTdGF0dXMsXG4gICAgICAgICAgICAgICAgbmV0d29ya0Vycm9yOiBpbmZvLm5ldHdvcmtFcnJvcixcbiAgICAgICAgICAgICAgICBncmFwaFFMRXJyb3JzOiBpbmZvLmdyYXBoUUxFcnJvcnMsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHN0b3JlO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5yZXNldEVycm9ycyA9IGZ1bmN0aW9uIChxdWVyeUlkKSB7XG4gICAgICAgIHZhciBxdWVyeUluZm8gPSB0aGlzLnF1ZXJpZXMuZ2V0KHF1ZXJ5SWQpO1xuICAgICAgICBpZiAocXVlcnlJbmZvKSB7XG4gICAgICAgICAgICBxdWVyeUluZm8ubmV0d29ya0Vycm9yID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgcXVlcnlJbmZvLmdyYXBoUUxFcnJvcnMgPSBbXTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiAoZG9jdW1lbnQpIHtcbiAgICAgICAgdmFyIHRyYW5zZm9ybUNhY2hlID0gdGhpcy50cmFuc2Zvcm1DYWNoZTtcbiAgICAgICAgaWYgKCF0cmFuc2Zvcm1DYWNoZS5oYXMoZG9jdW1lbnQpKSB7XG4gICAgICAgICAgICB2YXIgdHJhbnNmb3JtZWQgPSB0aGlzLmNhY2hlLnRyYW5zZm9ybURvY3VtZW50KGRvY3VtZW50KTtcbiAgICAgICAgICAgIHZhciBmb3JMaW5rID0gcmVtb3ZlQ29ubmVjdGlvbkRpcmVjdGl2ZUZyb21Eb2N1bWVudCh0aGlzLmNhY2hlLnRyYW5zZm9ybUZvckxpbmsodHJhbnNmb3JtZWQpKTtcbiAgICAgICAgICAgIHZhciBjbGllbnRRdWVyeSA9IHRoaXMubG9jYWxTdGF0ZS5jbGllbnRRdWVyeSh0cmFuc2Zvcm1lZCk7XG4gICAgICAgICAgICB2YXIgc2VydmVyUXVlcnkgPSBmb3JMaW5rICYmIHRoaXMubG9jYWxTdGF0ZS5zZXJ2ZXJRdWVyeShmb3JMaW5rKTtcbiAgICAgICAgICAgIHZhciBjYWNoZUVudHJ5XzEgPSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQ6IHRyYW5zZm9ybWVkLFxuICAgICAgICAgICAgICAgIGhhc0NsaWVudEV4cG9ydHM6IGhhc0NsaWVudEV4cG9ydHModHJhbnNmb3JtZWQpLFxuICAgICAgICAgICAgICAgIGhhc0ZvcmNlZFJlc29sdmVyczogdGhpcy5sb2NhbFN0YXRlLnNob3VsZEZvcmNlUmVzb2x2ZXJzKHRyYW5zZm9ybWVkKSxcbiAgICAgICAgICAgICAgICBjbGllbnRRdWVyeTogY2xpZW50UXVlcnksXG4gICAgICAgICAgICAgICAgc2VydmVyUXVlcnk6IHNlcnZlclF1ZXJ5LFxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYXJzOiBnZXREZWZhdWx0VmFsdWVzKGdldE9wZXJhdGlvbkRlZmluaXRpb24odHJhbnNmb3JtZWQpKSxcbiAgICAgICAgICAgICAgICBhc1F1ZXJ5OiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgdHJhbnNmb3JtZWQpLCB7IGRlZmluaXRpb25zOiB0cmFuc2Zvcm1lZC5kZWZpbml0aW9ucy5tYXAoZnVuY3Rpb24gKGRlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlZi5raW5kID09PSBcIk9wZXJhdGlvbkRlZmluaXRpb25cIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZi5vcGVyYXRpb24gIT09IFwicXVlcnlcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZGVmKSwgeyBvcGVyYXRpb246IFwicXVlcnlcIiB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWY7XG4gICAgICAgICAgICAgICAgICAgIH0pIH0pXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIGFkZCA9IGZ1bmN0aW9uIChkb2MpIHtcbiAgICAgICAgICAgICAgICBpZiAoZG9jICYmICF0cmFuc2Zvcm1DYWNoZS5oYXMoZG9jKSkge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1DYWNoZS5zZXQoZG9jLCBjYWNoZUVudHJ5XzEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhZGQoZG9jdW1lbnQpO1xuICAgICAgICAgICAgYWRkKHRyYW5zZm9ybWVkKTtcbiAgICAgICAgICAgIGFkZChjbGllbnRRdWVyeSk7XG4gICAgICAgICAgICBhZGQoc2VydmVyUXVlcnkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cmFuc2Zvcm1DYWNoZS5nZXQoZG9jdW1lbnQpO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5nZXRWYXJpYWJsZXMgPSBmdW5jdGlvbiAoZG9jdW1lbnQsIHZhcmlhYmxlcykge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIHRoaXMudHJhbnNmb3JtKGRvY3VtZW50KS5kZWZhdWx0VmFycyksIHZhcmlhYmxlcyk7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLndhdGNoUXVlcnkgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICBvcHRpb25zID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9wdGlvbnMpLCB7IHZhcmlhYmxlczogdGhpcy5nZXRWYXJpYWJsZXMob3B0aW9ucy5xdWVyeSwgb3B0aW9ucy52YXJpYWJsZXMpIH0pO1xuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMubm90aWZ5T25OZXR3b3JrU3RhdHVzQ2hhbmdlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgb3B0aW9ucy5ub3RpZnlPbk5ldHdvcmtTdGF0dXNDaGFuZ2UgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcXVlcnlJbmZvID0gbmV3IFF1ZXJ5SW5mbyh0aGlzKTtcbiAgICAgICAgdmFyIG9ic2VydmFibGUgPSBuZXcgT2JzZXJ2YWJsZVF1ZXJ5KHtcbiAgICAgICAgICAgIHF1ZXJ5TWFuYWdlcjogdGhpcyxcbiAgICAgICAgICAgIHF1ZXJ5SW5mbzogcXVlcnlJbmZvLFxuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucXVlcmllcy5zZXQob2JzZXJ2YWJsZS5xdWVyeUlkLCBxdWVyeUluZm8pO1xuICAgICAgICBxdWVyeUluZm8uaW5pdCh7XG4gICAgICAgICAgICBkb2N1bWVudDogb3B0aW9ucy5xdWVyeSxcbiAgICAgICAgICAgIG9ic2VydmFibGVRdWVyeTogb2JzZXJ2YWJsZSxcbiAgICAgICAgICAgIHZhcmlhYmxlczogb3B0aW9ucy52YXJpYWJsZXMsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAob3B0aW9ucywgcXVlcnlJZCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAocXVlcnlJZCA9PT0gdm9pZCAwKSB7IHF1ZXJ5SWQgPSB0aGlzLmdlbmVyYXRlUXVlcnlJZCgpOyB9XG4gICAgICAgIF9fREVWX18gPyBpbnZhcmlhbnQob3B0aW9ucy5xdWVyeSwgJ3F1ZXJ5IG9wdGlvbiBpcyByZXF1aXJlZC4gWW91IG11c3Qgc3BlY2lmeSB5b3VyIEdyYXBoUUwgZG9jdW1lbnQgJyArXG4gICAgICAgICAgICAnaW4gdGhlIHF1ZXJ5IG9wdGlvbi4nKSA6IGludmFyaWFudChvcHRpb25zLnF1ZXJ5LCAxNCk7XG4gICAgICAgIF9fREVWX18gPyBpbnZhcmlhbnQob3B0aW9ucy5xdWVyeS5raW5kID09PSAnRG9jdW1lbnQnLCAnWW91IG11c3Qgd3JhcCB0aGUgcXVlcnkgc3RyaW5nIGluIGEgXCJncWxcIiB0YWcuJykgOiBpbnZhcmlhbnQob3B0aW9ucy5xdWVyeS5raW5kID09PSAnRG9jdW1lbnQnLCAxNSk7XG4gICAgICAgIF9fREVWX18gPyBpbnZhcmlhbnQoIW9wdGlvbnMucmV0dXJuUGFydGlhbERhdGEsICdyZXR1cm5QYXJ0aWFsRGF0YSBvcHRpb24gb25seSBzdXBwb3J0ZWQgb24gd2F0Y2hRdWVyeS4nKSA6IGludmFyaWFudCghb3B0aW9ucy5yZXR1cm5QYXJ0aWFsRGF0YSwgMTYpO1xuICAgICAgICBfX0RFVl9fID8gaW52YXJpYW50KCFvcHRpb25zLnBvbGxJbnRlcnZhbCwgJ3BvbGxJbnRlcnZhbCBvcHRpb24gb25seSBzdXBwb3J0ZWQgb24gd2F0Y2hRdWVyeS4nKSA6IGludmFyaWFudCghb3B0aW9ucy5wb2xsSW50ZXJ2YWwsIDE3KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hRdWVyeShxdWVyeUlkLCBvcHRpb25zKS5maW5hbGx5KGZ1bmN0aW9uICgpIHsgcmV0dXJuIF90aGlzLnN0b3BRdWVyeShxdWVyeUlkKTsgfSk7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLmdlbmVyYXRlUXVlcnlJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyh0aGlzLnF1ZXJ5SWRDb3VudGVyKyspO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5nZW5lcmF0ZVJlcXVlc3RJZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdElkQ291bnRlcisrO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5nZW5lcmF0ZU11dGF0aW9uSWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBTdHJpbmcodGhpcy5tdXRhdGlvbklkQ291bnRlcisrKTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUuc3RvcFF1ZXJ5SW5TdG9yZSA9IGZ1bmN0aW9uIChxdWVyeUlkKSB7XG4gICAgICAgIHRoaXMuc3RvcFF1ZXJ5SW5TdG9yZU5vQnJvYWRjYXN0KHF1ZXJ5SWQpO1xuICAgICAgICB0aGlzLmJyb2FkY2FzdFF1ZXJpZXMoKTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUuc3RvcFF1ZXJ5SW5TdG9yZU5vQnJvYWRjYXN0ID0gZnVuY3Rpb24gKHF1ZXJ5SWQpIHtcbiAgICAgICAgdmFyIHF1ZXJ5SW5mbyA9IHRoaXMucXVlcmllcy5nZXQocXVlcnlJZCk7XG4gICAgICAgIGlmIChxdWVyeUluZm8pXG4gICAgICAgICAgICBxdWVyeUluZm8uc3RvcCgpO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5jbGVhclN0b3JlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge1xuICAgICAgICAgICAgZGlzY2FyZFdhdGNoZXM6IHRydWUsXG4gICAgICAgIH07IH1cbiAgICAgICAgdGhpcy5jYW5jZWxQZW5kaW5nRmV0Y2hlcyhfX0RFVl9fID8gbmV3IEludmFyaWFudEVycm9yKCdTdG9yZSByZXNldCB3aGlsZSBxdWVyeSB3YXMgaW4gZmxpZ2h0IChub3QgY29tcGxldGVkIGluIGxpbmsgY2hhaW4pJykgOiBuZXcgSW52YXJpYW50RXJyb3IoMTgpKTtcbiAgICAgICAgdGhpcy5xdWVyaWVzLmZvckVhY2goZnVuY3Rpb24gKHF1ZXJ5SW5mbykge1xuICAgICAgICAgICAgaWYgKHF1ZXJ5SW5mby5vYnNlcnZhYmxlUXVlcnkpIHtcbiAgICAgICAgICAgICAgICBxdWVyeUluZm8ubmV0d29ya1N0YXR1cyA9IE5ldHdvcmtTdGF0dXMubG9hZGluZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHF1ZXJ5SW5mby5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5tdXRhdGlvblN0b3JlKSB7XG4gICAgICAgICAgICB0aGlzLm11dGF0aW9uU3RvcmUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNhY2hlLnJlc2V0KG9wdGlvbnMpO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5nZXRPYnNlcnZhYmxlUXVlcmllcyA9IGZ1bmN0aW9uIChpbmNsdWRlKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmIChpbmNsdWRlID09PSB2b2lkIDApIHsgaW5jbHVkZSA9IFwiYWN0aXZlXCI7IH1cbiAgICAgICAgdmFyIHF1ZXJpZXMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHZhciBxdWVyeU5hbWVzQW5kRG9jcyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdmFyIGxlZ2FjeVF1ZXJ5T3B0aW9ucyA9IG5ldyBTZXQoKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW5jbHVkZSkpIHtcbiAgICAgICAgICAgIGluY2x1ZGUuZm9yRWFjaChmdW5jdGlvbiAoZGVzYykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVzYyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICBxdWVyeU5hbWVzQW5kRG9jcy5zZXQoZGVzYywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0RvY3VtZW50Tm9kZShkZXNjKSkge1xuICAgICAgICAgICAgICAgICAgICBxdWVyeU5hbWVzQW5kRG9jcy5zZXQoX3RoaXMudHJhbnNmb3JtKGRlc2MpLmRvY3VtZW50LCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzTm9uTnVsbE9iamVjdChkZXNjKSAmJiBkZXNjLnF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGxlZ2FjeVF1ZXJ5T3B0aW9ucy5hZGQoZGVzYyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5xdWVyaWVzLmZvckVhY2goZnVuY3Rpb24gKF9hLCBxdWVyeUlkKSB7XG4gICAgICAgICAgICB2YXIgb3EgPSBfYS5vYnNlcnZhYmxlUXVlcnksIGRvY3VtZW50ID0gX2EuZG9jdW1lbnQ7XG4gICAgICAgICAgICBpZiAob3EpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZSA9PT0gXCJhbGxcIikge1xuICAgICAgICAgICAgICAgICAgICBxdWVyaWVzLnNldChxdWVyeUlkLCBvcSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5TmFtZSA9IG9xLnF1ZXJ5TmFtZSwgZmV0Y2hQb2xpY3kgPSBvcS5vcHRpb25zLmZldGNoUG9saWN5O1xuICAgICAgICAgICAgICAgIGlmIChmZXRjaFBvbGljeSA9PT0gXCJzdGFuZGJ5XCIgfHxcbiAgICAgICAgICAgICAgICAgICAgKGluY2x1ZGUgPT09IFwiYWN0aXZlXCIgJiYgIW9xLmhhc09ic2VydmVycygpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlID09PSBcImFjdGl2ZVwiIHx8XG4gICAgICAgICAgICAgICAgICAgIChxdWVyeU5hbWUgJiYgcXVlcnlOYW1lc0FuZERvY3MuaGFzKHF1ZXJ5TmFtZSkpIHx8XG4gICAgICAgICAgICAgICAgICAgIChkb2N1bWVudCAmJiBxdWVyeU5hbWVzQW5kRG9jcy5oYXMoZG9jdW1lbnQpKSkge1xuICAgICAgICAgICAgICAgICAgICBxdWVyaWVzLnNldChxdWVyeUlkLCBvcSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChxdWVyeU5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBxdWVyeU5hbWVzQW5kRG9jcy5zZXQocXVlcnlOYW1lLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnlOYW1lc0FuZERvY3Muc2V0KGRvY3VtZW50LCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobGVnYWN5UXVlcnlPcHRpb25zLnNpemUpIHtcbiAgICAgICAgICAgIGxlZ2FjeVF1ZXJ5T3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5SWQgPSBtYWtlVW5pcXVlSWQoXCJsZWdhY3lPbmVUaW1lUXVlcnlcIik7XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXJ5SW5mbyA9IF90aGlzLmdldFF1ZXJ5KHF1ZXJ5SWQpLmluaXQoe1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudDogb3B0aW9ucy5xdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiBvcHRpb25zLnZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB2YXIgb3EgPSBuZXcgT2JzZXJ2YWJsZVF1ZXJ5KHtcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlNYW5hZ2VyOiBfdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlJbmZvOiBxdWVyeUluZm8sXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IF9fYXNzaWduKF9fYXNzaWduKHt9LCBvcHRpb25zKSwgeyBmZXRjaFBvbGljeTogXCJuZXR3b3JrLW9ubHlcIiB9KSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnZhcmlhbnQob3EucXVlcnlJZCA9PT0gcXVlcnlJZCk7XG4gICAgICAgICAgICAgICAgcXVlcnlJbmZvLnNldE9ic2VydmFibGVRdWVyeShvcSk7XG4gICAgICAgICAgICAgICAgcXVlcmllcy5zZXQocXVlcnlJZCwgb3EpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF9fREVWX18gJiYgcXVlcnlOYW1lc0FuZERvY3Muc2l6ZSkge1xuICAgICAgICAgICAgcXVlcnlOYW1lc0FuZERvY3MuZm9yRWFjaChmdW5jdGlvbiAoaW5jbHVkZWQsIG5hbWVPckRvYykge1xuICAgICAgICAgICAgICAgIGlmICghaW5jbHVkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgX19ERVZfXyAmJiBpbnZhcmlhbnQud2FybihcIlVua25vd24gcXVlcnkgXCIuY29uY2F0KHR5cGVvZiBuYW1lT3JEb2MgPT09IFwic3RyaW5nXCIgPyBcIm5hbWVkIFwiIDogXCJcIikuY29uY2F0KEpTT04uc3RyaW5naWZ5KG5hbWVPckRvYywgbnVsbCwgMiksIFwiIHJlcXVlc3RlZCBpbiByZWZldGNoUXVlcmllcyBvcHRpb25zLmluY2x1ZGUgYXJyYXlcIikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBxdWVyaWVzO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5yZUZldGNoT2JzZXJ2YWJsZVF1ZXJpZXMgPSBmdW5jdGlvbiAoaW5jbHVkZVN0YW5kYnkpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKGluY2x1ZGVTdGFuZGJ5ID09PSB2b2lkIDApIHsgaW5jbHVkZVN0YW5kYnkgPSBmYWxzZTsgfVxuICAgICAgICB2YXIgb2JzZXJ2YWJsZVF1ZXJ5UHJvbWlzZXMgPSBbXTtcbiAgICAgICAgdGhpcy5nZXRPYnNlcnZhYmxlUXVlcmllcyhpbmNsdWRlU3RhbmRieSA/IFwiYWxsXCIgOiBcImFjdGl2ZVwiKS5mb3JFYWNoKGZ1bmN0aW9uIChvYnNlcnZhYmxlUXVlcnksIHF1ZXJ5SWQpIHtcbiAgICAgICAgICAgIHZhciBmZXRjaFBvbGljeSA9IG9ic2VydmFibGVRdWVyeS5vcHRpb25zLmZldGNoUG9saWN5O1xuICAgICAgICAgICAgb2JzZXJ2YWJsZVF1ZXJ5LnJlc2V0TGFzdFJlc3VsdHMoKTtcbiAgICAgICAgICAgIGlmIChpbmNsdWRlU3RhbmRieSB8fFxuICAgICAgICAgICAgICAgIChmZXRjaFBvbGljeSAhPT0gXCJzdGFuZGJ5XCIgJiZcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hQb2xpY3kgIT09IFwiY2FjaGUtb25seVwiKSkge1xuICAgICAgICAgICAgICAgIG9ic2VydmFibGVRdWVyeVByb21pc2VzLnB1c2gob2JzZXJ2YWJsZVF1ZXJ5LnJlZmV0Y2goKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfdGhpcy5nZXRRdWVyeShxdWVyeUlkKS5zZXREaWZmKG51bGwpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5icm9hZGNhc3RRdWVyaWVzKCk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChvYnNlcnZhYmxlUXVlcnlQcm9taXNlcyk7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLnNldE9ic2VydmFibGVRdWVyeSA9IGZ1bmN0aW9uIChvYnNlcnZhYmxlUXVlcnkpIHtcbiAgICAgICAgdGhpcy5nZXRRdWVyeShvYnNlcnZhYmxlUXVlcnkucXVlcnlJZCkuc2V0T2JzZXJ2YWJsZVF1ZXJ5KG9ic2VydmFibGVRdWVyeSk7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLnN0YXJ0R3JhcGhRTFN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgcXVlcnkgPSBfYS5xdWVyeSwgZmV0Y2hQb2xpY3kgPSBfYS5mZXRjaFBvbGljeSwgZXJyb3JQb2xpY3kgPSBfYS5lcnJvclBvbGljeSwgdmFyaWFibGVzID0gX2EudmFyaWFibGVzLCBfYiA9IF9hLmNvbnRleHQsIGNvbnRleHQgPSBfYiA9PT0gdm9pZCAwID8ge30gOiBfYjtcbiAgICAgICAgcXVlcnkgPSB0aGlzLnRyYW5zZm9ybShxdWVyeSkuZG9jdW1lbnQ7XG4gICAgICAgIHZhcmlhYmxlcyA9IHRoaXMuZ2V0VmFyaWFibGVzKHF1ZXJ5LCB2YXJpYWJsZXMpO1xuICAgICAgICB2YXIgbWFrZU9ic2VydmFibGUgPSBmdW5jdGlvbiAodmFyaWFibGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuZ2V0T2JzZXJ2YWJsZUZyb21MaW5rKHF1ZXJ5LCBjb250ZXh0LCB2YXJpYWJsZXMpLm1hcChmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgaWYgKGZldGNoUG9saWN5ICE9PSAnbm8tY2FjaGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRXcml0ZVJlc3VsdChyZXN1bHQsIGVycm9yUG9saWN5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMuY2FjaGUud3JpdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ6IHJlc3VsdC5kYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFJZDogJ1JPT1RfU1VCU0NSSVBUSU9OJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IHZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmJyb2FkY2FzdFF1ZXJpZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGdyYXBoUUxSZXN1bHRIYXNFcnJvcihyZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcG9sbG9FcnJvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICBncmFwaFFMRXJyb3JzOiByZXN1bHQuZXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy50cmFuc2Zvcm0ocXVlcnkpLmhhc0NsaWVudEV4cG9ydHMpIHtcbiAgICAgICAgICAgIHZhciBvYnNlcnZhYmxlUHJvbWlzZV8xID0gdGhpcy5sb2NhbFN0YXRlLmFkZEV4cG9ydGVkVmFyaWFibGVzKHF1ZXJ5LCB2YXJpYWJsZXMsIGNvbnRleHQpLnRoZW4obWFrZU9ic2VydmFibGUpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICAgICAgICAgIHZhciBzdWIgPSBudWxsO1xuICAgICAgICAgICAgICAgIG9ic2VydmFibGVQcm9taXNlXzEudGhlbihmdW5jdGlvbiAob2JzZXJ2YWJsZSkgeyByZXR1cm4gc3ViID0gb2JzZXJ2YWJsZS5zdWJzY3JpYmUob2JzZXJ2ZXIpOyB9LCBvYnNlcnZlci5lcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN1YiAmJiBzdWIudW5zdWJzY3JpYmUoKTsgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYWtlT2JzZXJ2YWJsZSh2YXJpYWJsZXMpO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5zdG9wUXVlcnkgPSBmdW5jdGlvbiAocXVlcnlJZCkge1xuICAgICAgICB0aGlzLnN0b3BRdWVyeU5vQnJvYWRjYXN0KHF1ZXJ5SWQpO1xuICAgICAgICB0aGlzLmJyb2FkY2FzdFF1ZXJpZXMoKTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUuc3RvcFF1ZXJ5Tm9Ccm9hZGNhc3QgPSBmdW5jdGlvbiAocXVlcnlJZCkge1xuICAgICAgICB0aGlzLnN0b3BRdWVyeUluU3RvcmVOb0Jyb2FkY2FzdChxdWVyeUlkKTtcbiAgICAgICAgdGhpcy5yZW1vdmVRdWVyeShxdWVyeUlkKTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUucmVtb3ZlUXVlcnkgPSBmdW5jdGlvbiAocXVlcnlJZCkge1xuICAgICAgICB0aGlzLmZldGNoQ2FuY2VsRm5zLmRlbGV0ZShxdWVyeUlkKTtcbiAgICAgICAgdGhpcy5nZXRRdWVyeShxdWVyeUlkKS5zdG9wKCk7XG4gICAgICAgIHRoaXMucXVlcmllcy5kZWxldGUocXVlcnlJZCk7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLmJyb2FkY2FzdFF1ZXJpZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLm9uQnJvYWRjYXN0KVxuICAgICAgICAgICAgdGhpcy5vbkJyb2FkY2FzdCgpO1xuICAgICAgICB0aGlzLnF1ZXJpZXMuZm9yRWFjaChmdW5jdGlvbiAoaW5mbykgeyByZXR1cm4gaW5mby5ub3RpZnkoKTsgfSk7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLmdldExvY2FsU3RhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsU3RhdGU7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLmdldE9ic2VydmFibGVGcm9tTGluayA9IGZ1bmN0aW9uIChxdWVyeSwgY29udGV4dCwgdmFyaWFibGVzLCBkZWR1cGxpY2F0aW9uKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGRlZHVwbGljYXRpb24gPT09IHZvaWQgMCkgeyBkZWR1cGxpY2F0aW9uID0gKF9hID0gY29udGV4dCA9PT0gbnVsbCB8fCBjb250ZXh0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250ZXh0LnF1ZXJ5RGVkdXBsaWNhdGlvbikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdGhpcy5xdWVyeURlZHVwbGljYXRpb247IH1cbiAgICAgICAgdmFyIG9ic2VydmFibGU7XG4gICAgICAgIHZhciBzZXJ2ZXJRdWVyeSA9IHRoaXMudHJhbnNmb3JtKHF1ZXJ5KS5zZXJ2ZXJRdWVyeTtcbiAgICAgICAgaWYgKHNlcnZlclF1ZXJ5KSB7XG4gICAgICAgICAgICB2YXIgX2IgPSB0aGlzLCBpbkZsaWdodExpbmtPYnNlcnZhYmxlc18xID0gX2IuaW5GbGlnaHRMaW5rT2JzZXJ2YWJsZXMsIGxpbmsgPSBfYi5saW5rO1xuICAgICAgICAgICAgdmFyIG9wZXJhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICBxdWVyeTogc2VydmVyUXVlcnksXG4gICAgICAgICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uTmFtZTogZ2V0T3BlcmF0aW9uTmFtZShzZXJ2ZXJRdWVyeSkgfHwgdm9pZCAwLFxuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHRoaXMucHJlcGFyZUNvbnRleHQoX19hc3NpZ24oX19hc3NpZ24oe30sIGNvbnRleHQpLCB7IGZvcmNlRmV0Y2g6ICFkZWR1cGxpY2F0aW9uIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb250ZXh0ID0gb3BlcmF0aW9uLmNvbnRleHQ7XG4gICAgICAgICAgICBpZiAoZGVkdXBsaWNhdGlvbikge1xuICAgICAgICAgICAgICAgIHZhciBieVZhcmlhYmxlc18xID0gaW5GbGlnaHRMaW5rT2JzZXJ2YWJsZXNfMS5nZXQoc2VydmVyUXVlcnkpIHx8IG5ldyBNYXAoKTtcbiAgICAgICAgICAgICAgICBpbkZsaWdodExpbmtPYnNlcnZhYmxlc18xLnNldChzZXJ2ZXJRdWVyeSwgYnlWYXJpYWJsZXNfMSk7XG4gICAgICAgICAgICAgICAgdmFyIHZhckpzb25fMSA9IGNhbm9uaWNhbFN0cmluZ2lmeSh2YXJpYWJsZXMpO1xuICAgICAgICAgICAgICAgIG9ic2VydmFibGUgPSBieVZhcmlhYmxlc18xLmdldCh2YXJKc29uXzEpO1xuICAgICAgICAgICAgICAgIGlmICghb2JzZXJ2YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY29uY2FzdCA9IG5ldyBDb25jYXN0KFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGUobGluaywgb3BlcmF0aW9uKVxuICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICAgICAgYnlWYXJpYWJsZXNfMS5zZXQodmFySnNvbl8xLCBvYnNlcnZhYmxlID0gY29uY2FzdCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbmNhc3QuY2xlYW51cChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnlWYXJpYWJsZXNfMS5kZWxldGUodmFySnNvbl8xKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5VmFyaWFibGVzXzEuc2l6ZSA8IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbkZsaWdodExpbmtPYnNlcnZhYmxlc18xLmRlbGV0ZShzZXJ2ZXJRdWVyeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG9ic2VydmFibGUgPSBuZXcgQ29uY2FzdChbXG4gICAgICAgICAgICAgICAgICAgIGV4ZWN1dGUobGluaywgb3BlcmF0aW9uKVxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb2JzZXJ2YWJsZSA9IG5ldyBDb25jYXN0KFtcbiAgICAgICAgICAgICAgICBPYnNlcnZhYmxlLm9mKHsgZGF0YToge30gfSlcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgY29udGV4dCA9IHRoaXMucHJlcGFyZUNvbnRleHQoY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNsaWVudFF1ZXJ5ID0gdGhpcy50cmFuc2Zvcm0ocXVlcnkpLmNsaWVudFF1ZXJ5O1xuICAgICAgICBpZiAoY2xpZW50UXVlcnkpIHtcbiAgICAgICAgICAgIG9ic2VydmFibGUgPSBhc3luY01hcChvYnNlcnZhYmxlLCBmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmxvY2FsU3RhdGUucnVuUmVzb2x2ZXJzKHtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ6IGNsaWVudFF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICByZW1vdGVSZXN1bHQ6IHJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUuZ2V0UmVzdWx0c0Zyb21MaW5rID0gZnVuY3Rpb24gKHF1ZXJ5SW5mbywgY2FjaGVXcml0ZUJlaGF2aW9yLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciByZXF1ZXN0SWQgPSBxdWVyeUluZm8ubGFzdFJlcXVlc3RJZCA9IHRoaXMuZ2VuZXJhdGVSZXF1ZXN0SWQoKTtcbiAgICAgICAgcmV0dXJuIGFzeW5jTWFwKHRoaXMuZ2V0T2JzZXJ2YWJsZUZyb21MaW5rKHF1ZXJ5SW5mby5kb2N1bWVudCwgb3B0aW9ucy5jb250ZXh0LCBvcHRpb25zLnZhcmlhYmxlcyksIGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgIHZhciBoYXNFcnJvcnMgPSBpc05vbkVtcHR5QXJyYXkocmVzdWx0LmVycm9ycyk7XG4gICAgICAgICAgICBpZiAocmVxdWVzdElkID49IHF1ZXJ5SW5mby5sYXN0UmVxdWVzdElkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0Vycm9ycyAmJiBvcHRpb25zLmVycm9yUG9saWN5ID09PSBcIm5vbmVcIikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBxdWVyeUluZm8ubWFya0Vycm9yKG5ldyBBcG9sbG9FcnJvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICBncmFwaFFMRXJyb3JzOiByZXN1bHQuZXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHF1ZXJ5SW5mby5tYXJrUmVzdWx0KHJlc3VsdCwgb3B0aW9ucywgY2FjaGVXcml0ZUJlaGF2aW9yKTtcbiAgICAgICAgICAgICAgICBxdWVyeUluZm8ubWFya1JlYWR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgYXFyID0ge1xuICAgICAgICAgICAgICAgIGRhdGE6IHJlc3VsdC5kYXRhLFxuICAgICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIG5ldHdvcmtTdGF0dXM6IHF1ZXJ5SW5mby5uZXR3b3JrU3RhdHVzIHx8IE5ldHdvcmtTdGF0dXMucmVhZHksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKGhhc0Vycm9ycyAmJiBvcHRpb25zLmVycm9yUG9saWN5ICE9PSBcImlnbm9yZVwiKSB7XG4gICAgICAgICAgICAgICAgYXFyLmVycm9ycyA9IHJlc3VsdC5lcnJvcnM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYXFyO1xuICAgICAgICB9LCBmdW5jdGlvbiAobmV0d29ya0Vycm9yKSB7XG4gICAgICAgICAgICB2YXIgZXJyb3IgPSBpc0Fwb2xsb0Vycm9yKG5ldHdvcmtFcnJvcilcbiAgICAgICAgICAgICAgICA/IG5ldHdvcmtFcnJvclxuICAgICAgICAgICAgICAgIDogbmV3IEFwb2xsb0Vycm9yKHsgbmV0d29ya0Vycm9yOiBuZXR3b3JrRXJyb3IgfSk7XG4gICAgICAgICAgICBpZiAocmVxdWVzdElkID49IHF1ZXJ5SW5mby5sYXN0UmVxdWVzdElkKSB7XG4gICAgICAgICAgICAgICAgcXVlcnlJbmZvLm1hcmtFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLmZldGNoUXVlcnlPYnNlcnZhYmxlID0gZnVuY3Rpb24gKHF1ZXJ5SWQsIG9wdGlvbnMsIG5ldHdvcmtTdGF0dXMpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKG5ldHdvcmtTdGF0dXMgPT09IHZvaWQgMCkgeyBuZXR3b3JrU3RhdHVzID0gTmV0d29ya1N0YXR1cy5sb2FkaW5nOyB9XG4gICAgICAgIHZhciBxdWVyeSA9IHRoaXMudHJhbnNmb3JtKG9wdGlvbnMucXVlcnkpLmRvY3VtZW50O1xuICAgICAgICB2YXIgdmFyaWFibGVzID0gdGhpcy5nZXRWYXJpYWJsZXMocXVlcnksIG9wdGlvbnMudmFyaWFibGVzKTtcbiAgICAgICAgdmFyIHF1ZXJ5SW5mbyA9IHRoaXMuZ2V0UXVlcnkocXVlcnlJZCk7XG4gICAgICAgIHZhciBfYSA9IG9wdGlvbnMuZmV0Y2hQb2xpY3ksIGZldGNoUG9saWN5ID0gX2EgPT09IHZvaWQgMCA/IFwiY2FjaGUtZmlyc3RcIiA6IF9hLCBfYiA9IG9wdGlvbnMuZXJyb3JQb2xpY3ksIGVycm9yUG9saWN5ID0gX2IgPT09IHZvaWQgMCA/IFwibm9uZVwiIDogX2IsIF9jID0gb3B0aW9ucy5yZXR1cm5QYXJ0aWFsRGF0YSwgcmV0dXJuUGFydGlhbERhdGEgPSBfYyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYywgX2QgPSBvcHRpb25zLm5vdGlmeU9uTmV0d29ya1N0YXR1c0NoYW5nZSwgbm90aWZ5T25OZXR3b3JrU3RhdHVzQ2hhbmdlID0gX2QgPT09IHZvaWQgMCA/IGZhbHNlIDogX2QsIF9lID0gb3B0aW9ucy5jb250ZXh0LCBjb250ZXh0ID0gX2UgPT09IHZvaWQgMCA/IHt9IDogX2U7XG4gICAgICAgIHZhciBub3JtYWxpemVkID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucywge1xuICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5LFxuICAgICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMsXG4gICAgICAgICAgICBmZXRjaFBvbGljeTogZmV0Y2hQb2xpY3ksXG4gICAgICAgICAgICBlcnJvclBvbGljeTogZXJyb3JQb2xpY3ksXG4gICAgICAgICAgICByZXR1cm5QYXJ0aWFsRGF0YTogcmV0dXJuUGFydGlhbERhdGEsXG4gICAgICAgICAgICBub3RpZnlPbk5ldHdvcmtTdGF0dXNDaGFuZ2U6IG5vdGlmeU9uTmV0d29ya1N0YXR1c0NoYW5nZSxcbiAgICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZnJvbVZhcmlhYmxlcyA9IGZ1bmN0aW9uICh2YXJpYWJsZXMpIHtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWQudmFyaWFibGVzID0gdmFyaWFibGVzO1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzLmZldGNoUXVlcnlCeVBvbGljeShxdWVyeUluZm8sIG5vcm1hbGl6ZWQsIG5ldHdvcmtTdGF0dXMpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZldGNoQ2FuY2VsRm5zLnNldChxdWVyeUlkLCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNvbmNhc3QuY2FuY2VsKHJlYXNvbik7IH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGNvbmNhc3QgPSBuZXcgQ29uY2FzdCh0aGlzLnRyYW5zZm9ybShub3JtYWxpemVkLnF1ZXJ5KS5oYXNDbGllbnRFeHBvcnRzXG4gICAgICAgICAgICA/IHRoaXMubG9jYWxTdGF0ZS5hZGRFeHBvcnRlZFZhcmlhYmxlcyhub3JtYWxpemVkLnF1ZXJ5LCBub3JtYWxpemVkLnZhcmlhYmxlcywgbm9ybWFsaXplZC5jb250ZXh0KS50aGVuKGZyb21WYXJpYWJsZXMpXG4gICAgICAgICAgICA6IGZyb21WYXJpYWJsZXMobm9ybWFsaXplZC52YXJpYWJsZXMpKTtcbiAgICAgICAgY29uY2FzdC5jbGVhbnVwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzLmZldGNoQ2FuY2VsRm5zLmRlbGV0ZShxdWVyeUlkKTtcbiAgICAgICAgICAgIGFwcGx5TmV4dEZldGNoUG9saWN5KG9wdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNvbmNhc3Q7XG4gICAgfTtcbiAgICBRdWVyeU1hbmFnZXIucHJvdG90eXBlLnJlZmV0Y2hRdWVyaWVzID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciB1cGRhdGVDYWNoZSA9IF9hLnVwZGF0ZUNhY2hlLCBpbmNsdWRlID0gX2EuaW5jbHVkZSwgX2IgPSBfYS5vcHRpbWlzdGljLCBvcHRpbWlzdGljID0gX2IgPT09IHZvaWQgMCA/IGZhbHNlIDogX2IsIF9jID0gX2EucmVtb3ZlT3B0aW1pc3RpYywgcmVtb3ZlT3B0aW1pc3RpYyA9IF9jID09PSB2b2lkIDAgPyBvcHRpbWlzdGljID8gbWFrZVVuaXF1ZUlkKFwicmVmZXRjaFF1ZXJpZXNcIikgOiB2b2lkIDAgOiBfYywgb25RdWVyeVVwZGF0ZWQgPSBfYS5vblF1ZXJ5VXBkYXRlZDtcbiAgICAgICAgdmFyIGluY2x1ZGVkUXVlcmllc0J5SWQgPSBuZXcgTWFwKCk7XG4gICAgICAgIGlmIChpbmNsdWRlKSB7XG4gICAgICAgICAgICB0aGlzLmdldE9ic2VydmFibGVRdWVyaWVzKGluY2x1ZGUpLmZvckVhY2goZnVuY3Rpb24gKG9xLCBxdWVyeUlkKSB7XG4gICAgICAgICAgICAgICAgaW5jbHVkZWRRdWVyaWVzQnlJZC5zZXQocXVlcnlJZCwge1xuICAgICAgICAgICAgICAgICAgICBvcTogb3EsXG4gICAgICAgICAgICAgICAgICAgIGxhc3REaWZmOiBfdGhpcy5nZXRRdWVyeShxdWVyeUlkKS5nZXREaWZmKCksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVzdWx0cyA9IG5ldyBNYXA7XG4gICAgICAgIGlmICh1cGRhdGVDYWNoZSkge1xuICAgICAgICAgICAgdGhpcy5jYWNoZS5iYXRjaCh7XG4gICAgICAgICAgICAgICAgdXBkYXRlOiB1cGRhdGVDYWNoZSxcbiAgICAgICAgICAgICAgICBvcHRpbWlzdGljOiBvcHRpbWlzdGljICYmIHJlbW92ZU9wdGltaXN0aWMgfHwgZmFsc2UsXG4gICAgICAgICAgICAgICAgcmVtb3ZlT3B0aW1pc3RpYzogcmVtb3ZlT3B0aW1pc3RpYyxcbiAgICAgICAgICAgICAgICBvbldhdGNoVXBkYXRlZDogZnVuY3Rpb24gKHdhdGNoLCBkaWZmLCBsYXN0RGlmZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgb3EgPSB3YXRjaC53YXRjaGVyIGluc3RhbmNlb2YgUXVlcnlJbmZvICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXRjaC53YXRjaGVyLm9ic2VydmFibGVRdWVyeTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob25RdWVyeVVwZGF0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlZFF1ZXJpZXNCeUlkLmRlbGV0ZShvcS5xdWVyeUlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gb25RdWVyeVVwZGF0ZWQob3EsIGRpZmYsIGxhc3REaWZmKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9xLnJlZmV0Y2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zZXQob3EsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob25RdWVyeVVwZGF0ZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlZFF1ZXJpZXNCeUlkLnNldChvcS5xdWVyeUlkLCB7IG9xOiBvcSwgbGFzdERpZmY6IGxhc3REaWZmLCBkaWZmOiBkaWZmIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmNsdWRlZFF1ZXJpZXNCeUlkLnNpemUpIHtcbiAgICAgICAgICAgIGluY2x1ZGVkUXVlcmllc0J5SWQuZm9yRWFjaChmdW5jdGlvbiAoX2EsIHF1ZXJ5SWQpIHtcbiAgICAgICAgICAgICAgICB2YXIgb3EgPSBfYS5vcSwgbGFzdERpZmYgPSBfYS5sYXN0RGlmZiwgZGlmZiA9IF9hLmRpZmY7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdDtcbiAgICAgICAgICAgICAgICBpZiAob25RdWVyeVVwZGF0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkaWZmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaW5mbyA9IG9xW1wicXVlcnlJbmZvXCJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlmZiA9IGluZm8uZ2V0RGlmZigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9uUXVlcnlVcGRhdGVkKG9xLCBkaWZmLCBsYXN0RGlmZik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghb25RdWVyeVVwZGF0ZWQgfHwgcmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9xLnJlZmV0Y2goKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zZXQob3EsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChxdWVyeUlkLmluZGV4T2YoXCJsZWdhY3lPbmVUaW1lUXVlcnlcIikgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5zdG9wUXVlcnlOb0Jyb2FkY2FzdChxdWVyeUlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVtb3ZlT3B0aW1pc3RpYykge1xuICAgICAgICAgICAgdGhpcy5jYWNoZS5yZW1vdmVPcHRpbWlzdGljKHJlbW92ZU9wdGltaXN0aWMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH07XG4gICAgUXVlcnlNYW5hZ2VyLnByb3RvdHlwZS5mZXRjaFF1ZXJ5QnlQb2xpY3kgPSBmdW5jdGlvbiAocXVlcnlJbmZvLCBfYSwgbmV0d29ya1N0YXR1cykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgcXVlcnkgPSBfYS5xdWVyeSwgdmFyaWFibGVzID0gX2EudmFyaWFibGVzLCBmZXRjaFBvbGljeSA9IF9hLmZldGNoUG9saWN5LCByZWZldGNoV3JpdGVQb2xpY3kgPSBfYS5yZWZldGNoV3JpdGVQb2xpY3ksIGVycm9yUG9saWN5ID0gX2EuZXJyb3JQb2xpY3ksIHJldHVyblBhcnRpYWxEYXRhID0gX2EucmV0dXJuUGFydGlhbERhdGEsIGNvbnRleHQgPSBfYS5jb250ZXh0LCBub3RpZnlPbk5ldHdvcmtTdGF0dXNDaGFuZ2UgPSBfYS5ub3RpZnlPbk5ldHdvcmtTdGF0dXNDaGFuZ2U7XG4gICAgICAgIHZhciBvbGROZXR3b3JrU3RhdHVzID0gcXVlcnlJbmZvLm5ldHdvcmtTdGF0dXM7XG4gICAgICAgIHF1ZXJ5SW5mby5pbml0KHtcbiAgICAgICAgICAgIGRvY3VtZW50OiBxdWVyeSxcbiAgICAgICAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzLFxuICAgICAgICAgICAgbmV0d29ya1N0YXR1czogbmV0d29ya1N0YXR1cyxcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciByZWFkQ2FjaGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBxdWVyeUluZm8uZ2V0RGlmZih2YXJpYWJsZXMpOyB9O1xuICAgICAgICB2YXIgcmVzdWx0c0Zyb21DYWNoZSA9IGZ1bmN0aW9uIChkaWZmLCBuZXR3b3JrU3RhdHVzKSB7XG4gICAgICAgICAgICBpZiAobmV0d29ya1N0YXR1cyA9PT0gdm9pZCAwKSB7IG5ldHdvcmtTdGF0dXMgPSBxdWVyeUluZm8ubmV0d29ya1N0YXR1cyB8fCBOZXR3b3JrU3RhdHVzLmxvYWRpbmc7IH1cbiAgICAgICAgICAgIHZhciBkYXRhID0gZGlmZi5yZXN1bHQ7XG4gICAgICAgICAgICBpZiAoX19ERVZfXyAmJlxuICAgICAgICAgICAgICAgICFyZXR1cm5QYXJ0aWFsRGF0YSAmJlxuICAgICAgICAgICAgICAgICFlcXVhbChkYXRhLCB7fSkpIHtcbiAgICAgICAgICAgICAgICBsb2dNaXNzaW5nRmllbGRFcnJvcnMoZGlmZi5taXNzaW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBmcm9tRGF0YSA9IGZ1bmN0aW9uIChkYXRhKSB7IHJldHVybiBPYnNlcnZhYmxlLm9mKF9fYXNzaWduKHsgZGF0YTogZGF0YSwgbG9hZGluZzogaXNOZXR3b3JrUmVxdWVzdEluRmxpZ2h0KG5ldHdvcmtTdGF0dXMpLCBuZXR3b3JrU3RhdHVzOiBuZXR3b3JrU3RhdHVzIH0sIChkaWZmLmNvbXBsZXRlID8gbnVsbCA6IHsgcGFydGlhbDogdHJ1ZSB9KSkpOyB9O1xuICAgICAgICAgICAgaWYgKGRhdGEgJiYgX3RoaXMudHJhbnNmb3JtKHF1ZXJ5KS5oYXNGb3JjZWRSZXNvbHZlcnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMubG9jYWxTdGF0ZS5ydW5SZXNvbHZlcnMoe1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudDogcXVlcnksXG4gICAgICAgICAgICAgICAgICAgIHJlbW90ZVJlc3VsdDogeyBkYXRhOiBkYXRhIH0sXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogdmFyaWFibGVzLFxuICAgICAgICAgICAgICAgICAgICBvbmx5UnVuRm9yY2VkUmVzb2x2ZXJzOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc29sdmVkKSB7IHJldHVybiBmcm9tRGF0YShyZXNvbHZlZC5kYXRhIHx8IHZvaWQgMCk7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZyb21EYXRhKGRhdGEpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgY2FjaGVXcml0ZUJlaGF2aW9yID0gZmV0Y2hQb2xpY3kgPT09IFwibm8tY2FjaGVcIiA/IDAgOlxuICAgICAgICAgICAgKG5ldHdvcmtTdGF0dXMgPT09IE5ldHdvcmtTdGF0dXMucmVmZXRjaCAmJlxuICAgICAgICAgICAgICAgIHJlZmV0Y2hXcml0ZVBvbGljeSAhPT0gXCJtZXJnZVwiKSA/IDFcbiAgICAgICAgICAgICAgICA6IDI7XG4gICAgICAgIHZhciByZXN1bHRzRnJvbUxpbmsgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuZ2V0UmVzdWx0c0Zyb21MaW5rKHF1ZXJ5SW5mbywgY2FjaGVXcml0ZUJlaGF2aW9yLCB7XG4gICAgICAgICAgICAgICAgdmFyaWFibGVzOiB2YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgY29udGV4dDogY29udGV4dCxcbiAgICAgICAgICAgICAgICBmZXRjaFBvbGljeTogZmV0Y2hQb2xpY3ksXG4gICAgICAgICAgICAgICAgZXJyb3JQb2xpY3k6IGVycm9yUG9saWN5LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBzaG91bGROb3RpZnkgPSBub3RpZnlPbk5ldHdvcmtTdGF0dXNDaGFuZ2UgJiZcbiAgICAgICAgICAgIHR5cGVvZiBvbGROZXR3b3JrU3RhdHVzID09PSBcIm51bWJlclwiICYmXG4gICAgICAgICAgICBvbGROZXR3b3JrU3RhdHVzICE9PSBuZXR3b3JrU3RhdHVzICYmXG4gICAgICAgICAgICBpc05ldHdvcmtSZXF1ZXN0SW5GbGlnaHQobmV0d29ya1N0YXR1cyk7XG4gICAgICAgIHN3aXRjaCAoZmV0Y2hQb2xpY3kpIHtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBjYXNlIFwiY2FjaGUtZmlyc3RcIjoge1xuICAgICAgICAgICAgICAgIHZhciBkaWZmID0gcmVhZENhY2hlKCk7XG4gICAgICAgICAgICAgICAgaWYgKGRpZmYuY29tcGxldGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNGcm9tQ2FjaGUoZGlmZiwgcXVlcnlJbmZvLm1hcmtSZWFkeSgpKSxcbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJldHVyblBhcnRpYWxEYXRhIHx8IHNob3VsZE5vdGlmeSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c0Zyb21DYWNoZShkaWZmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNGcm9tTGluaygpLFxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRzRnJvbUxpbmsoKSxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImNhY2hlLWFuZC1uZXR3b3JrXCI6IHtcbiAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IHJlYWRDYWNoZSgpO1xuICAgICAgICAgICAgICAgIGlmIChkaWZmLmNvbXBsZXRlIHx8IHJldHVyblBhcnRpYWxEYXRhIHx8IHNob3VsZE5vdGlmeSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c0Zyb21DYWNoZShkaWZmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNGcm9tTGluaygpLFxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRzRnJvbUxpbmsoKSxcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImNhY2hlLW9ubHlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRzRnJvbUNhY2hlKHJlYWRDYWNoZSgpLCBxdWVyeUluZm8ubWFya1JlYWR5KCkpLFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlIFwibmV0d29yay1vbmx5XCI6XG4gICAgICAgICAgICAgICAgaWYgKHNob3VsZE5vdGlmeSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c0Zyb21DYWNoZShyZWFkQ2FjaGUoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzRnJvbUxpbmsoKSxcbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtyZXN1bHRzRnJvbUxpbmsoKV07XG4gICAgICAgICAgICBjYXNlIFwibm8tY2FjaGVcIjpcbiAgICAgICAgICAgICAgICBpZiAoc2hvdWxkTm90aWZ5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzRnJvbUNhY2hlKHF1ZXJ5SW5mby5nZXREaWZmKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c0Zyb21MaW5rKCksXG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBbcmVzdWx0c0Zyb21MaW5rKCldO1xuICAgICAgICAgICAgY2FzZSBcInN0YW5kYnlcIjpcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUuZ2V0UXVlcnkgPSBmdW5jdGlvbiAocXVlcnlJZCkge1xuICAgICAgICBpZiAocXVlcnlJZCAmJiAhdGhpcy5xdWVyaWVzLmhhcyhxdWVyeUlkKSkge1xuICAgICAgICAgICAgdGhpcy5xdWVyaWVzLnNldChxdWVyeUlkLCBuZXcgUXVlcnlJbmZvKHRoaXMsIHF1ZXJ5SWQpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5xdWVyaWVzLmdldChxdWVyeUlkKTtcbiAgICB9O1xuICAgIFF1ZXJ5TWFuYWdlci5wcm90b3R5cGUucHJlcGFyZUNvbnRleHQgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgICBpZiAoY29udGV4dCA9PT0gdm9pZCAwKSB7IGNvbnRleHQgPSB7fTsgfVxuICAgICAgICB2YXIgbmV3Q29udGV4dCA9IHRoaXMubG9jYWxTdGF0ZS5wcmVwYXJlQ29udGV4dChjb250ZXh0KTtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBuZXdDb250ZXh0KSwgeyBjbGllbnRBd2FyZW5lc3M6IHRoaXMuY2xpZW50QXdhcmVuZXNzIH0pO1xuICAgIH07XG4gICAgcmV0dXJuIFF1ZXJ5TWFuYWdlcjtcbn0oKSk7XG5leHBvcnQgeyBRdWVyeU1hbmFnZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVF1ZXJ5TWFuYWdlci5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/core/QueryManager.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/core/index.js":
/*!***************************************************!*\
  !*** ./node_modules/@apollo/client/core/index.js ***!
  \***************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloCache\": function() { return /* reexport safe */ _cache_index_js__WEBPACK_IMPORTED_MODULE_6__.ApolloCache; },\n/* harmony export */   \"ApolloClient\": function() { return /* reexport safe */ _ApolloClient_js__WEBPACK_IMPORTED_MODULE_1__.ApolloClient; },\n/* harmony export */   \"ApolloError\": function() { return /* reexport safe */ _errors_index_js__WEBPACK_IMPORTED_MODULE_5__.ApolloError; },\n/* harmony export */   \"Cache\": function() { return /* reexport safe */ _cache_index_js__WEBPACK_IMPORTED_MODULE_6__.Cache; },\n/* harmony export */   \"InMemoryCache\": function() { return /* reexport safe */ _cache_index_js__WEBPACK_IMPORTED_MODULE_6__.InMemoryCache; },\n/* harmony export */   \"MissingFieldError\": function() { return /* reexport safe */ _cache_index_js__WEBPACK_IMPORTED_MODULE_6__.MissingFieldError; },\n/* harmony export */   \"NetworkStatus\": function() { return /* reexport safe */ _networkStatus_js__WEBPACK_IMPORTED_MODULE_3__.NetworkStatus; },\n/* harmony export */   \"Observable\": function() { return /* reexport safe */ _utilities_index_js__WEBPACK_IMPORTED_MODULE_11__.Observable; },\n/* harmony export */   \"ObservableQuery\": function() { return /* reexport safe */ _ObservableQuery_js__WEBPACK_IMPORTED_MODULE_2__.ObservableQuery; },\n/* harmony export */   \"applyNextFetchPolicy\": function() { return /* reexport safe */ _ObservableQuery_js__WEBPACK_IMPORTED_MODULE_2__.applyNextFetchPolicy; },\n/* harmony export */   \"defaultDataIdFromObject\": function() { return /* reexport safe */ _cache_index_js__WEBPACK_IMPORTED_MODULE_6__.defaultDataIdFromObject; },\n/* harmony export */   \"disableExperimentalFragmentVariables\": function() { return /* reexport safe */ graphql_tag__WEBPACK_IMPORTED_MODULE_13__.disableExperimentalFragmentVariables; },\n/* harmony export */   \"disableFragmentWarnings\": function() { return /* reexport safe */ graphql_tag__WEBPACK_IMPORTED_MODULE_13__.disableFragmentWarnings; },\n/* harmony export */   \"enableExperimentalFragmentVariables\": function() { return /* reexport safe */ graphql_tag__WEBPACK_IMPORTED_MODULE_13__.enableExperimentalFragmentVariables; },\n/* harmony export */   \"fromError\": function() { return /* reexport safe */ _link_utils_index_js__WEBPACK_IMPORTED_MODULE_10__.fromError; },\n/* harmony export */   \"fromPromise\": function() { return /* reexport safe */ _link_utils_index_js__WEBPACK_IMPORTED_MODULE_10__.fromPromise; },\n/* harmony export */   \"gql\": function() { return /* reexport safe */ graphql_tag__WEBPACK_IMPORTED_MODULE_13__.gql; },\n/* harmony export */   \"isApolloError\": function() { return /* reexport safe */ _errors_index_js__WEBPACK_IMPORTED_MODULE_5__.isApolloError; },\n/* harmony export */   \"isReference\": function() { return /* reexport safe */ _utilities_index_js__WEBPACK_IMPORTED_MODULE_11__.isReference; },\n/* harmony export */   \"makeReference\": function() { return /* reexport safe */ _utilities_index_js__WEBPACK_IMPORTED_MODULE_11__.makeReference; },\n/* harmony export */   \"makeVar\": function() { return /* reexport safe */ _cache_index_js__WEBPACK_IMPORTED_MODULE_6__.makeVar; },\n/* harmony export */   \"mergeOptions\": function() { return /* reexport safe */ _ApolloClient_js__WEBPACK_IMPORTED_MODULE_1__.mergeOptions; },\n/* harmony export */   \"resetCaches\": function() { return /* reexport safe */ graphql_tag__WEBPACK_IMPORTED_MODULE_13__.resetCaches; },\n/* harmony export */   \"setLogVerbosity\": function() { return /* reexport safe */ ts_invariant__WEBPACK_IMPORTED_MODULE_12__.setVerbosity; },\n/* harmony export */   \"throwServerError\": function() { return /* reexport safe */ _link_utils_index_js__WEBPACK_IMPORTED_MODULE_10__.throwServerError; },\n/* harmony export */   \"toPromise\": function() { return /* reexport safe */ _link_utils_index_js__WEBPACK_IMPORTED_MODULE_10__.toPromise; }\n/* harmony export */ });\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _ApolloClient_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ApolloClient.js */ \"./node_modules/@apollo/client/core/ApolloClient.js\");\n/* harmony import */ var _ObservableQuery_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ObservableQuery.js */ \"./node_modules/@apollo/client/core/ObservableQuery.js\");\n/* harmony import */ var _networkStatus_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./networkStatus.js */ \"./node_modules/@apollo/client/core/networkStatus.js\");\n/* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./types.js */ \"./node_modules/@apollo/client/core/types.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _types_js__WEBPACK_IMPORTED_MODULE_4__) if([\"default\",\"ApolloClient\",\"mergeOptions\",\"ObservableQuery\",\"applyNextFetchPolicy\",\"NetworkStatus\",\"isApolloError\",\"ApolloError\",\"Cache\",\"ApolloCache\",\"InMemoryCache\",\"MissingFieldError\",\"defaultDataIdFromObject\",\"makeVar\",\"fromError\",\"toPromise\",\"fromPromise\",\"throwServerError\",\"Observable\",\"isReference\",\"makeReference\",\"setLogVerbosity\",\"gql\",\"resetCaches\",\"disableFragmentWarnings\",\"enableExperimentalFragmentVariables\",\"disableExperimentalFragmentVariables\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _types_js__WEBPACK_IMPORTED_MODULE_4__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _errors_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../errors/index.js */ \"./node_modules/@apollo/client/errors/index.js\");\n/* harmony import */ var _cache_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../cache/index.js */ \"./node_modules/@apollo/client/cache/index.js\");\n/* harmony import */ var _cache_inmemory_types_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../cache/inmemory/types.js */ \"./node_modules/@apollo/client/cache/inmemory/types.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _cache_inmemory_types_js__WEBPACK_IMPORTED_MODULE_7__) if([\"default\",\"ApolloClient\",\"mergeOptions\",\"ObservableQuery\",\"applyNextFetchPolicy\",\"NetworkStatus\",\"isApolloError\",\"ApolloError\",\"Cache\",\"ApolloCache\",\"InMemoryCache\",\"MissingFieldError\",\"defaultDataIdFromObject\",\"makeVar\",\"fromError\",\"toPromise\",\"fromPromise\",\"throwServerError\",\"Observable\",\"isReference\",\"makeReference\",\"setLogVerbosity\",\"gql\",\"resetCaches\",\"disableFragmentWarnings\",\"enableExperimentalFragmentVariables\",\"disableExperimentalFragmentVariables\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _cache_inmemory_types_js__WEBPACK_IMPORTED_MODULE_7__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _link_core_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../link/core/index.js */ \"./node_modules/@apollo/client/link/core/index.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _link_core_index_js__WEBPACK_IMPORTED_MODULE_8__) if([\"default\",\"ApolloClient\",\"mergeOptions\",\"ObservableQuery\",\"applyNextFetchPolicy\",\"NetworkStatus\",\"isApolloError\",\"ApolloError\",\"Cache\",\"ApolloCache\",\"InMemoryCache\",\"MissingFieldError\",\"defaultDataIdFromObject\",\"makeVar\",\"fromError\",\"toPromise\",\"fromPromise\",\"throwServerError\",\"Observable\",\"isReference\",\"makeReference\",\"setLogVerbosity\",\"gql\",\"resetCaches\",\"disableFragmentWarnings\",\"enableExperimentalFragmentVariables\",\"disableExperimentalFragmentVariables\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _link_core_index_js__WEBPACK_IMPORTED_MODULE_8__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _link_http_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../link/http/index.js */ \"./node_modules/@apollo/client/link/http/index.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _link_http_index_js__WEBPACK_IMPORTED_MODULE_9__) if([\"default\",\"ApolloClient\",\"mergeOptions\",\"ObservableQuery\",\"applyNextFetchPolicy\",\"NetworkStatus\",\"isApolloError\",\"ApolloError\",\"Cache\",\"ApolloCache\",\"InMemoryCache\",\"MissingFieldError\",\"defaultDataIdFromObject\",\"makeVar\",\"fromError\",\"toPromise\",\"fromPromise\",\"throwServerError\",\"Observable\",\"isReference\",\"makeReference\",\"setLogVerbosity\",\"gql\",\"resetCaches\",\"disableFragmentWarnings\",\"enableExperimentalFragmentVariables\",\"disableExperimentalFragmentVariables\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _link_http_index_js__WEBPACK_IMPORTED_MODULE_9__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _link_utils_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../link/utils/index.js */ \"./node_modules/@apollo/client/link/utils/index.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n/* harmony import */ var ts_invariant__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ts-invariant */ \"./node_modules/@apollo/client/node_modules/ts-invariant/lib/invariant.esm.js\");\n/* harmony import */ var graphql_tag__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! graphql-tag */ \"./node_modules/graphql-tag/lib/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n(0,ts_invariant__WEBPACK_IMPORTED_MODULE_12__.setVerbosity)(_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.DEV ? \"log\" : \"silent\");\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY29yZS9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQW9EO0FBQ1k7QUFDYztBQUMzQjtBQUN4QjtBQUNxQztBQUM0RDtBQUNqRjtBQUNMO0FBQ0E7QUFDd0Q7QUFDZDtBQUNwQztBQUNEO0FBQzNDLDJEQUFZLENBQUMsNERBQUc7QUFDb0k7QUFDcEoiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L2NvcmUvaW5kZXguanM/MjU4NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERVYgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2dsb2JhbHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IEFwb2xsb0NsaWVudCwgbWVyZ2VPcHRpb25zLCB9IGZyb20gXCIuL0Fwb2xsb0NsaWVudC5qc1wiO1xuZXhwb3J0IHsgT2JzZXJ2YWJsZVF1ZXJ5LCBhcHBseU5leHRGZXRjaFBvbGljeSwgfSBmcm9tIFwiLi9PYnNlcnZhYmxlUXVlcnkuanNcIjtcbmV4cG9ydCB7IE5ldHdvcmtTdGF0dXMgfSBmcm9tIFwiLi9uZXR3b3JrU3RhdHVzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy5qc1wiO1xuZXhwb3J0IHsgaXNBcG9sbG9FcnJvciwgQXBvbGxvRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBDYWNoZSwgQXBvbGxvQ2FjaGUsIEluTWVtb3J5Q2FjaGUsIE1pc3NpbmdGaWVsZEVycm9yLCBkZWZhdWx0RGF0YUlkRnJvbU9iamVjdCwgbWFrZVZhciwgfSBmcm9tIFwiLi4vY2FjaGUvaW5kZXguanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuLi9jYWNoZS9pbm1lbW9yeS90eXBlcy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4uL2xpbmsvY29yZS9pbmRleC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4uL2xpbmsvaHR0cC9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZnJvbUVycm9yLCB0b1Byb21pc2UsIGZyb21Qcm9taXNlLCB0aHJvd1NlcnZlckVycm9yLCB9IGZyb20gXCIuLi9saW5rL3V0aWxzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBPYnNlcnZhYmxlLCBpc1JlZmVyZW5jZSwgbWFrZVJlZmVyZW5jZSwgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBzZXRWZXJib3NpdHkgfSBmcm9tIFwidHMtaW52YXJpYW50XCI7XG5leHBvcnQgeyBzZXRWZXJib3NpdHkgYXMgc2V0TG9nVmVyYm9zaXR5IH07XG5zZXRWZXJib3NpdHkoREVWID8gXCJsb2dcIiA6IFwic2lsZW50XCIpO1xuZXhwb3J0IHsgZ3FsLCByZXNldENhY2hlcywgZGlzYWJsZUZyYWdtZW50V2FybmluZ3MsIGVuYWJsZUV4cGVyaW1lbnRhbEZyYWdtZW50VmFyaWFibGVzLCBkaXNhYmxlRXhwZXJpbWVudGFsRnJhZ21lbnRWYXJpYWJsZXMsIH0gZnJvbSAnZ3JhcGhxbC10YWcnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/core/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/core/networkStatus.js":
/*!***********************************************************!*\
  !*** ./node_modules/@apollo/client/core/networkStatus.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NetworkStatus\": function() { return /* binding */ NetworkStatus; },\n/* harmony export */   \"isNetworkRequestInFlight\": function() { return /* binding */ isNetworkRequestInFlight; }\n/* harmony export */ });\nvar NetworkStatus;\n(function (NetworkStatus) {\n    NetworkStatus[NetworkStatus[\"loading\"] = 1] = \"loading\";\n    NetworkStatus[NetworkStatus[\"setVariables\"] = 2] = \"setVariables\";\n    NetworkStatus[NetworkStatus[\"fetchMore\"] = 3] = \"fetchMore\";\n    NetworkStatus[NetworkStatus[\"refetch\"] = 4] = \"refetch\";\n    NetworkStatus[NetworkStatus[\"poll\"] = 6] = \"poll\";\n    NetworkStatus[NetworkStatus[\"ready\"] = 7] = \"ready\";\n    NetworkStatus[NetworkStatus[\"error\"] = 8] = \"error\";\n})(NetworkStatus || (NetworkStatus = {}));\nfunction isNetworkRequestInFlight(networkStatus) {\n    return networkStatus ? networkStatus < 7 : false;\n}\n//# sourceMappingURL=networkStatus.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY29yZS9uZXR3b3JrU3RhdHVzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxzQ0FBc0M7QUFDaEM7QUFDUDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L2NvcmUvbmV0d29ya1N0YXR1cy5qcz9kYmFkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgTmV0d29ya1N0YXR1cztcbihmdW5jdGlvbiAoTmV0d29ya1N0YXR1cykge1xuICAgIE5ldHdvcmtTdGF0dXNbTmV0d29ya1N0YXR1c1tcImxvYWRpbmdcIl0gPSAxXSA9IFwibG9hZGluZ1wiO1xuICAgIE5ldHdvcmtTdGF0dXNbTmV0d29ya1N0YXR1c1tcInNldFZhcmlhYmxlc1wiXSA9IDJdID0gXCJzZXRWYXJpYWJsZXNcIjtcbiAgICBOZXR3b3JrU3RhdHVzW05ldHdvcmtTdGF0dXNbXCJmZXRjaE1vcmVcIl0gPSAzXSA9IFwiZmV0Y2hNb3JlXCI7XG4gICAgTmV0d29ya1N0YXR1c1tOZXR3b3JrU3RhdHVzW1wicmVmZXRjaFwiXSA9IDRdID0gXCJyZWZldGNoXCI7XG4gICAgTmV0d29ya1N0YXR1c1tOZXR3b3JrU3RhdHVzW1wicG9sbFwiXSA9IDZdID0gXCJwb2xsXCI7XG4gICAgTmV0d29ya1N0YXR1c1tOZXR3b3JrU3RhdHVzW1wicmVhZHlcIl0gPSA3XSA9IFwicmVhZHlcIjtcbiAgICBOZXR3b3JrU3RhdHVzW05ldHdvcmtTdGF0dXNbXCJlcnJvclwiXSA9IDhdID0gXCJlcnJvclwiO1xufSkoTmV0d29ya1N0YXR1cyB8fCAoTmV0d29ya1N0YXR1cyA9IHt9KSk7XG5leHBvcnQgZnVuY3Rpb24gaXNOZXR3b3JrUmVxdWVzdEluRmxpZ2h0KG5ldHdvcmtTdGF0dXMpIHtcbiAgICByZXR1cm4gbmV0d29ya1N0YXR1cyA/IG5ldHdvcmtTdGF0dXMgPCA3IDogZmFsc2U7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1uZXR3b3JrU3RhdHVzLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/core/networkStatus.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/core/types.js":
/*!***************************************************!*\
  !*** ./node_modules/@apollo/client/core/types.js ***!
  \***************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceMappingURL=types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY29yZS90eXBlcy5qcy5qcyIsIm1hcHBpbmdzIjoiO0FBQVU7QUFDViIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvY29yZS90eXBlcy5qcz9hMjU0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXR5cGVzLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/core/types.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/errors/index.js":
/*!*****************************************************!*\
  !*** ./node_modules/@apollo/client/errors/index.js ***!
  \*****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloError\": function() { return /* binding */ ApolloError; },\n/* harmony export */   \"isApolloError\": function() { return /* binding */ isApolloError; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n\n\n\nfunction isApolloError(err) {\n    return err.hasOwnProperty('graphQLErrors');\n}\nvar generateErrorMessage = function (err) {\n    var message = '';\n    if ((0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.isNonEmptyArray)(err.graphQLErrors) || (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.isNonEmptyArray)(err.clientErrors)) {\n        var errors = (err.graphQLErrors || [])\n            .concat(err.clientErrors || []);\n        errors.forEach(function (error) {\n            var errorMessage = error\n                ? error.message\n                : 'Error message not found.';\n            message += \"\".concat(errorMessage, \"\\n\");\n        });\n    }\n    if (err.networkError) {\n        message += \"\".concat(err.networkError.message, \"\\n\");\n    }\n    message = message.replace(/\\n$/, '');\n    return message;\n};\nvar ApolloError = (function (_super) {\n    (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(ApolloError, _super);\n    function ApolloError(_a) {\n        var graphQLErrors = _a.graphQLErrors, clientErrors = _a.clientErrors, networkError = _a.networkError, errorMessage = _a.errorMessage, extraInfo = _a.extraInfo;\n        var _this = _super.call(this, errorMessage) || this;\n        _this.graphQLErrors = graphQLErrors || [];\n        _this.clientErrors = clientErrors || [];\n        _this.networkError = networkError || null;\n        _this.message = errorMessage || generateErrorMessage(_this);\n        _this.extraInfo = extraInfo;\n        _this.__proto__ = ApolloError.prototype;\n        return _this;\n    }\n    return ApolloError;\n}(Error));\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvZXJyb3JzL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQWtDO0FBQ0s7QUFDaUI7QUFDakQ7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsb0VBQWUsdUJBQXVCLG9FQUFlO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNzQjtBQUN2QiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvZXJyb3JzL2luZGV4LmpzP2YwMzIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19leHRlbmRzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgXCIuLi91dGlsaXRpZXMvZ2xvYmFscy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgaXNOb25FbXB0eUFycmF5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9pbmRleC5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIGlzQXBvbGxvRXJyb3IoZXJyKSB7XG4gICAgcmV0dXJuIGVyci5oYXNPd25Qcm9wZXJ0eSgnZ3JhcGhRTEVycm9ycycpO1xufVxudmFyIGdlbmVyYXRlRXJyb3JNZXNzYWdlID0gZnVuY3Rpb24gKGVycikge1xuICAgIHZhciBtZXNzYWdlID0gJyc7XG4gICAgaWYgKGlzTm9uRW1wdHlBcnJheShlcnIuZ3JhcGhRTEVycm9ycykgfHwgaXNOb25FbXB0eUFycmF5KGVyci5jbGllbnRFcnJvcnMpKSB7XG4gICAgICAgIHZhciBlcnJvcnMgPSAoZXJyLmdyYXBoUUxFcnJvcnMgfHwgW10pXG4gICAgICAgICAgICAuY29uY2F0KGVyci5jbGllbnRFcnJvcnMgfHwgW10pO1xuICAgICAgICBlcnJvcnMuZm9yRWFjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHZhciBlcnJvck1lc3NhZ2UgPSBlcnJvclxuICAgICAgICAgICAgICAgID8gZXJyb3IubWVzc2FnZVxuICAgICAgICAgICAgICAgIDogJ0Vycm9yIG1lc3NhZ2Ugbm90IGZvdW5kLic7XG4gICAgICAgICAgICBtZXNzYWdlICs9IFwiXCIuY29uY2F0KGVycm9yTWVzc2FnZSwgXCJcXG5cIik7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZXJyLm5ldHdvcmtFcnJvcikge1xuICAgICAgICBtZXNzYWdlICs9IFwiXCIuY29uY2F0KGVyci5uZXR3b3JrRXJyb3IubWVzc2FnZSwgXCJcXG5cIik7XG4gICAgfVxuICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoL1xcbiQvLCAnJyk7XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG59O1xudmFyIEFwb2xsb0Vycm9yID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQXBvbGxvRXJyb3IsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQXBvbGxvRXJyb3IoX2EpIHtcbiAgICAgICAgdmFyIGdyYXBoUUxFcnJvcnMgPSBfYS5ncmFwaFFMRXJyb3JzLCBjbGllbnRFcnJvcnMgPSBfYS5jbGllbnRFcnJvcnMsIG5ldHdvcmtFcnJvciA9IF9hLm5ldHdvcmtFcnJvciwgZXJyb3JNZXNzYWdlID0gX2EuZXJyb3JNZXNzYWdlLCBleHRyYUluZm8gPSBfYS5leHRyYUluZm87XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIGVycm9yTWVzc2FnZSkgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuZ3JhcGhRTEVycm9ycyA9IGdyYXBoUUxFcnJvcnMgfHwgW107XG4gICAgICAgIF90aGlzLmNsaWVudEVycm9ycyA9IGNsaWVudEVycm9ycyB8fCBbXTtcbiAgICAgICAgX3RoaXMubmV0d29ya0Vycm9yID0gbmV0d29ya0Vycm9yIHx8IG51bGw7XG4gICAgICAgIF90aGlzLm1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UgfHwgZ2VuZXJhdGVFcnJvck1lc3NhZ2UoX3RoaXMpO1xuICAgICAgICBfdGhpcy5leHRyYUluZm8gPSBleHRyYUluZm87XG4gICAgICAgIF90aGlzLl9fcHJvdG9fXyA9IEFwb2xsb0Vycm9yLnByb3RvdHlwZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICByZXR1cm4gQXBvbGxvRXJyb3I7XG59KEVycm9yKSk7XG5leHBvcnQgeyBBcG9sbG9FcnJvciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/errors/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/index.js":
/*!**********************************************!*\
  !*** ./node_modules/@apollo/client/index.js ***!
  \**********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core/index.js */ \"./node_modules/@apollo/client/core/index.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _core_index_js__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _core_index_js__WEBPACK_IMPORTED_MODULE_0__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _react_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./react/index.js */ \"./node_modules/@apollo/client/react/index.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _react_index_js__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _react_index_js__WEBPACK_IMPORTED_MODULE_1__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWdDO0FBQ0M7QUFDakMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L2luZGV4LmpzPzc3ZjciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY29yZS9pbmRleC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmVhY3QvaW5kZXguanNcIjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/core/ApolloLink.js":
/*!*************************************************************!*\
  !*** ./node_modules/@apollo/client/link/core/ApolloLink.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloLink\": function() { return /* binding */ ApolloLink; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n/* harmony import */ var _utils_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/index.js */ \"./node_modules/@apollo/client/link/utils/index.js\");\n\n\n\n\nfunction passthrough(op, forward) {\n    return (forward ? forward(op) : _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.Observable.of());\n}\nfunction toLink(handler) {\n    return typeof handler === 'function' ? new ApolloLink(handler) : handler;\n}\nfunction isTerminating(link) {\n    return link.request.length <= 1;\n}\nvar LinkError = (function (_super) {\n    (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__extends)(LinkError, _super);\n    function LinkError(message, link) {\n        var _this = _super.call(this, message) || this;\n        _this.link = link;\n        return _this;\n    }\n    return LinkError;\n}(Error));\nvar ApolloLink = (function () {\n    function ApolloLink(request) {\n        if (request)\n            this.request = request;\n    }\n    ApolloLink.empty = function () {\n        return new ApolloLink(function () { return _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.Observable.of(); });\n    };\n    ApolloLink.from = function (links) {\n        if (links.length === 0)\n            return ApolloLink.empty();\n        return links.map(toLink).reduce(function (x, y) { return x.concat(y); });\n    };\n    ApolloLink.split = function (test, left, right) {\n        var leftLink = toLink(left);\n        var rightLink = toLink(right || new ApolloLink(passthrough));\n        if (isTerminating(leftLink) && isTerminating(rightLink)) {\n            return new ApolloLink(function (operation) {\n                return test(operation)\n                    ? leftLink.request(operation) || _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.Observable.of()\n                    : rightLink.request(operation) || _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.Observable.of();\n            });\n        }\n        else {\n            return new ApolloLink(function (operation, forward) {\n                return test(operation)\n                    ? leftLink.request(operation, forward) || _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.Observable.of()\n                    : rightLink.request(operation, forward) || _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.Observable.of();\n            });\n        }\n    };\n    ApolloLink.execute = function (link, operation) {\n        return (link.request((0,_utils_index_js__WEBPACK_IMPORTED_MODULE_3__.createOperation)(operation.context, (0,_utils_index_js__WEBPACK_IMPORTED_MODULE_3__.transformOperation)((0,_utils_index_js__WEBPACK_IMPORTED_MODULE_3__.validateOperation)(operation)))) || _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.Observable.of());\n    };\n    ApolloLink.concat = function (first, second) {\n        var firstLink = toLink(first);\n        if (isTerminating(firstLink)) {\n            __DEV__ && _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant.warn(new LinkError(\"You are calling concat on a terminating link, which will have no effect\", firstLink));\n            return firstLink;\n        }\n        var nextLink = toLink(second);\n        if (isTerminating(nextLink)) {\n            return new ApolloLink(function (operation) {\n                return firstLink.request(operation, function (op) { return nextLink.request(op) || _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.Observable.of(); }) || _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.Observable.of();\n            });\n        }\n        else {\n            return new ApolloLink(function (operation, forward) {\n                return (firstLink.request(operation, function (op) {\n                    return nextLink.request(op, forward) || _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.Observable.of();\n                }) || _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.Observable.of());\n            });\n        }\n    };\n    ApolloLink.prototype.split = function (test, left, right) {\n        return this.concat(ApolloLink.split(test, left, right || new ApolloLink(passthrough)));\n    };\n    ApolloLink.prototype.concat = function (next) {\n        return ApolloLink.concat(this, next);\n    };\n    ApolloLink.prototype.request = function (operation, forward) {\n        throw __DEV__ ? new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError('request is not implemented') : new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(19);\n    };\n    ApolloLink.prototype.onError = function (error, observer) {\n        if (observer && observer.error) {\n            observer.error(error);\n            return false;\n        }\n        throw error;\n    };\n    ApolloLink.prototype.setOnError = function (fn) {\n        this.onError = fn;\n        return this;\n    };\n    return ApolloLink;\n}());\n\n//# sourceMappingURL=ApolloLink.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9jb3JlL0Fwb2xsb0xpbmsuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBa0M7QUFDMkM7QUFDdkI7QUFDc0M7QUFDNUY7QUFDQSxvQ0FBb0MsOERBQWE7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksZ0RBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLE9BQU8sOERBQWEsS0FBSztBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRCxxQkFBcUI7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxREFBcUQsOERBQWE7QUFDbEUsc0RBQXNELDhEQUFhO0FBQ25FLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RCw4REFBYTtBQUMzRSwrREFBK0QsOERBQWE7QUFDNUUsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixnRUFBZSxvQkFBb0IsbUVBQWtCLENBQUMsa0VBQWlCLGtCQUFrQiw4REFBYTtBQUNuSTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qix1RUFBYztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FLCtCQUErQiw4REFBYSxLQUFLLEtBQUssOERBQWE7QUFDdkksYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTRELDhEQUFhO0FBQ3pFLGlCQUFpQixLQUFLLDhEQUFhO0FBQ25DLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsdUVBQWMscUNBQXFDLHVFQUFjO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNxQjtBQUN0QiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9jb3JlL0Fwb2xsb0xpbmsuanM/MmIwMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEludmFyaWFudEVycm9yLCBpbnZhcmlhbnQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2dsb2JhbHMvaW5kZXguanNcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyB2YWxpZGF0ZU9wZXJhdGlvbiwgY3JlYXRlT3BlcmF0aW9uLCB0cmFuc2Zvcm1PcGVyYXRpb24sIH0gZnJvbSBcIi4uL3V0aWxzL2luZGV4LmpzXCI7XG5mdW5jdGlvbiBwYXNzdGhyb3VnaChvcCwgZm9yd2FyZCkge1xuICAgIHJldHVybiAoZm9yd2FyZCA/IGZvcndhcmQob3ApIDogT2JzZXJ2YWJsZS5vZigpKTtcbn1cbmZ1bmN0aW9uIHRvTGluayhoYW5kbGVyKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBoYW5kbGVyID09PSAnZnVuY3Rpb24nID8gbmV3IEFwb2xsb0xpbmsoaGFuZGxlcikgOiBoYW5kbGVyO1xufVxuZnVuY3Rpb24gaXNUZXJtaW5hdGluZyhsaW5rKSB7XG4gICAgcmV0dXJuIGxpbmsucmVxdWVzdC5sZW5ndGggPD0gMTtcbn1cbnZhciBMaW5rRXJyb3IgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhMaW5rRXJyb3IsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gTGlua0Vycm9yKG1lc3NhZ2UsIGxpbmspIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgbWVzc2FnZSkgfHwgdGhpcztcbiAgICAgICAgX3RoaXMubGluayA9IGxpbms7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIExpbmtFcnJvcjtcbn0oRXJyb3IpKTtcbnZhciBBcG9sbG9MaW5rID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBBcG9sbG9MaW5rKHJlcXVlc3QpIHtcbiAgICAgICAgaWYgKHJlcXVlc3QpXG4gICAgICAgICAgICB0aGlzLnJlcXVlc3QgPSByZXF1ZXN0O1xuICAgIH1cbiAgICBBcG9sbG9MaW5rLmVtcHR5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IEFwb2xsb0xpbmsoZnVuY3Rpb24gKCkgeyByZXR1cm4gT2JzZXJ2YWJsZS5vZigpOyB9KTtcbiAgICB9O1xuICAgIEFwb2xsb0xpbmsuZnJvbSA9IGZ1bmN0aW9uIChsaW5rcykge1xuICAgICAgICBpZiAobGlua3MubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIEFwb2xsb0xpbmsuZW1wdHkoKTtcbiAgICAgICAgcmV0dXJuIGxpbmtzLm1hcCh0b0xpbmspLnJlZHVjZShmdW5jdGlvbiAoeCwgeSkgeyByZXR1cm4geC5jb25jYXQoeSk7IH0pO1xuICAgIH07XG4gICAgQXBvbGxvTGluay5zcGxpdCA9IGZ1bmN0aW9uICh0ZXN0LCBsZWZ0LCByaWdodCkge1xuICAgICAgICB2YXIgbGVmdExpbmsgPSB0b0xpbmsobGVmdCk7XG4gICAgICAgIHZhciByaWdodExpbmsgPSB0b0xpbmsocmlnaHQgfHwgbmV3IEFwb2xsb0xpbmsocGFzc3Rocm91Z2gpKTtcbiAgICAgICAgaWYgKGlzVGVybWluYXRpbmcobGVmdExpbmspICYmIGlzVGVybWluYXRpbmcocmlnaHRMaW5rKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBBcG9sbG9MaW5rKGZ1bmN0aW9uIChvcGVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGVzdChvcGVyYXRpb24pXG4gICAgICAgICAgICAgICAgICAgID8gbGVmdExpbmsucmVxdWVzdChvcGVyYXRpb24pIHx8IE9ic2VydmFibGUub2YoKVxuICAgICAgICAgICAgICAgICAgICA6IHJpZ2h0TGluay5yZXF1ZXN0KG9wZXJhdGlvbikgfHwgT2JzZXJ2YWJsZS5vZigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEFwb2xsb0xpbmsoZnVuY3Rpb24gKG9wZXJhdGlvbiwgZm9yd2FyZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0KG9wZXJhdGlvbilcbiAgICAgICAgICAgICAgICAgICAgPyBsZWZ0TGluay5yZXF1ZXN0KG9wZXJhdGlvbiwgZm9yd2FyZCkgfHwgT2JzZXJ2YWJsZS5vZigpXG4gICAgICAgICAgICAgICAgICAgIDogcmlnaHRMaW5rLnJlcXVlc3Qob3BlcmF0aW9uLCBmb3J3YXJkKSB8fCBPYnNlcnZhYmxlLm9mKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQXBvbGxvTGluay5leGVjdXRlID0gZnVuY3Rpb24gKGxpbmssIG9wZXJhdGlvbikge1xuICAgICAgICByZXR1cm4gKGxpbmsucmVxdWVzdChjcmVhdGVPcGVyYXRpb24ob3BlcmF0aW9uLmNvbnRleHQsIHRyYW5zZm9ybU9wZXJhdGlvbih2YWxpZGF0ZU9wZXJhdGlvbihvcGVyYXRpb24pKSkpIHx8IE9ic2VydmFibGUub2YoKSk7XG4gICAgfTtcbiAgICBBcG9sbG9MaW5rLmNvbmNhdCA9IGZ1bmN0aW9uIChmaXJzdCwgc2Vjb25kKSB7XG4gICAgICAgIHZhciBmaXJzdExpbmsgPSB0b0xpbmsoZmlyc3QpO1xuICAgICAgICBpZiAoaXNUZXJtaW5hdGluZyhmaXJzdExpbmspKSB7XG4gICAgICAgICAgICBfX0RFVl9fICYmIGludmFyaWFudC53YXJuKG5ldyBMaW5rRXJyb3IoXCJZb3UgYXJlIGNhbGxpbmcgY29uY2F0IG9uIGEgdGVybWluYXRpbmcgbGluaywgd2hpY2ggd2lsbCBoYXZlIG5vIGVmZmVjdFwiLCBmaXJzdExpbmspKTtcbiAgICAgICAgICAgIHJldHVybiBmaXJzdExpbms7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5leHRMaW5rID0gdG9MaW5rKHNlY29uZCk7XG4gICAgICAgIGlmIChpc1Rlcm1pbmF0aW5nKG5leHRMaW5rKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBBcG9sbG9MaW5rKGZ1bmN0aW9uIChvcGVyYXRpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3RMaW5rLnJlcXVlc3Qob3BlcmF0aW9uLCBmdW5jdGlvbiAob3ApIHsgcmV0dXJuIG5leHRMaW5rLnJlcXVlc3Qob3ApIHx8IE9ic2VydmFibGUub2YoKTsgfSkgfHwgT2JzZXJ2YWJsZS5vZigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEFwb2xsb0xpbmsoZnVuY3Rpb24gKG9wZXJhdGlvbiwgZm9yd2FyZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoZmlyc3RMaW5rLnJlcXVlc3Qob3BlcmF0aW9uLCBmdW5jdGlvbiAob3ApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHRMaW5rLnJlcXVlc3Qob3AsIGZvcndhcmQpIHx8IE9ic2VydmFibGUub2YoKTtcbiAgICAgICAgICAgICAgICB9KSB8fCBPYnNlcnZhYmxlLm9mKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEFwb2xsb0xpbmsucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gKHRlc3QsIGxlZnQsIHJpZ2h0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmNhdChBcG9sbG9MaW5rLnNwbGl0KHRlc3QsIGxlZnQsIHJpZ2h0IHx8IG5ldyBBcG9sbG9MaW5rKHBhc3N0aHJvdWdoKSkpO1xuICAgIH07XG4gICAgQXBvbGxvTGluay5wcm90b3R5cGUuY29uY2F0ID0gZnVuY3Rpb24gKG5leHQpIHtcbiAgICAgICAgcmV0dXJuIEFwb2xsb0xpbmsuY29uY2F0KHRoaXMsIG5leHQpO1xuICAgIH07XG4gICAgQXBvbGxvTGluay5wcm90b3R5cGUucmVxdWVzdCA9IGZ1bmN0aW9uIChvcGVyYXRpb24sIGZvcndhcmQpIHtcbiAgICAgICAgdGhyb3cgX19ERVZfXyA/IG5ldyBJbnZhcmlhbnRFcnJvcigncmVxdWVzdCBpcyBub3QgaW1wbGVtZW50ZWQnKSA6IG5ldyBJbnZhcmlhbnRFcnJvcigxOSk7XG4gICAgfTtcbiAgICBBcG9sbG9MaW5rLnByb3RvdHlwZS5vbkVycm9yID0gZnVuY3Rpb24gKGVycm9yLCBvYnNlcnZlcikge1xuICAgICAgICBpZiAob2JzZXJ2ZXIgJiYgb2JzZXJ2ZXIuZXJyb3IpIHtcbiAgICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9O1xuICAgIEFwb2xsb0xpbmsucHJvdG90eXBlLnNldE9uRXJyb3IgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgdGhpcy5vbkVycm9yID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgcmV0dXJuIEFwb2xsb0xpbms7XG59KCkpO1xuZXhwb3J0IHsgQXBvbGxvTGluayB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXBvbGxvTGluay5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/core/ApolloLink.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/core/concat.js":
/*!*********************************************************!*\
  !*** ./node_modules/@apollo/client/link/core/concat.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"concat\": function() { return /* binding */ concat; }\n/* harmony export */ });\n/* harmony import */ var _ApolloLink_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ApolloLink.js */ \"./node_modules/@apollo/client/link/core/ApolloLink.js\");\n\nvar concat = _ApolloLink_js__WEBPACK_IMPORTED_MODULE_0__.ApolloLink.concat;\n//# sourceMappingURL=concat.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9jb3JlL2NvbmNhdC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUE2QztBQUN0QyxhQUFhLDZEQUFpQjtBQUNyQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9jb3JlL2NvbmNhdC5qcz83OTMzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwb2xsb0xpbmsgfSBmcm9tIFwiLi9BcG9sbG9MaW5rLmpzXCI7XG5leHBvcnQgdmFyIGNvbmNhdCA9IEFwb2xsb0xpbmsuY29uY2F0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29uY2F0LmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/core/concat.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/core/empty.js":
/*!********************************************************!*\
  !*** ./node_modules/@apollo/client/link/core/empty.js ***!
  \********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"empty\": function() { return /* binding */ empty; }\n/* harmony export */ });\n/* harmony import */ var _ApolloLink_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ApolloLink.js */ \"./node_modules/@apollo/client/link/core/ApolloLink.js\");\n\nvar empty = _ApolloLink_js__WEBPACK_IMPORTED_MODULE_0__.ApolloLink.empty;\n//# sourceMappingURL=empty.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9jb3JlL2VtcHR5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTZDO0FBQ3RDLFlBQVksNERBQWdCO0FBQ25DIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9saW5rL2NvcmUvZW1wdHkuanM/ZmYwMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcG9sbG9MaW5rIH0gZnJvbSBcIi4vQXBvbGxvTGluay5qc1wiO1xuZXhwb3J0IHZhciBlbXB0eSA9IEFwb2xsb0xpbmsuZW1wdHk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1lbXB0eS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/core/empty.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/core/execute.js":
/*!**********************************************************!*\
  !*** ./node_modules/@apollo/client/link/core/execute.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"execute\": function() { return /* binding */ execute; }\n/* harmony export */ });\n/* harmony import */ var _ApolloLink_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ApolloLink.js */ \"./node_modules/@apollo/client/link/core/ApolloLink.js\");\n\nvar execute = _ApolloLink_js__WEBPACK_IMPORTED_MODULE_0__.ApolloLink.execute;\n//# sourceMappingURL=execute.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9jb3JlL2V4ZWN1dGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNkM7QUFDdEMsY0FBYyw4REFBa0I7QUFDdkMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L2xpbmsvY29yZS9leGVjdXRlLmpzP2ZlNWMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBvbGxvTGluayB9IGZyb20gXCIuL0Fwb2xsb0xpbmsuanNcIjtcbmV4cG9ydCB2YXIgZXhlY3V0ZSA9IEFwb2xsb0xpbmsuZXhlY3V0ZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWV4ZWN1dGUuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/core/execute.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/core/from.js":
/*!*******************************************************!*\
  !*** ./node_modules/@apollo/client/link/core/from.js ***!
  \*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"from\": function() { return /* binding */ from; }\n/* harmony export */ });\n/* harmony import */ var _ApolloLink_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ApolloLink.js */ \"./node_modules/@apollo/client/link/core/ApolloLink.js\");\n\nvar from = _ApolloLink_js__WEBPACK_IMPORTED_MODULE_0__.ApolloLink.from;\n//# sourceMappingURL=from.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9jb3JlL2Zyb20uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNkM7QUFDdEMsV0FBVywyREFBZTtBQUNqQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9jb3JlL2Zyb20uanM/N2ExYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcG9sbG9MaW5rIH0gZnJvbSBcIi4vQXBvbGxvTGluay5qc1wiO1xuZXhwb3J0IHZhciBmcm9tID0gQXBvbGxvTGluay5mcm9tO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZnJvbS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/core/from.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/core/index.js":
/*!********************************************************!*\
  !*** ./node_modules/@apollo/client/link/core/index.js ***!
  \********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloLink\": function() { return /* reexport safe */ _ApolloLink_js__WEBPACK_IMPORTED_MODULE_6__.ApolloLink; },\n/* harmony export */   \"concat\": function() { return /* reexport safe */ _concat_js__WEBPACK_IMPORTED_MODULE_4__.concat; },\n/* harmony export */   \"empty\": function() { return /* reexport safe */ _empty_js__WEBPACK_IMPORTED_MODULE_1__.empty; },\n/* harmony export */   \"execute\": function() { return /* reexport safe */ _execute_js__WEBPACK_IMPORTED_MODULE_5__.execute; },\n/* harmony export */   \"from\": function() { return /* reexport safe */ _from_js__WEBPACK_IMPORTED_MODULE_2__.from; },\n/* harmony export */   \"split\": function() { return /* reexport safe */ _split_js__WEBPACK_IMPORTED_MODULE_3__.split; }\n/* harmony export */ });\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _empty_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./empty.js */ \"./node_modules/@apollo/client/link/core/empty.js\");\n/* harmony import */ var _from_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./from.js */ \"./node_modules/@apollo/client/link/core/from.js\");\n/* harmony import */ var _split_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./split.js */ \"./node_modules/@apollo/client/link/core/split.js\");\n/* harmony import */ var _concat_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./concat.js */ \"./node_modules/@apollo/client/link/core/concat.js\");\n/* harmony import */ var _execute_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./execute.js */ \"./node_modules/@apollo/client/link/core/execute.js\");\n/* harmony import */ var _ApolloLink_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ApolloLink.js */ \"./node_modules/@apollo/client/link/core/ApolloLink.js\");\n/* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./types.js */ \"./node_modules/@apollo/client/link/core/types.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _types_js__WEBPACK_IMPORTED_MODULE_7__) if([\"default\",\"empty\",\"from\",\"split\",\"concat\",\"execute\",\"ApolloLink\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _types_js__WEBPACK_IMPORTED_MODULE_7__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9jb3JlL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQTBDO0FBQ1A7QUFDRjtBQUNFO0FBQ0U7QUFDRTtBQUNNO0FBQ2xCO0FBQzNCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9saW5rL2NvcmUvaW5kZXguanM/MzVhNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2xvYmFscy9pbmRleC5qc1wiO1xuZXhwb3J0IHsgZW1wdHkgfSBmcm9tIFwiLi9lbXB0eS5qc1wiO1xuZXhwb3J0IHsgZnJvbSB9IGZyb20gXCIuL2Zyb20uanNcIjtcbmV4cG9ydCB7IHNwbGl0IH0gZnJvbSBcIi4vc3BsaXQuanNcIjtcbmV4cG9ydCB7IGNvbmNhdCB9IGZyb20gXCIuL2NvbmNhdC5qc1wiO1xuZXhwb3J0IHsgZXhlY3V0ZSB9IGZyb20gXCIuL2V4ZWN1dGUuanNcIjtcbmV4cG9ydCB7IEFwb2xsb0xpbmsgfSBmcm9tIFwiLi9BcG9sbG9MaW5rLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy5qc1wiO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/core/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/core/split.js":
/*!********************************************************!*\
  !*** ./node_modules/@apollo/client/link/core/split.js ***!
  \********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"split\": function() { return /* binding */ split; }\n/* harmony export */ });\n/* harmony import */ var _ApolloLink_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ApolloLink.js */ \"./node_modules/@apollo/client/link/core/ApolloLink.js\");\n\nvar split = _ApolloLink_js__WEBPACK_IMPORTED_MODULE_0__.ApolloLink.split;\n//# sourceMappingURL=split.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9jb3JlL3NwbGl0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTZDO0FBQ3RDLFlBQVksNERBQWdCO0FBQ25DIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9saW5rL2NvcmUvc3BsaXQuanM/NzAzYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcG9sbG9MaW5rIH0gZnJvbSBcIi4vQXBvbGxvTGluay5qc1wiO1xuZXhwb3J0IHZhciBzcGxpdCA9IEFwb2xsb0xpbmsuc3BsaXQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zcGxpdC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/core/split.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/core/types.js":
/*!********************************************************!*\
  !*** ./node_modules/@apollo/client/link/core/types.js ***!
  \********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n;\n\n//# sourceMappingURL=types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9jb3JlL3R5cGVzLmpzLmpzIiwibWFwcGluZ3MiOiI7QUFBQTtBQUNVO0FBQ1YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L2xpbmsvY29yZS90eXBlcy5qcz8wYTdkIl0sInNvdXJjZXNDb250ZW50IjpbIjtcbmV4cG9ydCB7fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXR5cGVzLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/core/types.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/http/HttpLink.js":
/*!***********************************************************!*\
  !*** ./node_modules/@apollo/client/link/http/HttpLink.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"HttpLink\": function() { return /* binding */ HttpLink; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/index.js */ \"./node_modules/@apollo/client/link/core/index.js\");\n/* harmony import */ var _createHttpLink_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createHttpLink.js */ \"./node_modules/@apollo/client/link/http/createHttpLink.js\");\n\n\n\nvar HttpLink = (function (_super) {\n    (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(HttpLink, _super);\n    function HttpLink(options) {\n        if (options === void 0) { options = {}; }\n        var _this = _super.call(this, (0,_createHttpLink_js__WEBPACK_IMPORTED_MODULE_1__.createHttpLink)(options).request) || this;\n        _this.options = options;\n        return _this;\n    }\n    return HttpLink;\n}(_core_index_js__WEBPACK_IMPORTED_MODULE_2__.ApolloLink));\n\n//# sourceMappingURL=HttpLink.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9odHRwL0h0dHBMaW5rLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBa0M7QUFDWTtBQUNPO0FBQ3JEO0FBQ0EsSUFBSSxnREFBUztBQUNiO0FBQ0Esa0NBQWtDO0FBQ2xDLHNDQUFzQyxrRUFBYztBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyxzREFBVTtBQUNRO0FBQ3BCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9saW5rL2h0dHAvSHR0cExpbmsuanM/ZmM0MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IEFwb2xsb0xpbmsgfSBmcm9tIFwiLi4vY29yZS9pbmRleC5qc1wiO1xuaW1wb3J0IHsgY3JlYXRlSHR0cExpbmsgfSBmcm9tIFwiLi9jcmVhdGVIdHRwTGluay5qc1wiO1xudmFyIEh0dHBMaW5rID0gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoSHR0cExpbmssIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gSHR0cExpbmsob3B0aW9ucykge1xuICAgICAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBjcmVhdGVIdHRwTGluayhvcHRpb25zKS5yZXF1ZXN0KSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICByZXR1cm4gSHR0cExpbms7XG59KEFwb2xsb0xpbmspKTtcbmV4cG9ydCB7IEh0dHBMaW5rIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1IdHRwTGluay5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/http/HttpLink.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/http/checkFetcher.js":
/*!***************************************************************!*\
  !*** ./node_modules/@apollo/client/link/http/checkFetcher.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"checkFetcher\": function() { return /* binding */ checkFetcher; }\n/* harmony export */ });\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n\nvar checkFetcher = function (fetcher) {\n    if (!fetcher && typeof fetch === 'undefined') {\n        throw __DEV__ ? new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(\"\\n\\\"fetch\\\" has not been found globally and no fetcher has been configured. To fix this, install a fetch package (like https://www.npmjs.com/package/cross-fetch), instantiate the fetcher, and pass it into your HttpLink constructor. For example:\\n\\nimport fetch from 'cross-fetch';\\nimport { ApolloClient, HttpLink } from '@apollo/client';\\nconst client = new ApolloClient({\\n  link: new HttpLink({ uri: '/graphql', fetch })\\n});\\n    \") : new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(20);\n    }\n};\n//# sourceMappingURL=checkFetcher.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9odHRwL2NoZWNrRmV0Y2hlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFrRTtBQUMzRDtBQUNQO0FBQ0EsNEJBQTRCLHVFQUFjLDBSQUEwUixXQUFXLHlCQUF5QixzQkFBc0IsbUNBQW1DLHlCQUF5Qix3QkFBd0IsSUFBSSxFQUFFLGVBQWUsdUVBQWM7QUFDcmY7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9saW5rL2h0dHAvY2hlY2tGZXRjaGVyLmpzPzA2YzQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YXJpYW50RXJyb3IgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2dsb2JhbHMvaW5kZXguanNcIjtcbmV4cG9ydCB2YXIgY2hlY2tGZXRjaGVyID0gZnVuY3Rpb24gKGZldGNoZXIpIHtcbiAgICBpZiAoIWZldGNoZXIgJiYgdHlwZW9mIGZldGNoID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aHJvdyBfX0RFVl9fID8gbmV3IEludmFyaWFudEVycm9yKFwiXFxuXFxcImZldGNoXFxcIiBoYXMgbm90IGJlZW4gZm91bmQgZ2xvYmFsbHkgYW5kIG5vIGZldGNoZXIgaGFzIGJlZW4gY29uZmlndXJlZC4gVG8gZml4IHRoaXMsIGluc3RhbGwgYSBmZXRjaCBwYWNrYWdlIChsaWtlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2Nyb3NzLWZldGNoKSwgaW5zdGFudGlhdGUgdGhlIGZldGNoZXIsIGFuZCBwYXNzIGl0IGludG8geW91ciBIdHRwTGluayBjb25zdHJ1Y3Rvci4gRm9yIGV4YW1wbGU6XFxuXFxuaW1wb3J0IGZldGNoIGZyb20gJ2Nyb3NzLWZldGNoJztcXG5pbXBvcnQgeyBBcG9sbG9DbGllbnQsIEh0dHBMaW5rIH0gZnJvbSAnQGFwb2xsby9jbGllbnQnO1xcbmNvbnN0IGNsaWVudCA9IG5ldyBBcG9sbG9DbGllbnQoe1xcbiAgbGluazogbmV3IEh0dHBMaW5rKHsgdXJpOiAnL2dyYXBocWwnLCBmZXRjaCB9KVxcbn0pO1xcbiAgICBcIikgOiBuZXcgSW52YXJpYW50RXJyb3IoMjApO1xuICAgIH1cbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jaGVja0ZldGNoZXIuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/http/checkFetcher.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/http/createHttpLink.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@apollo/client/link/http/createHttpLink.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createHttpLink\": function() { return /* binding */ createHttpLink; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var graphql__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! graphql */ \"./node_modules/graphql/index.mjs\");\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/index.js */ \"./node_modules/@apollo/client/link/core/index.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n/* harmony import */ var _serializeFetchParameter_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./serializeFetchParameter.js */ \"./node_modules/@apollo/client/link/http/serializeFetchParameter.js\");\n/* harmony import */ var _selectURI_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./selectURI.js */ \"./node_modules/@apollo/client/link/http/selectURI.js\");\n/* harmony import */ var _parseAndCheckHttpResponse_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./parseAndCheckHttpResponse.js */ \"./node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js\");\n/* harmony import */ var _checkFetcher_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./checkFetcher.js */ \"./node_modules/@apollo/client/link/http/checkFetcher.js\");\n/* harmony import */ var _selectHttpOptionsAndBody_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./selectHttpOptionsAndBody.js */ \"./node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js\");\n/* harmony import */ var _createSignalIfSupported_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./createSignalIfSupported.js */ \"./node_modules/@apollo/client/link/http/createSignalIfSupported.js\");\n/* harmony import */ var _rewriteURIForGET_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rewriteURIForGET.js */ \"./node_modules/@apollo/client/link/http/rewriteURIForGET.js\");\n/* harmony import */ var _utils_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/index.js */ \"./node_modules/@apollo/client/link/utils/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar backupFetch = (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.maybe)(function () { return fetch; });\nvar createHttpLink = function (linkOptions) {\n    if (linkOptions === void 0) { linkOptions = {}; }\n    var _a = linkOptions.uri, uri = _a === void 0 ? '/graphql' : _a, preferredFetch = linkOptions.fetch, _b = linkOptions.print, print = _b === void 0 ? _selectHttpOptionsAndBody_js__WEBPACK_IMPORTED_MODULE_2__.defaultPrinter : _b, includeExtensions = linkOptions.includeExtensions, useGETForQueries = linkOptions.useGETForQueries, _c = linkOptions.includeUnusedVariables, includeUnusedVariables = _c === void 0 ? false : _c, requestOptions = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__rest)(linkOptions, [\"uri\", \"fetch\", \"print\", \"includeExtensions\", \"useGETForQueries\", \"includeUnusedVariables\"]);\n    if (__DEV__) {\n        (0,_checkFetcher_js__WEBPACK_IMPORTED_MODULE_4__.checkFetcher)(preferredFetch || backupFetch);\n    }\n    var linkConfig = {\n        http: { includeExtensions: includeExtensions },\n        options: requestOptions.fetchOptions,\n        credentials: requestOptions.credentials,\n        headers: requestOptions.headers,\n    };\n    return new _core_index_js__WEBPACK_IMPORTED_MODULE_5__.ApolloLink(function (operation) {\n        var chosenURI = (0,_selectURI_js__WEBPACK_IMPORTED_MODULE_6__.selectURI)(operation, uri);\n        var context = operation.getContext();\n        var clientAwarenessHeaders = {};\n        if (context.clientAwareness) {\n            var _a = context.clientAwareness, name_1 = _a.name, version = _a.version;\n            if (name_1) {\n                clientAwarenessHeaders['apollographql-client-name'] = name_1;\n            }\n            if (version) {\n                clientAwarenessHeaders['apollographql-client-version'] = version;\n            }\n        }\n        var contextHeaders = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, clientAwarenessHeaders), context.headers);\n        var contextConfig = {\n            http: context.http,\n            options: context.fetchOptions,\n            credentials: context.credentials,\n            headers: contextHeaders,\n        };\n        var _b = (0,_selectHttpOptionsAndBody_js__WEBPACK_IMPORTED_MODULE_2__.selectHttpOptionsAndBodyInternal)(operation, print, _selectHttpOptionsAndBody_js__WEBPACK_IMPORTED_MODULE_2__.fallbackHttpConfig, linkConfig, contextConfig), options = _b.options, body = _b.body;\n        if (body.variables && !includeUnusedVariables) {\n            var unusedNames_1 = new Set(Object.keys(body.variables));\n            (0,graphql__WEBPACK_IMPORTED_MODULE_7__.visit)(operation.query, {\n                Variable: function (node, _key, parent) {\n                    if (parent && parent.kind !== 'VariableDefinition') {\n                        unusedNames_1.delete(node.name.value);\n                    }\n                },\n            });\n            if (unusedNames_1.size) {\n                body.variables = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({}, body.variables);\n                unusedNames_1.forEach(function (name) {\n                    delete body.variables[name];\n                });\n            }\n        }\n        var controller;\n        if (!options.signal) {\n            var _c = (0,_createSignalIfSupported_js__WEBPACK_IMPORTED_MODULE_8__.createSignalIfSupported)(), _controller = _c.controller, signal = _c.signal;\n            controller = _controller;\n            if (controller)\n                options.signal = signal;\n        }\n        var definitionIsMutation = function (d) {\n            return d.kind === 'OperationDefinition' && d.operation === 'mutation';\n        };\n        if (useGETForQueries &&\n            !operation.query.definitions.some(definitionIsMutation)) {\n            options.method = 'GET';\n        }\n        if (options.method === 'GET') {\n            var _d = (0,_rewriteURIForGET_js__WEBPACK_IMPORTED_MODULE_9__.rewriteURIForGET)(chosenURI, body), newURI = _d.newURI, parseError = _d.parseError;\n            if (parseError) {\n                return (0,_utils_index_js__WEBPACK_IMPORTED_MODULE_10__.fromError)(parseError);\n            }\n            chosenURI = newURI;\n        }\n        else {\n            try {\n                options.body = (0,_serializeFetchParameter_js__WEBPACK_IMPORTED_MODULE_11__.serializeFetchParameter)(body, 'Payload');\n            }\n            catch (parseError) {\n                return (0,_utils_index_js__WEBPACK_IMPORTED_MODULE_10__.fromError)(parseError);\n            }\n        }\n        return new _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.Observable(function (observer) {\n            var currentFetch = preferredFetch || (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.maybe)(function () { return fetch; }) || backupFetch;\n            currentFetch(chosenURI, options)\n                .then(function (response) {\n                operation.setContext({ response: response });\n                return response;\n            })\n                .then((0,_parseAndCheckHttpResponse_js__WEBPACK_IMPORTED_MODULE_12__.parseAndCheckHttpResponse)(operation))\n                .then(function (result) {\n                observer.next(result);\n                observer.complete();\n                return result;\n            })\n                .catch(function (err) {\n                if (err.name === 'AbortError')\n                    return;\n                if (err.result && err.result.errors && err.result.data) {\n                    observer.next(err.result);\n                }\n                observer.error(err);\n            });\n            return function () {\n                if (controller)\n                    controller.abort();\n            };\n        });\n    });\n};\n//# sourceMappingURL=createHttpLink.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9odHRwL2NyZWF0ZUh0dHBMaW5rLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXlDO0FBQ0M7QUFDVjtBQUNjO0FBQ1E7QUFDaUI7QUFDNUI7QUFDZ0M7QUFDMUI7QUFDb0U7QUFDOUM7QUFDZDtBQUNYO0FBQ0c7QUFDakQsa0JBQWtCLDBEQUFLLGVBQWUsZUFBZTtBQUM5QztBQUNQLGtDQUFrQztBQUNsQyx5SkFBeUosd0VBQWMsME5BQTBOLDZDQUFNO0FBQ3ZZO0FBQ0EsUUFBUSw4REFBWTtBQUNwQjtBQUNBO0FBQ0EsZ0JBQWdCLHNDQUFzQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsc0RBQVU7QUFDekIsd0JBQXdCLHdEQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw4RkFBZ0MsbUJBQW1CLDRFQUFrQjtBQUN0RjtBQUNBO0FBQ0EsWUFBWSw4Q0FBSztBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2I7QUFDQSxpQ0FBaUMsK0NBQVEsR0FBRztBQUM1QztBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLG9GQUF1QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsc0VBQWdCO0FBQ3JDO0FBQ0EsdUJBQXVCLDJEQUFTO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IscUZBQXVCO0FBQ3REO0FBQ0E7QUFDQSx1QkFBdUIsMkRBQVM7QUFDaEM7QUFDQTtBQUNBLG1CQUFtQiwyREFBVTtBQUM3QixpREFBaUQsMERBQUssZUFBZSxlQUFlO0FBQ3BGO0FBQ0E7QUFDQSx1Q0FBdUMsb0JBQW9CO0FBQzNEO0FBQ0EsYUFBYTtBQUNiLHNCQUFzQix5RkFBeUI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L2xpbmsvaHR0cC9jcmVhdGVIdHRwTGluay5qcz84YmY3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nbG9iYWxzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyB2aXNpdCB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgQXBvbGxvTGluayB9IGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgc2VyaWFsaXplRmV0Y2hQYXJhbWV0ZXIgfSBmcm9tIFwiLi9zZXJpYWxpemVGZXRjaFBhcmFtZXRlci5qc1wiO1xuaW1wb3J0IHsgc2VsZWN0VVJJIH0gZnJvbSBcIi4vc2VsZWN0VVJJLmpzXCI7XG5pbXBvcnQgeyBwYXJzZUFuZENoZWNrSHR0cFJlc3BvbnNlIH0gZnJvbSBcIi4vcGFyc2VBbmRDaGVja0h0dHBSZXNwb25zZS5qc1wiO1xuaW1wb3J0IHsgY2hlY2tGZXRjaGVyIH0gZnJvbSBcIi4vY2hlY2tGZXRjaGVyLmpzXCI7XG5pbXBvcnQgeyBzZWxlY3RIdHRwT3B0aW9uc0FuZEJvZHlJbnRlcm5hbCwgZGVmYXVsdFByaW50ZXIsIGZhbGxiYWNrSHR0cENvbmZpZyB9IGZyb20gXCIuL3NlbGVjdEh0dHBPcHRpb25zQW5kQm9keS5qc1wiO1xuaW1wb3J0IHsgY3JlYXRlU2lnbmFsSWZTdXBwb3J0ZWQgfSBmcm9tIFwiLi9jcmVhdGVTaWduYWxJZlN1cHBvcnRlZC5qc1wiO1xuaW1wb3J0IHsgcmV3cml0ZVVSSUZvckdFVCB9IGZyb20gXCIuL3Jld3JpdGVVUklGb3JHRVQuanNcIjtcbmltcG9ydCB7IGZyb21FcnJvciB9IGZyb20gXCIuLi91dGlscy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbWF5YmUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2luZGV4LmpzXCI7XG52YXIgYmFja3VwRmV0Y2ggPSBtYXliZShmdW5jdGlvbiAoKSB7IHJldHVybiBmZXRjaDsgfSk7XG5leHBvcnQgdmFyIGNyZWF0ZUh0dHBMaW5rID0gZnVuY3Rpb24gKGxpbmtPcHRpb25zKSB7XG4gICAgaWYgKGxpbmtPcHRpb25zID09PSB2b2lkIDApIHsgbGlua09wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBfYSA9IGxpbmtPcHRpb25zLnVyaSwgdXJpID0gX2EgPT09IHZvaWQgMCA/ICcvZ3JhcGhxbCcgOiBfYSwgcHJlZmVycmVkRmV0Y2ggPSBsaW5rT3B0aW9ucy5mZXRjaCwgX2IgPSBsaW5rT3B0aW9ucy5wcmludCwgcHJpbnQgPSBfYiA9PT0gdm9pZCAwID8gZGVmYXVsdFByaW50ZXIgOiBfYiwgaW5jbHVkZUV4dGVuc2lvbnMgPSBsaW5rT3B0aW9ucy5pbmNsdWRlRXh0ZW5zaW9ucywgdXNlR0VURm9yUXVlcmllcyA9IGxpbmtPcHRpb25zLnVzZUdFVEZvclF1ZXJpZXMsIF9jID0gbGlua09wdGlvbnMuaW5jbHVkZVVudXNlZFZhcmlhYmxlcywgaW5jbHVkZVVudXNlZFZhcmlhYmxlcyA9IF9jID09PSB2b2lkIDAgPyBmYWxzZSA6IF9jLCByZXF1ZXN0T3B0aW9ucyA9IF9fcmVzdChsaW5rT3B0aW9ucywgW1widXJpXCIsIFwiZmV0Y2hcIiwgXCJwcmludFwiLCBcImluY2x1ZGVFeHRlbnNpb25zXCIsIFwidXNlR0VURm9yUXVlcmllc1wiLCBcImluY2x1ZGVVbnVzZWRWYXJpYWJsZXNcIl0pO1xuICAgIGlmIChfX0RFVl9fKSB7XG4gICAgICAgIGNoZWNrRmV0Y2hlcihwcmVmZXJyZWRGZXRjaCB8fCBiYWNrdXBGZXRjaCk7XG4gICAgfVxuICAgIHZhciBsaW5rQ29uZmlnID0ge1xuICAgICAgICBodHRwOiB7IGluY2x1ZGVFeHRlbnNpb25zOiBpbmNsdWRlRXh0ZW5zaW9ucyB9LFxuICAgICAgICBvcHRpb25zOiByZXF1ZXN0T3B0aW9ucy5mZXRjaE9wdGlvbnMsXG4gICAgICAgIGNyZWRlbnRpYWxzOiByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyxcbiAgICAgICAgaGVhZGVyczogcmVxdWVzdE9wdGlvbnMuaGVhZGVycyxcbiAgICB9O1xuICAgIHJldHVybiBuZXcgQXBvbGxvTGluayhmdW5jdGlvbiAob3BlcmF0aW9uKSB7XG4gICAgICAgIHZhciBjaG9zZW5VUkkgPSBzZWxlY3RVUkkob3BlcmF0aW9uLCB1cmkpO1xuICAgICAgICB2YXIgY29udGV4dCA9IG9wZXJhdGlvbi5nZXRDb250ZXh0KCk7XG4gICAgICAgIHZhciBjbGllbnRBd2FyZW5lc3NIZWFkZXJzID0ge307XG4gICAgICAgIGlmIChjb250ZXh0LmNsaWVudEF3YXJlbmVzcykge1xuICAgICAgICAgICAgdmFyIF9hID0gY29udGV4dC5jbGllbnRBd2FyZW5lc3MsIG5hbWVfMSA9IF9hLm5hbWUsIHZlcnNpb24gPSBfYS52ZXJzaW9uO1xuICAgICAgICAgICAgaWYgKG5hbWVfMSkge1xuICAgICAgICAgICAgICAgIGNsaWVudEF3YXJlbmVzc0hlYWRlcnNbJ2Fwb2xsb2dyYXBocWwtY2xpZW50LW5hbWUnXSA9IG5hbWVfMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh2ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgY2xpZW50QXdhcmVuZXNzSGVhZGVyc1snYXBvbGxvZ3JhcGhxbC1jbGllbnQtdmVyc2lvbiddID0gdmVyc2lvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgY29udGV4dEhlYWRlcnMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgY2xpZW50QXdhcmVuZXNzSGVhZGVycyksIGNvbnRleHQuaGVhZGVycyk7XG4gICAgICAgIHZhciBjb250ZXh0Q29uZmlnID0ge1xuICAgICAgICAgICAgaHR0cDogY29udGV4dC5odHRwLFxuICAgICAgICAgICAgb3B0aW9uczogY29udGV4dC5mZXRjaE9wdGlvbnMsXG4gICAgICAgICAgICBjcmVkZW50aWFsczogY29udGV4dC5jcmVkZW50aWFscyxcbiAgICAgICAgICAgIGhlYWRlcnM6IGNvbnRleHRIZWFkZXJzLFxuICAgICAgICB9O1xuICAgICAgICB2YXIgX2IgPSBzZWxlY3RIdHRwT3B0aW9uc0FuZEJvZHlJbnRlcm5hbChvcGVyYXRpb24sIHByaW50LCBmYWxsYmFja0h0dHBDb25maWcsIGxpbmtDb25maWcsIGNvbnRleHRDb25maWcpLCBvcHRpb25zID0gX2Iub3B0aW9ucywgYm9keSA9IF9iLmJvZHk7XG4gICAgICAgIGlmIChib2R5LnZhcmlhYmxlcyAmJiAhaW5jbHVkZVVudXNlZFZhcmlhYmxlcykge1xuICAgICAgICAgICAgdmFyIHVudXNlZE5hbWVzXzEgPSBuZXcgU2V0KE9iamVjdC5rZXlzKGJvZHkudmFyaWFibGVzKSk7XG4gICAgICAgICAgICB2aXNpdChvcGVyYXRpb24ucXVlcnksIHtcbiAgICAgICAgICAgICAgICBWYXJpYWJsZTogZnVuY3Rpb24gKG5vZGUsIF9rZXksIHBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC5raW5kICE9PSAnVmFyaWFibGVEZWZpbml0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkTmFtZXNfMS5kZWxldGUobm9kZS5uYW1lLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICh1bnVzZWROYW1lc18xLnNpemUpIHtcbiAgICAgICAgICAgICAgICBib2R5LnZhcmlhYmxlcyA9IF9fYXNzaWduKHt9LCBib2R5LnZhcmlhYmxlcyk7XG4gICAgICAgICAgICAgICAgdW51c2VkTmFtZXNfMS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBib2R5LnZhcmlhYmxlc1tuYW1lXTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgY29udHJvbGxlcjtcbiAgICAgICAgaWYgKCFvcHRpb25zLnNpZ25hbCkge1xuICAgICAgICAgICAgdmFyIF9jID0gY3JlYXRlU2lnbmFsSWZTdXBwb3J0ZWQoKSwgX2NvbnRyb2xsZXIgPSBfYy5jb250cm9sbGVyLCBzaWduYWwgPSBfYy5zaWduYWw7XG4gICAgICAgICAgICBjb250cm9sbGVyID0gX2NvbnRyb2xsZXI7XG4gICAgICAgICAgICBpZiAoY29udHJvbGxlcilcbiAgICAgICAgICAgICAgICBvcHRpb25zLnNpZ25hbCA9IHNpZ25hbDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGVmaW5pdGlvbklzTXV0YXRpb24gPSBmdW5jdGlvbiAoZCkge1xuICAgICAgICAgICAgcmV0dXJuIGQua2luZCA9PT0gJ09wZXJhdGlvbkRlZmluaXRpb24nICYmIGQub3BlcmF0aW9uID09PSAnbXV0YXRpb24nO1xuICAgICAgICB9O1xuICAgICAgICBpZiAodXNlR0VURm9yUXVlcmllcyAmJlxuICAgICAgICAgICAgIW9wZXJhdGlvbi5xdWVyeS5kZWZpbml0aW9ucy5zb21lKGRlZmluaXRpb25Jc011dGF0aW9uKSkge1xuICAgICAgICAgICAgb3B0aW9ucy5tZXRob2QgPSAnR0VUJztcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5tZXRob2QgPT09ICdHRVQnKSB7XG4gICAgICAgICAgICB2YXIgX2QgPSByZXdyaXRlVVJJRm9yR0VUKGNob3NlblVSSSwgYm9keSksIG5ld1VSSSA9IF9kLm5ld1VSSSwgcGFyc2VFcnJvciA9IF9kLnBhcnNlRXJyb3I7XG4gICAgICAgICAgICBpZiAocGFyc2VFcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmcm9tRXJyb3IocGFyc2VFcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjaG9zZW5VUkkgPSBuZXdVUkk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMuYm9keSA9IHNlcmlhbGl6ZUZldGNoUGFyYW1ldGVyKGJvZHksICdQYXlsb2FkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmcm9tRXJyb3IocGFyc2VFcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRGZXRjaCA9IHByZWZlcnJlZEZldGNoIHx8IG1heWJlKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZldGNoOyB9KSB8fCBiYWNrdXBGZXRjaDtcbiAgICAgICAgICAgIGN1cnJlbnRGZXRjaChjaG9zZW5VUkksIG9wdGlvbnMpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLnNldENvbnRleHQoeyByZXNwb25zZTogcmVzcG9uc2UgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbihwYXJzZUFuZENoZWNrSHR0cFJlc3BvbnNlKG9wZXJhdGlvbikpXG4gICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQocmVzdWx0KTtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVyci5uYW1lID09PSAnQWJvcnRFcnJvcicpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBpZiAoZXJyLnJlc3VsdCAmJiBlcnIucmVzdWx0LmVycm9ycyAmJiBlcnIucmVzdWx0LmRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChlcnIucmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29udHJvbGxlcilcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5hYm9ydCgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3JlYXRlSHR0cExpbmsuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/http/createHttpLink.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/http/createSignalIfSupported.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@apollo/client/link/http/createSignalIfSupported.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createSignalIfSupported\": function() { return /* binding */ createSignalIfSupported; }\n/* harmony export */ });\nvar createSignalIfSupported = function () {\n    if (typeof AbortController === 'undefined')\n        return { controller: false, signal: false };\n    var controller = new AbortController();\n    var signal = controller.signal;\n    return { controller: controller, signal: signal };\n};\n//# sourceMappingURL=createSignalIfSupported.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9odHRwL2NyZWF0ZVNpZ25hbElmU3VwcG9ydGVkLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTztBQUNQO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9odHRwL2NyZWF0ZVNpZ25hbElmU3VwcG9ydGVkLmpzPzJmY2QiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBjcmVhdGVTaWduYWxJZlN1cHBvcnRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIEFib3J0Q29udHJvbGxlciA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgIHJldHVybiB7IGNvbnRyb2xsZXI6IGZhbHNlLCBzaWduYWw6IGZhbHNlIH07XG4gICAgdmFyIGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdmFyIHNpZ25hbCA9IGNvbnRyb2xsZXIuc2lnbmFsO1xuICAgIHJldHVybiB7IGNvbnRyb2xsZXI6IGNvbnRyb2xsZXIsIHNpZ25hbDogc2lnbmFsIH07XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3JlYXRlU2lnbmFsSWZTdXBwb3J0ZWQuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/http/createSignalIfSupported.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/http/index.js":
/*!********************************************************!*\
  !*** ./node_modules/@apollo/client/link/http/index.js ***!
  \********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"HttpLink\": function() { return /* reexport safe */ _HttpLink_js__WEBPACK_IMPORTED_MODULE_8__.HttpLink; },\n/* harmony export */   \"checkFetcher\": function() { return /* reexport safe */ _checkFetcher_js__WEBPACK_IMPORTED_MODULE_4__.checkFetcher; },\n/* harmony export */   \"createHttpLink\": function() { return /* reexport safe */ _createHttpLink_js__WEBPACK_IMPORTED_MODULE_7__.createHttpLink; },\n/* harmony export */   \"createSignalIfSupported\": function() { return /* reexport safe */ _createSignalIfSupported_js__WEBPACK_IMPORTED_MODULE_5__.createSignalIfSupported; },\n/* harmony export */   \"defaultPrinter\": function() { return /* reexport safe */ _selectHttpOptionsAndBody_js__WEBPACK_IMPORTED_MODULE_3__.defaultPrinter; },\n/* harmony export */   \"fallbackHttpConfig\": function() { return /* reexport safe */ _selectHttpOptionsAndBody_js__WEBPACK_IMPORTED_MODULE_3__.fallbackHttpConfig; },\n/* harmony export */   \"parseAndCheckHttpResponse\": function() { return /* reexport safe */ _parseAndCheckHttpResponse_js__WEBPACK_IMPORTED_MODULE_1__.parseAndCheckHttpResponse; },\n/* harmony export */   \"rewriteURIForGET\": function() { return /* reexport safe */ _rewriteURIForGET_js__WEBPACK_IMPORTED_MODULE_9__.rewriteURIForGET; },\n/* harmony export */   \"selectHttpOptionsAndBody\": function() { return /* reexport safe */ _selectHttpOptionsAndBody_js__WEBPACK_IMPORTED_MODULE_3__.selectHttpOptionsAndBody; },\n/* harmony export */   \"selectHttpOptionsAndBodyInternal\": function() { return /* reexport safe */ _selectHttpOptionsAndBody_js__WEBPACK_IMPORTED_MODULE_3__.selectHttpOptionsAndBodyInternal; },\n/* harmony export */   \"selectURI\": function() { return /* reexport safe */ _selectURI_js__WEBPACK_IMPORTED_MODULE_6__.selectURI; },\n/* harmony export */   \"serializeFetchParameter\": function() { return /* reexport safe */ _serializeFetchParameter_js__WEBPACK_IMPORTED_MODULE_2__.serializeFetchParameter; }\n/* harmony export */ });\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _parseAndCheckHttpResponse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parseAndCheckHttpResponse.js */ \"./node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js\");\n/* harmony import */ var _serializeFetchParameter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./serializeFetchParameter.js */ \"./node_modules/@apollo/client/link/http/serializeFetchParameter.js\");\n/* harmony import */ var _selectHttpOptionsAndBody_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./selectHttpOptionsAndBody.js */ \"./node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js\");\n/* harmony import */ var _checkFetcher_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./checkFetcher.js */ \"./node_modules/@apollo/client/link/http/checkFetcher.js\");\n/* harmony import */ var _createSignalIfSupported_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createSignalIfSupported.js */ \"./node_modules/@apollo/client/link/http/createSignalIfSupported.js\");\n/* harmony import */ var _selectURI_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./selectURI.js */ \"./node_modules/@apollo/client/link/http/selectURI.js\");\n/* harmony import */ var _createHttpLink_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./createHttpLink.js */ \"./node_modules/@apollo/client/link/http/createHttpLink.js\");\n/* harmony import */ var _HttpLink_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./HttpLink.js */ \"./node_modules/@apollo/client/link/http/HttpLink.js\");\n/* harmony import */ var _rewriteURIForGET_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rewriteURIForGET.js */ \"./node_modules/@apollo/client/link/http/rewriteURIForGET.js\");\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9odHRwL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMEM7QUFDaUM7QUFDSjtBQUN3RTtBQUM5RjtBQUNzQjtBQUM1QjtBQUNVO0FBQ1o7QUFDZ0I7QUFDekQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L2xpbmsvaHR0cC9pbmRleC5qcz9hYWY2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nbG9iYWxzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBwYXJzZUFuZENoZWNrSHR0cFJlc3BvbnNlIH0gZnJvbSBcIi4vcGFyc2VBbmRDaGVja0h0dHBSZXNwb25zZS5qc1wiO1xuZXhwb3J0IHsgc2VyaWFsaXplRmV0Y2hQYXJhbWV0ZXIgfSBmcm9tIFwiLi9zZXJpYWxpemVGZXRjaFBhcmFtZXRlci5qc1wiO1xuZXhwb3J0IHsgZmFsbGJhY2tIdHRwQ29uZmlnLCBkZWZhdWx0UHJpbnRlciwgc2VsZWN0SHR0cE9wdGlvbnNBbmRCb2R5LCBzZWxlY3RIdHRwT3B0aW9uc0FuZEJvZHlJbnRlcm5hbCB9IGZyb20gXCIuL3NlbGVjdEh0dHBPcHRpb25zQW5kQm9keS5qc1wiO1xuZXhwb3J0IHsgY2hlY2tGZXRjaGVyIH0gZnJvbSBcIi4vY2hlY2tGZXRjaGVyLmpzXCI7XG5leHBvcnQgeyBjcmVhdGVTaWduYWxJZlN1cHBvcnRlZCB9IGZyb20gXCIuL2NyZWF0ZVNpZ25hbElmU3VwcG9ydGVkLmpzXCI7XG5leHBvcnQgeyBzZWxlY3RVUkkgfSBmcm9tIFwiLi9zZWxlY3RVUkkuanNcIjtcbmV4cG9ydCB7IGNyZWF0ZUh0dHBMaW5rIH0gZnJvbSBcIi4vY3JlYXRlSHR0cExpbmsuanNcIjtcbmV4cG9ydCB7IEh0dHBMaW5rIH0gZnJvbSBcIi4vSHR0cExpbmsuanNcIjtcbmV4cG9ydCB7IHJld3JpdGVVUklGb3JHRVQgfSBmcm9tIFwiLi9yZXdyaXRlVVJJRm9yR0VULmpzXCI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/http/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js":
/*!****************************************************************************!*\
  !*** ./node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js ***!
  \****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"parseAndCheckHttpResponse\": function() { return /* binding */ parseAndCheckHttpResponse; }\n/* harmony export */ });\n/* harmony import */ var _utils_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/index.js */ \"./node_modules/@apollo/client/link/utils/index.js\");\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction parseAndCheckHttpResponse(operations) {\n    return function (response) { return response\n        .text()\n        .then(function (bodyText) {\n        try {\n            return JSON.parse(bodyText);\n        }\n        catch (err) {\n            var parseError = err;\n            parseError.name = 'ServerParseError';\n            parseError.response = response;\n            parseError.statusCode = response.status;\n            parseError.bodyText = bodyText;\n            throw parseError;\n        }\n    })\n        .then(function (result) {\n        if (response.status >= 300) {\n            (0,_utils_index_js__WEBPACK_IMPORTED_MODULE_0__.throwServerError)(response, result, \"Response not successful: Received status code \".concat(response.status));\n        }\n        if (!Array.isArray(result) &&\n            !hasOwnProperty.call(result, 'data') &&\n            !hasOwnProperty.call(result, 'errors')) {\n            (0,_utils_index_js__WEBPACK_IMPORTED_MODULE_0__.throwServerError)(response, result, \"Server response was missing for query '\".concat(Array.isArray(operations)\n                ? operations.map(function (op) { return op.operationName; })\n                : operations.operationName, \"'.\"));\n        }\n        return result;\n    }); };\n}\n//# sourceMappingURL=parseAndCheckHttpResponse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9odHRwL3BhcnNlQW5kQ2hlY2tIdHRwUmVzcG9uc2UuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBcUQ7QUFDckQ7QUFDTztBQUNQLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsWUFBWSxpRUFBZ0I7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGlFQUFnQjtBQUM1QixpREFBaUQsMEJBQTBCO0FBQzNFO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9saW5rL2h0dHAvcGFyc2VBbmRDaGVja0h0dHBSZXNwb25zZS5qcz85MjNhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRocm93U2VydmVyRXJyb3IgfSBmcm9tIFwiLi4vdXRpbHMvaW5kZXguanNcIjtcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBbmRDaGVja0h0dHBSZXNwb25zZShvcGVyYXRpb25zKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChyZXNwb25zZSkgeyByZXR1cm4gcmVzcG9uc2VcbiAgICAgICAgLnRleHQoKVxuICAgICAgICAudGhlbihmdW5jdGlvbiAoYm9keVRleHQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGJvZHlUZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB2YXIgcGFyc2VFcnJvciA9IGVycjtcbiAgICAgICAgICAgIHBhcnNlRXJyb3IubmFtZSA9ICdTZXJ2ZXJQYXJzZUVycm9yJztcbiAgICAgICAgICAgIHBhcnNlRXJyb3IucmVzcG9uc2UgPSByZXNwb25zZTtcbiAgICAgICAgICAgIHBhcnNlRXJyb3Iuc3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1cztcbiAgICAgICAgICAgIHBhcnNlRXJyb3IuYm9keVRleHQgPSBib2R5VGV4dDtcbiAgICAgICAgICAgIHRocm93IHBhcnNlRXJyb3I7XG4gICAgICAgIH1cbiAgICB9KVxuICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPj0gMzAwKSB7XG4gICAgICAgICAgICB0aHJvd1NlcnZlckVycm9yKHJlc3BvbnNlLCByZXN1bHQsIFwiUmVzcG9uc2Ugbm90IHN1Y2Nlc3NmdWw6IFJlY2VpdmVkIHN0YXR1cyBjb2RlIFwiLmNvbmNhdChyZXNwb25zZS5zdGF0dXMpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocmVzdWx0KSAmJlxuICAgICAgICAgICAgIWhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCAnZGF0YScpICYmXG4gICAgICAgICAgICAhaGFzT3duUHJvcGVydHkuY2FsbChyZXN1bHQsICdlcnJvcnMnKSkge1xuICAgICAgICAgICAgdGhyb3dTZXJ2ZXJFcnJvcihyZXNwb25zZSwgcmVzdWx0LCBcIlNlcnZlciByZXNwb25zZSB3YXMgbWlzc2luZyBmb3IgcXVlcnkgJ1wiLmNvbmNhdChBcnJheS5pc0FycmF5KG9wZXJhdGlvbnMpXG4gICAgICAgICAgICAgICAgPyBvcGVyYXRpb25zLm1hcChmdW5jdGlvbiAob3ApIHsgcmV0dXJuIG9wLm9wZXJhdGlvbk5hbWU7IH0pXG4gICAgICAgICAgICAgICAgOiBvcGVyYXRpb25zLm9wZXJhdGlvbk5hbWUsIFwiJy5cIikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7IH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYXJzZUFuZENoZWNrSHR0cFJlc3BvbnNlLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/http/rewriteURIForGET.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@apollo/client/link/http/rewriteURIForGET.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"rewriteURIForGET\": function() { return /* binding */ rewriteURIForGET; }\n/* harmony export */ });\n/* harmony import */ var _serializeFetchParameter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./serializeFetchParameter.js */ \"./node_modules/@apollo/client/link/http/serializeFetchParameter.js\");\n\nfunction rewriteURIForGET(chosenURI, body) {\n    var queryParams = [];\n    var addQueryParam = function (key, value) {\n        queryParams.push(\"\".concat(key, \"=\").concat(encodeURIComponent(value)));\n    };\n    if ('query' in body) {\n        addQueryParam('query', body.query);\n    }\n    if (body.operationName) {\n        addQueryParam('operationName', body.operationName);\n    }\n    if (body.variables) {\n        var serializedVariables = void 0;\n        try {\n            serializedVariables = (0,_serializeFetchParameter_js__WEBPACK_IMPORTED_MODULE_0__.serializeFetchParameter)(body.variables, 'Variables map');\n        }\n        catch (parseError) {\n            return { parseError: parseError };\n        }\n        addQueryParam('variables', serializedVariables);\n    }\n    if (body.extensions) {\n        var serializedExtensions = void 0;\n        try {\n            serializedExtensions = (0,_serializeFetchParameter_js__WEBPACK_IMPORTED_MODULE_0__.serializeFetchParameter)(body.extensions, 'Extensions map');\n        }\n        catch (parseError) {\n            return { parseError: parseError };\n        }\n        addQueryParam('extensions', serializedExtensions);\n    }\n    var fragment = '', preFragment = chosenURI;\n    var fragmentStart = chosenURI.indexOf('#');\n    if (fragmentStart !== -1) {\n        fragment = chosenURI.substr(fragmentStart);\n        preFragment = chosenURI.substr(0, fragmentStart);\n    }\n    var queryParamsPrefix = preFragment.indexOf('?') === -1 ? '?' : '&';\n    var newURI = preFragment + queryParamsPrefix + queryParams.join('&') + fragment;\n    return { newURI: newURI };\n}\n//# sourceMappingURL=rewriteURIForGET.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9odHRwL3Jld3JpdGVVUklGb3JHRVQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBdUU7QUFDaEU7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxvRkFBdUI7QUFDekQ7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsb0ZBQXVCO0FBQzFEO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9saW5rL2h0dHAvcmV3cml0ZVVSSUZvckdFVC5qcz81YjVmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNlcmlhbGl6ZUZldGNoUGFyYW1ldGVyIH0gZnJvbSBcIi4vc2VyaWFsaXplRmV0Y2hQYXJhbWV0ZXIuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiByZXdyaXRlVVJJRm9yR0VUKGNob3NlblVSSSwgYm9keSkge1xuICAgIHZhciBxdWVyeVBhcmFtcyA9IFtdO1xuICAgIHZhciBhZGRRdWVyeVBhcmFtID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgICAgcXVlcnlQYXJhbXMucHVzaChcIlwiLmNvbmNhdChrZXksIFwiPVwiKS5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSkpO1xuICAgIH07XG4gICAgaWYgKCdxdWVyeScgaW4gYm9keSkge1xuICAgICAgICBhZGRRdWVyeVBhcmFtKCdxdWVyeScsIGJvZHkucXVlcnkpO1xuICAgIH1cbiAgICBpZiAoYm9keS5vcGVyYXRpb25OYW1lKSB7XG4gICAgICAgIGFkZFF1ZXJ5UGFyYW0oJ29wZXJhdGlvbk5hbWUnLCBib2R5Lm9wZXJhdGlvbk5hbWUpO1xuICAgIH1cbiAgICBpZiAoYm9keS52YXJpYWJsZXMpIHtcbiAgICAgICAgdmFyIHNlcmlhbGl6ZWRWYXJpYWJsZXMgPSB2b2lkIDA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzZXJpYWxpemVkVmFyaWFibGVzID0gc2VyaWFsaXplRmV0Y2hQYXJhbWV0ZXIoYm9keS52YXJpYWJsZXMsICdWYXJpYWJsZXMgbWFwJyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKHBhcnNlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHBhcnNlRXJyb3I6IHBhcnNlRXJyb3IgfTtcbiAgICAgICAgfVxuICAgICAgICBhZGRRdWVyeVBhcmFtKCd2YXJpYWJsZXMnLCBzZXJpYWxpemVkVmFyaWFibGVzKTtcbiAgICB9XG4gICAgaWYgKGJvZHkuZXh0ZW5zaW9ucykge1xuICAgICAgICB2YXIgc2VyaWFsaXplZEV4dGVuc2lvbnMgPSB2b2lkIDA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzZXJpYWxpemVkRXh0ZW5zaW9ucyA9IHNlcmlhbGl6ZUZldGNoUGFyYW1ldGVyKGJvZHkuZXh0ZW5zaW9ucywgJ0V4dGVuc2lvbnMgbWFwJyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKHBhcnNlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHBhcnNlRXJyb3I6IHBhcnNlRXJyb3IgfTtcbiAgICAgICAgfVxuICAgICAgICBhZGRRdWVyeVBhcmFtKCdleHRlbnNpb25zJywgc2VyaWFsaXplZEV4dGVuc2lvbnMpO1xuICAgIH1cbiAgICB2YXIgZnJhZ21lbnQgPSAnJywgcHJlRnJhZ21lbnQgPSBjaG9zZW5VUkk7XG4gICAgdmFyIGZyYWdtZW50U3RhcnQgPSBjaG9zZW5VUkkuaW5kZXhPZignIycpO1xuICAgIGlmIChmcmFnbWVudFN0YXJ0ICE9PSAtMSkge1xuICAgICAgICBmcmFnbWVudCA9IGNob3NlblVSSS5zdWJzdHIoZnJhZ21lbnRTdGFydCk7XG4gICAgICAgIHByZUZyYWdtZW50ID0gY2hvc2VuVVJJLnN1YnN0cigwLCBmcmFnbWVudFN0YXJ0KTtcbiAgICB9XG4gICAgdmFyIHF1ZXJ5UGFyYW1zUHJlZml4ID0gcHJlRnJhZ21lbnQuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJztcbiAgICB2YXIgbmV3VVJJID0gcHJlRnJhZ21lbnQgKyBxdWVyeVBhcmFtc1ByZWZpeCArIHF1ZXJ5UGFyYW1zLmpvaW4oJyYnKSArIGZyYWdtZW50O1xuICAgIHJldHVybiB7IG5ld1VSSTogbmV3VVJJIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXdyaXRlVVJJRm9yR0VULmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/http/rewriteURIForGET.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js":
/*!***************************************************************************!*\
  !*** ./node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js ***!
  \***************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"defaultPrinter\": function() { return /* binding */ defaultPrinter; },\n/* harmony export */   \"fallbackHttpConfig\": function() { return /* binding */ fallbackHttpConfig; },\n/* harmony export */   \"selectHttpOptionsAndBody\": function() { return /* binding */ selectHttpOptionsAndBody; },\n/* harmony export */   \"selectHttpOptionsAndBodyInternal\": function() { return /* binding */ selectHttpOptionsAndBodyInternal; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var graphql__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! graphql */ \"./node_modules/graphql/index.mjs\");\n\n\n;\nvar defaultHttpOptions = {\n    includeQuery: true,\n    includeExtensions: false,\n};\nvar defaultHeaders = {\n    accept: '*/*',\n    'content-type': 'application/json',\n};\nvar defaultOptions = {\n    method: 'POST',\n};\nvar fallbackHttpConfig = {\n    http: defaultHttpOptions,\n    headers: defaultHeaders,\n    options: defaultOptions,\n};\nvar defaultPrinter = function (ast, printer) { return printer(ast); };\nfunction selectHttpOptionsAndBody(operation, fallbackConfig) {\n    var configs = [];\n    for (var _i = 2; _i < arguments.length; _i++) {\n        configs[_i - 2] = arguments[_i];\n    }\n    configs.unshift(fallbackConfig);\n    return selectHttpOptionsAndBodyInternal.apply(void 0, (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__spreadArray)([operation,\n        defaultPrinter], configs, false));\n}\nfunction selectHttpOptionsAndBodyInternal(operation, printer) {\n    var configs = [];\n    for (var _i = 2; _i < arguments.length; _i++) {\n        configs[_i - 2] = arguments[_i];\n    }\n    var options = {};\n    var http = {};\n    configs.forEach(function (config) {\n        options = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)({}, options), config.options), { headers: (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)({}, options.headers), headersToLowerCase(config.headers)) });\n        if (config.credentials) {\n            options.credentials = config.credentials;\n        }\n        http = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)({}, http), config.http);\n    });\n    var operationName = operation.operationName, extensions = operation.extensions, variables = operation.variables, query = operation.query;\n    var body = { operationName: operationName, variables: variables };\n    if (http.includeExtensions)\n        body.extensions = extensions;\n    if (http.includeQuery)\n        body.query = printer(query, graphql__WEBPACK_IMPORTED_MODULE_1__.print);\n    return {\n        options: options,\n        body: body,\n    };\n}\n;\nfunction headersToLowerCase(headers) {\n    if (headers) {\n        var normalized_1 = Object.create(null);\n        Object.keys(Object(headers)).forEach(function (name) {\n            normalized_1[name.toLowerCase()] = headers[name];\n        });\n        return normalized_1;\n    }\n    return headers;\n}\n//# sourceMappingURL=selectHttpOptionsAndBody.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9odHRwL3NlbGVjdEh0dHBPcHRpb25zQW5kQm9keS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBZ0Q7QUFDaEI7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNPLCtDQUErQztBQUMvQztBQUNQO0FBQ0EscUJBQXFCLHVCQUF1QjtBQUM1QztBQUNBO0FBQ0E7QUFDQSwwREFBMEQsb0RBQWE7QUFDdkU7QUFDQTtBQUNPO0FBQ1A7QUFDQSxxQkFBcUIsdUJBQXVCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsK0NBQVEsQ0FBQywrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsK0JBQStCLFNBQVMsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLHlEQUF5RDtBQUNwSztBQUNBO0FBQ0E7QUFDQSxlQUFlLCtDQUFRLENBQUMsK0NBQVEsR0FBRztBQUNuQyxLQUFLO0FBQ0w7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLDBDQUFLO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9odHRwL3NlbGVjdEh0dHBPcHRpb25zQW5kQm9keS5qcz9mZDE5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBwcmludCB9IGZyb20gJ2dyYXBocWwnO1xuO1xudmFyIGRlZmF1bHRIdHRwT3B0aW9ucyA9IHtcbiAgICBpbmNsdWRlUXVlcnk6IHRydWUsXG4gICAgaW5jbHVkZUV4dGVuc2lvbnM6IGZhbHNlLFxufTtcbnZhciBkZWZhdWx0SGVhZGVycyA9IHtcbiAgICBhY2NlcHQ6ICcqLyonLFxuICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG59O1xudmFyIGRlZmF1bHRPcHRpb25zID0ge1xuICAgIG1ldGhvZDogJ1BPU1QnLFxufTtcbmV4cG9ydCB2YXIgZmFsbGJhY2tIdHRwQ29uZmlnID0ge1xuICAgIGh0dHA6IGRlZmF1bHRIdHRwT3B0aW9ucyxcbiAgICBoZWFkZXJzOiBkZWZhdWx0SGVhZGVycyxcbiAgICBvcHRpb25zOiBkZWZhdWx0T3B0aW9ucyxcbn07XG5leHBvcnQgdmFyIGRlZmF1bHRQcmludGVyID0gZnVuY3Rpb24gKGFzdCwgcHJpbnRlcikgeyByZXR1cm4gcHJpbnRlcihhc3QpOyB9O1xuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdEh0dHBPcHRpb25zQW5kQm9keShvcGVyYXRpb24sIGZhbGxiYWNrQ29uZmlnKSB7XG4gICAgdmFyIGNvbmZpZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDI7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBjb25maWdzW19pIC0gMl0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICBjb25maWdzLnVuc2hpZnQoZmFsbGJhY2tDb25maWcpO1xuICAgIHJldHVybiBzZWxlY3RIdHRwT3B0aW9uc0FuZEJvZHlJbnRlcm5hbC5hcHBseSh2b2lkIDAsIF9fc3ByZWFkQXJyYXkoW29wZXJhdGlvbixcbiAgICAgICAgZGVmYXVsdFByaW50ZXJdLCBjb25maWdzLCBmYWxzZSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdEh0dHBPcHRpb25zQW5kQm9keUludGVybmFsKG9wZXJhdGlvbiwgcHJpbnRlcikge1xuICAgIHZhciBjb25maWdzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgY29uZmlnc1tfaSAtIDJdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgdmFyIG9wdGlvbnMgPSB7fTtcbiAgICB2YXIgaHR0cCA9IHt9O1xuICAgIGNvbmZpZ3MuZm9yRWFjaChmdW5jdGlvbiAoY29uZmlnKSB7XG4gICAgICAgIG9wdGlvbnMgPSBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3B0aW9ucyksIGNvbmZpZy5vcHRpb25zKSwgeyBoZWFkZXJzOiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3B0aW9ucy5oZWFkZXJzKSwgaGVhZGVyc1RvTG93ZXJDYXNlKGNvbmZpZy5oZWFkZXJzKSkgfSk7XG4gICAgICAgIGlmIChjb25maWcuY3JlZGVudGlhbHMpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuY3JlZGVudGlhbHMgPSBjb25maWcuY3JlZGVudGlhbHM7XG4gICAgICAgIH1cbiAgICAgICAgaHR0cCA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBodHRwKSwgY29uZmlnLmh0dHApO1xuICAgIH0pO1xuICAgIHZhciBvcGVyYXRpb25OYW1lID0gb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUsIGV4dGVuc2lvbnMgPSBvcGVyYXRpb24uZXh0ZW5zaW9ucywgdmFyaWFibGVzID0gb3BlcmF0aW9uLnZhcmlhYmxlcywgcXVlcnkgPSBvcGVyYXRpb24ucXVlcnk7XG4gICAgdmFyIGJvZHkgPSB7IG9wZXJhdGlvbk5hbWU6IG9wZXJhdGlvbk5hbWUsIHZhcmlhYmxlczogdmFyaWFibGVzIH07XG4gICAgaWYgKGh0dHAuaW5jbHVkZUV4dGVuc2lvbnMpXG4gICAgICAgIGJvZHkuZXh0ZW5zaW9ucyA9IGV4dGVuc2lvbnM7XG4gICAgaWYgKGh0dHAuaW5jbHVkZVF1ZXJ5KVxuICAgICAgICBib2R5LnF1ZXJ5ID0gcHJpbnRlcihxdWVyeSwgcHJpbnQpO1xuICAgIHJldHVybiB7XG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgIGJvZHk6IGJvZHksXG4gICAgfTtcbn1cbjtcbmZ1bmN0aW9uIGhlYWRlcnNUb0xvd2VyQ2FzZShoZWFkZXJzKSB7XG4gICAgaWYgKGhlYWRlcnMpIHtcbiAgICAgICAgdmFyIG5vcm1hbGl6ZWRfMSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIE9iamVjdC5rZXlzKE9iamVjdChoZWFkZXJzKSkuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgbm9ybWFsaXplZF8xW25hbWUudG9Mb3dlckNhc2UoKV0gPSBoZWFkZXJzW25hbWVdO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRfMTtcbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlcnM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZWxlY3RIdHRwT3B0aW9uc0FuZEJvZHkuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/http/selectURI.js":
/*!************************************************************!*\
  !*** ./node_modules/@apollo/client/link/http/selectURI.js ***!
  \************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"selectURI\": function() { return /* binding */ selectURI; }\n/* harmony export */ });\nvar selectURI = function (operation, fallbackURI) {\n    var context = operation.getContext();\n    var contextURI = context.uri;\n    if (contextURI) {\n        return contextURI;\n    }\n    else if (typeof fallbackURI === 'function') {\n        return fallbackURI(operation);\n    }\n    else {\n        return fallbackURI || '/graphql';\n    }\n};\n//# sourceMappingURL=selectURI.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9odHRwL3NlbGVjdFVSSS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9odHRwL3NlbGVjdFVSSS5qcz8wZTNkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgc2VsZWN0VVJJID0gZnVuY3Rpb24gKG9wZXJhdGlvbiwgZmFsbGJhY2tVUkkpIHtcbiAgICB2YXIgY29udGV4dCA9IG9wZXJhdGlvbi5nZXRDb250ZXh0KCk7XG4gICAgdmFyIGNvbnRleHRVUkkgPSBjb250ZXh0LnVyaTtcbiAgICBpZiAoY29udGV4dFVSSSkge1xuICAgICAgICByZXR1cm4gY29udGV4dFVSSTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZW9mIGZhbGxiYWNrVVJJID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBmYWxsYmFja1VSSShvcGVyYXRpb24pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbGxiYWNrVVJJIHx8ICcvZ3JhcGhxbCc7XG4gICAgfVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlbGVjdFVSSS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/http/selectURI.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/http/serializeFetchParameter.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@apollo/client/link/http/serializeFetchParameter.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"serializeFetchParameter\": function() { return /* binding */ serializeFetchParameter; }\n/* harmony export */ });\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n\nvar serializeFetchParameter = function (p, label) {\n    var serialized;\n    try {\n        serialized = JSON.stringify(p);\n    }\n    catch (e) {\n        var parseError = __DEV__ ? new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(\"Network request failed. \".concat(label, \" is not serializable: \").concat(e.message)) : new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(21);\n        parseError.parseError = e;\n        throw parseError;\n    }\n    return serialized;\n};\n//# sourceMappingURL=serializeFetchParameter.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay9odHRwL3NlcmlhbGl6ZUZldGNoUGFyYW1ldGVyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWtFO0FBQzNEO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qyx1RUFBYyw2RkFBNkYsdUVBQWM7QUFDaEs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9saW5rL2h0dHAvc2VyaWFsaXplRmV0Y2hQYXJhbWV0ZXIuanM/NDYxNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnZhcmlhbnRFcnJvciB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZ2xvYmFscy9pbmRleC5qc1wiO1xuZXhwb3J0IHZhciBzZXJpYWxpemVGZXRjaFBhcmFtZXRlciA9IGZ1bmN0aW9uIChwLCBsYWJlbCkge1xuICAgIHZhciBzZXJpYWxpemVkO1xuICAgIHRyeSB7XG4gICAgICAgIHNlcmlhbGl6ZWQgPSBKU09OLnN0cmluZ2lmeShwKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgdmFyIHBhcnNlRXJyb3IgPSBfX0RFVl9fID8gbmV3IEludmFyaWFudEVycm9yKFwiTmV0d29yayByZXF1ZXN0IGZhaWxlZC4gXCIuY29uY2F0KGxhYmVsLCBcIiBpcyBub3Qgc2VyaWFsaXphYmxlOiBcIikuY29uY2F0KGUubWVzc2FnZSkpIDogbmV3IEludmFyaWFudEVycm9yKDIxKTtcbiAgICAgICAgcGFyc2VFcnJvci5wYXJzZUVycm9yID0gZTtcbiAgICAgICAgdGhyb3cgcGFyc2VFcnJvcjtcbiAgICB9XG4gICAgcmV0dXJuIHNlcmlhbGl6ZWQ7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VyaWFsaXplRmV0Y2hQYXJhbWV0ZXIuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/http/serializeFetchParameter.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/utils/createOperation.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@apollo/client/link/utils/createOperation.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createOperation\": function() { return /* binding */ createOperation; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n\nfunction createOperation(starting, operation) {\n    var context = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)({}, starting);\n    var setContext = function (next) {\n        if (typeof next === 'function') {\n            context = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)({}, context), next(context));\n        }\n        else {\n            context = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)({}, context), next);\n        }\n    };\n    var getContext = function () { return ((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)({}, context)); };\n    Object.defineProperty(operation, 'setContext', {\n        enumerable: false,\n        value: setContext,\n    });\n    Object.defineProperty(operation, 'getContext', {\n        enumerable: false,\n        value: getContext,\n    });\n    return operation;\n}\n//# sourceMappingURL=createOperation.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay91dGlscy9jcmVhdGVPcGVyYXRpb24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBaUM7QUFDMUI7QUFDUCxrQkFBa0IsK0NBQVEsR0FBRztBQUM3QjtBQUNBO0FBQ0Esc0JBQXNCLCtDQUFRLENBQUMsK0NBQVEsR0FBRztBQUMxQztBQUNBO0FBQ0Esc0JBQXNCLCtDQUFRLENBQUMsK0NBQVEsR0FBRztBQUMxQztBQUNBO0FBQ0EsbUNBQW1DLFFBQVEsK0NBQVEsR0FBRztBQUN0RDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay91dGlscy9jcmVhdGVPcGVyYXRpb24uanM/OTJmYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU9wZXJhdGlvbihzdGFydGluZywgb3BlcmF0aW9uKSB7XG4gICAgdmFyIGNvbnRleHQgPSBfX2Fzc2lnbih7fSwgc3RhcnRpbmcpO1xuICAgIHZhciBzZXRDb250ZXh0ID0gZnVuY3Rpb24gKG5leHQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBuZXh0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb250ZXh0ID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGNvbnRleHQpLCBuZXh0KGNvbnRleHQpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRleHQgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgY29udGV4dCksIG5leHQpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICB2YXIgZ2V0Q29udGV4dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIChfX2Fzc2lnbih7fSwgY29udGV4dCkpOyB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvcGVyYXRpb24sICdzZXRDb250ZXh0Jywge1xuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHNldENvbnRleHQsXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9wZXJhdGlvbiwgJ2dldENvbnRleHQnLCB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB2YWx1ZTogZ2V0Q29udGV4dCxcbiAgICB9KTtcbiAgICByZXR1cm4gb3BlcmF0aW9uO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3JlYXRlT3BlcmF0aW9uLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/utils/createOperation.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/utils/fromError.js":
/*!*************************************************************!*\
  !*** ./node_modules/@apollo/client/link/utils/fromError.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"fromError\": function() { return /* binding */ fromError; }\n/* harmony export */ });\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n\nfunction fromError(errorValue) {\n    return new _utilities_index_js__WEBPACK_IMPORTED_MODULE_0__.Observable(function (observer) {\n        observer.error(errorValue);\n    });\n}\n//# sourceMappingURL=fromError.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay91dGlscy9mcm9tRXJyb3IuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBc0Q7QUFDL0M7QUFDUCxlQUFlLDJEQUFVO0FBQ3pCO0FBQ0EsS0FBSztBQUNMO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L2xpbmsvdXRpbHMvZnJvbUVycm9yLmpzPzc0MTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvaW5kZXguanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBmcm9tRXJyb3IoZXJyb3JWYWx1ZSkge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3JWYWx1ZSk7XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mcm9tRXJyb3IuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/utils/fromError.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/utils/fromPromise.js":
/*!***************************************************************!*\
  !*** ./node_modules/@apollo/client/link/utils/fromPromise.js ***!
  \***************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"fromPromise\": function() { return /* binding */ fromPromise; }\n/* harmony export */ });\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n\nfunction fromPromise(promise) {\n    return new _utilities_index_js__WEBPACK_IMPORTED_MODULE_0__.Observable(function (observer) {\n        promise\n            .then(function (value) {\n            observer.next(value);\n            observer.complete();\n        })\n            .catch(observer.error.bind(observer));\n    });\n}\n//# sourceMappingURL=fromPromise.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay91dGlscy9mcm9tUHJvbWlzZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFzRDtBQUMvQztBQUNQLGVBQWUsMkRBQVU7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay91dGlscy9mcm9tUHJvbWlzZS5qcz9lMmYzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2luZGV4LmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gZnJvbVByb21pc2UocHJvbWlzZSkge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgcHJvbWlzZVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2gob2JzZXJ2ZXIuZXJyb3IuYmluZChvYnNlcnZlcikpO1xuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZnJvbVByb21pc2UuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/utils/fromPromise.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/utils/index.js":
/*!*********************************************************!*\
  !*** ./node_modules/@apollo/client/link/utils/index.js ***!
  \*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createOperation\": function() { return /* reexport safe */ _createOperation_js__WEBPACK_IMPORTED_MODULE_6__.createOperation; },\n/* harmony export */   \"fromError\": function() { return /* reexport safe */ _fromError_js__WEBPACK_IMPORTED_MODULE_1__.fromError; },\n/* harmony export */   \"fromPromise\": function() { return /* reexport safe */ _fromPromise_js__WEBPACK_IMPORTED_MODULE_3__.fromPromise; },\n/* harmony export */   \"throwServerError\": function() { return /* reexport safe */ _throwServerError_js__WEBPACK_IMPORTED_MODULE_4__.throwServerError; },\n/* harmony export */   \"toPromise\": function() { return /* reexport safe */ _toPromise_js__WEBPACK_IMPORTED_MODULE_2__.toPromise; },\n/* harmony export */   \"transformOperation\": function() { return /* reexport safe */ _transformOperation_js__WEBPACK_IMPORTED_MODULE_7__.transformOperation; },\n/* harmony export */   \"validateOperation\": function() { return /* reexport safe */ _validateOperation_js__WEBPACK_IMPORTED_MODULE_5__.validateOperation; }\n/* harmony export */ });\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _fromError_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fromError.js */ \"./node_modules/@apollo/client/link/utils/fromError.js\");\n/* harmony import */ var _toPromise_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./toPromise.js */ \"./node_modules/@apollo/client/link/utils/toPromise.js\");\n/* harmony import */ var _fromPromise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fromPromise.js */ \"./node_modules/@apollo/client/link/utils/fromPromise.js\");\n/* harmony import */ var _throwServerError_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./throwServerError.js */ \"./node_modules/@apollo/client/link/utils/throwServerError.js\");\n/* harmony import */ var _validateOperation_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./validateOperation.js */ \"./node_modules/@apollo/client/link/utils/validateOperation.js\");\n/* harmony import */ var _createOperation_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./createOperation.js */ \"./node_modules/@apollo/client/link/utils/createOperation.js\");\n/* harmony import */ var _transformOperation_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./transformOperation.js */ \"./node_modules/@apollo/client/link/utils/transformOperation.js\");\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay91dGlscy9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMEM7QUFDQztBQUNBO0FBQ0k7QUFDVTtBQUNFO0FBQ0o7QUFDTTtBQUM3RCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay91dGlscy9pbmRleC5qcz82YWU0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nbG9iYWxzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBmcm9tRXJyb3IgfSBmcm9tIFwiLi9mcm9tRXJyb3IuanNcIjtcbmV4cG9ydCB7IHRvUHJvbWlzZSB9IGZyb20gXCIuL3RvUHJvbWlzZS5qc1wiO1xuZXhwb3J0IHsgZnJvbVByb21pc2UgfSBmcm9tIFwiLi9mcm9tUHJvbWlzZS5qc1wiO1xuZXhwb3J0IHsgdGhyb3dTZXJ2ZXJFcnJvciB9IGZyb20gXCIuL3Rocm93U2VydmVyRXJyb3IuanNcIjtcbmV4cG9ydCB7IHZhbGlkYXRlT3BlcmF0aW9uIH0gZnJvbSBcIi4vdmFsaWRhdGVPcGVyYXRpb24uanNcIjtcbmV4cG9ydCB7IGNyZWF0ZU9wZXJhdGlvbiB9IGZyb20gXCIuL2NyZWF0ZU9wZXJhdGlvbi5qc1wiO1xuZXhwb3J0IHsgdHJhbnNmb3JtT3BlcmF0aW9uIH0gZnJvbSBcIi4vdHJhbnNmb3JtT3BlcmF0aW9uLmpzXCI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/utils/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/utils/throwServerError.js":
/*!********************************************************************!*\
  !*** ./node_modules/@apollo/client/link/utils/throwServerError.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"throwServerError\": function() { return /* binding */ throwServerError; }\n/* harmony export */ });\nvar throwServerError = function (response, result, message) {\n    var error = new Error(message);\n    error.name = 'ServerError';\n    error.response = response;\n    error.statusCode = response.status;\n    error.result = result;\n    throw error;\n};\n//# sourceMappingURL=throwServerError.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay91dGlscy90aHJvd1NlcnZlckVycm9yLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L2xpbmsvdXRpbHMvdGhyb3dTZXJ2ZXJFcnJvci5qcz8xMGRmIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgdGhyb3dTZXJ2ZXJFcnJvciA9IGZ1bmN0aW9uIChyZXNwb25zZSwgcmVzdWx0LCBtZXNzYWdlKSB7XG4gICAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIGVycm9yLm5hbWUgPSAnU2VydmVyRXJyb3InO1xuICAgIGVycm9yLnJlc3BvbnNlID0gcmVzcG9uc2U7XG4gICAgZXJyb3Iuc3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1cztcbiAgICBlcnJvci5yZXN1bHQgPSByZXN1bHQ7XG4gICAgdGhyb3cgZXJyb3I7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dGhyb3dTZXJ2ZXJFcnJvci5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/utils/throwServerError.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/utils/toPromise.js":
/*!*************************************************************!*\
  !*** ./node_modules/@apollo/client/link/utils/toPromise.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"toPromise\": function() { return /* binding */ toPromise; }\n/* harmony export */ });\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n\nfunction toPromise(observable) {\n    var completed = false;\n    return new Promise(function (resolve, reject) {\n        observable.subscribe({\n            next: function (data) {\n                if (completed) {\n                    __DEV__ && _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant.warn(\"Promise Wrapper does not support multiple results from Observable\");\n                }\n                else {\n                    completed = true;\n                    resolve(data);\n                }\n            },\n            error: reject,\n        });\n    });\n}\n//# sourceMappingURL=toPromise.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay91dGlscy90b1Byb21pc2UuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNkQ7QUFDdEQ7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHVFQUFjO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L2xpbmsvdXRpbHMvdG9Qcm9taXNlLmpzPzlkYjciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9nbG9iYWxzL2luZGV4LmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gdG9Qcm9taXNlKG9ic2VydmFibGUpIHtcbiAgICB2YXIgY29tcGxldGVkID0gZmFsc2U7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgb2JzZXJ2YWJsZS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoY29tcGxldGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIF9fREVWX18gJiYgaW52YXJpYW50Lndhcm4oXCJQcm9taXNlIFdyYXBwZXIgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsZSByZXN1bHRzIGZyb20gT2JzZXJ2YWJsZVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiByZWplY3QsXG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dG9Qcm9taXNlLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/utils/toPromise.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/utils/transformOperation.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@apollo/client/link/utils/transformOperation.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"transformOperation\": function() { return /* binding */ transformOperation; }\n/* harmony export */ });\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n\nfunction transformOperation(operation) {\n    var transformedOperation = {\n        variables: operation.variables || {},\n        extensions: operation.extensions || {},\n        operationName: operation.operationName,\n        query: operation.query,\n    };\n    if (!transformedOperation.operationName) {\n        transformedOperation.operationName =\n            typeof transformedOperation.query !== 'string'\n                ? (0,_utilities_index_js__WEBPACK_IMPORTED_MODULE_0__.getOperationName)(transformedOperation.query) || undefined\n                : '';\n    }\n    return transformedOperation;\n}\n//# sourceMappingURL=transformOperation.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay91dGlscy90cmFuc2Zvcm1PcGVyYXRpb24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNEQ7QUFDckQ7QUFDUDtBQUNBLDRDQUE0QztBQUM1Qyw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHFFQUFnQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9saW5rL3V0aWxzL3RyYW5zZm9ybU9wZXJhdGlvbi5qcz83YTRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE9wZXJhdGlvbk5hbWUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2luZGV4LmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtT3BlcmF0aW9uKG9wZXJhdGlvbikge1xuICAgIHZhciB0cmFuc2Zvcm1lZE9wZXJhdGlvbiA9IHtcbiAgICAgICAgdmFyaWFibGVzOiBvcGVyYXRpb24udmFyaWFibGVzIHx8IHt9LFxuICAgICAgICBleHRlbnNpb25zOiBvcGVyYXRpb24uZXh0ZW5zaW9ucyB8fCB7fSxcbiAgICAgICAgb3BlcmF0aW9uTmFtZTogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUsXG4gICAgICAgIHF1ZXJ5OiBvcGVyYXRpb24ucXVlcnksXG4gICAgfTtcbiAgICBpZiAoIXRyYW5zZm9ybWVkT3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUpIHtcbiAgICAgICAgdHJhbnNmb3JtZWRPcGVyYXRpb24ub3BlcmF0aW9uTmFtZSA9XG4gICAgICAgICAgICB0eXBlb2YgdHJhbnNmb3JtZWRPcGVyYXRpb24ucXVlcnkgIT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyBnZXRPcGVyYXRpb25OYW1lKHRyYW5zZm9ybWVkT3BlcmF0aW9uLnF1ZXJ5KSB8fCB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA6ICcnO1xuICAgIH1cbiAgICByZXR1cm4gdHJhbnNmb3JtZWRPcGVyYXRpb247XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10cmFuc2Zvcm1PcGVyYXRpb24uanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/utils/transformOperation.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/link/utils/validateOperation.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@apollo/client/link/utils/validateOperation.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"validateOperation\": function() { return /* binding */ validateOperation; }\n/* harmony export */ });\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n\nfunction validateOperation(operation) {\n    var OPERATION_FIELDS = [\n        'query',\n        'operationName',\n        'variables',\n        'extensions',\n        'context',\n    ];\n    for (var _i = 0, _a = Object.keys(operation); _i < _a.length; _i++) {\n        var key = _a[_i];\n        if (OPERATION_FIELDS.indexOf(key) < 0) {\n            throw __DEV__ ? new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(\"illegal argument: \".concat(key)) : new _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(24);\n        }\n    }\n    return operation;\n}\n//# sourceMappingURL=validateOperation.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvbGluay91dGlscy92YWxpZGF0ZU9wZXJhdGlvbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFrRTtBQUMzRDtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELGdCQUFnQjtBQUNsRTtBQUNBO0FBQ0EsZ0NBQWdDLHVFQUFjLHlDQUF5Qyx1RUFBYztBQUNyRztBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9saW5rL3V0aWxzL3ZhbGlkYXRlT3BlcmF0aW9uLmpzPzExMTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YXJpYW50RXJyb3IgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2dsb2JhbHMvaW5kZXguanNcIjtcbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZU9wZXJhdGlvbihvcGVyYXRpb24pIHtcbiAgICB2YXIgT1BFUkFUSU9OX0ZJRUxEUyA9IFtcbiAgICAgICAgJ3F1ZXJ5JyxcbiAgICAgICAgJ29wZXJhdGlvbk5hbWUnLFxuICAgICAgICAndmFyaWFibGVzJyxcbiAgICAgICAgJ2V4dGVuc2lvbnMnLFxuICAgICAgICAnY29udGV4dCcsXG4gICAgXTtcbiAgICBmb3IgKHZhciBfaSA9IDAsIF9hID0gT2JqZWN0LmtleXMob3BlcmF0aW9uKTsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGtleSA9IF9hW19pXTtcbiAgICAgICAgaWYgKE9QRVJBVElPTl9GSUVMRFMuaW5kZXhPZihrZXkpIDwgMCkge1xuICAgICAgICAgICAgdGhyb3cgX19ERVZfXyA/IG5ldyBJbnZhcmlhbnRFcnJvcihcImlsbGVnYWwgYXJndW1lbnQ6IFwiLmNvbmNhdChrZXkpKSA6IG5ldyBJbnZhcmlhbnRFcnJvcigyNCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9wZXJhdGlvbjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXZhbGlkYXRlT3BlcmF0aW9uLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/link/utils/validateOperation.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/react/context/ApolloConsumer.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@apollo/client/react/context/ApolloConsumer.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloConsumer\": function() { return /* binding */ ApolloConsumer; }\n/* harmony export */ });\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _ApolloContext_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ApolloContext.js */ \"./node_modules/@apollo/client/react/context/ApolloContext.js\");\n\n\n\nvar ApolloConsumer = function (props) {\n    var ApolloContext = (0,_ApolloContext_js__WEBPACK_IMPORTED_MODULE_2__.getApolloContext)();\n    return react__WEBPACK_IMPORTED_MODULE_1__.createElement(ApolloContext.Consumer, null, function (context) {\n        __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(context && context.client, 'Could not find \"client\" in the context of ApolloConsumer. ' +\n            'Wrap the root component in an <ApolloProvider>.') : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(context && context.client, 25);\n        return props.children(context.client);\n    });\n};\n//# sourceMappingURL=ApolloConsumer.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvcmVhY3QvY29udGV4dC9BcG9sbG9Db25zdW1lci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTZEO0FBQzlCO0FBQ3VCO0FBQy9DO0FBQ1Asd0JBQXdCLG1FQUFnQjtBQUN4QyxXQUFXLGdEQUFtQjtBQUM5QixrQkFBa0Isc0VBQVM7QUFDM0IsaUVBQWlFLHNFQUFTO0FBQzFFO0FBQ0EsS0FBSztBQUNMO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L3JlYWN0L2NvbnRleHQvQXBvbGxvQ29uc3VtZXIuanM/ZDUwZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2dsb2JhbHMvaW5kZXguanNcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGdldEFwb2xsb0NvbnRleHQgfSBmcm9tIFwiLi9BcG9sbG9Db250ZXh0LmpzXCI7XG5leHBvcnQgdmFyIEFwb2xsb0NvbnN1bWVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIEFwb2xsb0NvbnRleHQgPSBnZXRBcG9sbG9Db250ZXh0KCk7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQXBvbGxvQ29udGV4dC5Db25zdW1lciwgbnVsbCwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgX19ERVZfXyA/IGludmFyaWFudChjb250ZXh0ICYmIGNvbnRleHQuY2xpZW50LCAnQ291bGQgbm90IGZpbmQgXCJjbGllbnRcIiBpbiB0aGUgY29udGV4dCBvZiBBcG9sbG9Db25zdW1lci4gJyArXG4gICAgICAgICAgICAnV3JhcCB0aGUgcm9vdCBjb21wb25lbnQgaW4gYW4gPEFwb2xsb1Byb3ZpZGVyPi4nKSA6IGludmFyaWFudChjb250ZXh0ICYmIGNvbnRleHQuY2xpZW50LCAyNSk7XG4gICAgICAgIHJldHVybiBwcm9wcy5jaGlsZHJlbihjb250ZXh0LmNsaWVudCk7XG4gICAgfSk7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXBvbGxvQ29uc3VtZXIuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/react/context/ApolloConsumer.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/react/context/ApolloContext.js":
/*!********************************************************************!*\
  !*** ./node_modules/@apollo/client/react/context/ApolloContext.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getApolloContext\": function() { return /* binding */ getApolloContext; },\n/* harmony export */   \"resetApolloContext\": function() { return /* binding */ getApolloContext; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utilities/index.js */ \"./node_modules/@apollo/client/utilities/index.js\");\n\n\nvar contextKey = _utilities_index_js__WEBPACK_IMPORTED_MODULE_1__.canUseSymbol\n    ? Symbol.for('__APOLLO_CONTEXT__')\n    : '__APOLLO_CONTEXT__';\nfunction getApolloContext() {\n    var context = react__WEBPACK_IMPORTED_MODULE_0__.createContext[contextKey];\n    if (!context) {\n        Object.defineProperty(react__WEBPACK_IMPORTED_MODULE_0__.createContext, contextKey, {\n            value: context = react__WEBPACK_IMPORTED_MODULE_0__.createContext({}),\n            enumerable: false,\n            writable: false,\n            configurable: true,\n        });\n        context.displayName = 'ApolloContext';\n    }\n    return context;\n}\n\n//# sourceMappingURL=ApolloContext.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvcmVhY3QvY29udGV4dC9BcG9sbG9Db250ZXh0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBK0I7QUFDeUI7QUFDeEQsaUJBQWlCLDZEQUFZO0FBQzdCO0FBQ0E7QUFDTztBQUNQLGtCQUFrQixnREFBbUI7QUFDckM7QUFDQSw4QkFBOEIsZ0RBQW1CO0FBQ2pELDZCQUE2QixnREFBbUIsR0FBRztBQUNuRDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDa0Q7QUFDbEQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L3JlYWN0L2NvbnRleHQvQXBvbGxvQ29udGV4dC5qcz82OTEzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNhblVzZVN5bWJvbCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvaW5kZXguanNcIjtcbnZhciBjb250ZXh0S2V5ID0gY2FuVXNlU3ltYm9sXG4gICAgPyBTeW1ib2wuZm9yKCdfX0FQT0xMT19DT05URVhUX18nKVxuICAgIDogJ19fQVBPTExPX0NPTlRFWFRfXyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBvbGxvQ29udGV4dCgpIHtcbiAgICB2YXIgY29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHRbY29udGV4dEtleV07XG4gICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFjdC5jcmVhdGVDb250ZXh0LCBjb250ZXh0S2V5LCB7XG4gICAgICAgICAgICB2YWx1ZTogY29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoe30pLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb250ZXh0LmRpc3BsYXlOYW1lID0gJ0Fwb2xsb0NvbnRleHQnO1xuICAgIH1cbiAgICByZXR1cm4gY29udGV4dDtcbn1cbmV4cG9ydCB7IGdldEFwb2xsb0NvbnRleHQgYXMgcmVzZXRBcG9sbG9Db250ZXh0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1BcG9sbG9Db250ZXh0LmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/react/context/ApolloContext.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/react/context/ApolloProvider.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@apollo/client/react/context/ApolloProvider.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloProvider\": function() { return /* binding */ ApolloProvider; }\n/* harmony export */ });\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _ApolloContext_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ApolloContext.js */ \"./node_modules/@apollo/client/react/context/ApolloContext.js\");\n\n\n\nvar ApolloProvider = function (_a) {\n    var client = _a.client, children = _a.children;\n    var ApolloContext = (0,_ApolloContext_js__WEBPACK_IMPORTED_MODULE_2__.getApolloContext)();\n    return react__WEBPACK_IMPORTED_MODULE_1__.createElement(ApolloContext.Consumer, null, function (context) {\n        if (context === void 0) { context = {}; }\n        if (client && context.client !== client) {\n            context = Object.assign({}, context, { client: client });\n        }\n        __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(context.client, 'ApolloProvider was not passed a client instance. Make ' +\n            'sure you pass in your client via the \"client\" prop.') : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(context.client, 26);\n        return (react__WEBPACK_IMPORTED_MODULE_1__.createElement(ApolloContext.Provider, { value: context }, children));\n    });\n};\n//# sourceMappingURL=ApolloProvider.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvcmVhY3QvY29udGV4dC9BcG9sbG9Qcm92aWRlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTZEO0FBQzlCO0FBQ3VCO0FBQy9DO0FBQ1A7QUFDQSx3QkFBd0IsbUVBQWdCO0FBQ3hDLFdBQVcsZ0RBQW1CO0FBQzlCLGtDQUFrQztBQUNsQztBQUNBLHNDQUFzQyxhQUFhLGdCQUFnQjtBQUNuRTtBQUNBLGtCQUFrQixzRUFBUztBQUMzQixxRUFBcUUsc0VBQVM7QUFDOUUsZ0JBQWdCLGdEQUFtQiwyQkFBMkIsZ0JBQWdCO0FBQzlFLEtBQUs7QUFDTDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9yZWFjdC9jb250ZXh0L0Fwb2xsb1Byb3ZpZGVyLmpzPzdhNTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9nbG9iYWxzL2luZGV4LmpzXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBnZXRBcG9sbG9Db250ZXh0IH0gZnJvbSBcIi4vQXBvbGxvQ29udGV4dC5qc1wiO1xuZXhwb3J0IHZhciBBcG9sbG9Qcm92aWRlciA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBjbGllbnQgPSBfYS5jbGllbnQsIGNoaWxkcmVuID0gX2EuY2hpbGRyZW47XG4gICAgdmFyIEFwb2xsb0NvbnRleHQgPSBnZXRBcG9sbG9Db250ZXh0KCk7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQXBvbGxvQ29udGV4dC5Db25zdW1lciwgbnVsbCwgZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgICAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkgeyBjb250ZXh0ID0ge307IH1cbiAgICAgICAgaWYgKGNsaWVudCAmJiBjb250ZXh0LmNsaWVudCAhPT0gY2xpZW50KSB7XG4gICAgICAgICAgICBjb250ZXh0ID0gT2JqZWN0LmFzc2lnbih7fSwgY29udGV4dCwgeyBjbGllbnQ6IGNsaWVudCB9KTtcbiAgICAgICAgfVxuICAgICAgICBfX0RFVl9fID8gaW52YXJpYW50KGNvbnRleHQuY2xpZW50LCAnQXBvbGxvUHJvdmlkZXIgd2FzIG5vdCBwYXNzZWQgYSBjbGllbnQgaW5zdGFuY2UuIE1ha2UgJyArXG4gICAgICAgICAgICAnc3VyZSB5b3UgcGFzcyBpbiB5b3VyIGNsaWVudCB2aWEgdGhlIFwiY2xpZW50XCIgcHJvcC4nKSA6IGludmFyaWFudChjb250ZXh0LmNsaWVudCwgMjYpO1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQXBvbGxvQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY29udGV4dCB9LCBjaGlsZHJlbikpO1xuICAgIH0pO1xufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUFwb2xsb1Byb3ZpZGVyLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/react/context/ApolloProvider.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/react/context/index.js":
/*!************************************************************!*\
  !*** ./node_modules/@apollo/client/react/context/index.js ***!
  \************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloConsumer\": function() { return /* reexport safe */ _ApolloConsumer_js__WEBPACK_IMPORTED_MODULE_1__.ApolloConsumer; },\n/* harmony export */   \"ApolloProvider\": function() { return /* reexport safe */ _ApolloProvider_js__WEBPACK_IMPORTED_MODULE_3__.ApolloProvider; },\n/* harmony export */   \"getApolloContext\": function() { return /* reexport safe */ _ApolloContext_js__WEBPACK_IMPORTED_MODULE_2__.getApolloContext; },\n/* harmony export */   \"resetApolloContext\": function() { return /* reexport safe */ _ApolloContext_js__WEBPACK_IMPORTED_MODULE_2__.getApolloContext; }\n/* harmony export */ });\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _ApolloConsumer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ApolloConsumer.js */ \"./node_modules/@apollo/client/react/context/ApolloConsumer.js\");\n/* harmony import */ var _ApolloContext_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ApolloContext.js */ \"./node_modules/@apollo/client/react/context/ApolloContext.js\");\n/* harmony import */ var _ApolloProvider_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ApolloProvider.js */ \"./node_modules/@apollo/client/react/context/ApolloProvider.js\");\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvcmVhY3QvY29udGV4dC9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUEwQztBQUNXO0FBQ3lDO0FBQ3pDO0FBQ3JEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9yZWFjdC9jb250ZXh0L2luZGV4LmpzPzc5YzEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dsb2JhbHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IEFwb2xsb0NvbnN1bWVyIH0gZnJvbSBcIi4vQXBvbGxvQ29uc3VtZXIuanNcIjtcbmV4cG9ydCB7IGdldEFwb2xsb0NvbnRleHQsIGdldEFwb2xsb0NvbnRleHQgYXMgcmVzZXRBcG9sbG9Db250ZXh0IH0gZnJvbSBcIi4vQXBvbGxvQ29udGV4dC5qc1wiO1xuZXhwb3J0IHsgQXBvbGxvUHJvdmlkZXIgfSBmcm9tIFwiLi9BcG9sbG9Qcm92aWRlci5qc1wiO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/react/context/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/react/hooks/index.js":
/*!**********************************************************!*\
  !*** ./node_modules/@apollo/client/react/hooks/index.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _useApolloClient_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useApolloClient.js */ \"./node_modules/@apollo/client/react/hooks/useApolloClient.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _useApolloClient_js__WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _useApolloClient_js__WEBPACK_IMPORTED_MODULE_1__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _useLazyQuery_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./useLazyQuery.js */ \"./node_modules/@apollo/client/react/hooks/useLazyQuery.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _useLazyQuery_js__WEBPACK_IMPORTED_MODULE_2__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _useLazyQuery_js__WEBPACK_IMPORTED_MODULE_2__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _useMutation_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./useMutation.js */ \"./node_modules/@apollo/client/react/hooks/useMutation.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _useMutation_js__WEBPACK_IMPORTED_MODULE_3__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _useMutation_js__WEBPACK_IMPORTED_MODULE_3__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _useQuery_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./useQuery.js */ \"./node_modules/@apollo/client/react/hooks/useQuery.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _useQuery_js__WEBPACK_IMPORTED_MODULE_4__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _useQuery_js__WEBPACK_IMPORTED_MODULE_4__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _useSubscription_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./useSubscription.js */ \"./node_modules/@apollo/client/react/hooks/useSubscription.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _useSubscription_js__WEBPACK_IMPORTED_MODULE_5__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _useSubscription_js__WEBPACK_IMPORTED_MODULE_5__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _useReactiveVar_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./useReactiveVar.js */ \"./node_modules/@apollo/client/react/hooks/useReactiveVar.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _useReactiveVar_js__WEBPACK_IMPORTED_MODULE_6__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _useReactiveVar_js__WEBPACK_IMPORTED_MODULE_6__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvcmVhY3QvaG9va3MvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMEM7QUFDTDtBQUNIO0FBQ0Q7QUFDSDtBQUNPO0FBQ0Q7QUFDcEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L3JlYWN0L2hvb2tzL2luZGV4LmpzP2U4ZDciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dsb2JhbHMvaW5kZXguanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZUFwb2xsb0NsaWVudC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlTGF6eVF1ZXJ5LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91c2VNdXRhdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlUXVlcnkuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZVN1YnNjcmlwdGlvbi5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXNlUmVhY3RpdmVWYXIuanNcIjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/react/hooks/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/react/hooks/useApolloClient.js":
/*!********************************************************************!*\
  !*** ./node_modules/@apollo/client/react/hooks/useApolloClient.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useApolloClient\": function() { return /* binding */ useApolloClient; }\n/* harmony export */ });\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _context_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../context/index.js */ \"./node_modules/@apollo/client/react/context/index.js\");\n\n\n\nfunction useApolloClient(override) {\n    var context = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)((0,_context_index_js__WEBPACK_IMPORTED_MODULE_2__.getApolloContext)());\n    var client = override || context.client;\n    __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(!!client, 'Could not find \"client\" in the context or passed in as an option. ' +\n        'Wrap the root component in an <ApolloProvider>, or pass an ApolloClient ' +\n        'instance in via options.') : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(!!client, 29);\n    return client;\n}\n//# sourceMappingURL=useApolloClient.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvcmVhY3QvaG9va3MvdXNlQXBvbGxvQ2xpZW50LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBNkQ7QUFDMUI7QUFDb0I7QUFDaEQ7QUFDUCxrQkFBa0IsaURBQVUsQ0FBQyxtRUFBZ0I7QUFDN0M7QUFDQSxjQUFjLHNFQUFTO0FBQ3ZCO0FBQ0Esc0NBQXNDLHNFQUFTO0FBQy9DO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvcmVhY3QvaG9va3MvdXNlQXBvbGxvQ2xpZW50LmpzP2QxOTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9nbG9iYWxzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZ2V0QXBvbGxvQ29udGV4dCB9IGZyb20gXCIuLi9jb250ZXh0L2luZGV4LmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gdXNlQXBvbGxvQ2xpZW50KG92ZXJyaWRlKSB7XG4gICAgdmFyIGNvbnRleHQgPSB1c2VDb250ZXh0KGdldEFwb2xsb0NvbnRleHQoKSk7XG4gICAgdmFyIGNsaWVudCA9IG92ZXJyaWRlIHx8IGNvbnRleHQuY2xpZW50O1xuICAgIF9fREVWX18gPyBpbnZhcmlhbnQoISFjbGllbnQsICdDb3VsZCBub3QgZmluZCBcImNsaWVudFwiIGluIHRoZSBjb250ZXh0IG9yIHBhc3NlZCBpbiBhcyBhbiBvcHRpb24uICcgK1xuICAgICAgICAnV3JhcCB0aGUgcm9vdCBjb21wb25lbnQgaW4gYW4gPEFwb2xsb1Byb3ZpZGVyPiwgb3IgcGFzcyBhbiBBcG9sbG9DbGllbnQgJyArXG4gICAgICAgICdpbnN0YW5jZSBpbiB2aWEgb3B0aW9ucy4nKSA6IGludmFyaWFudCghIWNsaWVudCwgMjkpO1xuICAgIHJldHVybiBjbGllbnQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11c2VBcG9sbG9DbGllbnQuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/react/hooks/useApolloClient.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/react/hooks/useLazyQuery.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@apollo/client/react/hooks/useLazyQuery.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useLazyQuery\": function() { return /* binding */ useLazyQuery; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _useQuery_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useQuery.js */ \"./node_modules/@apollo/client/react/hooks/useQuery.js\");\n\n\n\nvar EAGER_METHODS = [\n    'refetch',\n    'fetchMore',\n    'updateQuery',\n    'startPolling',\n    'subscribeToMore',\n];\nfunction useLazyQuery(query, options) {\n    var _a = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n        called: false,\n    }), execution = _a[0], setExecution = _a[1];\n    var result = (0,_useQuery_js__WEBPACK_IMPORTED_MODULE_1__.useQuery)(query, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, options), execution.options), { fetchPolicy: execution.called ? options === null || options === void 0 ? void 0 : options.fetchPolicy : 'standby', skip: undefined }));\n    if (!execution.called) {\n        result = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, result), { loading: false, data: void 0, error: void 0, called: false });\n    }\n    var eagerMethods = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n        var eagerMethods = {};\n        var _loop_1 = function (key) {\n            var method = result[key];\n            eagerMethods[key] = function () {\n                var args = [];\n                for (var _i = 0; _i < arguments.length; _i++) {\n                    args[_i] = arguments[_i];\n                }\n                setExecution(function (execution) { return ((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, execution), { called: true })); });\n                return method.apply(void 0, args);\n            };\n        };\n        for (var _i = 0, EAGER_METHODS_1 = EAGER_METHODS; _i < EAGER_METHODS_1.length; _i++) {\n            var key = EAGER_METHODS_1[_i];\n            _loop_1(key);\n        }\n        return eagerMethods;\n    }, []);\n    result.error = result.error || void 0;\n    Object.assign(result, eagerMethods);\n    var execute = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (executeOptions) {\n        setExecution({ called: true, options: executeOptions });\n        var promise = result.refetch(executeOptions === null || executeOptions === void 0 ? void 0 : executeOptions.variables).then(function (result1) {\n            var result2 = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, result), { data: result1.data, error: result1.error, called: true, loading: false });\n            Object.assign(result2, eagerMethods);\n            return result2;\n        });\n        promise.catch(function () { });\n        return promise;\n    }, []);\n    return [execute, result];\n}\n//# sourceMappingURL=useLazyQuery.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvcmVhY3QvaG9va3MvdXNlTGF6eVF1ZXJ5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBaUM7QUFDc0I7QUFDZDtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsYUFBYSwrQ0FBUTtBQUNyQjtBQUNBLEtBQUs7QUFDTCxpQkFBaUIsc0RBQVEsUUFBUSwrQ0FBUSxDQUFDLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxrQ0FBa0Msb0lBQW9JO0FBQ3BPO0FBQ0EsaUJBQWlCLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxhQUFhLDREQUE0RDtBQUM5RztBQUNBLHVCQUF1Qiw4Q0FBTztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLHVCQUF1QjtBQUN4RDtBQUNBO0FBQ0Esb0RBQW9ELFFBQVEsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGdCQUFnQixjQUFjLEtBQUs7QUFDbkg7QUFDQTtBQUNBO0FBQ0EsMERBQTBELDZCQUE2QjtBQUN2RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0Esa0JBQWtCLGtEQUFXO0FBQzdCLHVCQUF1Qix1Q0FBdUM7QUFDOUQ7QUFDQSwwQkFBMEIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGFBQWEsd0VBQXdFO0FBQ25JO0FBQ0E7QUFDQSxTQUFTO0FBQ1QscUNBQXFDO0FBQ3JDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvcmVhY3QvaG9va3MvdXNlTGF6eVF1ZXJ5LmpzPzE2OGQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVF1ZXJ5IH0gZnJvbSBcIi4vdXNlUXVlcnkuanNcIjtcbnZhciBFQUdFUl9NRVRIT0RTID0gW1xuICAgICdyZWZldGNoJyxcbiAgICAnZmV0Y2hNb3JlJyxcbiAgICAndXBkYXRlUXVlcnknLFxuICAgICdzdGFydFBvbGxpbmcnLFxuICAgICdzdWJzY3JpYmVUb01vcmUnLFxuXTtcbmV4cG9ydCBmdW5jdGlvbiB1c2VMYXp5UXVlcnkocXVlcnksIG9wdGlvbnMpIHtcbiAgICB2YXIgX2EgPSB1c2VTdGF0ZSh7XG4gICAgICAgIGNhbGxlZDogZmFsc2UsXG4gICAgfSksIGV4ZWN1dGlvbiA9IF9hWzBdLCBzZXRFeGVjdXRpb24gPSBfYVsxXTtcbiAgICB2YXIgcmVzdWx0ID0gdXNlUXVlcnkocXVlcnksIF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCBvcHRpb25zKSwgZXhlY3V0aW9uLm9wdGlvbnMpLCB7IGZldGNoUG9saWN5OiBleGVjdXRpb24uY2FsbGVkID8gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZldGNoUG9saWN5IDogJ3N0YW5kYnknLCBza2lwOiB1bmRlZmluZWQgfSkpO1xuICAgIGlmICghZXhlY3V0aW9uLmNhbGxlZCkge1xuICAgICAgICByZXN1bHQgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzdWx0KSwgeyBsb2FkaW5nOiBmYWxzZSwgZGF0YTogdm9pZCAwLCBlcnJvcjogdm9pZCAwLCBjYWxsZWQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgICB2YXIgZWFnZXJNZXRob2RzID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlYWdlck1ldGhvZHMgPSB7fTtcbiAgICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICB2YXIgbWV0aG9kID0gcmVzdWx0W2tleV07XG4gICAgICAgICAgICBlYWdlck1ldGhvZHNba2V5XSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0RXhlY3V0aW9uKGZ1bmN0aW9uIChleGVjdXRpb24pIHsgcmV0dXJuIChfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZXhlY3V0aW9uKSwgeyBjYWxsZWQ6IHRydWUgfSkpOyB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWV0aG9kLmFwcGx5KHZvaWQgMCwgYXJncyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIEVBR0VSX01FVEhPRFNfMSA9IEVBR0VSX01FVEhPRFM7IF9pIDwgRUFHRVJfTUVUSE9EU18xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgdmFyIGtleSA9IEVBR0VSX01FVEhPRFNfMVtfaV07XG4gICAgICAgICAgICBfbG9vcF8xKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVhZ2VyTWV0aG9kcztcbiAgICB9LCBbXSk7XG4gICAgcmVzdWx0LmVycm9yID0gcmVzdWx0LmVycm9yIHx8IHZvaWQgMDtcbiAgICBPYmplY3QuYXNzaWduKHJlc3VsdCwgZWFnZXJNZXRob2RzKTtcbiAgICB2YXIgZXhlY3V0ZSA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIChleGVjdXRlT3B0aW9ucykge1xuICAgICAgICBzZXRFeGVjdXRpb24oeyBjYWxsZWQ6IHRydWUsIG9wdGlvbnM6IGV4ZWN1dGVPcHRpb25zIH0pO1xuICAgICAgICB2YXIgcHJvbWlzZSA9IHJlc3VsdC5yZWZldGNoKGV4ZWN1dGVPcHRpb25zID09PSBudWxsIHx8IGV4ZWN1dGVPcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleGVjdXRlT3B0aW9ucy52YXJpYWJsZXMpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdDEpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQyID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3VsdCksIHsgZGF0YTogcmVzdWx0MS5kYXRhLCBlcnJvcjogcmVzdWx0MS5lcnJvciwgY2FsbGVkOiB0cnVlLCBsb2FkaW5nOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocmVzdWx0MiwgZWFnZXJNZXRob2RzKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQyO1xuICAgICAgICB9KTtcbiAgICAgICAgcHJvbWlzZS5jYXRjaChmdW5jdGlvbiAoKSB7IH0pO1xuICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIFtleGVjdXRlLCByZXN1bHRdO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlTGF6eVF1ZXJ5LmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/react/hooks/useLazyQuery.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/react/hooks/useMutation.js":
/*!****************************************************************!*\
  !*** ./node_modules/@apollo/client/react/hooks/useMutation.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useMutation\": function() { return /* binding */ useMutation; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../core/index.js */ \"./node_modules/@apollo/client/core/index.js\");\n/* harmony import */ var _wry_equality__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wry/equality */ \"./node_modules/@apollo/client/node_modules/@wry/equality/lib/equality.esm.js\");\n/* harmony import */ var _parser_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../parser/index.js */ \"./node_modules/@apollo/client/react/parser/index.js\");\n/* harmony import */ var _errors_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../errors/index.js */ \"./node_modules/@apollo/client/errors/index.js\");\n/* harmony import */ var _useApolloClient_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./useApolloClient.js */ \"./node_modules/@apollo/client/react/hooks/useApolloClient.js\");\n\n\n\n\n\n\n\nfunction useMutation(mutation, options) {\n    var client = (0,_useApolloClient_js__WEBPACK_IMPORTED_MODULE_2__.useApolloClient)(options === null || options === void 0 ? void 0 : options.client);\n    (0,_parser_index_js__WEBPACK_IMPORTED_MODULE_3__.verifyDocumentType)(mutation, _parser_index_js__WEBPACK_IMPORTED_MODULE_3__.DocumentType.Mutation);\n    var _a = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n        called: false,\n        loading: false,\n        client: client,\n    }), result = _a[0], setResult = _a[1];\n    var ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)({\n        result: result,\n        mutationId: 0,\n        isMounted: true,\n        client: client,\n        mutation: mutation,\n        options: options,\n    });\n    {\n        Object.assign(ref.current, { client: client, options: options, mutation: mutation });\n    }\n    var execute = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (executeOptions) {\n        if (executeOptions === void 0) { executeOptions = {}; }\n        var _a = ref.current, client = _a.client, options = _a.options, mutation = _a.mutation;\n        var baseOptions = (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, options), { mutation: mutation });\n        if (!ref.current.result.loading && !baseOptions.ignoreResults) {\n            setResult(ref.current.result = {\n                loading: true,\n                error: void 0,\n                data: void 0,\n                called: true,\n                client: client,\n            });\n        }\n        var mutationId = ++ref.current.mutationId;\n        var clientOptions = (0,_core_index_js__WEBPACK_IMPORTED_MODULE_5__.mergeOptions)(baseOptions, executeOptions);\n        return client.mutate(clientOptions).then(function (response) {\n            var _a, _b;\n            var data = response.data, errors = response.errors;\n            var error = errors && errors.length > 0\n                ? new _errors_index_js__WEBPACK_IMPORTED_MODULE_6__.ApolloError({ graphQLErrors: errors })\n                : void 0;\n            if (mutationId === ref.current.mutationId &&\n                !clientOptions.ignoreResults) {\n                var result_1 = {\n                    called: true,\n                    loading: false,\n                    data: data,\n                    error: error,\n                    client: client,\n                };\n                if (ref.current.isMounted && !(0,_wry_equality__WEBPACK_IMPORTED_MODULE_1__.equal)(ref.current.result, result_1)) {\n                    setResult(ref.current.result = result_1);\n                }\n            }\n            (_a = baseOptions.onCompleted) === null || _a === void 0 ? void 0 : _a.call(baseOptions, response.data);\n            (_b = executeOptions.onCompleted) === null || _b === void 0 ? void 0 : _b.call(executeOptions, response.data);\n            return response;\n        }).catch(function (error) {\n            var _a, _b;\n            if (mutationId === ref.current.mutationId &&\n                ref.current.isMounted) {\n                var result_2 = {\n                    loading: false,\n                    error: error,\n                    data: void 0,\n                    called: true,\n                    client: client,\n                };\n                if (!(0,_wry_equality__WEBPACK_IMPORTED_MODULE_1__.equal)(ref.current.result, result_2)) {\n                    setResult(ref.current.result = result_2);\n                }\n            }\n            if (baseOptions.onError || clientOptions.onError) {\n                (_a = baseOptions.onError) === null || _a === void 0 ? void 0 : _a.call(baseOptions, error);\n                (_b = executeOptions.onError) === null || _b === void 0 ? void 0 : _b.call(executeOptions, error);\n                return { data: void 0, errors: error };\n            }\n            throw error;\n        });\n    }, []);\n    var reset = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {\n        setResult({ called: false, loading: false, client: client });\n    }, []);\n    (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () { return function () {\n        ref.current.isMounted = false;\n    }; }, []);\n    return [execute, (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({ reset: reset }, result)];\n}\n//# sourceMappingURL=useMutation.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvcmVhY3QvaG9va3MvdXNlTXV0YXRpb24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBaUM7QUFDZ0M7QUFDYjtBQUNkO0FBQ2dDO0FBQ2xCO0FBQ0c7QUFDaEQ7QUFDUCxpQkFBaUIsb0VBQWU7QUFDaEMsSUFBSSxvRUFBa0IsV0FBVyxtRUFBcUI7QUFDdEQsYUFBYSwrQ0FBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsY0FBYyw2Q0FBTTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxxQ0FBcUMsc0RBQXNEO0FBQzNGO0FBQ0Esa0JBQWtCLGtEQUFXO0FBQzdCLHlDQUF5QztBQUN6QztBQUNBLDBCQUEwQiwrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsY0FBYyxvQkFBb0I7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLDRCQUE0Qiw0REFBWTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQix5REFBVyxHQUFHLHVCQUF1QjtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxvREFBSztBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsb0RBQUs7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMLGdCQUFnQixrREFBVztBQUMzQixvQkFBb0IsK0NBQStDO0FBQ25FLEtBQUs7QUFDTCxJQUFJLGdEQUFTLGVBQWU7QUFDNUI7QUFDQSxRQUFRO0FBQ1IscUJBQXFCLCtDQUFRLEdBQUcsY0FBYztBQUM5QztBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9yZWFjdC9ob29rcy91c2VNdXRhdGlvbi5qcz83YmQ3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgbWVyZ2VPcHRpb25zLCB9IGZyb20gXCIuLi8uLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBlcXVhbCB9IGZyb20gJ0B3cnkvZXF1YWxpdHknO1xuaW1wb3J0IHsgRG9jdW1lbnRUeXBlLCB2ZXJpZnlEb2N1bWVudFR5cGUgfSBmcm9tIFwiLi4vcGFyc2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBBcG9sbG9FcnJvciB9IGZyb20gXCIuLi8uLi9lcnJvcnMvaW5kZXguanNcIjtcbmltcG9ydCB7IHVzZUFwb2xsb0NsaWVudCB9IGZyb20gXCIuL3VzZUFwb2xsb0NsaWVudC5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU11dGF0aW9uKG11dGF0aW9uLCBvcHRpb25zKSB7XG4gICAgdmFyIGNsaWVudCA9IHVzZUFwb2xsb0NsaWVudChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuY2xpZW50KTtcbiAgICB2ZXJpZnlEb2N1bWVudFR5cGUobXV0YXRpb24sIERvY3VtZW50VHlwZS5NdXRhdGlvbik7XG4gICAgdmFyIF9hID0gdXNlU3RhdGUoe1xuICAgICAgICBjYWxsZWQ6IGZhbHNlLFxuICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgY2xpZW50OiBjbGllbnQsXG4gICAgfSksIHJlc3VsdCA9IF9hWzBdLCBzZXRSZXN1bHQgPSBfYVsxXTtcbiAgICB2YXIgcmVmID0gdXNlUmVmKHtcbiAgICAgICAgcmVzdWx0OiByZXN1bHQsXG4gICAgICAgIG11dGF0aW9uSWQ6IDAsXG4gICAgICAgIGlzTW91bnRlZDogdHJ1ZSxcbiAgICAgICAgY2xpZW50OiBjbGllbnQsXG4gICAgICAgIG11dGF0aW9uOiBtdXRhdGlvbixcbiAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICB9KTtcbiAgICB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24ocmVmLmN1cnJlbnQsIHsgY2xpZW50OiBjbGllbnQsIG9wdGlvbnM6IG9wdGlvbnMsIG11dGF0aW9uOiBtdXRhdGlvbiB9KTtcbiAgICB9XG4gICAgdmFyIGV4ZWN1dGUgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoZXhlY3V0ZU9wdGlvbnMpIHtcbiAgICAgICAgaWYgKGV4ZWN1dGVPcHRpb25zID09PSB2b2lkIDApIHsgZXhlY3V0ZU9wdGlvbnMgPSB7fTsgfVxuICAgICAgICB2YXIgX2EgPSByZWYuY3VycmVudCwgY2xpZW50ID0gX2EuY2xpZW50LCBvcHRpb25zID0gX2Eub3B0aW9ucywgbXV0YXRpb24gPSBfYS5tdXRhdGlvbjtcbiAgICAgICAgdmFyIGJhc2VPcHRpb25zID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9wdGlvbnMpLCB7IG11dGF0aW9uOiBtdXRhdGlvbiB9KTtcbiAgICAgICAgaWYgKCFyZWYuY3VycmVudC5yZXN1bHQubG9hZGluZyAmJiAhYmFzZU9wdGlvbnMuaWdub3JlUmVzdWx0cykge1xuICAgICAgICAgICAgc2V0UmVzdWx0KHJlZi5jdXJyZW50LnJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVycm9yOiB2b2lkIDAsXG4gICAgICAgICAgICAgICAgZGF0YTogdm9pZCAwLFxuICAgICAgICAgICAgICAgIGNhbGxlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjbGllbnQ6IGNsaWVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBtdXRhdGlvbklkID0gKytyZWYuY3VycmVudC5tdXRhdGlvbklkO1xuICAgICAgICB2YXIgY2xpZW50T3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhiYXNlT3B0aW9ucywgZXhlY3V0ZU9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gY2xpZW50Lm11dGF0ZShjbGllbnRPcHRpb25zKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHZhciBkYXRhID0gcmVzcG9uc2UuZGF0YSwgZXJyb3JzID0gcmVzcG9uc2UuZXJyb3JzO1xuICAgICAgICAgICAgdmFyIGVycm9yID0gZXJyb3JzICYmIGVycm9ycy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyBuZXcgQXBvbGxvRXJyb3IoeyBncmFwaFFMRXJyb3JzOiBlcnJvcnMgfSlcbiAgICAgICAgICAgICAgICA6IHZvaWQgMDtcbiAgICAgICAgICAgIGlmIChtdXRhdGlvbklkID09PSByZWYuY3VycmVudC5tdXRhdGlvbklkICYmXG4gICAgICAgICAgICAgICAgIWNsaWVudE9wdGlvbnMuaWdub3JlUmVzdWx0cykge1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHRfMSA9IHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yLFxuICAgICAgICAgICAgICAgICAgICBjbGllbnQ6IGNsaWVudCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChyZWYuY3VycmVudC5pc01vdW50ZWQgJiYgIWVxdWFsKHJlZi5jdXJyZW50LnJlc3VsdCwgcmVzdWx0XzEpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChyZWYuY3VycmVudC5yZXN1bHQgPSByZXN1bHRfMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKF9hID0gYmFzZU9wdGlvbnMub25Db21wbGV0ZWQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKGJhc2VPcHRpb25zLCByZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgIChfYiA9IGV4ZWN1dGVPcHRpb25zLm9uQ29tcGxldGVkKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChleGVjdXRlT3B0aW9ucywgcmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIGlmIChtdXRhdGlvbklkID09PSByZWYuY3VycmVudC5tdXRhdGlvbklkICYmXG4gICAgICAgICAgICAgICAgcmVmLmN1cnJlbnQuaXNNb3VudGVkKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdF8yID0ge1xuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB2b2lkIDAsXG4gICAgICAgICAgICAgICAgICAgIGNhbGxlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50OiBjbGllbnQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoIWVxdWFsKHJlZi5jdXJyZW50LnJlc3VsdCwgcmVzdWx0XzIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChyZWYuY3VycmVudC5yZXN1bHQgPSByZXN1bHRfMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJhc2VPcHRpb25zLm9uRXJyb3IgfHwgY2xpZW50T3B0aW9ucy5vbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgKF9hID0gYmFzZU9wdGlvbnMub25FcnJvcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoYmFzZU9wdGlvbnMsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAoX2IgPSBleGVjdXRlT3B0aW9ucy5vbkVycm9yKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChleGVjdXRlT3B0aW9ucywgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGRhdGE6IHZvaWQgMCwgZXJyb3JzOiBlcnJvciB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH0sIFtdKTtcbiAgICB2YXIgcmVzZXQgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldFJlc3VsdCh7IGNhbGxlZDogZmFsc2UsIGxvYWRpbmc6IGZhbHNlLCBjbGllbnQ6IGNsaWVudCB9KTtcbiAgICB9LCBbXSk7XG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmVmLmN1cnJlbnQuaXNNb3VudGVkID0gZmFsc2U7XG4gICAgfTsgfSwgW10pO1xuICAgIHJldHVybiBbZXhlY3V0ZSwgX19hc3NpZ24oeyByZXNldDogcmVzZXQgfSwgcmVzdWx0KV07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11c2VNdXRhdGlvbi5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/react/hooks/useMutation.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/react/hooks/useQuery.js":
/*!*************************************************************!*\
  !*** ./node_modules/@apollo/client/react/hooks/useQuery.js ***!
  \*************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useQuery\": function() { return /* binding */ useQuery; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _wry_equality__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wry/equality */ \"./node_modules/@apollo/client/node_modules/@wry/equality/lib/equality.esm.js\");\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../core/index.js */ \"./node_modules/@apollo/client/core/index.js\");\n/* harmony import */ var _context_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../context/index.js */ \"./node_modules/@apollo/client/react/context/index.js\");\n/* harmony import */ var _errors_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../errors/index.js */ \"./node_modules/@apollo/client/errors/index.js\");\n/* harmony import */ var _parser_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../parser/index.js */ \"./node_modules/@apollo/client/react/parser/index.js\");\n/* harmony import */ var _useApolloClient_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./useApolloClient.js */ \"./node_modules/@apollo/client/react/hooks/useApolloClient.js\");\n\n\n\n\n\n\n\n\n\nfunction useQuery(query, options) {\n    var _a;\n    var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)((0,_context_index_js__WEBPACK_IMPORTED_MODULE_2__.getApolloContext)());\n    var client = (0,_useApolloClient_js__WEBPACK_IMPORTED_MODULE_3__.useApolloClient)(options === null || options === void 0 ? void 0 : options.client);\n    var defaultWatchQueryOptions = client.defaultOptions.watchQuery;\n    (0,_parser_index_js__WEBPACK_IMPORTED_MODULE_4__.verifyDocumentType)(query, _parser_index_js__WEBPACK_IMPORTED_MODULE_4__.DocumentType.Query);\n    var _b = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(function () {\n        var watchQueryOptions = createWatchQueryOptions(query, options, defaultWatchQueryOptions);\n        var obsQuery = null;\n        if (context.renderPromises) {\n            obsQuery = context.renderPromises.getSSRObservable(watchQueryOptions);\n        }\n        if (!obsQuery) {\n            obsQuery = client.watchQuery(watchQueryOptions);\n            if (context.renderPromises) {\n                context.renderPromises.registerSSRObservable(obsQuery, watchQueryOptions);\n            }\n        }\n        if (context.renderPromises &&\n            (options === null || options === void 0 ? void 0 : options.ssr) !== false &&\n            !(options === null || options === void 0 ? void 0 : options.skip) &&\n            obsQuery.getCurrentResult().loading) {\n            context.renderPromises.addQueryPromise({\n                getOptions: function () { return createWatchQueryOptions(query, options, defaultWatchQueryOptions); },\n                fetchData: function () { return new Promise(function (resolve) {\n                    var sub = obsQuery.subscribe({\n                        next: function (result) {\n                            if (!result.loading) {\n                                resolve();\n                                sub.unsubscribe();\n                            }\n                        },\n                        error: function () {\n                            resolve();\n                            sub.unsubscribe();\n                        },\n                        complete: function () {\n                            resolve();\n                        },\n                    });\n                }); },\n            }, function () { return null; });\n        }\n        return obsQuery;\n    }), obsQuery = _b[0], setObsQuery = _b[1];\n    var _c = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(function () {\n        var _a, _b;\n        var result = obsQuery.getCurrentResult();\n        if (!result.loading && options) {\n            if (result.error) {\n                (_a = options.onError) === null || _a === void 0 ? void 0 : _a.call(options, result.error);\n            }\n            else if (result.data) {\n                (_b = options.onCompleted) === null || _b === void 0 ? void 0 : _b.call(options, result.data);\n            }\n        }\n        return result;\n    }), result = _c[0], setResult = _c[1];\n    var ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)({\n        client: client,\n        query: query,\n        options: options,\n        result: result,\n        previousData: void 0,\n        watchQueryOptions: createWatchQueryOptions(query, options, defaultWatchQueryOptions),\n    });\n    (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n        var _a, _b;\n        var watchQueryOptions = createWatchQueryOptions(query, options, defaultWatchQueryOptions);\n        var nextResult;\n        if (ref.current.client !== client || !(0,_wry_equality__WEBPACK_IMPORTED_MODULE_1__.equal)(ref.current.query, query)) {\n            var obsQuery_1 = client.watchQuery(watchQueryOptions);\n            setObsQuery(obsQuery_1);\n            nextResult = obsQuery_1.getCurrentResult();\n        }\n        else if (!(0,_wry_equality__WEBPACK_IMPORTED_MODULE_1__.equal)(ref.current.watchQueryOptions, watchQueryOptions)) {\n            obsQuery.setOptions(watchQueryOptions).catch(function () { });\n            nextResult = obsQuery.getCurrentResult();\n            ref.current.watchQueryOptions = watchQueryOptions;\n        }\n        if (nextResult) {\n            var previousResult = ref.current.result;\n            if (previousResult.data) {\n                ref.current.previousData = previousResult.data;\n            }\n            setResult(ref.current.result = nextResult);\n            if (!nextResult.loading && options) {\n                if (nextResult.error) {\n                    (_a = options.onError) === null || _a === void 0 ? void 0 : _a.call(options, nextResult.error);\n                }\n                else if (nextResult.data) {\n                    (_b = options.onCompleted) === null || _b === void 0 ? void 0 : _b.call(options, nextResult.data);\n                }\n            }\n        }\n        Object.assign(ref.current, { client: client, query: query });\n    }, [obsQuery, client, query, options]);\n    (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n        if (context.renderPromises) {\n            return;\n        }\n        var subscription = obsQuery.subscribe(onNext, onError);\n        function onNext() {\n            var _a, _b;\n            var previousResult = ref.current.result;\n            var result = obsQuery.getCurrentResult();\n            if (previousResult &&\n                previousResult.loading === result.loading &&\n                previousResult.networkStatus === result.networkStatus &&\n                (0,_wry_equality__WEBPACK_IMPORTED_MODULE_1__.equal)(previousResult.data, result.data)) {\n                return;\n            }\n            if (previousResult.data) {\n                ref.current.previousData = previousResult.data;\n            }\n            setResult(ref.current.result = result);\n            if (!result.loading) {\n                (_b = (_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onCompleted) === null || _b === void 0 ? void 0 : _b.call(_a, result.data);\n            }\n        }\n        function onError(error) {\n            var _a, _b;\n            var last = obsQuery[\"last\"];\n            subscription.unsubscribe();\n            try {\n                obsQuery.resetLastResults();\n                subscription = obsQuery.subscribe(onNext, onError);\n            }\n            finally {\n                obsQuery[\"last\"] = last;\n            }\n            if (!error.hasOwnProperty('graphQLErrors')) {\n                throw error;\n            }\n            var previousResult = ref.current.result;\n            if ((previousResult && previousResult.loading) ||\n                !(0,_wry_equality__WEBPACK_IMPORTED_MODULE_1__.equal)(error, previousResult.error)) {\n                setResult(ref.current.result = {\n                    data: previousResult.data,\n                    error: error,\n                    loading: false,\n                    networkStatus: _core_index_js__WEBPACK_IMPORTED_MODULE_5__.NetworkStatus.error,\n                });\n                (_b = (_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError) === null || _b === void 0 ? void 0 : _b.call(_a, error);\n            }\n        }\n        return function () { return subscription.unsubscribe(); };\n    }, [obsQuery, context.renderPromises, client.disableNetworkFetches]);\n    var partial;\n    (_a = result, partial = _a.partial, result = (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__rest)(_a, [\"partial\"]));\n    {\n        if (partial &&\n            (options === null || options === void 0 ? void 0 : options.partialRefetch) &&\n            !result.loading &&\n            (!result.data || Object.keys(result.data).length === 0) &&\n            obsQuery.options.fetchPolicy !== 'cache-only') {\n            result = (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_6__.__assign)({}, result), { loading: true, networkStatus: _core_index_js__WEBPACK_IMPORTED_MODULE_5__.NetworkStatus.refetch });\n            obsQuery.refetch();\n        }\n        if (context.renderPromises &&\n            (options === null || options === void 0 ? void 0 : options.ssr) !== false &&\n            !(options === null || options === void 0 ? void 0 : options.skip) &&\n            result.loading) {\n            obsQuery.setOptions(createWatchQueryOptions(query, options, defaultWatchQueryOptions)).catch(function () { });\n        }\n        Object.assign(ref.current, { options: options });\n    }\n    if ((context.renderPromises || client.disableNetworkFetches) &&\n        (options === null || options === void 0 ? void 0 : options.ssr) === false) {\n        result = ref.current.result = {\n            loading: true,\n            data: void 0,\n            error: void 0,\n            networkStatus: _core_index_js__WEBPACK_IMPORTED_MODULE_5__.NetworkStatus.loading,\n        };\n    }\n    else if ((options === null || options === void 0 ? void 0 : options.skip) || (options === null || options === void 0 ? void 0 : options.fetchPolicy) === 'standby') {\n        result = {\n            loading: false,\n            data: void 0,\n            error: void 0,\n            networkStatus: _core_index_js__WEBPACK_IMPORTED_MODULE_5__.NetworkStatus.ready,\n        };\n    }\n    if (result.errors && result.errors.length) {\n        result = (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_6__.__assign)({}, result), { error: result.error || new _errors_index_js__WEBPACK_IMPORTED_MODULE_7__.ApolloError({ graphQLErrors: result.errors }) });\n    }\n    var obsQueryFields = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () { return ({\n        refetch: obsQuery.refetch.bind(obsQuery),\n        fetchMore: obsQuery.fetchMore.bind(obsQuery),\n        updateQuery: obsQuery.updateQuery.bind(obsQuery),\n        startPolling: obsQuery.startPolling.bind(obsQuery),\n        stopPolling: obsQuery.stopPolling.bind(obsQuery),\n        subscribeToMore: obsQuery.subscribeToMore.bind(obsQuery),\n    }); }, [obsQuery]);\n    return (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_6__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_6__.__assign)({}, obsQueryFields), { variables: createWatchQueryOptions(query, options, defaultWatchQueryOptions).variables, client: client, called: true, previousData: ref.current.previousData }), result);\n}\nfunction createWatchQueryOptions(query, options, defaultOptions) {\n    var _a;\n    if (options === void 0) { options = {}; }\n    var skip = options.skip, ssr = options.ssr, onCompleted = options.onCompleted, onError = options.onError, displayName = options.displayName, otherOptions = (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__rest)(options, [\"skip\", \"ssr\", \"onCompleted\", \"onError\", \"displayName\"]);\n    var watchQueryOptions = (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__assign)({ query: query }, otherOptions);\n    if (defaultOptions) {\n        watchQueryOptions = (0,_core_index_js__WEBPACK_IMPORTED_MODULE_5__.mergeOptions)(defaultOptions, watchQueryOptions);\n    }\n    if (skip) {\n        watchQueryOptions.fetchPolicy = 'standby';\n    }\n    else if (((_a = watchQueryOptions.context) === null || _a === void 0 ? void 0 : _a.renderPromises) &&\n        (watchQueryOptions.fetchPolicy === 'network-only' ||\n            watchQueryOptions.fetchPolicy === 'cache-and-network')) {\n        watchQueryOptions.fetchPolicy = 'cache-first';\n    }\n    else if (!watchQueryOptions.fetchPolicy) {\n        watchQueryOptions.fetchPolicy = 'cache-first';\n    }\n    if (!watchQueryOptions.variables) {\n        watchQueryOptions.variables = {};\n    }\n    return watchQueryOptions;\n}\n//# sourceMappingURL=useQuery.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvcmVhY3QvaG9va3MvdXNlUXVlcnkuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQXlDO0FBQ2dDO0FBQ25DO0FBQ2E7QUFDSTtBQUNIO0FBQ0M7QUFDaUI7QUFDZjtBQUNoRDtBQUNQO0FBQ0Esa0JBQWtCLGlEQUFVLENBQUMsbUVBQWdCO0FBQzdDLGlCQUFpQixvRUFBZTtBQUNoQztBQUNBLElBQUksb0VBQWtCLFFBQVEsZ0VBQWtCO0FBQ2hELGFBQWEsK0NBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsMkVBQTJFO0FBQ3JILHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIscUJBQXFCO0FBQ3JCLGlCQUFpQixJQUFJO0FBQ3JCLGFBQWEsZ0JBQWdCLGNBQWM7QUFDM0M7QUFDQTtBQUNBLEtBQUs7QUFDTCxhQUFhLCtDQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsY0FBYyw2Q0FBTTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsSUFBSSxnREFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxvREFBSztBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixvREFBSztBQUN2Qix3RUFBd0U7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLDhCQUE4QjtBQUNuRSxLQUFLO0FBQ0wsSUFBSSxnREFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isb0RBQUs7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixvREFBSztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQywrREFBbUI7QUFDdEQsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QixLQUFLO0FBQ0w7QUFDQSxpREFBaUQsNkNBQU07QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxhQUFhLDhCQUE4QixpRUFBcUIsRUFBRTtBQUMzRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3SEFBd0g7QUFDeEg7QUFDQSxxQ0FBcUMsa0JBQWtCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLGlFQUFxQjtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiwrREFBbUI7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxhQUFhLDJCQUEyQix5REFBVyxHQUFHLDhCQUE4QixHQUFHO0FBQzVIO0FBQ0EseUJBQXlCLDhDQUFPLGVBQWU7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxJQUFJO0FBQ1QsV0FBVywrQ0FBUSxDQUFDLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxxQkFBcUIsOEpBQThKO0FBQzNOO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QixnS0FBZ0ssNkNBQU07QUFDdEssNEJBQTRCLCtDQUFRLEdBQUcsY0FBYztBQUNyRDtBQUNBLDRCQUE0Qiw0REFBWTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L3JlYWN0L2hvb2tzL3VzZVF1ZXJ5LmpzPzQzMDciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZXF1YWwgfSBmcm9tICdAd3J5L2VxdWFsaXR5JztcbmltcG9ydCB7IG1lcmdlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXRBcG9sbG9Db250ZXh0IH0gZnJvbSBcIi4uL2NvbnRleHQvaW5kZXguanNcIjtcbmltcG9ydCB7IEFwb2xsb0Vycm9yIH0gZnJvbSBcIi4uLy4uL2Vycm9ycy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgTmV0d29ya1N0YXR1cywgfSBmcm9tIFwiLi4vLi4vY29yZS9pbmRleC5qc1wiO1xuaW1wb3J0IHsgRG9jdW1lbnRUeXBlLCB2ZXJpZnlEb2N1bWVudFR5cGUgfSBmcm9tIFwiLi4vcGFyc2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgeyB1c2VBcG9sbG9DbGllbnQgfSBmcm9tIFwiLi91c2VBcG9sbG9DbGllbnQuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiB1c2VRdWVyeShxdWVyeSwgb3B0aW9ucykge1xuICAgIHZhciBfYTtcbiAgICB2YXIgY29udGV4dCA9IHVzZUNvbnRleHQoZ2V0QXBvbGxvQ29udGV4dCgpKTtcbiAgICB2YXIgY2xpZW50ID0gdXNlQXBvbGxvQ2xpZW50KG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5jbGllbnQpO1xuICAgIHZhciBkZWZhdWx0V2F0Y2hRdWVyeU9wdGlvbnMgPSBjbGllbnQuZGVmYXVsdE9wdGlvbnMud2F0Y2hRdWVyeTtcbiAgICB2ZXJpZnlEb2N1bWVudFR5cGUocXVlcnksIERvY3VtZW50VHlwZS5RdWVyeSk7XG4gICAgdmFyIF9iID0gdXNlU3RhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgd2F0Y2hRdWVyeU9wdGlvbnMgPSBjcmVhdGVXYXRjaFF1ZXJ5T3B0aW9ucyhxdWVyeSwgb3B0aW9ucywgZGVmYXVsdFdhdGNoUXVlcnlPcHRpb25zKTtcbiAgICAgICAgdmFyIG9ic1F1ZXJ5ID0gbnVsbDtcbiAgICAgICAgaWYgKGNvbnRleHQucmVuZGVyUHJvbWlzZXMpIHtcbiAgICAgICAgICAgIG9ic1F1ZXJ5ID0gY29udGV4dC5yZW5kZXJQcm9taXNlcy5nZXRTU1JPYnNlcnZhYmxlKHdhdGNoUXVlcnlPcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9ic1F1ZXJ5KSB7XG4gICAgICAgICAgICBvYnNRdWVyeSA9IGNsaWVudC53YXRjaFF1ZXJ5KHdhdGNoUXVlcnlPcHRpb25zKTtcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnJlbmRlclByb21pc2VzKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5yZW5kZXJQcm9taXNlcy5yZWdpc3RlclNTUk9ic2VydmFibGUob2JzUXVlcnksIHdhdGNoUXVlcnlPcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY29udGV4dC5yZW5kZXJQcm9taXNlcyAmJlxuICAgICAgICAgICAgKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5zc3IpICE9PSBmYWxzZSAmJlxuICAgICAgICAgICAgIShvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuc2tpcCkgJiZcbiAgICAgICAgICAgIG9ic1F1ZXJ5LmdldEN1cnJlbnRSZXN1bHQoKS5sb2FkaW5nKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlbmRlclByb21pc2VzLmFkZFF1ZXJ5UHJvbWlzZSh7XG4gICAgICAgICAgICAgICAgZ2V0T3B0aW9uczogZnVuY3Rpb24gKCkgeyByZXR1cm4gY3JlYXRlV2F0Y2hRdWVyeU9wdGlvbnMocXVlcnksIG9wdGlvbnMsIGRlZmF1bHRXYXRjaFF1ZXJ5T3B0aW9ucyk7IH0sXG4gICAgICAgICAgICAgICAgZmV0Y2hEYXRhOiBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc3ViID0gb2JzUXVlcnkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5sb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7IH0sXG4gICAgICAgICAgICB9LCBmdW5jdGlvbiAoKSB7IHJldHVybiBudWxsOyB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JzUXVlcnk7XG4gICAgfSksIG9ic1F1ZXJ5ID0gX2JbMF0sIHNldE9ic1F1ZXJ5ID0gX2JbMV07XG4gICAgdmFyIF9jID0gdXNlU3RhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICB2YXIgcmVzdWx0ID0gb2JzUXVlcnkuZ2V0Q3VycmVudFJlc3VsdCgpO1xuICAgICAgICBpZiAoIXJlc3VsdC5sb2FkaW5nICYmIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAoX2EgPSBvcHRpb25zLm9uRXJyb3IpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKG9wdGlvbnMsIHJlc3VsdC5lcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQuZGF0YSkge1xuICAgICAgICAgICAgICAgIChfYiA9IG9wdGlvbnMub25Db21wbGV0ZWQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKG9wdGlvbnMsIHJlc3VsdC5kYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pLCByZXN1bHQgPSBfY1swXSwgc2V0UmVzdWx0ID0gX2NbMV07XG4gICAgdmFyIHJlZiA9IHVzZVJlZih7XG4gICAgICAgIGNsaWVudDogY2xpZW50LFxuICAgICAgICBxdWVyeTogcXVlcnksXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgIHJlc3VsdDogcmVzdWx0LFxuICAgICAgICBwcmV2aW91c0RhdGE6IHZvaWQgMCxcbiAgICAgICAgd2F0Y2hRdWVyeU9wdGlvbnM6IGNyZWF0ZVdhdGNoUXVlcnlPcHRpb25zKHF1ZXJ5LCBvcHRpb25zLCBkZWZhdWx0V2F0Y2hRdWVyeU9wdGlvbnMpLFxuICAgIH0pO1xuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHZhciB3YXRjaFF1ZXJ5T3B0aW9ucyA9IGNyZWF0ZVdhdGNoUXVlcnlPcHRpb25zKHF1ZXJ5LCBvcHRpb25zLCBkZWZhdWx0V2F0Y2hRdWVyeU9wdGlvbnMpO1xuICAgICAgICB2YXIgbmV4dFJlc3VsdDtcbiAgICAgICAgaWYgKHJlZi5jdXJyZW50LmNsaWVudCAhPT0gY2xpZW50IHx8ICFlcXVhbChyZWYuY3VycmVudC5xdWVyeSwgcXVlcnkpKSB7XG4gICAgICAgICAgICB2YXIgb2JzUXVlcnlfMSA9IGNsaWVudC53YXRjaFF1ZXJ5KHdhdGNoUXVlcnlPcHRpb25zKTtcbiAgICAgICAgICAgIHNldE9ic1F1ZXJ5KG9ic1F1ZXJ5XzEpO1xuICAgICAgICAgICAgbmV4dFJlc3VsdCA9IG9ic1F1ZXJ5XzEuZ2V0Q3VycmVudFJlc3VsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFlcXVhbChyZWYuY3VycmVudC53YXRjaFF1ZXJ5T3B0aW9ucywgd2F0Y2hRdWVyeU9wdGlvbnMpKSB7XG4gICAgICAgICAgICBvYnNRdWVyeS5zZXRPcHRpb25zKHdhdGNoUXVlcnlPcHRpb25zKS5jYXRjaChmdW5jdGlvbiAoKSB7IH0pO1xuICAgICAgICAgICAgbmV4dFJlc3VsdCA9IG9ic1F1ZXJ5LmdldEN1cnJlbnRSZXN1bHQoKTtcbiAgICAgICAgICAgIHJlZi5jdXJyZW50LndhdGNoUXVlcnlPcHRpb25zID0gd2F0Y2hRdWVyeU9wdGlvbnM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5leHRSZXN1bHQpIHtcbiAgICAgICAgICAgIHZhciBwcmV2aW91c1Jlc3VsdCA9IHJlZi5jdXJyZW50LnJlc3VsdDtcbiAgICAgICAgICAgIGlmIChwcmV2aW91c1Jlc3VsdC5kYXRhKSB7XG4gICAgICAgICAgICAgICAgcmVmLmN1cnJlbnQucHJldmlvdXNEYXRhID0gcHJldmlvdXNSZXN1bHQuZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFJlc3VsdChyZWYuY3VycmVudC5yZXN1bHQgPSBuZXh0UmVzdWx0KTtcbiAgICAgICAgICAgIGlmICghbmV4dFJlc3VsdC5sb2FkaW5nICYmIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBpZiAobmV4dFJlc3VsdC5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSBvcHRpb25zLm9uRXJyb3IpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKG9wdGlvbnMsIG5leHRSZXN1bHQuZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChuZXh0UmVzdWx0LmRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgKF9iID0gb3B0aW9ucy5vbkNvbXBsZXRlZCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwob3B0aW9ucywgbmV4dFJlc3VsdC5kYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbihyZWYuY3VycmVudCwgeyBjbGllbnQ6IGNsaWVudCwgcXVlcnk6IHF1ZXJ5IH0pO1xuICAgIH0sIFtvYnNRdWVyeSwgY2xpZW50LCBxdWVyeSwgb3B0aW9uc10pO1xuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChjb250ZXh0LnJlbmRlclByb21pc2VzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN1YnNjcmlwdGlvbiA9IG9ic1F1ZXJ5LnN1YnNjcmliZShvbk5leHQsIG9uRXJyb3IpO1xuICAgICAgICBmdW5jdGlvbiBvbk5leHQoKSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgdmFyIHByZXZpb3VzUmVzdWx0ID0gcmVmLmN1cnJlbnQucmVzdWx0O1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG9ic1F1ZXJ5LmdldEN1cnJlbnRSZXN1bHQoKTtcbiAgICAgICAgICAgIGlmIChwcmV2aW91c1Jlc3VsdCAmJlxuICAgICAgICAgICAgICAgIHByZXZpb3VzUmVzdWx0LmxvYWRpbmcgPT09IHJlc3VsdC5sb2FkaW5nICYmXG4gICAgICAgICAgICAgICAgcHJldmlvdXNSZXN1bHQubmV0d29ya1N0YXR1cyA9PT0gcmVzdWx0Lm5ldHdvcmtTdGF0dXMgJiZcbiAgICAgICAgICAgICAgICBlcXVhbChwcmV2aW91c1Jlc3VsdC5kYXRhLCByZXN1bHQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJldmlvdXNSZXN1bHQuZGF0YSkge1xuICAgICAgICAgICAgICAgIHJlZi5jdXJyZW50LnByZXZpb3VzRGF0YSA9IHByZXZpb3VzUmVzdWx0LmRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRSZXN1bHQocmVmLmN1cnJlbnQucmVzdWx0ID0gcmVzdWx0KTtcbiAgICAgICAgICAgIGlmICghcmVzdWx0LmxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAoX2IgPSAoX2EgPSByZWYuY3VycmVudC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub25Db21wbGV0ZWQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCByZXN1bHQuZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gb25FcnJvcihlcnJvcikge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHZhciBsYXN0ID0gb2JzUXVlcnlbXCJsYXN0XCJdO1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG9ic1F1ZXJ5LnJlc2V0TGFzdFJlc3VsdHMoKTtcbiAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb24gPSBvYnNRdWVyeS5zdWJzY3JpYmUob25OZXh0LCBvbkVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIG9ic1F1ZXJ5W1wibGFzdFwiXSA9IGxhc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWVycm9yLmhhc093blByb3BlcnR5KCdncmFwaFFMRXJyb3JzJykpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBwcmV2aW91c1Jlc3VsdCA9IHJlZi5jdXJyZW50LnJlc3VsdDtcbiAgICAgICAgICAgIGlmICgocHJldmlvdXNSZXN1bHQgJiYgcHJldmlvdXNSZXN1bHQubG9hZGluZykgfHxcbiAgICAgICAgICAgICAgICAhZXF1YWwoZXJyb3IsIHByZXZpb3VzUmVzdWx0LmVycm9yKSkge1xuICAgICAgICAgICAgICAgIHNldFJlc3VsdChyZWYuY3VycmVudC5yZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHByZXZpb3VzUmVzdWx0LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG5ldHdvcmtTdGF0dXM6IE5ldHdvcmtTdGF0dXMuZXJyb3IsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgKF9iID0gKF9hID0gcmVmLmN1cnJlbnQub3B0aW9ucykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9uRXJyb3IpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCBlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpOyB9O1xuICAgIH0sIFtvYnNRdWVyeSwgY29udGV4dC5yZW5kZXJQcm9taXNlcywgY2xpZW50LmRpc2FibGVOZXR3b3JrRmV0Y2hlc10pO1xuICAgIHZhciBwYXJ0aWFsO1xuICAgIChfYSA9IHJlc3VsdCwgcGFydGlhbCA9IF9hLnBhcnRpYWwsIHJlc3VsdCA9IF9fcmVzdChfYSwgW1wicGFydGlhbFwiXSkpO1xuICAgIHtcbiAgICAgICAgaWYgKHBhcnRpYWwgJiZcbiAgICAgICAgICAgIChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMucGFydGlhbFJlZmV0Y2gpICYmXG4gICAgICAgICAgICAhcmVzdWx0LmxvYWRpbmcgJiZcbiAgICAgICAgICAgICghcmVzdWx0LmRhdGEgfHwgT2JqZWN0LmtleXMocmVzdWx0LmRhdGEpLmxlbmd0aCA9PT0gMCkgJiZcbiAgICAgICAgICAgIG9ic1F1ZXJ5Lm9wdGlvbnMuZmV0Y2hQb2xpY3kgIT09ICdjYWNoZS1vbmx5Jykge1xuICAgICAgICAgICAgcmVzdWx0ID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3VsdCksIHsgbG9hZGluZzogdHJ1ZSwgbmV0d29ya1N0YXR1czogTmV0d29ya1N0YXR1cy5yZWZldGNoIH0pO1xuICAgICAgICAgICAgb2JzUXVlcnkucmVmZXRjaCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb250ZXh0LnJlbmRlclByb21pc2VzICYmXG4gICAgICAgICAgICAob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnNzcikgIT09IGZhbHNlICYmXG4gICAgICAgICAgICAhKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5za2lwKSAmJlxuICAgICAgICAgICAgcmVzdWx0LmxvYWRpbmcpIHtcbiAgICAgICAgICAgIG9ic1F1ZXJ5LnNldE9wdGlvbnMoY3JlYXRlV2F0Y2hRdWVyeU9wdGlvbnMocXVlcnksIG9wdGlvbnMsIGRlZmF1bHRXYXRjaFF1ZXJ5T3B0aW9ucykpLmNhdGNoKGZ1bmN0aW9uICgpIHsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbihyZWYuY3VycmVudCwgeyBvcHRpb25zOiBvcHRpb25zIH0pO1xuICAgIH1cbiAgICBpZiAoKGNvbnRleHQucmVuZGVyUHJvbWlzZXMgfHwgY2xpZW50LmRpc2FibGVOZXR3b3JrRmV0Y2hlcykgJiZcbiAgICAgICAgKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5zc3IpID09PSBmYWxzZSkge1xuICAgICAgICByZXN1bHQgPSByZWYuY3VycmVudC5yZXN1bHQgPSB7XG4gICAgICAgICAgICBsb2FkaW5nOiB0cnVlLFxuICAgICAgICAgICAgZGF0YTogdm9pZCAwLFxuICAgICAgICAgICAgZXJyb3I6IHZvaWQgMCxcbiAgICAgICAgICAgIG5ldHdvcmtTdGF0dXM6IE5ldHdvcmtTdGF0dXMubG9hZGluZyxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5za2lwKSB8fCAob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZldGNoUG9saWN5KSA9PT0gJ3N0YW5kYnknKSB7XG4gICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgZGF0YTogdm9pZCAwLFxuICAgICAgICAgICAgZXJyb3I6IHZvaWQgMCxcbiAgICAgICAgICAgIG5ldHdvcmtTdGF0dXM6IE5ldHdvcmtTdGF0dXMucmVhZHksXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChyZXN1bHQuZXJyb3JzICYmIHJlc3VsdC5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdCA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXN1bHQpLCB7IGVycm9yOiByZXN1bHQuZXJyb3IgfHwgbmV3IEFwb2xsb0Vycm9yKHsgZ3JhcGhRTEVycm9yczogcmVzdWx0LmVycm9ycyB9KSB9KTtcbiAgICB9XG4gICAgdmFyIG9ic1F1ZXJ5RmllbGRzID0gdXNlTWVtbyhmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICByZWZldGNoOiBvYnNRdWVyeS5yZWZldGNoLmJpbmQob2JzUXVlcnkpLFxuICAgICAgICBmZXRjaE1vcmU6IG9ic1F1ZXJ5LmZldGNoTW9yZS5iaW5kKG9ic1F1ZXJ5KSxcbiAgICAgICAgdXBkYXRlUXVlcnk6IG9ic1F1ZXJ5LnVwZGF0ZVF1ZXJ5LmJpbmQob2JzUXVlcnkpLFxuICAgICAgICBzdGFydFBvbGxpbmc6IG9ic1F1ZXJ5LnN0YXJ0UG9sbGluZy5iaW5kKG9ic1F1ZXJ5KSxcbiAgICAgICAgc3RvcFBvbGxpbmc6IG9ic1F1ZXJ5LnN0b3BQb2xsaW5nLmJpbmQob2JzUXVlcnkpLFxuICAgICAgICBzdWJzY3JpYmVUb01vcmU6IG9ic1F1ZXJ5LnN1YnNjcmliZVRvTW9yZS5iaW5kKG9ic1F1ZXJ5KSxcbiAgICB9KTsgfSwgW29ic1F1ZXJ5XSk7XG4gICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCBvYnNRdWVyeUZpZWxkcyksIHsgdmFyaWFibGVzOiBjcmVhdGVXYXRjaFF1ZXJ5T3B0aW9ucyhxdWVyeSwgb3B0aW9ucywgZGVmYXVsdFdhdGNoUXVlcnlPcHRpb25zKS52YXJpYWJsZXMsIGNsaWVudDogY2xpZW50LCBjYWxsZWQ6IHRydWUsIHByZXZpb3VzRGF0YTogcmVmLmN1cnJlbnQucHJldmlvdXNEYXRhIH0pLCByZXN1bHQpO1xufVxuZnVuY3Rpb24gY3JlYXRlV2F0Y2hRdWVyeU9wdGlvbnMocXVlcnksIG9wdGlvbnMsIGRlZmF1bHRPcHRpb25zKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsgb3B0aW9ucyA9IHt9OyB9XG4gICAgdmFyIHNraXAgPSBvcHRpb25zLnNraXAsIHNzciA9IG9wdGlvbnMuc3NyLCBvbkNvbXBsZXRlZCA9IG9wdGlvbnMub25Db21wbGV0ZWQsIG9uRXJyb3IgPSBvcHRpb25zLm9uRXJyb3IsIGRpc3BsYXlOYW1lID0gb3B0aW9ucy5kaXNwbGF5TmFtZSwgb3RoZXJPcHRpb25zID0gX19yZXN0KG9wdGlvbnMsIFtcInNraXBcIiwgXCJzc3JcIiwgXCJvbkNvbXBsZXRlZFwiLCBcIm9uRXJyb3JcIiwgXCJkaXNwbGF5TmFtZVwiXSk7XG4gICAgdmFyIHdhdGNoUXVlcnlPcHRpb25zID0gX19hc3NpZ24oeyBxdWVyeTogcXVlcnkgfSwgb3RoZXJPcHRpb25zKTtcbiAgICBpZiAoZGVmYXVsdE9wdGlvbnMpIHtcbiAgICAgICAgd2F0Y2hRdWVyeU9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoZGVmYXVsdE9wdGlvbnMsIHdhdGNoUXVlcnlPcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKHNraXApIHtcbiAgICAgICAgd2F0Y2hRdWVyeU9wdGlvbnMuZmV0Y2hQb2xpY3kgPSAnc3RhbmRieSc7XG4gICAgfVxuICAgIGVsc2UgaWYgKCgoX2EgPSB3YXRjaFF1ZXJ5T3B0aW9ucy5jb250ZXh0KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVuZGVyUHJvbWlzZXMpICYmXG4gICAgICAgICh3YXRjaFF1ZXJ5T3B0aW9ucy5mZXRjaFBvbGljeSA9PT0gJ25ldHdvcmstb25seScgfHxcbiAgICAgICAgICAgIHdhdGNoUXVlcnlPcHRpb25zLmZldGNoUG9saWN5ID09PSAnY2FjaGUtYW5kLW5ldHdvcmsnKSkge1xuICAgICAgICB3YXRjaFF1ZXJ5T3B0aW9ucy5mZXRjaFBvbGljeSA9ICdjYWNoZS1maXJzdCc7XG4gICAgfVxuICAgIGVsc2UgaWYgKCF3YXRjaFF1ZXJ5T3B0aW9ucy5mZXRjaFBvbGljeSkge1xuICAgICAgICB3YXRjaFF1ZXJ5T3B0aW9ucy5mZXRjaFBvbGljeSA9ICdjYWNoZS1maXJzdCc7XG4gICAgfVxuICAgIGlmICghd2F0Y2hRdWVyeU9wdGlvbnMudmFyaWFibGVzKSB7XG4gICAgICAgIHdhdGNoUXVlcnlPcHRpb25zLnZhcmlhYmxlcyA9IHt9O1xuICAgIH1cbiAgICByZXR1cm4gd2F0Y2hRdWVyeU9wdGlvbnM7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD11c2VRdWVyeS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/react/hooks/useQuery.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/react/hooks/useReactiveVar.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@apollo/client/react/hooks/useReactiveVar.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useReactiveVar\": function() { return /* binding */ useReactiveVar; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nfunction useReactiveVar(rv) {\n    var value = rv();\n    var setValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(value)[1];\n    (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n        var probablySameValue = rv();\n        if (value !== probablySameValue) {\n            setValue(probablySameValue);\n        }\n        else {\n            return rv.onNextChange(setValue);\n        }\n    }, [value]);\n    return value;\n}\n//# sourceMappingURL=useReactiveVar.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvcmVhY3QvaG9va3MvdXNlUmVhY3RpdmVWYXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNEM7QUFDckM7QUFDUDtBQUNBLG1CQUFtQiwrQ0FBUTtBQUMzQixJQUFJLGdEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9yZWFjdC9ob29rcy91c2VSZWFjdGl2ZVZhci5qcz9mYjg1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5leHBvcnQgZnVuY3Rpb24gdXNlUmVhY3RpdmVWYXIocnYpIHtcbiAgICB2YXIgdmFsdWUgPSBydigpO1xuICAgIHZhciBzZXRWYWx1ZSA9IHVzZVN0YXRlKHZhbHVlKVsxXTtcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcHJvYmFibHlTYW1lVmFsdWUgPSBydigpO1xuICAgICAgICBpZiAodmFsdWUgIT09IHByb2JhYmx5U2FtZVZhbHVlKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZShwcm9iYWJseVNhbWVWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcnYub25OZXh0Q2hhbmdlKHNldFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH0sIFt2YWx1ZV0pO1xuICAgIHJldHVybiB2YWx1ZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXVzZVJlYWN0aXZlVmFyLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/react/hooks/useReactiveVar.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/react/hooks/useSubscription.js":
/*!********************************************************************!*\
  !*** ./node_modules/@apollo/client/react/hooks/useSubscription.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"useSubscription\": function() { return /* binding */ useSubscription; }\n/* harmony export */ });\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _wry_equality__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wry/equality */ \"./node_modules/@apollo/client/node_modules/@wry/equality/lib/equality.esm.js\");\n/* harmony import */ var _parser_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../parser/index.js */ \"./node_modules/@apollo/client/react/parser/index.js\");\n/* harmony import */ var _useApolloClient_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./useApolloClient.js */ \"./node_modules/@apollo/client/react/hooks/useApolloClient.js\");\n\n\n\n\n\nfunction useSubscription(subscription, options) {\n    var client = (0,_useApolloClient_js__WEBPACK_IMPORTED_MODULE_3__.useApolloClient)(options === null || options === void 0 ? void 0 : options.client);\n    (0,_parser_index_js__WEBPACK_IMPORTED_MODULE_4__.verifyDocumentType)(subscription, _parser_index_js__WEBPACK_IMPORTED_MODULE_4__.DocumentType.Subscription);\n    var _a = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({\n        loading: !(options === null || options === void 0 ? void 0 : options.skip),\n        error: void 0,\n        data: void 0,\n        variables: options === null || options === void 0 ? void 0 : options.variables,\n    }), result = _a[0], setResult = _a[1];\n    var _b = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(function () {\n        if (options === null || options === void 0 ? void 0 : options.skip) {\n            return null;\n        }\n        return client.subscribe({\n            query: subscription,\n            variables: options === null || options === void 0 ? void 0 : options.variables,\n            fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,\n            context: options === null || options === void 0 ? void 0 : options.context,\n        });\n    }), observable = _b[0], setObservable = _b[1];\n    var ref = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)({ client: client, subscription: subscription, options: options });\n    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {\n        var _a, _b, _c, _d;\n        var shouldResubscribe = options === null || options === void 0 ? void 0 : options.shouldResubscribe;\n        if (typeof shouldResubscribe === 'function') {\n            shouldResubscribe = !!shouldResubscribe(options);\n        }\n        if (options === null || options === void 0 ? void 0 : options.skip) {\n            if (!(options === null || options === void 0 ? void 0 : options.skip) !== !((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.skip)) {\n                setResult({\n                    loading: false,\n                    data: void 0,\n                    error: void 0,\n                    variables: options === null || options === void 0 ? void 0 : options.variables,\n                });\n                setObservable(null);\n            }\n        }\n        else if (shouldResubscribe !== false && (client !== ref.current.client ||\n            subscription !== ref.current.subscription ||\n            (options === null || options === void 0 ? void 0 : options.fetchPolicy) !== ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.fetchPolicy) ||\n            !(options === null || options === void 0 ? void 0 : options.skip) !== !((_c = ref.current.options) === null || _c === void 0 ? void 0 : _c.skip) ||\n            !(0,_wry_equality__WEBPACK_IMPORTED_MODULE_2__.equal)(options === null || options === void 0 ? void 0 : options.variables, (_d = ref.current.options) === null || _d === void 0 ? void 0 : _d.variables))) {\n            setResult({\n                loading: true,\n                data: void 0,\n                error: void 0,\n                variables: options === null || options === void 0 ? void 0 : options.variables,\n            });\n            setObservable(client.subscribe({\n                query: subscription,\n                variables: options === null || options === void 0 ? void 0 : options.variables,\n                fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,\n                context: options === null || options === void 0 ? void 0 : options.context,\n            }));\n        }\n        Object.assign(ref.current, { client: client, subscription: subscription, options: options });\n    }, [client, subscription, options]);\n    (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {\n        if (!observable) {\n            return;\n        }\n        var subscription = observable.subscribe({\n            next: function (fetchResult) {\n                var _a, _b;\n                var result = {\n                    loading: false,\n                    data: fetchResult.data,\n                    error: void 0,\n                    variables: options === null || options === void 0 ? void 0 : options.variables,\n                };\n                setResult(result);\n                (_b = (_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onSubscriptionData) === null || _b === void 0 ? void 0 : _b.call(_a, {\n                    client: client,\n                    subscriptionData: result\n                });\n            },\n            error: function (error) {\n                setResult({\n                    loading: false,\n                    data: void 0,\n                    error: error,\n                    variables: options === null || options === void 0 ? void 0 : options.variables,\n                });\n            },\n            complete: function () {\n                var _a, _b;\n                (_b = (_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onSubscriptionComplete) === null || _b === void 0 ? void 0 : _b.call(_a);\n            },\n        });\n        return function () {\n            subscription.unsubscribe();\n        };\n    }, [observable]);\n    return result;\n}\n//# sourceMappingURL=useSubscription.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvcmVhY3QvaG9va3MvdXNlU3Vic2NyaXB0aW9uLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUEwQztBQUNVO0FBQ2Q7QUFDZ0M7QUFDZjtBQUNoRDtBQUNQLGlCQUFpQixvRUFBZTtBQUNoQyxJQUFJLG9FQUFrQixlQUFlLHVFQUF5QjtBQUM5RCxhQUFhLCtDQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGFBQWEsK0NBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0wsY0FBYyw2Q0FBTSxHQUFHLDhEQUE4RDtBQUNyRixJQUFJLGdEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvREFBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxxQ0FBcUMsOERBQThEO0FBQ25HLEtBQUs7QUFDTCxJQUFJLGdEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9yZWFjdC9ob29rcy91c2VTdWJzY3JpcHRpb24uanM/YjA5YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2xvYmFscy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgZXF1YWwgfSBmcm9tICdAd3J5L2VxdWFsaXR5JztcbmltcG9ydCB7IERvY3VtZW50VHlwZSwgdmVyaWZ5RG9jdW1lbnRUeXBlIH0gZnJvbSBcIi4uL3BhcnNlci9pbmRleC5qc1wiO1xuaW1wb3J0IHsgdXNlQXBvbGxvQ2xpZW50IH0gZnJvbSBcIi4vdXNlQXBvbGxvQ2xpZW50LmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gdXNlU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbiwgb3B0aW9ucykge1xuICAgIHZhciBjbGllbnQgPSB1c2VBcG9sbG9DbGllbnQob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmNsaWVudCk7XG4gICAgdmVyaWZ5RG9jdW1lbnRUeXBlKHN1YnNjcmlwdGlvbiwgRG9jdW1lbnRUeXBlLlN1YnNjcmlwdGlvbik7XG4gICAgdmFyIF9hID0gdXNlU3RhdGUoe1xuICAgICAgICBsb2FkaW5nOiAhKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5za2lwKSxcbiAgICAgICAgZXJyb3I6IHZvaWQgMCxcbiAgICAgICAgZGF0YTogdm9pZCAwLFxuICAgICAgICB2YXJpYWJsZXM6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy52YXJpYWJsZXMsXG4gICAgfSksIHJlc3VsdCA9IF9hWzBdLCBzZXRSZXN1bHQgPSBfYVsxXTtcbiAgICB2YXIgX2IgPSB1c2VTdGF0ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuc2tpcCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNsaWVudC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgcXVlcnk6IHN1YnNjcmlwdGlvbixcbiAgICAgICAgICAgIHZhcmlhYmxlczogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnZhcmlhYmxlcyxcbiAgICAgICAgICAgIGZldGNoUG9saWN5OiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZmV0Y2hQb2xpY3ksXG4gICAgICAgICAgICBjb250ZXh0OiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuY29udGV4dCxcbiAgICAgICAgfSk7XG4gICAgfSksIG9ic2VydmFibGUgPSBfYlswXSwgc2V0T2JzZXJ2YWJsZSA9IF9iWzFdO1xuICAgIHZhciByZWYgPSB1c2VSZWYoeyBjbGllbnQ6IGNsaWVudCwgc3Vic2NyaXB0aW9uOiBzdWJzY3JpcHRpb24sIG9wdGlvbnM6IG9wdGlvbnMgfSk7XG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICB2YXIgc2hvdWxkUmVzdWJzY3JpYmUgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuc2hvdWxkUmVzdWJzY3JpYmU7XG4gICAgICAgIGlmICh0eXBlb2Ygc2hvdWxkUmVzdWJzY3JpYmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHNob3VsZFJlc3Vic2NyaWJlID0gISFzaG91bGRSZXN1YnNjcmliZShvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnNraXApIHtcbiAgICAgICAgICAgIGlmICghKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5za2lwKSAhPT0gISgoX2EgPSByZWYuY3VycmVudC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2tpcCkpIHtcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoe1xuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogdm9pZCAwLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogdm9pZCAwLFxuICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc2V0T2JzZXJ2YWJsZShudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzaG91bGRSZXN1YnNjcmliZSAhPT0gZmFsc2UgJiYgKGNsaWVudCAhPT0gcmVmLmN1cnJlbnQuY2xpZW50IHx8XG4gICAgICAgICAgICBzdWJzY3JpcHRpb24gIT09IHJlZi5jdXJyZW50LnN1YnNjcmlwdGlvbiB8fFxuICAgICAgICAgICAgKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5mZXRjaFBvbGljeSkgIT09ICgoX2IgPSByZWYuY3VycmVudC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZmV0Y2hQb2xpY3kpIHx8XG4gICAgICAgICAgICAhKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5za2lwKSAhPT0gISgoX2MgPSByZWYuY3VycmVudC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Muc2tpcCkgfHxcbiAgICAgICAgICAgICFlcXVhbChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMudmFyaWFibGVzLCAoX2QgPSByZWYuY3VycmVudC5vcHRpb25zKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QudmFyaWFibGVzKSkpIHtcbiAgICAgICAgICAgIHNldFJlc3VsdCh7XG4gICAgICAgICAgICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkYXRhOiB2b2lkIDAsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHZvaWQgMCxcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy52YXJpYWJsZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNldE9ic2VydmFibGUoY2xpZW50LnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgcXVlcnk6IHN1YnNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB2YXJpYWJsZXM6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy52YXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5mZXRjaFBvbGljeSxcbiAgICAgICAgICAgICAgICBjb250ZXh0OiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuY29udGV4dCxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHJlZi5jdXJyZW50LCB7IGNsaWVudDogY2xpZW50LCBzdWJzY3JpcHRpb246IHN1YnNjcmlwdGlvbiwgb3B0aW9uczogb3B0aW9ucyB9KTtcbiAgICB9LCBbY2xpZW50LCBzdWJzY3JpcHRpb24sIG9wdGlvbnNdKTtcbiAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIW9ic2VydmFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3Vic2NyaXB0aW9uID0gb2JzZXJ2YWJsZS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogZnVuY3Rpb24gKGZldGNoUmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZmV0Y2hSZXN1bHQuZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHZvaWQgMCxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMudmFyaWFibGVzLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgc2V0UmVzdWx0KHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgKF9iID0gKF9hID0gcmVmLmN1cnJlbnQub3B0aW9ucykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9uU3Vic2NyaXB0aW9uRGF0YSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIHtcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50OiBjbGllbnQsXG4gICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbkRhdGE6IHJlc3VsdFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoe1xuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogdm9pZCAwLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlczogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnZhcmlhYmxlcyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgKF9iID0gKF9hID0gcmVmLmN1cnJlbnQub3B0aW9ucykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9uU3Vic2NyaXB0aW9uQ29tcGxldGUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH07XG4gICAgfSwgW29ic2VydmFibGVdKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXNlU3Vic2NyaXB0aW9uLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/react/hooks/useSubscription.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/react/index.js":
/*!****************************************************!*\
  !*** ./node_modules/@apollo/client/react/index.js ***!
  \****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ApolloConsumer\": function() { return /* reexport safe */ _context_index_js__WEBPACK_IMPORTED_MODULE_1__.ApolloConsumer; },\n/* harmony export */   \"ApolloProvider\": function() { return /* reexport safe */ _context_index_js__WEBPACK_IMPORTED_MODULE_1__.ApolloProvider; },\n/* harmony export */   \"DocumentType\": function() { return /* reexport safe */ _parser_index_js__WEBPACK_IMPORTED_MODULE_3__.DocumentType; },\n/* harmony export */   \"getApolloContext\": function() { return /* reexport safe */ _context_index_js__WEBPACK_IMPORTED_MODULE_1__.getApolloContext; },\n/* harmony export */   \"operationName\": function() { return /* reexport safe */ _parser_index_js__WEBPACK_IMPORTED_MODULE_3__.operationName; },\n/* harmony export */   \"parser\": function() { return /* reexport safe */ _parser_index_js__WEBPACK_IMPORTED_MODULE_3__.parser; },\n/* harmony export */   \"resetApolloContext\": function() { return /* reexport safe */ _context_index_js__WEBPACK_IMPORTED_MODULE_1__.resetApolloContext; }\n/* harmony export */ });\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _context_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./context/index.js */ \"./node_modules/@apollo/client/react/context/index.js\");\n/* harmony import */ var _hooks_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hooks/index.js */ \"./node_modules/@apollo/client/react/hooks/index.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _hooks_index_js__WEBPACK_IMPORTED_MODULE_2__) if([\"default\",\"ApolloProvider\",\"ApolloConsumer\",\"getApolloContext\",\"resetApolloContext\",\"DocumentType\",\"operationName\",\"parser\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _hooks_index_js__WEBPACK_IMPORTED_MODULE_2__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _parser_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parser/index.js */ \"./node_modules/@apollo/client/react/parser/index.js\");\n/* harmony import */ var _types_types_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./types/types.js */ \"./node_modules/@apollo/client/react/types/types.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _types_types_js__WEBPACK_IMPORTED_MODULE_4__) if([\"default\",\"ApolloProvider\",\"ApolloConsumer\",\"getApolloContext\",\"resetApolloContext\",\"DocumentType\",\"operationName\",\"parser\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _types_types_js__WEBPACK_IMPORTED_MODULE_4__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvcmVhY3QvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXVDO0FBQ21FO0FBQ3pFO0FBQ3VDO0FBQ3ZDO0FBQ2pDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC9yZWFjdC9pbmRleC5qcz81ZGIzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcIi4uL3V0aWxpdGllcy9nbG9iYWxzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBBcG9sbG9Qcm92aWRlciwgQXBvbGxvQ29uc3VtZXIsIGdldEFwb2xsb0NvbnRleHQsIHJlc2V0QXBvbGxvQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHQvaW5kZXguanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2hvb2tzL2luZGV4LmpzXCI7XG5leHBvcnQgeyBEb2N1bWVudFR5cGUsIG9wZXJhdGlvbk5hbWUsIHBhcnNlciB9IGZyb20gXCIuL3BhcnNlci9pbmRleC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMvdHlwZXMuanNcIjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/react/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/react/parser/index.js":
/*!***********************************************************!*\
  !*** ./node_modules/@apollo/client/react/parser/index.js ***!
  \***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DocumentType\": function() { return /* binding */ DocumentType; },\n/* harmony export */   \"operationName\": function() { return /* binding */ operationName; },\n/* harmony export */   \"parser\": function() { return /* binding */ parser; },\n/* harmony export */   \"verifyDocumentType\": function() { return /* binding */ verifyDocumentType; }\n/* harmony export */ });\n/* harmony import */ var _utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n\nvar DocumentType;\n(function (DocumentType) {\n    DocumentType[DocumentType[\"Query\"] = 0] = \"Query\";\n    DocumentType[DocumentType[\"Mutation\"] = 1] = \"Mutation\";\n    DocumentType[DocumentType[\"Subscription\"] = 2] = \"Subscription\";\n})(DocumentType || (DocumentType = {}));\nvar cache = new Map();\nfunction operationName(type) {\n    var name;\n    switch (type) {\n        case DocumentType.Query:\n            name = 'Query';\n            break;\n        case DocumentType.Mutation:\n            name = 'Mutation';\n            break;\n        case DocumentType.Subscription:\n            name = 'Subscription';\n            break;\n    }\n    return name;\n}\nfunction parser(document) {\n    var cached = cache.get(document);\n    if (cached)\n        return cached;\n    var variables, type, name;\n    __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(!!document && !!document.kind, \"Argument of \".concat(document, \" passed to parser was not a valid GraphQL \") +\n        \"DocumentNode. You may need to use 'graphql-tag' or another method \" +\n        \"to convert your operation into a document\") : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(!!document && !!document.kind, 30);\n    var fragments = document.definitions.filter(function (x) { return x.kind === 'FragmentDefinition'; });\n    var queries = document.definitions.filter(function (x) {\n        return x.kind === 'OperationDefinition' && x.operation === 'query';\n    });\n    var mutations = document.definitions.filter(function (x) {\n        return x.kind === 'OperationDefinition' && x.operation === 'mutation';\n    });\n    var subscriptions = document.definitions.filter(function (x) {\n        return x.kind === 'OperationDefinition' && x.operation === 'subscription';\n    });\n    __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(!fragments.length ||\n        (queries.length || mutations.length || subscriptions.length), \"Passing only a fragment to 'graphql' is not yet supported. \" +\n        \"You must include a query, subscription or mutation as well\") : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(!fragments.length ||\n        (queries.length || mutations.length || subscriptions.length), 31);\n    __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(queries.length + mutations.length + subscriptions.length <= 1, \"react-apollo only supports a query, subscription, or a mutation per HOC. \" +\n        \"\".concat(document, \" had \").concat(queries.length, \" queries, \").concat(subscriptions.length, \" \") +\n        \"subscriptions and \".concat(mutations.length, \" mutations. \") +\n        \"You can use 'compose' to join multiple operation types to a component\") : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(queries.length + mutations.length + subscriptions.length <= 1, 32);\n    type = queries.length ? DocumentType.Query : DocumentType.Mutation;\n    if (!queries.length && !mutations.length)\n        type = DocumentType.Subscription;\n    var definitions = queries.length\n        ? queries\n        : mutations.length\n            ? mutations\n            : subscriptions;\n    __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(definitions.length === 1, \"react-apollo only supports one definition per HOC. \".concat(document, \" had \") +\n        \"\".concat(definitions.length, \" definitions. \") +\n        \"You can use 'compose' to join multiple operation types to a component\") : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(definitions.length === 1, 33);\n    var definition = definitions[0];\n    variables = definition.variableDefinitions || [];\n    if (definition.name && definition.name.kind === 'Name') {\n        name = definition.name.value;\n    }\n    else {\n        name = 'data';\n    }\n    var payload = { name: name, type: type, variables: variables };\n    cache.set(document, payload);\n    return payload;\n}\nfunction verifyDocumentType(document, type) {\n    var operation = parser(document);\n    var requiredOperationName = operationName(type);\n    var usedOperationName = operationName(operation.type);\n    __DEV__ ? (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(operation.type === type, \"Running a \".concat(requiredOperationName, \" requires a graphql \") +\n        \"\".concat(requiredOperationName, \", but a \").concat(usedOperationName, \" was used instead.\")) : (0,_utilities_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(operation.type === type, 34);\n}\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvcmVhY3QvcGFyc2VyL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQTZEO0FBQ3REO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLG9DQUFvQztBQUNyQztBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLHNFQUFTO0FBQ3ZCO0FBQ0EsdURBQXVELHNFQUFTO0FBQ2hFLCtEQUErRCx5Q0FBeUM7QUFDeEc7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsY0FBYyxzRUFBUztBQUN2QjtBQUNBLHdFQUF3RSxzRUFBUztBQUNqRjtBQUNBLGNBQWMsc0VBQVM7QUFDdkI7QUFDQTtBQUNBLG1GQUFtRixzRUFBUztBQUM1RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxzRUFBUztBQUN2QjtBQUNBLG1GQUFtRixzRUFBUztBQUM1RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsY0FBYyxzRUFBUztBQUN2Qix3R0FBd0csc0VBQVM7QUFDakg7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvcmVhY3QvcGFyc2VyL2luZGV4LmpzPzRmNTgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9nbG9iYWxzL2luZGV4LmpzXCI7XG5leHBvcnQgdmFyIERvY3VtZW50VHlwZTtcbihmdW5jdGlvbiAoRG9jdW1lbnRUeXBlKSB7XG4gICAgRG9jdW1lbnRUeXBlW0RvY3VtZW50VHlwZVtcIlF1ZXJ5XCJdID0gMF0gPSBcIlF1ZXJ5XCI7XG4gICAgRG9jdW1lbnRUeXBlW0RvY3VtZW50VHlwZVtcIk11dGF0aW9uXCJdID0gMV0gPSBcIk11dGF0aW9uXCI7XG4gICAgRG9jdW1lbnRUeXBlW0RvY3VtZW50VHlwZVtcIlN1YnNjcmlwdGlvblwiXSA9IDJdID0gXCJTdWJzY3JpcHRpb25cIjtcbn0pKERvY3VtZW50VHlwZSB8fCAoRG9jdW1lbnRUeXBlID0ge30pKTtcbnZhciBjYWNoZSA9IG5ldyBNYXAoKTtcbmV4cG9ydCBmdW5jdGlvbiBvcGVyYXRpb25OYW1lKHR5cGUpIHtcbiAgICB2YXIgbmFtZTtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBEb2N1bWVudFR5cGUuUXVlcnk6XG4gICAgICAgICAgICBuYW1lID0gJ1F1ZXJ5JztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIERvY3VtZW50VHlwZS5NdXRhdGlvbjpcbiAgICAgICAgICAgIG5hbWUgPSAnTXV0YXRpb24nO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRG9jdW1lbnRUeXBlLlN1YnNjcmlwdGlvbjpcbiAgICAgICAgICAgIG5hbWUgPSAnU3Vic2NyaXB0aW9uJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gbmFtZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZXIoZG9jdW1lbnQpIHtcbiAgICB2YXIgY2FjaGVkID0gY2FjaGUuZ2V0KGRvY3VtZW50KTtcbiAgICBpZiAoY2FjaGVkKVxuICAgICAgICByZXR1cm4gY2FjaGVkO1xuICAgIHZhciB2YXJpYWJsZXMsIHR5cGUsIG5hbWU7XG4gICAgX19ERVZfXyA/IGludmFyaWFudCghIWRvY3VtZW50ICYmICEhZG9jdW1lbnQua2luZCwgXCJBcmd1bWVudCBvZiBcIi5jb25jYXQoZG9jdW1lbnQsIFwiIHBhc3NlZCB0byBwYXJzZXIgd2FzIG5vdCBhIHZhbGlkIEdyYXBoUUwgXCIpICtcbiAgICAgICAgXCJEb2N1bWVudE5vZGUuIFlvdSBtYXkgbmVlZCB0byB1c2UgJ2dyYXBocWwtdGFnJyBvciBhbm90aGVyIG1ldGhvZCBcIiArXG4gICAgICAgIFwidG8gY29udmVydCB5b3VyIG9wZXJhdGlvbiBpbnRvIGEgZG9jdW1lbnRcIikgOiBpbnZhcmlhbnQoISFkb2N1bWVudCAmJiAhIWRvY3VtZW50LmtpbmQsIDMwKTtcbiAgICB2YXIgZnJhZ21lbnRzID0gZG9jdW1lbnQuZGVmaW5pdGlvbnMuZmlsdGVyKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4LmtpbmQgPT09ICdGcmFnbWVudERlZmluaXRpb24nOyB9KTtcbiAgICB2YXIgcXVlcmllcyA9IGRvY3VtZW50LmRlZmluaXRpb25zLmZpbHRlcihmdW5jdGlvbiAoeCkge1xuICAgICAgICByZXR1cm4geC5raW5kID09PSAnT3BlcmF0aW9uRGVmaW5pdGlvbicgJiYgeC5vcGVyYXRpb24gPT09ICdxdWVyeSc7XG4gICAgfSk7XG4gICAgdmFyIG11dGF0aW9ucyA9IGRvY3VtZW50LmRlZmluaXRpb25zLmZpbHRlcihmdW5jdGlvbiAoeCkge1xuICAgICAgICByZXR1cm4geC5raW5kID09PSAnT3BlcmF0aW9uRGVmaW5pdGlvbicgJiYgeC5vcGVyYXRpb24gPT09ICdtdXRhdGlvbic7XG4gICAgfSk7XG4gICAgdmFyIHN1YnNjcmlwdGlvbnMgPSBkb2N1bWVudC5kZWZpbml0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgcmV0dXJuIHgua2luZCA9PT0gJ09wZXJhdGlvbkRlZmluaXRpb24nICYmIHgub3BlcmF0aW9uID09PSAnc3Vic2NyaXB0aW9uJztcbiAgICB9KTtcbiAgICBfX0RFVl9fID8gaW52YXJpYW50KCFmcmFnbWVudHMubGVuZ3RoIHx8XG4gICAgICAgIChxdWVyaWVzLmxlbmd0aCB8fCBtdXRhdGlvbnMubGVuZ3RoIHx8IHN1YnNjcmlwdGlvbnMubGVuZ3RoKSwgXCJQYXNzaW5nIG9ubHkgYSBmcmFnbWVudCB0byAnZ3JhcGhxbCcgaXMgbm90IHlldCBzdXBwb3J0ZWQuIFwiICtcbiAgICAgICAgXCJZb3UgbXVzdCBpbmNsdWRlIGEgcXVlcnksIHN1YnNjcmlwdGlvbiBvciBtdXRhdGlvbiBhcyB3ZWxsXCIpIDogaW52YXJpYW50KCFmcmFnbWVudHMubGVuZ3RoIHx8XG4gICAgICAgIChxdWVyaWVzLmxlbmd0aCB8fCBtdXRhdGlvbnMubGVuZ3RoIHx8IHN1YnNjcmlwdGlvbnMubGVuZ3RoKSwgMzEpO1xuICAgIF9fREVWX18gPyBpbnZhcmlhbnQocXVlcmllcy5sZW5ndGggKyBtdXRhdGlvbnMubGVuZ3RoICsgc3Vic2NyaXB0aW9ucy5sZW5ndGggPD0gMSwgXCJyZWFjdC1hcG9sbG8gb25seSBzdXBwb3J0cyBhIHF1ZXJ5LCBzdWJzY3JpcHRpb24sIG9yIGEgbXV0YXRpb24gcGVyIEhPQy4gXCIgK1xuICAgICAgICBcIlwiLmNvbmNhdChkb2N1bWVudCwgXCIgaGFkIFwiKS5jb25jYXQocXVlcmllcy5sZW5ndGgsIFwiIHF1ZXJpZXMsIFwiKS5jb25jYXQoc3Vic2NyaXB0aW9ucy5sZW5ndGgsIFwiIFwiKSArXG4gICAgICAgIFwic3Vic2NyaXB0aW9ucyBhbmQgXCIuY29uY2F0KG11dGF0aW9ucy5sZW5ndGgsIFwiIG11dGF0aW9ucy4gXCIpICtcbiAgICAgICAgXCJZb3UgY2FuIHVzZSAnY29tcG9zZScgdG8gam9pbiBtdWx0aXBsZSBvcGVyYXRpb24gdHlwZXMgdG8gYSBjb21wb25lbnRcIikgOiBpbnZhcmlhbnQocXVlcmllcy5sZW5ndGggKyBtdXRhdGlvbnMubGVuZ3RoICsgc3Vic2NyaXB0aW9ucy5sZW5ndGggPD0gMSwgMzIpO1xuICAgIHR5cGUgPSBxdWVyaWVzLmxlbmd0aCA/IERvY3VtZW50VHlwZS5RdWVyeSA6IERvY3VtZW50VHlwZS5NdXRhdGlvbjtcbiAgICBpZiAoIXF1ZXJpZXMubGVuZ3RoICYmICFtdXRhdGlvbnMubGVuZ3RoKVxuICAgICAgICB0eXBlID0gRG9jdW1lbnRUeXBlLlN1YnNjcmlwdGlvbjtcbiAgICB2YXIgZGVmaW5pdGlvbnMgPSBxdWVyaWVzLmxlbmd0aFxuICAgICAgICA/IHF1ZXJpZXNcbiAgICAgICAgOiBtdXRhdGlvbnMubGVuZ3RoXG4gICAgICAgICAgICA/IG11dGF0aW9uc1xuICAgICAgICAgICAgOiBzdWJzY3JpcHRpb25zO1xuICAgIF9fREVWX18gPyBpbnZhcmlhbnQoZGVmaW5pdGlvbnMubGVuZ3RoID09PSAxLCBcInJlYWN0LWFwb2xsbyBvbmx5IHN1cHBvcnRzIG9uZSBkZWZpbml0aW9uIHBlciBIT0MuIFwiLmNvbmNhdChkb2N1bWVudCwgXCIgaGFkIFwiKSArXG4gICAgICAgIFwiXCIuY29uY2F0KGRlZmluaXRpb25zLmxlbmd0aCwgXCIgZGVmaW5pdGlvbnMuIFwiKSArXG4gICAgICAgIFwiWW91IGNhbiB1c2UgJ2NvbXBvc2UnIHRvIGpvaW4gbXVsdGlwbGUgb3BlcmF0aW9uIHR5cGVzIHRvIGEgY29tcG9uZW50XCIpIDogaW52YXJpYW50KGRlZmluaXRpb25zLmxlbmd0aCA9PT0gMSwgMzMpO1xuICAgIHZhciBkZWZpbml0aW9uID0gZGVmaW5pdGlvbnNbMF07XG4gICAgdmFyaWFibGVzID0gZGVmaW5pdGlvbi52YXJpYWJsZURlZmluaXRpb25zIHx8IFtdO1xuICAgIGlmIChkZWZpbml0aW9uLm5hbWUgJiYgZGVmaW5pdGlvbi5uYW1lLmtpbmQgPT09ICdOYW1lJykge1xuICAgICAgICBuYW1lID0gZGVmaW5pdGlvbi5uYW1lLnZhbHVlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbmFtZSA9ICdkYXRhJztcbiAgICB9XG4gICAgdmFyIHBheWxvYWQgPSB7IG5hbWU6IG5hbWUsIHR5cGU6IHR5cGUsIHZhcmlhYmxlczogdmFyaWFibGVzIH07XG4gICAgY2FjaGUuc2V0KGRvY3VtZW50LCBwYXlsb2FkKTtcbiAgICByZXR1cm4gcGF5bG9hZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlEb2N1bWVudFR5cGUoZG9jdW1lbnQsIHR5cGUpIHtcbiAgICB2YXIgb3BlcmF0aW9uID0gcGFyc2VyKGRvY3VtZW50KTtcbiAgICB2YXIgcmVxdWlyZWRPcGVyYXRpb25OYW1lID0gb3BlcmF0aW9uTmFtZSh0eXBlKTtcbiAgICB2YXIgdXNlZE9wZXJhdGlvbk5hbWUgPSBvcGVyYXRpb25OYW1lKG9wZXJhdGlvbi50eXBlKTtcbiAgICBfX0RFVl9fID8gaW52YXJpYW50KG9wZXJhdGlvbi50eXBlID09PSB0eXBlLCBcIlJ1bm5pbmcgYSBcIi5jb25jYXQocmVxdWlyZWRPcGVyYXRpb25OYW1lLCBcIiByZXF1aXJlcyBhIGdyYXBocWwgXCIpICtcbiAgICAgICAgXCJcIi5jb25jYXQocmVxdWlyZWRPcGVyYXRpb25OYW1lLCBcIiwgYnV0IGEgXCIpLmNvbmNhdCh1c2VkT3BlcmF0aW9uTmFtZSwgXCIgd2FzIHVzZWQgaW5zdGVhZC5cIikpIDogaW52YXJpYW50KG9wZXJhdGlvbi50eXBlID09PSB0eXBlLCAzNCk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/react/parser/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/react/types/types.js":
/*!**********************************************************!*\
  !*** ./node_modules/@apollo/client/react/types/types.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceMappingURL=types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvcmVhY3QvdHlwZXMvdHlwZXMuanMuanMiLCJtYXBwaW5ncyI6IjtBQUFVO0FBQ1YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L3JlYWN0L3R5cGVzL3R5cGVzLmpzP2NmMGUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dHlwZXMuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/react/types/types.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/common/arrays.js":
/*!****************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/common/arrays.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isNonEmptyArray\": function() { return /* binding */ isNonEmptyArray; }\n/* harmony export */ });\nfunction isNonEmptyArray(value) {\n    return Array.isArray(value) && value.length > 0;\n}\n//# sourceMappingURL=arrays.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2NvbW1vbi9hcnJheXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPO0FBQ1A7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC91dGlsaXRpZXMvY29tbW9uL2FycmF5cy5qcz84YmUxIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpc05vbkVtcHR5QXJyYXkodmFsdWUpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFycmF5cy5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/common/arrays.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/common/canUse.js":
/*!****************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/common/canUse.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"canUseSymbol\": function() { return /* binding */ canUseSymbol; },\n/* harmony export */   \"canUseWeakMap\": function() { return /* binding */ canUseWeakMap; },\n/* harmony export */   \"canUseWeakSet\": function() { return /* binding */ canUseWeakSet; }\n/* harmony export */ });\nvar canUseWeakMap = typeof WeakMap === 'function' && !(typeof navigator === 'object' &&\n    navigator.product === 'ReactNative');\nvar canUseWeakSet = typeof WeakSet === 'function';\nvar canUseSymbol = typeof Symbol === 'function' &&\n    typeof Symbol.for === 'function';\n//# sourceMappingURL=canUse.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2NvbW1vbi9jYW5Vc2UuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQU87QUFDUDtBQUNPO0FBQ0E7QUFDUDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC91dGlsaXRpZXMvY29tbW9uL2NhblVzZS5qcz81N2Y1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgY2FuVXNlV2Vha01hcCA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nICYmICEodHlwZW9mIG5hdmlnYXRvciA9PT0gJ29iamVjdCcgJiZcbiAgICBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ1JlYWN0TmF0aXZlJyk7XG5leHBvcnQgdmFyIGNhblVzZVdlYWtTZXQgPSB0eXBlb2YgV2Vha1NldCA9PT0gJ2Z1bmN0aW9uJztcbmV4cG9ydCB2YXIgY2FuVXNlU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBTeW1ib2wuZm9yID09PSAnZnVuY3Rpb24nO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2FuVXNlLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/common/canUse.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/common/cloneDeep.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/common/cloneDeep.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"cloneDeep\": function() { return /* binding */ cloneDeep; }\n/* harmony export */ });\nvar toString = Object.prototype.toString;\nfunction cloneDeep(value) {\n    return cloneDeepHelper(value);\n}\nfunction cloneDeepHelper(val, seen) {\n    switch (toString.call(val)) {\n        case \"[object Array]\": {\n            seen = seen || new Map;\n            if (seen.has(val))\n                return seen.get(val);\n            var copy_1 = val.slice(0);\n            seen.set(val, copy_1);\n            copy_1.forEach(function (child, i) {\n                copy_1[i] = cloneDeepHelper(child, seen);\n            });\n            return copy_1;\n        }\n        case \"[object Object]\": {\n            seen = seen || new Map;\n            if (seen.has(val))\n                return seen.get(val);\n            var copy_2 = Object.create(Object.getPrototypeOf(val));\n            seen.set(val, copy_2);\n            Object.keys(val).forEach(function (key) {\n                copy_2[key] = cloneDeepHelper(val[key], seen);\n            });\n            return copy_2;\n        }\n        default:\n            return val;\n    }\n}\n//# sourceMappingURL=cloneDeep.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2NvbW1vbi9jbG9uZURlZXAuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L3V0aWxpdGllcy9jb21tb24vY2xvbmVEZWVwLmpzPzFhNWYiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbmV4cG9ydCBmdW5jdGlvbiBjbG9uZURlZXAodmFsdWUpIHtcbiAgICByZXR1cm4gY2xvbmVEZWVwSGVscGVyKHZhbHVlKTtcbn1cbmZ1bmN0aW9uIGNsb25lRGVlcEhlbHBlcih2YWwsIHNlZW4pIHtcbiAgICBzd2l0Y2ggKHRvU3RyaW5nLmNhbGwodmFsKSkge1xuICAgICAgICBjYXNlIFwiW29iamVjdCBBcnJheV1cIjoge1xuICAgICAgICAgICAgc2VlbiA9IHNlZW4gfHwgbmV3IE1hcDtcbiAgICAgICAgICAgIGlmIChzZWVuLmhhcyh2YWwpKVxuICAgICAgICAgICAgICAgIHJldHVybiBzZWVuLmdldCh2YWwpO1xuICAgICAgICAgICAgdmFyIGNvcHlfMSA9IHZhbC5zbGljZSgwKTtcbiAgICAgICAgICAgIHNlZW4uc2V0KHZhbCwgY29weV8xKTtcbiAgICAgICAgICAgIGNvcHlfMS5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCwgaSkge1xuICAgICAgICAgICAgICAgIGNvcHlfMVtpXSA9IGNsb25lRGVlcEhlbHBlcihjaGlsZCwgc2Vlbik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBjb3B5XzE7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIltvYmplY3QgT2JqZWN0XVwiOiB7XG4gICAgICAgICAgICBzZWVuID0gc2VlbiB8fCBuZXcgTWFwO1xuICAgICAgICAgICAgaWYgKHNlZW4uaGFzKHZhbCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlZW4uZ2V0KHZhbCk7XG4gICAgICAgICAgICB2YXIgY29weV8yID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsKSk7XG4gICAgICAgICAgICBzZWVuLnNldCh2YWwsIGNvcHlfMik7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyh2YWwpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgIGNvcHlfMltrZXldID0gY2xvbmVEZWVwSGVscGVyKHZhbFtrZXldLCBzZWVuKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGNvcHlfMjtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jbG9uZURlZXAuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/common/cloneDeep.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/common/compact.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/common/compact.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"compact\": function() { return /* binding */ compact; }\n/* harmony export */ });\nfunction compact() {\n    var objects = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        objects[_i] = arguments[_i];\n    }\n    var result = Object.create(null);\n    objects.forEach(function (obj) {\n        if (!obj)\n            return;\n        Object.keys(obj).forEach(function (key) {\n            var value = obj[key];\n            if (value !== void 0) {\n                result[key] = value;\n            }\n        });\n    });\n    return result;\n}\n//# sourceMappingURL=compact.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2NvbW1vbi9jb21wYWN0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTztBQUNQO0FBQ0EscUJBQXFCLHVCQUF1QjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L3V0aWxpdGllcy9jb21tb24vY29tcGFjdC5qcz82MTk2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBjb21wYWN0KCkge1xuICAgIHZhciBvYmplY3RzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgb2JqZWN0c1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICB2YXIgcmVzdWx0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBvYmplY3RzLmZvckVhY2goZnVuY3Rpb24gKG9iaikge1xuICAgICAgICBpZiAoIW9iailcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IG9ialtrZXldO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB2b2lkIDApIHtcbiAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29tcGFjdC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/common/compact.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/common/errorHandling.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/common/errorHandling.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"graphQLResultHasError\": function() { return /* binding */ graphQLResultHasError; }\n/* harmony export */ });\nfunction graphQLResultHasError(result) {\n    return (result.errors && result.errors.length > 0) || false;\n}\n//# sourceMappingURL=errorHandling.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2NvbW1vbi9lcnJvckhhbmRsaW5nLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2NvbW1vbi9lcnJvckhhbmRsaW5nLmpzPzkyODQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGdyYXBoUUxSZXN1bHRIYXNFcnJvcihyZXN1bHQpIHtcbiAgICByZXR1cm4gKHJlc3VsdC5lcnJvcnMgJiYgcmVzdWx0LmVycm9ycy5sZW5ndGggPiAwKSB8fCBmYWxzZTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWVycm9ySGFuZGxpbmcuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/common/errorHandling.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/common/filterInPlace.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/common/filterInPlace.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"filterInPlace\": function() { return /* binding */ filterInPlace; }\n/* harmony export */ });\nfunction filterInPlace(array, test, context) {\n    var target = 0;\n    array.forEach(function (elem, i) {\n        if (test.call(this, elem, i, array)) {\n            array[target++] = elem;\n        }\n    }, context);\n    array.length = target;\n    return array;\n}\n//# sourceMappingURL=filterInPlace.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2NvbW1vbi9maWx0ZXJJblBsYWNlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L3V0aWxpdGllcy9jb21tb24vZmlsdGVySW5QbGFjZS5qcz9kNTY1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJJblBsYWNlKGFycmF5LCB0ZXN0LCBjb250ZXh0KSB7XG4gICAgdmFyIHRhcmdldCA9IDA7XG4gICAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoZWxlbSwgaSkge1xuICAgICAgICBpZiAodGVzdC5jYWxsKHRoaXMsIGVsZW0sIGksIGFycmF5KSkge1xuICAgICAgICAgICAgYXJyYXlbdGFyZ2V0KytdID0gZWxlbTtcbiAgICAgICAgfVxuICAgIH0sIGNvbnRleHQpO1xuICAgIGFycmF5Lmxlbmd0aCA9IHRhcmdldDtcbiAgICByZXR1cm4gYXJyYXk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1maWx0ZXJJblBsYWNlLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/common/filterInPlace.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/common/makeUniqueId.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/common/makeUniqueId.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"makeUniqueId\": function() { return /* binding */ makeUniqueId; }\n/* harmony export */ });\nvar prefixCounts = new Map();\nfunction makeUniqueId(prefix) {\n    var count = prefixCounts.get(prefix) || 1;\n    prefixCounts.set(prefix, count + 1);\n    return \"\".concat(prefix, \":\").concat(count, \":\").concat(Math.random().toString(36).slice(2));\n}\n//# sourceMappingURL=makeUniqueId.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2NvbW1vbi9tYWtlVW5pcXVlSWQuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC91dGlsaXRpZXMvY29tbW9uL21ha2VVbmlxdWVJZC5qcz9jNDMxIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBwcmVmaXhDb3VudHMgPSBuZXcgTWFwKCk7XG5leHBvcnQgZnVuY3Rpb24gbWFrZVVuaXF1ZUlkKHByZWZpeCkge1xuICAgIHZhciBjb3VudCA9IHByZWZpeENvdW50cy5nZXQocHJlZml4KSB8fCAxO1xuICAgIHByZWZpeENvdW50cy5zZXQocHJlZml4LCBjb3VudCArIDEpO1xuICAgIHJldHVybiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiOlwiKS5jb25jYXQoY291bnQsIFwiOlwiKS5jb25jYXQoTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMikpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWFrZVVuaXF1ZUlkLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/common/makeUniqueId.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/common/maybeDeepFreeze.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/common/maybeDeepFreeze.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"maybeDeepFreeze\": function() { return /* binding */ maybeDeepFreeze; }\n/* harmony export */ });\n/* harmony import */ var _globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _objects_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./objects.js */ \"./node_modules/@apollo/client/utilities/common/objects.js\");\n\n\nfunction deepFreeze(value) {\n    var workSet = new Set([value]);\n    workSet.forEach(function (obj) {\n        if ((0,_objects_js__WEBPACK_IMPORTED_MODULE_1__.isNonNullObject)(obj) && shallowFreeze(obj) === obj) {\n            Object.getOwnPropertyNames(obj).forEach(function (name) {\n                if ((0,_objects_js__WEBPACK_IMPORTED_MODULE_1__.isNonNullObject)(obj[name]))\n                    workSet.add(obj[name]);\n            });\n        }\n    });\n    return value;\n}\nfunction shallowFreeze(obj) {\n    if (__DEV__ && !Object.isFrozen(obj)) {\n        try {\n            Object.freeze(obj);\n        }\n        catch (e) {\n            if (e instanceof TypeError)\n                return null;\n            throw e;\n        }\n    }\n    return obj;\n}\nfunction maybeDeepFreeze(obj) {\n    if (__DEV__) {\n        deepFreeze(obj);\n    }\n    return obj;\n}\n//# sourceMappingURL=maybeDeepFreeze.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2NvbW1vbi9tYXliZURlZXBGcmVlemUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTZCO0FBQ2tCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLFlBQVksNERBQWU7QUFDM0I7QUFDQSxvQkFBb0IsNERBQWU7QUFDbkM7QUFDQSxhQUFhO0FBQ2I7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L3V0aWxpdGllcy9jb21tb24vbWF5YmVEZWVwRnJlZXplLmpzP2Y1NTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwiLi4vZ2xvYmFscy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgaXNOb25OdWxsT2JqZWN0IH0gZnJvbSBcIi4vb2JqZWN0cy5qc1wiO1xuZnVuY3Rpb24gZGVlcEZyZWV6ZSh2YWx1ZSkge1xuICAgIHZhciB3b3JrU2V0ID0gbmV3IFNldChbdmFsdWVdKTtcbiAgICB3b3JrU2V0LmZvckVhY2goZnVuY3Rpb24gKG9iaikge1xuICAgICAgICBpZiAoaXNOb25OdWxsT2JqZWN0KG9iaikgJiYgc2hhbGxvd0ZyZWV6ZShvYmopID09PSBvYmopIHtcbiAgICAgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgICAgIGlmIChpc05vbk51bGxPYmplY3Qob2JqW25hbWVdKSlcbiAgICAgICAgICAgICAgICAgICAgd29ya1NldC5hZGQob2JqW25hbWVdKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuZnVuY3Rpb24gc2hhbGxvd0ZyZWV6ZShvYmopIHtcbiAgICBpZiAoX19ERVZfXyAmJiAhT2JqZWN0LmlzRnJvemVuKG9iaikpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIE9iamVjdC5mcmVlemUob2JqKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG59XG5leHBvcnQgZnVuY3Rpb24gbWF5YmVEZWVwRnJlZXplKG9iaikge1xuICAgIGlmIChfX0RFVl9fKSB7XG4gICAgICAgIGRlZXBGcmVlemUob2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1heWJlRGVlcEZyZWV6ZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/common/maybeDeepFreeze.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/common/mergeDeep.js":
/*!*******************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/common/mergeDeep.js ***!
  \*******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DeepMerger\": function() { return /* binding */ DeepMerger; },\n/* harmony export */   \"mergeDeep\": function() { return /* binding */ mergeDeep; },\n/* harmony export */   \"mergeDeepArray\": function() { return /* binding */ mergeDeepArray; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _objects_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./objects.js */ \"./node_modules/@apollo/client/utilities/common/objects.js\");\n\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction mergeDeep() {\n    var sources = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        sources[_i] = arguments[_i];\n    }\n    return mergeDeepArray(sources);\n}\nfunction mergeDeepArray(sources) {\n    var target = sources[0] || {};\n    var count = sources.length;\n    if (count > 1) {\n        var merger = new DeepMerger();\n        for (var i = 1; i < count; ++i) {\n            target = merger.merge(target, sources[i]);\n        }\n    }\n    return target;\n}\nvar defaultReconciler = function (target, source, property) {\n    return this.merge(target[property], source[property]);\n};\nvar DeepMerger = (function () {\n    function DeepMerger(reconciler) {\n        if (reconciler === void 0) { reconciler = defaultReconciler; }\n        this.reconciler = reconciler;\n        this.isObject = _objects_js__WEBPACK_IMPORTED_MODULE_0__.isNonNullObject;\n        this.pastCopies = new Set();\n    }\n    DeepMerger.prototype.merge = function (target, source) {\n        var _this = this;\n        var context = [];\n        for (var _i = 2; _i < arguments.length; _i++) {\n            context[_i - 2] = arguments[_i];\n        }\n        if ((0,_objects_js__WEBPACK_IMPORTED_MODULE_0__.isNonNullObject)(source) && (0,_objects_js__WEBPACK_IMPORTED_MODULE_0__.isNonNullObject)(target)) {\n            Object.keys(source).forEach(function (sourceKey) {\n                if (hasOwnProperty.call(target, sourceKey)) {\n                    var targetValue = target[sourceKey];\n                    if (source[sourceKey] !== targetValue) {\n                        var result = _this.reconciler.apply(_this, (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__spreadArray)([target, source, sourceKey], context, false));\n                        if (result !== targetValue) {\n                            target = _this.shallowCopyForMerge(target);\n                            target[sourceKey] = result;\n                        }\n                    }\n                }\n                else {\n                    target = _this.shallowCopyForMerge(target);\n                    target[sourceKey] = source[sourceKey];\n                }\n            });\n            return target;\n        }\n        return source;\n    };\n    DeepMerger.prototype.shallowCopyForMerge = function (value) {\n        if ((0,_objects_js__WEBPACK_IMPORTED_MODULE_0__.isNonNullObject)(value)) {\n            if (this.pastCopies.has(value)) {\n                if (!Object.isFrozen(value))\n                    return value;\n                this.pastCopies.delete(value);\n            }\n            if (Array.isArray(value)) {\n                value = value.slice(0);\n            }\n            else {\n                value = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({ __proto__: Object.getPrototypeOf(value) }, value);\n            }\n            this.pastCopies.add(value);\n        }\n        return value;\n    };\n    return DeepMerger;\n}());\n\n//# sourceMappingURL=mergeDeep.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2NvbW1vbi9tZXJnZURlZXAuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBZ0Q7QUFDRDtBQUMvQztBQUNPO0FBQ1A7QUFDQSxxQkFBcUIsdUJBQXVCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixXQUFXO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0Esd0JBQXdCLHdEQUFlO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsdUJBQXVCO0FBQ2hEO0FBQ0E7QUFDQSxZQUFZLDREQUFlLFlBQVksNERBQWU7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtRUFBbUUsb0RBQWE7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksNERBQWU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLCtDQUFRLEdBQUcseUNBQXlDO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDcUI7QUFDdEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L3V0aWxpdGllcy9jb21tb24vbWVyZ2VEZWVwLmpzP2NhZDAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGlzTm9uTnVsbE9iamVjdCB9IGZyb20gXCIuL29iamVjdHMuanNcIjtcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VEZWVwKCkge1xuICAgIHZhciBzb3VyY2VzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgc291cmNlc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICByZXR1cm4gbWVyZ2VEZWVwQXJyYXkoc291cmNlcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VEZWVwQXJyYXkoc291cmNlcykge1xuICAgIHZhciB0YXJnZXQgPSBzb3VyY2VzWzBdIHx8IHt9O1xuICAgIHZhciBjb3VudCA9IHNvdXJjZXMubGVuZ3RoO1xuICAgIGlmIChjb3VudCA+IDEpIHtcbiAgICAgICAgdmFyIG1lcmdlciA9IG5ldyBEZWVwTWVyZ2VyKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgY291bnQ7ICsraSkge1xuICAgICAgICAgICAgdGFyZ2V0ID0gbWVyZ2VyLm1lcmdlKHRhcmdldCwgc291cmNlc1tpXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbn1cbnZhciBkZWZhdWx0UmVjb25jaWxlciA9IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSwgcHJvcGVydHkpIHtcbiAgICByZXR1cm4gdGhpcy5tZXJnZSh0YXJnZXRbcHJvcGVydHldLCBzb3VyY2VbcHJvcGVydHldKTtcbn07XG52YXIgRGVlcE1lcmdlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRGVlcE1lcmdlcihyZWNvbmNpbGVyKSB7XG4gICAgICAgIGlmIChyZWNvbmNpbGVyID09PSB2b2lkIDApIHsgcmVjb25jaWxlciA9IGRlZmF1bHRSZWNvbmNpbGVyOyB9XG4gICAgICAgIHRoaXMucmVjb25jaWxlciA9IHJlY29uY2lsZXI7XG4gICAgICAgIHRoaXMuaXNPYmplY3QgPSBpc05vbk51bGxPYmplY3Q7XG4gICAgICAgIHRoaXMucGFzdENvcGllcyA9IG5ldyBTZXQoKTtcbiAgICB9XG4gICAgRGVlcE1lcmdlci5wcm90b3R5cGUubWVyZ2UgPSBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGNvbnRleHQgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGNvbnRleHRbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTm9uTnVsbE9iamVjdChzb3VyY2UpICYmIGlzTm9uTnVsbE9iamVjdCh0YXJnZXQpKSB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUtleSkge1xuICAgICAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHRhcmdldCwgc291cmNlS2V5KSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0VmFsdWUgPSB0YXJnZXRbc291cmNlS2V5XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNvdXJjZVtzb3VyY2VLZXldICE9PSB0YXJnZXRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IF90aGlzLnJlY29uY2lsZXIuYXBwbHkoX3RoaXMsIF9fc3ByZWFkQXJyYXkoW3RhcmdldCwgc291cmNlLCBzb3VyY2VLZXldLCBjb250ZXh0LCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdGFyZ2V0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBfdGhpcy5zaGFsbG93Q29weUZvck1lcmdlKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W3NvdXJjZUtleV0gPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IF90aGlzLnNoYWxsb3dDb3B5Rm9yTWVyZ2UodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W3NvdXJjZUtleV0gPSBzb3VyY2Vbc291cmNlS2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9O1xuICAgIERlZXBNZXJnZXIucHJvdG90eXBlLnNoYWxsb3dDb3B5Rm9yTWVyZ2UgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgaWYgKGlzTm9uTnVsbE9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBhc3RDb3BpZXMuaGFzKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmICghT2JqZWN0LmlzRnJvemVuKHZhbHVlKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucGFzdENvcGllcy5kZWxldGUodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gX19hc3NpZ24oeyBfX3Byb3RvX186IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSkgfSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wYXN0Q29waWVzLmFkZCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gICAgcmV0dXJuIERlZXBNZXJnZXI7XG59KCkpO1xuZXhwb3J0IHsgRGVlcE1lcmdlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWVyZ2VEZWVwLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/common/mergeDeep.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/common/objects.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/common/objects.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isNonNullObject\": function() { return /* binding */ isNonNullObject; }\n/* harmony export */ });\nfunction isNonNullObject(obj) {\n    return obj !== null && typeof obj === 'object';\n}\n//# sourceMappingURL=objects.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2NvbW1vbi9vYmplY3RzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2NvbW1vbi9vYmplY3RzLmpzPzg0MjQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGlzTm9uTnVsbE9iamVjdChvYmopIHtcbiAgICByZXR1cm4gb2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9b2JqZWN0cy5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/common/objects.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/common/stringifyForDisplay.js":
/*!*****************************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/common/stringifyForDisplay.js ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"stringifyForDisplay\": function() { return /* binding */ stringifyForDisplay; }\n/* harmony export */ });\n/* harmony import */ var _makeUniqueId_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./makeUniqueId.js */ \"./node_modules/@apollo/client/utilities/common/makeUniqueId.js\");\n\nfunction stringifyForDisplay(value) {\n    var undefId = (0,_makeUniqueId_js__WEBPACK_IMPORTED_MODULE_0__.makeUniqueId)(\"stringifyForDisplay\");\n    return JSON.stringify(value, function (key, value) {\n        return value === void 0 ? undefId : value;\n    }).split(JSON.stringify(undefId)).join(\"<undefined>\");\n}\n//# sourceMappingURL=stringifyForDisplay.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2NvbW1vbi9zdHJpbmdpZnlGb3JEaXNwbGF5LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWlEO0FBQzFDO0FBQ1Asa0JBQWtCLDhEQUFZO0FBQzlCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2NvbW1vbi9zdHJpbmdpZnlGb3JEaXNwbGF5LmpzPzUzNjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWFrZVVuaXF1ZUlkIH0gZnJvbSBcIi4vbWFrZVVuaXF1ZUlkLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5Rm9yRGlzcGxheSh2YWx1ZSkge1xuICAgIHZhciB1bmRlZklkID0gbWFrZVVuaXF1ZUlkKFwic3RyaW5naWZ5Rm9yRGlzcGxheVwiKTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdm9pZCAwID8gdW5kZWZJZCA6IHZhbHVlO1xuICAgIH0pLnNwbGl0KEpTT04uc3RyaW5naWZ5KHVuZGVmSWQpKS5qb2luKFwiPHVuZGVmaW5lZD5cIik7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zdHJpbmdpZnlGb3JEaXNwbGF5LmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/common/stringifyForDisplay.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/globals/DEV.js":
/*!**************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/globals/DEV.js ***!
  \**************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _global_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./global.js */ \"./node_modules/@apollo/client/utilities/globals/global.js\");\n/* harmony import */ var _maybe_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./maybe.js */ \"./node_modules/@apollo/client/utilities/globals/maybe.js\");\n\n\nvar __ = \"__\";\nvar GLOBAL_KEY = [__, __].join(\"DEV\");\nfunction getDEV() {\n    try {\n        return Boolean(__DEV__);\n    }\n    catch (_a) {\n        Object.defineProperty(_global_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"], GLOBAL_KEY, {\n            value: (0,_maybe_js__WEBPACK_IMPORTED_MODULE_1__.maybe)(function () { return \"development\"; }) !== \"production\",\n            enumerable: false,\n            configurable: true,\n            writable: true,\n        });\n        return _global_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"][GLOBAL_KEY];\n    }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (getDEV());\n//# sourceMappingURL=DEV.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2dsb2JhbHMvREVWLmpzLmpzIiwibWFwcGluZ3MiOiI7OztBQUFpQztBQUNFO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLGtEQUFNO0FBQ3BDLG1CQUFtQixnREFBSyxlQUFlLE9BQU8sYUFBb0IsR0FBRztBQUNyRTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsZUFBZSxrREFBTTtBQUNyQjtBQUNBO0FBQ0EsK0RBQWUsUUFBUSxFQUFDO0FBQ3hCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC91dGlsaXRpZXMvZ2xvYmFscy9ERVYuanM/NWJkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2xvYmFsIGZyb20gXCIuL2dsb2JhbC5qc1wiO1xuaW1wb3J0IHsgbWF5YmUgfSBmcm9tIFwiLi9tYXliZS5qc1wiO1xudmFyIF9fID0gXCJfX1wiO1xudmFyIEdMT0JBTF9LRVkgPSBbX18sIF9fXS5qb2luKFwiREVWXCIpO1xuZnVuY3Rpb24gZ2V0REVWKCkge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKF9fREVWX18pO1xuICAgIH1cbiAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGdsb2JhbCwgR0xPQkFMX0tFWSwge1xuICAgICAgICAgICAgdmFsdWU6IG1heWJlKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHByb2Nlc3MuZW52Lk5PREVfRU5WOyB9KSAhPT0gXCJwcm9kdWN0aW9uXCIsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGdsb2JhbFtHTE9CQUxfS0VZXTtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBnZXRERVYoKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPURFVi5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/globals/DEV.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/globals/fix-graphql.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/globals/fix-graphql.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"removeTemporaryGlobals\": function() { return /* binding */ removeTemporaryGlobals; }\n/* harmony export */ });\n/* harmony import */ var ts_invariant_process_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ts-invariant/process/index.js */ \"./node_modules/@apollo/client/node_modules/ts-invariant/process/index.js\");\n/* harmony import */ var graphql__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! graphql */ \"./node_modules/graphql/index.mjs\");\n\n\nfunction removeTemporaryGlobals() {\n    return typeof graphql__WEBPACK_IMPORTED_MODULE_1__.Source === \"function\" ? (0,ts_invariant_process_index_js__WEBPACK_IMPORTED_MODULE_0__.remove)() : (0,ts_invariant_process_index_js__WEBPACK_IMPORTED_MODULE_0__.remove)();\n}\n//# sourceMappingURL=fix-graphql.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2dsb2JhbHMvZml4LWdyYXBocWwuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXVEO0FBQ3RCO0FBQzFCO0FBQ1Asa0JBQWtCLDJDQUFNLGtCQUFrQixxRUFBTSxLQUFLLHFFQUFNO0FBQzNEO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L3V0aWxpdGllcy9nbG9iYWxzL2ZpeC1ncmFwaHFsLmpzP2EwY2YiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVtb3ZlIH0gZnJvbSBcInRzLWludmFyaWFudC9wcm9jZXNzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBTb3VyY2UgfSBmcm9tICdncmFwaHFsJztcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVUZW1wb3JhcnlHbG9iYWxzKCkge1xuICAgIHJldHVybiB0eXBlb2YgU291cmNlID09PSBcImZ1bmN0aW9uXCIgPyByZW1vdmUoKSA6IHJlbW92ZSgpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Zml4LWdyYXBocWwuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/globals/fix-graphql.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/globals/global.js":
/*!*****************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/globals/global.js ***!
  \*****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _maybe_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./maybe.js */ \"./node_modules/@apollo/client/utilities/globals/maybe.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_maybe_js__WEBPACK_IMPORTED_MODULE_0__.maybe)(function () { return globalThis; }) ||\n    (0,_maybe_js__WEBPACK_IMPORTED_MODULE_0__.maybe)(function () { return window; }) ||\n    (0,_maybe_js__WEBPACK_IMPORTED_MODULE_0__.maybe)(function () { return self; }) ||\n    (0,_maybe_js__WEBPACK_IMPORTED_MODULE_0__.maybe)(function () { return global; }) ||\n    (0,_maybe_js__WEBPACK_IMPORTED_MODULE_0__.maybe)(function () { return _maybe_js__WEBPACK_IMPORTED_MODULE_0__.maybe.constructor(\"return this\")(); }));\n//# sourceMappingURL=global.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2dsb2JhbHMvZ2xvYmFsLmpzLmpzIiwibWFwcGluZ3MiOiI7O0FBQW1DO0FBQ25DLCtEQUFnQixnREFBSyxlQUFlLG9CQUFvQjtBQUN4RCxJQUFJLGdEQUFLLGVBQWUsZ0JBQWdCO0FBQ3hDLElBQUksZ0RBQUssZUFBZSxjQUFjO0FBQ3RDLElBQUksZ0RBQUssZUFBZSxnQkFBZ0I7QUFDeEMsSUFBSSxnREFBSyxlQUFlLE9BQU8sd0RBQWlCLG9CQUFvQixDQUFDLEVBQUU7QUFDdkUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L3V0aWxpdGllcy9nbG9iYWxzL2dsb2JhbC5qcz82ZWYyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1heWJlIH0gZnJvbSBcIi4vbWF5YmUuanNcIjtcbmV4cG9ydCBkZWZhdWx0IChtYXliZShmdW5jdGlvbiAoKSB7IHJldHVybiBnbG9iYWxUaGlzOyB9KSB8fFxuICAgIG1heWJlKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHdpbmRvdzsgfSkgfHxcbiAgICBtYXliZShmdW5jdGlvbiAoKSB7IHJldHVybiBzZWxmOyB9KSB8fFxuICAgIG1heWJlKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdsb2JhbDsgfSkgfHxcbiAgICBtYXliZShmdW5jdGlvbiAoKSB7IHJldHVybiBtYXliZS5jb25zdHJ1Y3RvcihcInJldHVybiB0aGlzXCIpKCk7IH0pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdsb2JhbC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/globals/global.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/globals/index.js":
/*!****************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/globals/index.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DEV\": function() { return /* reexport safe */ _DEV_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; },\n/* harmony export */   \"InvariantError\": function() { return /* reexport safe */ ts_invariant__WEBPACK_IMPORTED_MODULE_0__.InvariantError; },\n/* harmony export */   \"checkDEV\": function() { return /* binding */ checkDEV; },\n/* harmony export */   \"global\": function() { return /* reexport safe */ _global_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; },\n/* harmony export */   \"invariant\": function() { return /* reexport safe */ ts_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant; },\n/* harmony export */   \"maybe\": function() { return /* reexport safe */ _maybe_js__WEBPACK_IMPORTED_MODULE_3__.maybe; }\n/* harmony export */ });\n/* harmony import */ var ts_invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ts-invariant */ \"./node_modules/@apollo/client/node_modules/ts-invariant/lib/invariant.esm.js\");\n/* harmony import */ var _DEV_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DEV.js */ \"./node_modules/@apollo/client/utilities/globals/DEV.js\");\n/* harmony import */ var _fix_graphql_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fix-graphql.js */ \"./node_modules/@apollo/client/utilities/globals/fix-graphql.js\");\n/* harmony import */ var _maybe_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./maybe.js */ \"./node_modules/@apollo/client/utilities/globals/maybe.js\");\n/* harmony import */ var _global_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./global.js */ \"./node_modules/@apollo/client/utilities/globals/global.js\");\n\n\n\nfunction checkDEV() {\n    __DEV__ ? (0,ts_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(\"boolean\" === typeof _DEV_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _DEV_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]) : (0,ts_invariant__WEBPACK_IMPORTED_MODULE_0__.invariant)(\"boolean\" === typeof _DEV_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], 36);\n}\n\n(0,_fix_graphql_js__WEBPACK_IMPORTED_MODULE_2__.removeTemporaryGlobals)();\n\n\n\ncheckDEV();\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2dsb2JhbHMvaW5kZXguanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBeUQ7QUFDOUI7QUFDWjtBQUNSO0FBQ1AsY0FBYyx1REFBUyxzQkFBc0IsK0NBQUcsRUFBRSwrQ0FBRyxJQUFJLHVEQUFTLHNCQUFzQiwrQ0FBRztBQUMzRjtBQUMwRDtBQUMxRCx1RUFBc0I7QUFDYTtBQUNhO0FBQ1g7QUFDckM7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2dsb2JhbHMvaW5kZXguanM/ZDc3YyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnZhcmlhbnQsIEludmFyaWFudEVycm9yIH0gZnJvbSBcInRzLWludmFyaWFudFwiO1xuaW1wb3J0IERFViBmcm9tIFwiLi9ERVYuanNcIjtcbmV4cG9ydCB7IERFViB9O1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrREVWKCkge1xuICAgIF9fREVWX18gPyBpbnZhcmlhbnQoXCJib29sZWFuXCIgPT09IHR5cGVvZiBERVYsIERFVikgOiBpbnZhcmlhbnQoXCJib29sZWFuXCIgPT09IHR5cGVvZiBERVYsIDM2KTtcbn1cbmltcG9ydCB7IHJlbW92ZVRlbXBvcmFyeUdsb2JhbHMgfSBmcm9tIFwiLi9maXgtZ3JhcGhxbC5qc1wiO1xucmVtb3ZlVGVtcG9yYXJ5R2xvYmFscygpO1xuZXhwb3J0IHsgbWF5YmUgfSBmcm9tIFwiLi9tYXliZS5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBnbG9iYWwgfSBmcm9tIFwiLi9nbG9iYWwuanNcIjtcbmV4cG9ydCB7IGludmFyaWFudCwgSW52YXJpYW50RXJyb3IgfTtcbmNoZWNrREVWKCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/globals/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/globals/maybe.js":
/*!****************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/globals/maybe.js ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"maybe\": function() { return /* binding */ maybe; }\n/* harmony export */ });\nfunction maybe(thunk) {\n    try {\n        return thunk();\n    }\n    catch (_a) { }\n}\n//# sourceMappingURL=maybe.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2dsb2JhbHMvbWF5YmUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC91dGlsaXRpZXMvZ2xvYmFscy9tYXliZS5qcz9kN2RjIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBtYXliZSh0aHVuaykge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB0aHVuaygpO1xuICAgIH1cbiAgICBjYXRjaCAoX2EpIHsgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bWF5YmUuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/globals/maybe.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/graphql/directives.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/graphql/directives.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getDirectiveNames\": function() { return /* binding */ getDirectiveNames; },\n/* harmony export */   \"getInclusionDirectives\": function() { return /* binding */ getInclusionDirectives; },\n/* harmony export */   \"hasClientExports\": function() { return /* binding */ hasClientExports; },\n/* harmony export */   \"hasDirectives\": function() { return /* binding */ hasDirectives; },\n/* harmony export */   \"shouldInclude\": function() { return /* binding */ shouldInclude; }\n/* harmony export */ });\n/* harmony import */ var _globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var graphql__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! graphql */ \"./node_modules/graphql/index.mjs\");\n\n\nfunction shouldInclude(_a, variables) {\n    var directives = _a.directives;\n    if (!directives || !directives.length) {\n        return true;\n    }\n    return getInclusionDirectives(directives).every(function (_a) {\n        var directive = _a.directive, ifArgument = _a.ifArgument;\n        var evaledValue = false;\n        if (ifArgument.value.kind === 'Variable') {\n            evaledValue = variables && variables[ifArgument.value.name.value];\n            __DEV__ ? (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(evaledValue !== void 0, \"Invalid variable referenced in @\".concat(directive.name.value, \" directive.\")) : (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(evaledValue !== void 0, 37);\n        }\n        else {\n            evaledValue = ifArgument.value.value;\n        }\n        return directive.name.value === 'skip' ? !evaledValue : evaledValue;\n    });\n}\nfunction getDirectiveNames(root) {\n    var names = [];\n    (0,graphql__WEBPACK_IMPORTED_MODULE_1__.visit)(root, {\n        Directive: function (node) {\n            names.push(node.name.value);\n        },\n    });\n    return names;\n}\nfunction hasDirectives(names, root) {\n    return getDirectiveNames(root).some(function (name) { return names.indexOf(name) > -1; });\n}\nfunction hasClientExports(document) {\n    return (document &&\n        hasDirectives(['client'], document) &&\n        hasDirectives(['export'], document));\n}\nfunction isInclusionDirective(_a) {\n    var value = _a.name.value;\n    return value === 'skip' || value === 'include';\n}\nfunction getInclusionDirectives(directives) {\n    var result = [];\n    if (directives && directives.length) {\n        directives.forEach(function (directive) {\n            if (!isInclusionDirective(directive))\n                return;\n            var directiveArguments = directive.arguments;\n            var directiveName = directive.name.value;\n            __DEV__ ? (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(directiveArguments && directiveArguments.length === 1, \"Incorrect number of arguments for the @\".concat(directiveName, \" directive.\")) : (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(directiveArguments && directiveArguments.length === 1, 38);\n            var ifArgument = directiveArguments[0];\n            __DEV__ ? (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(ifArgument.name && ifArgument.name.value === 'if', \"Invalid argument for the @\".concat(directiveName, \" directive.\")) : (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(ifArgument.name && ifArgument.name.value === 'if', 39);\n            var ifValue = ifArgument.value;\n            __DEV__ ? (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(ifValue &&\n                (ifValue.kind === 'Variable' || ifValue.kind === 'BooleanValue'), \"Argument for the @\".concat(directiveName, \" directive must be a variable or a boolean value.\")) : (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(ifValue &&\n                (ifValue.kind === 'Variable' || ifValue.kind === 'BooleanValue'), 40);\n            result.push({ directive: directive, ifArgument: ifArgument });\n        });\n    }\n    return result;\n}\n//# sourceMappingURL=directives.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2dyYXBocWwvZGlyZWN0aXZlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQWdEO0FBQ2Y7QUFDMUI7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsNERBQVMsMkdBQTJHLDREQUFTO0FBQ25KO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDTztBQUNQO0FBQ0EsSUFBSSw4Q0FBSztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQLDBEQUEwRCxrQ0FBa0M7QUFDNUY7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDREQUFTLDBJQUEwSSw0REFBUztBQUNsTDtBQUNBLHNCQUFzQiw0REFBUyx5SEFBeUgsNERBQVM7QUFDaks7QUFDQSxzQkFBc0IsNERBQVM7QUFDL0IscUxBQXFMLDREQUFTO0FBQzlMO0FBQ0EsMEJBQTBCLDhDQUE4QztBQUN4RSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L3V0aWxpdGllcy9ncmFwaHFsL2RpcmVjdGl2ZXMuanM/MmNmMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tIFwiLi4vZ2xvYmFscy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgdmlzaXQsIH0gZnJvbSAnZ3JhcGhxbCc7XG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkSW5jbHVkZShfYSwgdmFyaWFibGVzKSB7XG4gICAgdmFyIGRpcmVjdGl2ZXMgPSBfYS5kaXJlY3RpdmVzO1xuICAgIGlmICghZGlyZWN0aXZlcyB8fCAhZGlyZWN0aXZlcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBnZXRJbmNsdXNpb25EaXJlY3RpdmVzKGRpcmVjdGl2ZXMpLmV2ZXJ5KGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgZGlyZWN0aXZlID0gX2EuZGlyZWN0aXZlLCBpZkFyZ3VtZW50ID0gX2EuaWZBcmd1bWVudDtcbiAgICAgICAgdmFyIGV2YWxlZFZhbHVlID0gZmFsc2U7XG4gICAgICAgIGlmIChpZkFyZ3VtZW50LnZhbHVlLmtpbmQgPT09ICdWYXJpYWJsZScpIHtcbiAgICAgICAgICAgIGV2YWxlZFZhbHVlID0gdmFyaWFibGVzICYmIHZhcmlhYmxlc1tpZkFyZ3VtZW50LnZhbHVlLm5hbWUudmFsdWVdO1xuICAgICAgICAgICAgX19ERVZfXyA/IGludmFyaWFudChldmFsZWRWYWx1ZSAhPT0gdm9pZCAwLCBcIkludmFsaWQgdmFyaWFibGUgcmVmZXJlbmNlZCBpbiBAXCIuY29uY2F0KGRpcmVjdGl2ZS5uYW1lLnZhbHVlLCBcIiBkaXJlY3RpdmUuXCIpKSA6IGludmFyaWFudChldmFsZWRWYWx1ZSAhPT0gdm9pZCAwLCAzNyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBldmFsZWRWYWx1ZSA9IGlmQXJndW1lbnQudmFsdWUudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpcmVjdGl2ZS5uYW1lLnZhbHVlID09PSAnc2tpcCcgPyAhZXZhbGVkVmFsdWUgOiBldmFsZWRWYWx1ZTtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXJlY3RpdmVOYW1lcyhyb290KSB7XG4gICAgdmFyIG5hbWVzID0gW107XG4gICAgdmlzaXQocm9vdCwge1xuICAgICAgICBEaXJlY3RpdmU6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICBuYW1lcy5wdXNoKG5vZGUubmFtZS52YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIG5hbWVzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGhhc0RpcmVjdGl2ZXMobmFtZXMsIHJvb3QpIHtcbiAgICByZXR1cm4gZ2V0RGlyZWN0aXZlTmFtZXMocm9vdCkuc29tZShmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gbmFtZXMuaW5kZXhPZihuYW1lKSA+IC0xOyB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBoYXNDbGllbnRFeHBvcnRzKGRvY3VtZW50KSB7XG4gICAgcmV0dXJuIChkb2N1bWVudCAmJlxuICAgICAgICBoYXNEaXJlY3RpdmVzKFsnY2xpZW50J10sIGRvY3VtZW50KSAmJlxuICAgICAgICBoYXNEaXJlY3RpdmVzKFsnZXhwb3J0J10sIGRvY3VtZW50KSk7XG59XG5mdW5jdGlvbiBpc0luY2x1c2lvbkRpcmVjdGl2ZShfYSkge1xuICAgIHZhciB2YWx1ZSA9IF9hLm5hbWUudmFsdWU7XG4gICAgcmV0dXJuIHZhbHVlID09PSAnc2tpcCcgfHwgdmFsdWUgPT09ICdpbmNsdWRlJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbmNsdXNpb25EaXJlY3RpdmVzKGRpcmVjdGl2ZXMpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgaWYgKGRpcmVjdGl2ZXMgJiYgZGlyZWN0aXZlcy5sZW5ndGgpIHtcbiAgICAgICAgZGlyZWN0aXZlcy5mb3JFYWNoKGZ1bmN0aW9uIChkaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIGlmICghaXNJbmNsdXNpb25EaXJlY3RpdmUoZGlyZWN0aXZlKSlcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB2YXIgZGlyZWN0aXZlQXJndW1lbnRzID0gZGlyZWN0aXZlLmFyZ3VtZW50cztcbiAgICAgICAgICAgIHZhciBkaXJlY3RpdmVOYW1lID0gZGlyZWN0aXZlLm5hbWUudmFsdWU7XG4gICAgICAgICAgICBfX0RFVl9fID8gaW52YXJpYW50KGRpcmVjdGl2ZUFyZ3VtZW50cyAmJiBkaXJlY3RpdmVBcmd1bWVudHMubGVuZ3RoID09PSAxLCBcIkluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciB0aGUgQFwiLmNvbmNhdChkaXJlY3RpdmVOYW1lLCBcIiBkaXJlY3RpdmUuXCIpKSA6IGludmFyaWFudChkaXJlY3RpdmVBcmd1bWVudHMgJiYgZGlyZWN0aXZlQXJndW1lbnRzLmxlbmd0aCA9PT0gMSwgMzgpO1xuICAgICAgICAgICAgdmFyIGlmQXJndW1lbnQgPSBkaXJlY3RpdmVBcmd1bWVudHNbMF07XG4gICAgICAgICAgICBfX0RFVl9fID8gaW52YXJpYW50KGlmQXJndW1lbnQubmFtZSAmJiBpZkFyZ3VtZW50Lm5hbWUudmFsdWUgPT09ICdpZicsIFwiSW52YWxpZCBhcmd1bWVudCBmb3IgdGhlIEBcIi5jb25jYXQoZGlyZWN0aXZlTmFtZSwgXCIgZGlyZWN0aXZlLlwiKSkgOiBpbnZhcmlhbnQoaWZBcmd1bWVudC5uYW1lICYmIGlmQXJndW1lbnQubmFtZS52YWx1ZSA9PT0gJ2lmJywgMzkpO1xuICAgICAgICAgICAgdmFyIGlmVmFsdWUgPSBpZkFyZ3VtZW50LnZhbHVlO1xuICAgICAgICAgICAgX19ERVZfXyA/IGludmFyaWFudChpZlZhbHVlICYmXG4gICAgICAgICAgICAgICAgKGlmVmFsdWUua2luZCA9PT0gJ1ZhcmlhYmxlJyB8fCBpZlZhbHVlLmtpbmQgPT09ICdCb29sZWFuVmFsdWUnKSwgXCJBcmd1bWVudCBmb3IgdGhlIEBcIi5jb25jYXQoZGlyZWN0aXZlTmFtZSwgXCIgZGlyZWN0aXZlIG11c3QgYmUgYSB2YXJpYWJsZSBvciBhIGJvb2xlYW4gdmFsdWUuXCIpKSA6IGludmFyaWFudChpZlZhbHVlICYmXG4gICAgICAgICAgICAgICAgKGlmVmFsdWUua2luZCA9PT0gJ1ZhcmlhYmxlJyB8fCBpZlZhbHVlLmtpbmQgPT09ICdCb29sZWFuVmFsdWUnKSwgNDApO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goeyBkaXJlY3RpdmU6IGRpcmVjdGl2ZSwgaWZBcmd1bWVudDogaWZBcmd1bWVudCB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kaXJlY3RpdmVzLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/graphql/directives.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/graphql/fragments.js":
/*!********************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/graphql/fragments.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createFragmentMap\": function() { return /* binding */ createFragmentMap; },\n/* harmony export */   \"getFragmentFromSelection\": function() { return /* binding */ getFragmentFromSelection; },\n/* harmony export */   \"getFragmentQueryDocument\": function() { return /* binding */ getFragmentQueryDocument; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n\n\nfunction getFragmentQueryDocument(document, fragmentName) {\n    var actualFragmentName = fragmentName;\n    var fragments = [];\n    document.definitions.forEach(function (definition) {\n        if (definition.kind === 'OperationDefinition') {\n            throw __DEV__ ? new _globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(\"Found a \".concat(definition.operation, \" operation\").concat(definition.name ? \" named '\".concat(definition.name.value, \"'\") : '', \". \") +\n                'No operations are allowed when using a fragment as a query. Only fragments are allowed.') : new _globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(41);\n        }\n        if (definition.kind === 'FragmentDefinition') {\n            fragments.push(definition);\n        }\n    });\n    if (typeof actualFragmentName === 'undefined') {\n        __DEV__ ? (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(fragments.length === 1, \"Found \".concat(fragments.length, \" fragments. `fragmentName` must be provided when there is not exactly 1 fragment.\")) : (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(fragments.length === 1, 42);\n        actualFragmentName = fragments[0].name.value;\n    }\n    var query = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, document), { definitions: (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__spreadArray)([\n            {\n                kind: 'OperationDefinition',\n                operation: 'query',\n                selectionSet: {\n                    kind: 'SelectionSet',\n                    selections: [\n                        {\n                            kind: 'FragmentSpread',\n                            name: {\n                                kind: 'Name',\n                                value: actualFragmentName,\n                            },\n                        },\n                    ],\n                },\n            }\n        ], document.definitions, true) });\n    return query;\n}\nfunction createFragmentMap(fragments) {\n    if (fragments === void 0) { fragments = []; }\n    var symTable = {};\n    fragments.forEach(function (fragment) {\n        symTable[fragment.name.value] = fragment;\n    });\n    return symTable;\n}\nfunction getFragmentFromSelection(selection, fragmentMap) {\n    switch (selection.kind) {\n        case 'InlineFragment':\n            return selection;\n        case 'FragmentSpread': {\n            var fragment = fragmentMap && fragmentMap[selection.name.value];\n            __DEV__ ? (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(fragment, \"No fragment named \".concat(selection.name.value, \".\")) : (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(fragment, 43);\n            return fragment;\n        }\n        default:\n            return null;\n    }\n}\n//# sourceMappingURL=fragments.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2dyYXBocWwvZnJhZ21lbnRzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQWdEO0FBQ2dCO0FBQ3pEO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsNkRBQWM7QUFDOUMsaUhBQWlILDZEQUFjO0FBQy9IO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0Esa0JBQWtCLDREQUFTLG1KQUFtSiw0REFBUztBQUN2TDtBQUNBO0FBQ0EsZ0JBQWdCLCtDQUFRLENBQUMsK0NBQVEsR0FBRyxlQUFlLGFBQWEsb0RBQWE7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3Qix5QkFBeUI7QUFDekI7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNPO0FBQ1AsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDREQUFTLHFFQUFxRSw0REFBUztBQUM3RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2dyYXBocWwvZnJhZ21lbnRzLmpzP2M0MTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGludmFyaWFudCwgSW52YXJpYW50RXJyb3IgfSBmcm9tIFwiLi4vZ2xvYmFscy9pbmRleC5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZyYWdtZW50UXVlcnlEb2N1bWVudChkb2N1bWVudCwgZnJhZ21lbnROYW1lKSB7XG4gICAgdmFyIGFjdHVhbEZyYWdtZW50TmFtZSA9IGZyYWdtZW50TmFtZTtcbiAgICB2YXIgZnJhZ21lbnRzID0gW107XG4gICAgZG9jdW1lbnQuZGVmaW5pdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAoZGVmaW5pdGlvbikge1xuICAgICAgICBpZiAoZGVmaW5pdGlvbi5raW5kID09PSAnT3BlcmF0aW9uRGVmaW5pdGlvbicpIHtcbiAgICAgICAgICAgIHRocm93IF9fREVWX18gPyBuZXcgSW52YXJpYW50RXJyb3IoXCJGb3VuZCBhIFwiLmNvbmNhdChkZWZpbml0aW9uLm9wZXJhdGlvbiwgXCIgb3BlcmF0aW9uXCIpLmNvbmNhdChkZWZpbml0aW9uLm5hbWUgPyBcIiBuYW1lZCAnXCIuY29uY2F0KGRlZmluaXRpb24ubmFtZS52YWx1ZSwgXCInXCIpIDogJycsIFwiLiBcIikgK1xuICAgICAgICAgICAgICAgICdObyBvcGVyYXRpb25zIGFyZSBhbGxvd2VkIHdoZW4gdXNpbmcgYSBmcmFnbWVudCBhcyBhIHF1ZXJ5LiBPbmx5IGZyYWdtZW50cyBhcmUgYWxsb3dlZC4nKSA6IG5ldyBJbnZhcmlhbnRFcnJvcig0MSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZmluaXRpb24ua2luZCA9PT0gJ0ZyYWdtZW50RGVmaW5pdGlvbicpIHtcbiAgICAgICAgICAgIGZyYWdtZW50cy5wdXNoKGRlZmluaXRpb24pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHR5cGVvZiBhY3R1YWxGcmFnbWVudE5hbWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIF9fREVWX18gPyBpbnZhcmlhbnQoZnJhZ21lbnRzLmxlbmd0aCA9PT0gMSwgXCJGb3VuZCBcIi5jb25jYXQoZnJhZ21lbnRzLmxlbmd0aCwgXCIgZnJhZ21lbnRzLiBgZnJhZ21lbnROYW1lYCBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gdGhlcmUgaXMgbm90IGV4YWN0bHkgMSBmcmFnbWVudC5cIikpIDogaW52YXJpYW50KGZyYWdtZW50cy5sZW5ndGggPT09IDEsIDQyKTtcbiAgICAgICAgYWN0dWFsRnJhZ21lbnROYW1lID0gZnJhZ21lbnRzWzBdLm5hbWUudmFsdWU7XG4gICAgfVxuICAgIHZhciBxdWVyeSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBkb2N1bWVudCksIHsgZGVmaW5pdGlvbnM6IF9fc3ByZWFkQXJyYXkoW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdPcGVyYXRpb25EZWZpbml0aW9uJyxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246ICdxdWVyeScsXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uU2V0OiB7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdTZWxlY3Rpb25TZXQnLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogJ0ZyYWdtZW50U3ByZWFkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdOYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGFjdHVhbEZyYWdtZW50TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICBdLCBkb2N1bWVudC5kZWZpbml0aW9ucywgdHJ1ZSkgfSk7XG4gICAgcmV0dXJuIHF1ZXJ5O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZyYWdtZW50TWFwKGZyYWdtZW50cykge1xuICAgIGlmIChmcmFnbWVudHMgPT09IHZvaWQgMCkgeyBmcmFnbWVudHMgPSBbXTsgfVxuICAgIHZhciBzeW1UYWJsZSA9IHt9O1xuICAgIGZyYWdtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChmcmFnbWVudCkge1xuICAgICAgICBzeW1UYWJsZVtmcmFnbWVudC5uYW1lLnZhbHVlXSA9IGZyYWdtZW50O1xuICAgIH0pO1xuICAgIHJldHVybiBzeW1UYWJsZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRGcmFnbWVudEZyb21TZWxlY3Rpb24oc2VsZWN0aW9uLCBmcmFnbWVudE1hcCkge1xuICAgIHN3aXRjaCAoc2VsZWN0aW9uLmtpbmQpIHtcbiAgICAgICAgY2FzZSAnSW5saW5lRnJhZ21lbnQnOlxuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgICAgICAgY2FzZSAnRnJhZ21lbnRTcHJlYWQnOiB7XG4gICAgICAgICAgICB2YXIgZnJhZ21lbnQgPSBmcmFnbWVudE1hcCAmJiBmcmFnbWVudE1hcFtzZWxlY3Rpb24ubmFtZS52YWx1ZV07XG4gICAgICAgICAgICBfX0RFVl9fID8gaW52YXJpYW50KGZyYWdtZW50LCBcIk5vIGZyYWdtZW50IG5hbWVkIFwiLmNvbmNhdChzZWxlY3Rpb24ubmFtZS52YWx1ZSwgXCIuXCIpKSA6IGludmFyaWFudChmcmFnbWVudCwgNDMpO1xuICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50O1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1mcmFnbWVudHMuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/graphql/fragments.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/graphql/getFromAST.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/graphql/getFromAST.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"checkDocument\": function() { return /* binding */ checkDocument; },\n/* harmony export */   \"getDefaultValues\": function() { return /* binding */ getDefaultValues; },\n/* harmony export */   \"getFragmentDefinition\": function() { return /* binding */ getFragmentDefinition; },\n/* harmony export */   \"getFragmentDefinitions\": function() { return /* binding */ getFragmentDefinitions; },\n/* harmony export */   \"getMainDefinition\": function() { return /* binding */ getMainDefinition; },\n/* harmony export */   \"getOperationDefinition\": function() { return /* binding */ getOperationDefinition; },\n/* harmony export */   \"getOperationName\": function() { return /* binding */ getOperationName; },\n/* harmony export */   \"getQueryDefinition\": function() { return /* binding */ getQueryDefinition; }\n/* harmony export */ });\n/* harmony import */ var _globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _storeUtils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./storeUtils.js */ \"./node_modules/@apollo/client/utilities/graphql/storeUtils.js\");\n\n\nfunction checkDocument(doc) {\n    __DEV__ ? (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(doc && doc.kind === 'Document', \"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\") : (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(doc && doc.kind === 'Document', 44);\n    var operations = doc.definitions\n        .filter(function (d) { return d.kind !== 'FragmentDefinition'; })\n        .map(function (definition) {\n        if (definition.kind !== 'OperationDefinition') {\n            throw __DEV__ ? new _globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(\"Schema type definitions not allowed in queries. Found: \\\"\".concat(definition.kind, \"\\\"\")) : new _globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(45);\n        }\n        return definition;\n    });\n    __DEV__ ? (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(operations.length <= 1, \"Ambiguous GraphQL document: contains \".concat(operations.length, \" operations\")) : (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(operations.length <= 1, 46);\n    return doc;\n}\nfunction getOperationDefinition(doc) {\n    checkDocument(doc);\n    return doc.definitions.filter(function (definition) { return definition.kind === 'OperationDefinition'; })[0];\n}\nfunction getOperationName(doc) {\n    return (doc.definitions\n        .filter(function (definition) {\n        return definition.kind === 'OperationDefinition' && definition.name;\n    })\n        .map(function (x) { return x.name.value; })[0] || null);\n}\nfunction getFragmentDefinitions(doc) {\n    return doc.definitions.filter(function (definition) { return definition.kind === 'FragmentDefinition'; });\n}\nfunction getQueryDefinition(doc) {\n    var queryDef = getOperationDefinition(doc);\n    __DEV__ ? (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(queryDef && queryDef.operation === 'query', 'Must contain a query definition.') : (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(queryDef && queryDef.operation === 'query', 47);\n    return queryDef;\n}\nfunction getFragmentDefinition(doc) {\n    __DEV__ ? (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(doc.kind === 'Document', \"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\") : (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(doc.kind === 'Document', 48);\n    __DEV__ ? (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(doc.definitions.length <= 1, 'Fragment must have exactly one definition.') : (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(doc.definitions.length <= 1, 49);\n    var fragmentDef = doc.definitions[0];\n    __DEV__ ? (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(fragmentDef.kind === 'FragmentDefinition', 'Must be a fragment definition.') : (0,_globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant)(fragmentDef.kind === 'FragmentDefinition', 50);\n    return fragmentDef;\n}\nfunction getMainDefinition(queryDoc) {\n    checkDocument(queryDoc);\n    var fragmentDefinition;\n    for (var _i = 0, _a = queryDoc.definitions; _i < _a.length; _i++) {\n        var definition = _a[_i];\n        if (definition.kind === 'OperationDefinition') {\n            var operation = definition.operation;\n            if (operation === 'query' ||\n                operation === 'mutation' ||\n                operation === 'subscription') {\n                return definition;\n            }\n        }\n        if (definition.kind === 'FragmentDefinition' && !fragmentDefinition) {\n            fragmentDefinition = definition;\n        }\n    }\n    if (fragmentDefinition) {\n        return fragmentDefinition;\n    }\n    throw __DEV__ ? new _globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError('Expected a parsed GraphQL query with a query, mutation, subscription, or a fragment.') : new _globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(51);\n}\nfunction getDefaultValues(definition) {\n    var defaultValues = Object.create(null);\n    var defs = definition && definition.variableDefinitions;\n    if (defs && defs.length) {\n        defs.forEach(function (def) {\n            if (def.defaultValue) {\n                (0,_storeUtils_js__WEBPACK_IMPORTED_MODULE_1__.valueToObjectRepresentation)(defaultValues, def.variable.name, def.defaultValue);\n            }\n        });\n    }\n    return defaultValues;\n}\n//# sourceMappingURL=getFromAST.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2dyYXBocWwvZ2V0RnJvbUFTVC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQWdFO0FBQ0Y7QUFDdkQ7QUFDUCxjQUFjLDREQUFTLCtMQUErTCw0REFBUztBQUMvTjtBQUNBLCtCQUErQix5Q0FBeUM7QUFDeEU7QUFDQTtBQUNBLGdDQUFnQyw2REFBYyxrR0FBa0csNkRBQWM7QUFDOUo7QUFDQTtBQUNBLEtBQUs7QUFDTCxjQUFjLDREQUFTLDZHQUE2Ryw0REFBUztBQUM3STtBQUNBO0FBQ087QUFDUDtBQUNBLDBEQUEwRCxtREFBbUQ7QUFDN0c7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCw0QkFBNEIsc0JBQXNCO0FBQ2xEO0FBQ087QUFDUCwwREFBMEQsa0RBQWtEO0FBQzVHO0FBQ087QUFDUDtBQUNBLGNBQWMsNERBQVMsbUZBQW1GLDREQUFTO0FBQ25IO0FBQ0E7QUFDTztBQUNQLGNBQWMsNERBQVMsd0xBQXdMLDREQUFTO0FBQ3hOLGNBQWMsNERBQVMsOEVBQThFLDREQUFTO0FBQzlHO0FBQ0EsY0FBYyw0REFBUyxnRkFBZ0YsNERBQVM7QUFDaEg7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLGdEQUFnRCxnQkFBZ0I7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsNkRBQWMsK0ZBQStGLDZEQUFjO0FBQ25KO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDJFQUEyQjtBQUMzQztBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2dyYXBocWwvZ2V0RnJvbUFTVC5qcz9lMTJkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGludmFyaWFudCwgSW52YXJpYW50RXJyb3IgfSBmcm9tIFwiLi4vZ2xvYmFscy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgdmFsdWVUb09iamVjdFJlcHJlc2VudGF0aW9uIH0gZnJvbSBcIi4vc3RvcmVVdGlscy5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrRG9jdW1lbnQoZG9jKSB7XG4gICAgX19ERVZfXyA/IGludmFyaWFudChkb2MgJiYgZG9jLmtpbmQgPT09ICdEb2N1bWVudCcsIFwiRXhwZWN0aW5nIGEgcGFyc2VkIEdyYXBoUUwgZG9jdW1lbnQuIFBlcmhhcHMgeW91IG5lZWQgdG8gd3JhcCB0aGUgcXVlcnkgc3RyaW5nIGluIGEgXFxcImdxbFxcXCIgdGFnPyBodHRwOi8vZG9jcy5hcG9sbG9zdGFjay5jb20vYXBvbGxvLWNsaWVudC9jb3JlLmh0bWwjZ3FsXCIpIDogaW52YXJpYW50KGRvYyAmJiBkb2Mua2luZCA9PT0gJ0RvY3VtZW50JywgNDQpO1xuICAgIHZhciBvcGVyYXRpb25zID0gZG9jLmRlZmluaXRpb25zXG4gICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGQua2luZCAhPT0gJ0ZyYWdtZW50RGVmaW5pdGlvbic7IH0pXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKGRlZmluaXRpb24pIHtcbiAgICAgICAgaWYgKGRlZmluaXRpb24ua2luZCAhPT0gJ09wZXJhdGlvbkRlZmluaXRpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBfX0RFVl9fID8gbmV3IEludmFyaWFudEVycm9yKFwiU2NoZW1hIHR5cGUgZGVmaW5pdGlvbnMgbm90IGFsbG93ZWQgaW4gcXVlcmllcy4gRm91bmQ6IFxcXCJcIi5jb25jYXQoZGVmaW5pdGlvbi5raW5kLCBcIlxcXCJcIikpIDogbmV3IEludmFyaWFudEVycm9yKDQ1KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgICB9KTtcbiAgICBfX0RFVl9fID8gaW52YXJpYW50KG9wZXJhdGlvbnMubGVuZ3RoIDw9IDEsIFwiQW1iaWd1b3VzIEdyYXBoUUwgZG9jdW1lbnQ6IGNvbnRhaW5zIFwiLmNvbmNhdChvcGVyYXRpb25zLmxlbmd0aCwgXCIgb3BlcmF0aW9uc1wiKSkgOiBpbnZhcmlhbnQob3BlcmF0aW9ucy5sZW5ndGggPD0gMSwgNDYpO1xuICAgIHJldHVybiBkb2M7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0T3BlcmF0aW9uRGVmaW5pdGlvbihkb2MpIHtcbiAgICBjaGVja0RvY3VtZW50KGRvYyk7XG4gICAgcmV0dXJuIGRvYy5kZWZpbml0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKGRlZmluaXRpb24pIHsgcmV0dXJuIGRlZmluaXRpb24ua2luZCA9PT0gJ09wZXJhdGlvbkRlZmluaXRpb24nOyB9KVswXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcGVyYXRpb25OYW1lKGRvYykge1xuICAgIHJldHVybiAoZG9jLmRlZmluaXRpb25zXG4gICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKGRlZmluaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb24ua2luZCA9PT0gJ09wZXJhdGlvbkRlZmluaXRpb24nICYmIGRlZmluaXRpb24ubmFtZTtcbiAgICB9KVxuICAgICAgICAubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4Lm5hbWUudmFsdWU7IH0pWzBdIHx8IG51bGwpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEZyYWdtZW50RGVmaW5pdGlvbnMoZG9jKSB7XG4gICAgcmV0dXJuIGRvYy5kZWZpbml0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKGRlZmluaXRpb24pIHsgcmV0dXJuIGRlZmluaXRpb24ua2luZCA9PT0gJ0ZyYWdtZW50RGVmaW5pdGlvbic7IH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFF1ZXJ5RGVmaW5pdGlvbihkb2MpIHtcbiAgICB2YXIgcXVlcnlEZWYgPSBnZXRPcGVyYXRpb25EZWZpbml0aW9uKGRvYyk7XG4gICAgX19ERVZfXyA/IGludmFyaWFudChxdWVyeURlZiAmJiBxdWVyeURlZi5vcGVyYXRpb24gPT09ICdxdWVyeScsICdNdXN0IGNvbnRhaW4gYSBxdWVyeSBkZWZpbml0aW9uLicpIDogaW52YXJpYW50KHF1ZXJ5RGVmICYmIHF1ZXJ5RGVmLm9wZXJhdGlvbiA9PT0gJ3F1ZXJ5JywgNDcpO1xuICAgIHJldHVybiBxdWVyeURlZjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRGcmFnbWVudERlZmluaXRpb24oZG9jKSB7XG4gICAgX19ERVZfXyA/IGludmFyaWFudChkb2Mua2luZCA9PT0gJ0RvY3VtZW50JywgXCJFeHBlY3RpbmcgYSBwYXJzZWQgR3JhcGhRTCBkb2N1bWVudC4gUGVyaGFwcyB5b3UgbmVlZCB0byB3cmFwIHRoZSBxdWVyeSBzdHJpbmcgaW4gYSBcXFwiZ3FsXFxcIiB0YWc/IGh0dHA6Ly9kb2NzLmFwb2xsb3N0YWNrLmNvbS9hcG9sbG8tY2xpZW50L2NvcmUuaHRtbCNncWxcIikgOiBpbnZhcmlhbnQoZG9jLmtpbmQgPT09ICdEb2N1bWVudCcsIDQ4KTtcbiAgICBfX0RFVl9fID8gaW52YXJpYW50KGRvYy5kZWZpbml0aW9ucy5sZW5ndGggPD0gMSwgJ0ZyYWdtZW50IG11c3QgaGF2ZSBleGFjdGx5IG9uZSBkZWZpbml0aW9uLicpIDogaW52YXJpYW50KGRvYy5kZWZpbml0aW9ucy5sZW5ndGggPD0gMSwgNDkpO1xuICAgIHZhciBmcmFnbWVudERlZiA9IGRvYy5kZWZpbml0aW9uc1swXTtcbiAgICBfX0RFVl9fID8gaW52YXJpYW50KGZyYWdtZW50RGVmLmtpbmQgPT09ICdGcmFnbWVudERlZmluaXRpb24nLCAnTXVzdCBiZSBhIGZyYWdtZW50IGRlZmluaXRpb24uJykgOiBpbnZhcmlhbnQoZnJhZ21lbnREZWYua2luZCA9PT0gJ0ZyYWdtZW50RGVmaW5pdGlvbicsIDUwKTtcbiAgICByZXR1cm4gZnJhZ21lbnREZWY7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFpbkRlZmluaXRpb24ocXVlcnlEb2MpIHtcbiAgICBjaGVja0RvY3VtZW50KHF1ZXJ5RG9jKTtcbiAgICB2YXIgZnJhZ21lbnREZWZpbml0aW9uO1xuICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSBxdWVyeURvYy5kZWZpbml0aW9uczsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGRlZmluaXRpb24gPSBfYVtfaV07XG4gICAgICAgIGlmIChkZWZpbml0aW9uLmtpbmQgPT09ICdPcGVyYXRpb25EZWZpbml0aW9uJykge1xuICAgICAgICAgICAgdmFyIG9wZXJhdGlvbiA9IGRlZmluaXRpb24ub3BlcmF0aW9uO1xuICAgICAgICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJ3F1ZXJ5JyB8fFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9PT0gJ211dGF0aW9uJyB8fFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9PT0gJ3N1YnNjcmlwdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVmaW5pdGlvbi5raW5kID09PSAnRnJhZ21lbnREZWZpbml0aW9uJyAmJiAhZnJhZ21lbnREZWZpbml0aW9uKSB7XG4gICAgICAgICAgICBmcmFnbWVudERlZmluaXRpb24gPSBkZWZpbml0aW9uO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChmcmFnbWVudERlZmluaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIGZyYWdtZW50RGVmaW5pdGlvbjtcbiAgICB9XG4gICAgdGhyb3cgX19ERVZfXyA/IG5ldyBJbnZhcmlhbnRFcnJvcignRXhwZWN0ZWQgYSBwYXJzZWQgR3JhcGhRTCBxdWVyeSB3aXRoIGEgcXVlcnksIG11dGF0aW9uLCBzdWJzY3JpcHRpb24sIG9yIGEgZnJhZ21lbnQuJykgOiBuZXcgSW52YXJpYW50RXJyb3IoNTEpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRWYWx1ZXMoZGVmaW5pdGlvbikge1xuICAgIHZhciBkZWZhdWx0VmFsdWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB2YXIgZGVmcyA9IGRlZmluaXRpb24gJiYgZGVmaW5pdGlvbi52YXJpYWJsZURlZmluaXRpb25zO1xuICAgIGlmIChkZWZzICYmIGRlZnMubGVuZ3RoKSB7XG4gICAgICAgIGRlZnMuZm9yRWFjaChmdW5jdGlvbiAoZGVmKSB7XG4gICAgICAgICAgICBpZiAoZGVmLmRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIHZhbHVlVG9PYmplY3RSZXByZXNlbnRhdGlvbihkZWZhdWx0VmFsdWVzLCBkZWYudmFyaWFibGUubmFtZSwgZGVmLmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWdldEZyb21BU1QuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/graphql/getFromAST.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/graphql/storeUtils.js":
/*!*********************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/graphql/storeUtils.js ***!
  \*********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"argumentsObjectFromField\": function() { return /* binding */ argumentsObjectFromField; },\n/* harmony export */   \"getStoreKeyName\": function() { return /* binding */ getStoreKeyName; },\n/* harmony export */   \"getTypenameFromResult\": function() { return /* binding */ getTypenameFromResult; },\n/* harmony export */   \"isDocumentNode\": function() { return /* binding */ isDocumentNode; },\n/* harmony export */   \"isField\": function() { return /* binding */ isField; },\n/* harmony export */   \"isInlineFragment\": function() { return /* binding */ isInlineFragment; },\n/* harmony export */   \"isReference\": function() { return /* binding */ isReference; },\n/* harmony export */   \"makeReference\": function() { return /* binding */ makeReference; },\n/* harmony export */   \"resultKeyNameFromField\": function() { return /* binding */ resultKeyNameFromField; },\n/* harmony export */   \"storeKeyNameFromField\": function() { return /* binding */ storeKeyNameFromField; },\n/* harmony export */   \"valueToObjectRepresentation\": function() { return /* binding */ valueToObjectRepresentation; }\n/* harmony export */ });\n/* harmony import */ var _globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _common_objects_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/objects.js */ \"./node_modules/@apollo/client/utilities/common/objects.js\");\n/* harmony import */ var _fragments_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fragments.js */ \"./node_modules/@apollo/client/utilities/graphql/fragments.js\");\n\n\n\nfunction makeReference(id) {\n    return { __ref: String(id) };\n}\nfunction isReference(obj) {\n    return Boolean(obj && typeof obj === 'object' && typeof obj.__ref === 'string');\n}\nfunction isDocumentNode(value) {\n    return ((0,_common_objects_js__WEBPACK_IMPORTED_MODULE_1__.isNonNullObject)(value) &&\n        value.kind === \"Document\" &&\n        Array.isArray(value.definitions));\n}\nfunction isStringValue(value) {\n    return value.kind === 'StringValue';\n}\nfunction isBooleanValue(value) {\n    return value.kind === 'BooleanValue';\n}\nfunction isIntValue(value) {\n    return value.kind === 'IntValue';\n}\nfunction isFloatValue(value) {\n    return value.kind === 'FloatValue';\n}\nfunction isVariable(value) {\n    return value.kind === 'Variable';\n}\nfunction isObjectValue(value) {\n    return value.kind === 'ObjectValue';\n}\nfunction isListValue(value) {\n    return value.kind === 'ListValue';\n}\nfunction isEnumValue(value) {\n    return value.kind === 'EnumValue';\n}\nfunction isNullValue(value) {\n    return value.kind === 'NullValue';\n}\nfunction valueToObjectRepresentation(argObj, name, value, variables) {\n    if (isIntValue(value) || isFloatValue(value)) {\n        argObj[name.value] = Number(value.value);\n    }\n    else if (isBooleanValue(value) || isStringValue(value)) {\n        argObj[name.value] = value.value;\n    }\n    else if (isObjectValue(value)) {\n        var nestedArgObj_1 = {};\n        value.fields.map(function (obj) {\n            return valueToObjectRepresentation(nestedArgObj_1, obj.name, obj.value, variables);\n        });\n        argObj[name.value] = nestedArgObj_1;\n    }\n    else if (isVariable(value)) {\n        var variableValue = (variables || {})[value.name.value];\n        argObj[name.value] = variableValue;\n    }\n    else if (isListValue(value)) {\n        argObj[name.value] = value.values.map(function (listValue) {\n            var nestedArgArrayObj = {};\n            valueToObjectRepresentation(nestedArgArrayObj, name, listValue, variables);\n            return nestedArgArrayObj[name.value];\n        });\n    }\n    else if (isEnumValue(value)) {\n        argObj[name.value] = value.value;\n    }\n    else if (isNullValue(value)) {\n        argObj[name.value] = null;\n    }\n    else {\n        throw __DEV__ ? new _globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(\"The inline argument \\\"\".concat(name.value, \"\\\" of kind \\\"\").concat(value.kind, \"\\\"\") +\n            'is not supported. Use variables instead of inline arguments to ' +\n            'overcome this limitation.') : new _globals_index_js__WEBPACK_IMPORTED_MODULE_0__.InvariantError(52);\n    }\n}\nfunction storeKeyNameFromField(field, variables) {\n    var directivesObj = null;\n    if (field.directives) {\n        directivesObj = {};\n        field.directives.forEach(function (directive) {\n            directivesObj[directive.name.value] = {};\n            if (directive.arguments) {\n                directive.arguments.forEach(function (_a) {\n                    var name = _a.name, value = _a.value;\n                    return valueToObjectRepresentation(directivesObj[directive.name.value], name, value, variables);\n                });\n            }\n        });\n    }\n    var argObj = null;\n    if (field.arguments && field.arguments.length) {\n        argObj = {};\n        field.arguments.forEach(function (_a) {\n            var name = _a.name, value = _a.value;\n            return valueToObjectRepresentation(argObj, name, value, variables);\n        });\n    }\n    return getStoreKeyName(field.name.value, argObj, directivesObj);\n}\nvar KNOWN_DIRECTIVES = [\n    'connection',\n    'include',\n    'skip',\n    'client',\n    'rest',\n    'export',\n];\nvar getStoreKeyName = Object.assign(function (fieldName, args, directives) {\n    if (args &&\n        directives &&\n        directives['connection'] &&\n        directives['connection']['key']) {\n        if (directives['connection']['filter'] &&\n            directives['connection']['filter'].length > 0) {\n            var filterKeys = directives['connection']['filter']\n                ? directives['connection']['filter']\n                : [];\n            filterKeys.sort();\n            var filteredArgs_1 = {};\n            filterKeys.forEach(function (key) {\n                filteredArgs_1[key] = args[key];\n            });\n            return \"\".concat(directives['connection']['key'], \"(\").concat(stringify(filteredArgs_1), \")\");\n        }\n        else {\n            return directives['connection']['key'];\n        }\n    }\n    var completeFieldName = fieldName;\n    if (args) {\n        var stringifiedArgs = stringify(args);\n        completeFieldName += \"(\".concat(stringifiedArgs, \")\");\n    }\n    if (directives) {\n        Object.keys(directives).forEach(function (key) {\n            if (KNOWN_DIRECTIVES.indexOf(key) !== -1)\n                return;\n            if (directives[key] && Object.keys(directives[key]).length) {\n                completeFieldName += \"@\".concat(key, \"(\").concat(stringify(directives[key]), \")\");\n            }\n            else {\n                completeFieldName += \"@\".concat(key);\n            }\n        });\n    }\n    return completeFieldName;\n}, {\n    setStringify: function (s) {\n        var previous = stringify;\n        stringify = s;\n        return previous;\n    },\n});\nvar stringify = function defaultStringify(value) {\n    return JSON.stringify(value, stringifyReplacer);\n};\nfunction stringifyReplacer(_key, value) {\n    if ((0,_common_objects_js__WEBPACK_IMPORTED_MODULE_1__.isNonNullObject)(value) && !Array.isArray(value)) {\n        value = Object.keys(value).sort().reduce(function (copy, key) {\n            copy[key] = value[key];\n            return copy;\n        }, {});\n    }\n    return value;\n}\nfunction argumentsObjectFromField(field, variables) {\n    if (field.arguments && field.arguments.length) {\n        var argObj_1 = {};\n        field.arguments.forEach(function (_a) {\n            var name = _a.name, value = _a.value;\n            return valueToObjectRepresentation(argObj_1, name, value, variables);\n        });\n        return argObj_1;\n    }\n    return null;\n}\nfunction resultKeyNameFromField(field) {\n    return field.alias ? field.alias.value : field.name.value;\n}\nfunction getTypenameFromResult(result, selectionSet, fragmentMap) {\n    if (typeof result.__typename === 'string') {\n        return result.__typename;\n    }\n    for (var _i = 0, _a = selectionSet.selections; _i < _a.length; _i++) {\n        var selection = _a[_i];\n        if (isField(selection)) {\n            if (selection.name.value === '__typename') {\n                return result[resultKeyNameFromField(selection)];\n            }\n        }\n        else {\n            var typename = getTypenameFromResult(result, (0,_fragments_js__WEBPACK_IMPORTED_MODULE_2__.getFragmentFromSelection)(selection, fragmentMap).selectionSet, fragmentMap);\n            if (typeof typename === 'string') {\n                return typename;\n            }\n        }\n    }\n}\nfunction isField(selection) {\n    return selection.kind === 'Field';\n}\nfunction isInlineFragment(selection) {\n    return selection.kind === 'InlineFragment';\n}\n//# sourceMappingURL=storeUtils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2dyYXBocWwvc3RvcmVVdGlscy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFxRDtBQUNFO0FBQ0c7QUFDbkQ7QUFDUCxhQUFhO0FBQ2I7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQLFlBQVksbUVBQWU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qiw2REFBYztBQUMxQztBQUNBLCtDQUErQyw2REFBYztBQUM3RDtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxtRUFBZTtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQUk7QUFDYjtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRCxnQkFBZ0I7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQsdUVBQXdCO0FBQ2pGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC91dGlsaXRpZXMvZ3JhcGhxbC9zdG9yZVV0aWxzLmpzP2YyYWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YXJpYW50RXJyb3IgfSBmcm9tIFwiLi4vZ2xvYmFscy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgaXNOb25OdWxsT2JqZWN0IH0gZnJvbSBcIi4uL2NvbW1vbi9vYmplY3RzLmpzXCI7XG5pbXBvcnQgeyBnZXRGcmFnbWVudEZyb21TZWxlY3Rpb24gfSBmcm9tIFwiLi9mcmFnbWVudHMuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBtYWtlUmVmZXJlbmNlKGlkKSB7XG4gICAgcmV0dXJuIHsgX19yZWY6IFN0cmluZyhpZCkgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZmVyZW5jZShvYmopIHtcbiAgICByZXR1cm4gQm9vbGVhbihvYmogJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG9iai5fX3JlZiA9PT0gJ3N0cmluZycpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRG9jdW1lbnROb2RlKHZhbHVlKSB7XG4gICAgcmV0dXJuIChpc05vbk51bGxPYmplY3QodmFsdWUpICYmXG4gICAgICAgIHZhbHVlLmtpbmQgPT09IFwiRG9jdW1lbnRcIiAmJlxuICAgICAgICBBcnJheS5pc0FycmF5KHZhbHVlLmRlZmluaXRpb25zKSk7XG59XG5mdW5jdGlvbiBpc1N0cmluZ1ZhbHVlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmtpbmQgPT09ICdTdHJpbmdWYWx1ZSc7XG59XG5mdW5jdGlvbiBpc0Jvb2xlYW5WYWx1ZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5raW5kID09PSAnQm9vbGVhblZhbHVlJztcbn1cbmZ1bmN0aW9uIGlzSW50VmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUua2luZCA9PT0gJ0ludFZhbHVlJztcbn1cbmZ1bmN0aW9uIGlzRmxvYXRWYWx1ZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5raW5kID09PSAnRmxvYXRWYWx1ZSc7XG59XG5mdW5jdGlvbiBpc1ZhcmlhYmxlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmtpbmQgPT09ICdWYXJpYWJsZSc7XG59XG5mdW5jdGlvbiBpc09iamVjdFZhbHVlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmtpbmQgPT09ICdPYmplY3RWYWx1ZSc7XG59XG5mdW5jdGlvbiBpc0xpc3RWYWx1ZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5raW5kID09PSAnTGlzdFZhbHVlJztcbn1cbmZ1bmN0aW9uIGlzRW51bVZhbHVlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmtpbmQgPT09ICdFbnVtVmFsdWUnO1xufVxuZnVuY3Rpb24gaXNOdWxsVmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUua2luZCA9PT0gJ051bGxWYWx1ZSc7XG59XG5leHBvcnQgZnVuY3Rpb24gdmFsdWVUb09iamVjdFJlcHJlc2VudGF0aW9uKGFyZ09iaiwgbmFtZSwgdmFsdWUsIHZhcmlhYmxlcykge1xuICAgIGlmIChpc0ludFZhbHVlKHZhbHVlKSB8fCBpc0Zsb2F0VmFsdWUodmFsdWUpKSB7XG4gICAgICAgIGFyZ09ialtuYW1lLnZhbHVlXSA9IE51bWJlcih2YWx1ZS52YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzQm9vbGVhblZhbHVlKHZhbHVlKSB8fCBpc1N0cmluZ1ZhbHVlKHZhbHVlKSkge1xuICAgICAgICBhcmdPYmpbbmFtZS52YWx1ZV0gPSB2YWx1ZS52YWx1ZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNPYmplY3RWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgdmFyIG5lc3RlZEFyZ09ial8xID0ge307XG4gICAgICAgIHZhbHVlLmZpZWxkcy5tYXAoZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlVG9PYmplY3RSZXByZXNlbnRhdGlvbihuZXN0ZWRBcmdPYmpfMSwgb2JqLm5hbWUsIG9iai52YWx1ZSwgdmFyaWFibGVzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGFyZ09ialtuYW1lLnZhbHVlXSA9IG5lc3RlZEFyZ09ial8xO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc1ZhcmlhYmxlKHZhbHVlKSkge1xuICAgICAgICB2YXIgdmFyaWFibGVWYWx1ZSA9ICh2YXJpYWJsZXMgfHwge30pW3ZhbHVlLm5hbWUudmFsdWVdO1xuICAgICAgICBhcmdPYmpbbmFtZS52YWx1ZV0gPSB2YXJpYWJsZVZhbHVlO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0xpc3RWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgYXJnT2JqW25hbWUudmFsdWVdID0gdmFsdWUudmFsdWVzLm1hcChmdW5jdGlvbiAobGlzdFZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgbmVzdGVkQXJnQXJyYXlPYmogPSB7fTtcbiAgICAgICAgICAgIHZhbHVlVG9PYmplY3RSZXByZXNlbnRhdGlvbihuZXN0ZWRBcmdBcnJheU9iaiwgbmFtZSwgbGlzdFZhbHVlLCB2YXJpYWJsZXMpO1xuICAgICAgICAgICAgcmV0dXJuIG5lc3RlZEFyZ0FycmF5T2JqW25hbWUudmFsdWVdO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNFbnVtVmFsdWUodmFsdWUpKSB7XG4gICAgICAgIGFyZ09ialtuYW1lLnZhbHVlXSA9IHZhbHVlLnZhbHVlO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc051bGxWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgYXJnT2JqW25hbWUudmFsdWVdID0gbnVsbDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRocm93IF9fREVWX18gPyBuZXcgSW52YXJpYW50RXJyb3IoXCJUaGUgaW5saW5lIGFyZ3VtZW50IFxcXCJcIi5jb25jYXQobmFtZS52YWx1ZSwgXCJcXFwiIG9mIGtpbmQgXFxcIlwiKS5jb25jYXQodmFsdWUua2luZCwgXCJcXFwiXCIpICtcbiAgICAgICAgICAgICdpcyBub3Qgc3VwcG9ydGVkLiBVc2UgdmFyaWFibGVzIGluc3RlYWQgb2YgaW5saW5lIGFyZ3VtZW50cyB0byAnICtcbiAgICAgICAgICAgICdvdmVyY29tZSB0aGlzIGxpbWl0YXRpb24uJykgOiBuZXcgSW52YXJpYW50RXJyb3IoNTIpO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBzdG9yZUtleU5hbWVGcm9tRmllbGQoZmllbGQsIHZhcmlhYmxlcykge1xuICAgIHZhciBkaXJlY3RpdmVzT2JqID0gbnVsbDtcbiAgICBpZiAoZmllbGQuZGlyZWN0aXZlcykge1xuICAgICAgICBkaXJlY3RpdmVzT2JqID0ge307XG4gICAgICAgIGZpZWxkLmRpcmVjdGl2ZXMuZm9yRWFjaChmdW5jdGlvbiAoZGlyZWN0aXZlKSB7XG4gICAgICAgICAgICBkaXJlY3RpdmVzT2JqW2RpcmVjdGl2ZS5uYW1lLnZhbHVlXSA9IHt9O1xuICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZS5hcmd1bWVudHMpIHtcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmUuYXJndW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gX2EubmFtZSwgdmFsdWUgPSBfYS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlVG9PYmplY3RSZXByZXNlbnRhdGlvbihkaXJlY3RpdmVzT2JqW2RpcmVjdGl2ZS5uYW1lLnZhbHVlXSwgbmFtZSwgdmFsdWUsIHZhcmlhYmxlcyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB2YXIgYXJnT2JqID0gbnVsbDtcbiAgICBpZiAoZmllbGQuYXJndW1lbnRzICYmIGZpZWxkLmFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgYXJnT2JqID0ge307XG4gICAgICAgIGZpZWxkLmFyZ3VtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgdmFyIG5hbWUgPSBfYS5uYW1lLCB2YWx1ZSA9IF9hLnZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlVG9PYmplY3RSZXByZXNlbnRhdGlvbihhcmdPYmosIG5hbWUsIHZhbHVlLCB2YXJpYWJsZXMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGdldFN0b3JlS2V5TmFtZShmaWVsZC5uYW1lLnZhbHVlLCBhcmdPYmosIGRpcmVjdGl2ZXNPYmopO1xufVxudmFyIEtOT1dOX0RJUkVDVElWRVMgPSBbXG4gICAgJ2Nvbm5lY3Rpb24nLFxuICAgICdpbmNsdWRlJyxcbiAgICAnc2tpcCcsXG4gICAgJ2NsaWVudCcsXG4gICAgJ3Jlc3QnLFxuICAgICdleHBvcnQnLFxuXTtcbmV4cG9ydCB2YXIgZ2V0U3RvcmVLZXlOYW1lID0gT2JqZWN0LmFzc2lnbihmdW5jdGlvbiAoZmllbGROYW1lLCBhcmdzLCBkaXJlY3RpdmVzKSB7XG4gICAgaWYgKGFyZ3MgJiZcbiAgICAgICAgZGlyZWN0aXZlcyAmJlxuICAgICAgICBkaXJlY3RpdmVzWydjb25uZWN0aW9uJ10gJiZcbiAgICAgICAgZGlyZWN0aXZlc1snY29ubmVjdGlvbiddWydrZXknXSkge1xuICAgICAgICBpZiAoZGlyZWN0aXZlc1snY29ubmVjdGlvbiddWydmaWx0ZXInXSAmJlxuICAgICAgICAgICAgZGlyZWN0aXZlc1snY29ubmVjdGlvbiddWydmaWx0ZXInXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB2YXIgZmlsdGVyS2V5cyA9IGRpcmVjdGl2ZXNbJ2Nvbm5lY3Rpb24nXVsnZmlsdGVyJ11cbiAgICAgICAgICAgICAgICA/IGRpcmVjdGl2ZXNbJ2Nvbm5lY3Rpb24nXVsnZmlsdGVyJ11cbiAgICAgICAgICAgICAgICA6IFtdO1xuICAgICAgICAgICAgZmlsdGVyS2V5cy5zb3J0KCk7XG4gICAgICAgICAgICB2YXIgZmlsdGVyZWRBcmdzXzEgPSB7fTtcbiAgICAgICAgICAgIGZpbHRlcktleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyZWRBcmdzXzFba2V5XSA9IGFyZ3Nba2V5XTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KGRpcmVjdGl2ZXNbJ2Nvbm5lY3Rpb24nXVsna2V5J10sIFwiKFwiKS5jb25jYXQoc3RyaW5naWZ5KGZpbHRlcmVkQXJnc18xKSwgXCIpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGRpcmVjdGl2ZXNbJ2Nvbm5lY3Rpb24nXVsna2V5J107XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGNvbXBsZXRlRmllbGROYW1lID0gZmllbGROYW1lO1xuICAgIGlmIChhcmdzKSB7XG4gICAgICAgIHZhciBzdHJpbmdpZmllZEFyZ3MgPSBzdHJpbmdpZnkoYXJncyk7XG4gICAgICAgIGNvbXBsZXRlRmllbGROYW1lICs9IFwiKFwiLmNvbmNhdChzdHJpbmdpZmllZEFyZ3MsIFwiKVwiKTtcbiAgICB9XG4gICAgaWYgKGRpcmVjdGl2ZXMpIHtcbiAgICAgICAgT2JqZWN0LmtleXMoZGlyZWN0aXZlcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoS05PV05fRElSRUNUSVZFUy5pbmRleE9mKGtleSkgIT09IC0xKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGlmIChkaXJlY3RpdmVzW2tleV0gJiYgT2JqZWN0LmtleXMoZGlyZWN0aXZlc1trZXldKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb21wbGV0ZUZpZWxkTmFtZSArPSBcIkBcIi5jb25jYXQoa2V5LCBcIihcIikuY29uY2F0KHN0cmluZ2lmeShkaXJlY3RpdmVzW2tleV0pLCBcIilcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb21wbGV0ZUZpZWxkTmFtZSArPSBcIkBcIi5jb25jYXQoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBjb21wbGV0ZUZpZWxkTmFtZTtcbn0sIHtcbiAgICBzZXRTdHJpbmdpZnk6IGZ1bmN0aW9uIChzKSB7XG4gICAgICAgIHZhciBwcmV2aW91cyA9IHN0cmluZ2lmeTtcbiAgICAgICAgc3RyaW5naWZ5ID0gcztcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzO1xuICAgIH0sXG59KTtcbnZhciBzdHJpbmdpZnkgPSBmdW5jdGlvbiBkZWZhdWx0U3RyaW5naWZ5KHZhbHVlKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlLCBzdHJpbmdpZnlSZXBsYWNlcik7XG59O1xuZnVuY3Rpb24gc3RyaW5naWZ5UmVwbGFjZXIoX2tleSwgdmFsdWUpIHtcbiAgICBpZiAoaXNOb25OdWxsT2JqZWN0KHZhbHVlKSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSBPYmplY3Qua2V5cyh2YWx1ZSkuc29ydCgpLnJlZHVjZShmdW5jdGlvbiAoY29weSwga2V5KSB7XG4gICAgICAgICAgICBjb3B5W2tleV0gPSB2YWx1ZVtrZXldO1xuICAgICAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICAgIH0sIHt9KTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFyZ3VtZW50c09iamVjdEZyb21GaWVsZChmaWVsZCwgdmFyaWFibGVzKSB7XG4gICAgaWYgKGZpZWxkLmFyZ3VtZW50cyAmJiBmaWVsZC5hcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBhcmdPYmpfMSA9IHt9O1xuICAgICAgICBmaWVsZC5hcmd1bWVudHMuZm9yRWFjaChmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciBuYW1lID0gX2EubmFtZSwgdmFsdWUgPSBfYS52YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZVRvT2JqZWN0UmVwcmVzZW50YXRpb24oYXJnT2JqXzEsIG5hbWUsIHZhbHVlLCB2YXJpYWJsZXMpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFyZ09ial8xO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZXN1bHRLZXlOYW1lRnJvbUZpZWxkKGZpZWxkKSB7XG4gICAgcmV0dXJuIGZpZWxkLmFsaWFzID8gZmllbGQuYWxpYXMudmFsdWUgOiBmaWVsZC5uYW1lLnZhbHVlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVuYW1lRnJvbVJlc3VsdChyZXN1bHQsIHNlbGVjdGlvblNldCwgZnJhZ21lbnRNYXApIHtcbiAgICBpZiAodHlwZW9mIHJlc3VsdC5fX3R5cGVuYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gcmVzdWx0Ll9fdHlwZW5hbWU7XG4gICAgfVxuICAgIGZvciAodmFyIF9pID0gMCwgX2EgPSBzZWxlY3Rpb25TZXQuc2VsZWN0aW9uczsgX2kgPCBfYS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIHNlbGVjdGlvbiA9IF9hW19pXTtcbiAgICAgICAgaWYgKGlzRmllbGQoc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgaWYgKHNlbGVjdGlvbi5uYW1lLnZhbHVlID09PSAnX190eXBlbmFtZScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0W3Jlc3VsdEtleU5hbWVGcm9tRmllbGQoc2VsZWN0aW9uKV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgdHlwZW5hbWUgPSBnZXRUeXBlbmFtZUZyb21SZXN1bHQocmVzdWx0LCBnZXRGcmFnbWVudEZyb21TZWxlY3Rpb24oc2VsZWN0aW9uLCBmcmFnbWVudE1hcCkuc2VsZWN0aW9uU2V0LCBmcmFnbWVudE1hcCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHR5cGVuYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ZpZWxkKHNlbGVjdGlvbikge1xuICAgIHJldHVybiBzZWxlY3Rpb24ua2luZCA9PT0gJ0ZpZWxkJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0lubGluZUZyYWdtZW50KHNlbGVjdGlvbikge1xuICAgIHJldHVybiBzZWxlY3Rpb24ua2luZCA9PT0gJ0lubGluZUZyYWdtZW50Jztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN0b3JlVXRpbHMuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/graphql/storeUtils.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/graphql/transform.js":
/*!********************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/graphql/transform.js ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"addTypenameToDocument\": function() { return /* binding */ addTypenameToDocument; },\n/* harmony export */   \"buildQueryFromSelectionSet\": function() { return /* binding */ buildQueryFromSelectionSet; },\n/* harmony export */   \"removeArgumentsFromDocument\": function() { return /* binding */ removeArgumentsFromDocument; },\n/* harmony export */   \"removeClientSetsFromDocument\": function() { return /* binding */ removeClientSetsFromDocument; },\n/* harmony export */   \"removeConnectionDirectiveFromDocument\": function() { return /* binding */ removeConnectionDirectiveFromDocument; },\n/* harmony export */   \"removeDirectivesFromDocument\": function() { return /* binding */ removeDirectivesFromDocument; },\n/* harmony export */   \"removeFragmentSpreadFromDocument\": function() { return /* binding */ removeFragmentSpreadFromDocument; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var graphql__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! graphql */ \"./node_modules/graphql/index.mjs\");\n/* harmony import */ var _getFromAST_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getFromAST.js */ \"./node_modules/@apollo/client/utilities/graphql/getFromAST.js\");\n/* harmony import */ var _common_filterInPlace_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/filterInPlace.js */ \"./node_modules/@apollo/client/utilities/common/filterInPlace.js\");\n/* harmony import */ var _storeUtils_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./storeUtils.js */ \"./node_modules/@apollo/client/utilities/graphql/storeUtils.js\");\n/* harmony import */ var _fragments_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fragments.js */ \"./node_modules/@apollo/client/utilities/graphql/fragments.js\");\n\n\n\n\n\n\n\nvar TYPENAME_FIELD = {\n    kind: 'Field',\n    name: {\n        kind: 'Name',\n        value: '__typename',\n    },\n};\nfunction isEmpty(op, fragments) {\n    return op.selectionSet.selections.every(function (selection) {\n        return selection.kind === 'FragmentSpread' &&\n            isEmpty(fragments[selection.name.value], fragments);\n    });\n}\nfunction nullIfDocIsEmpty(doc) {\n    return isEmpty((0,_getFromAST_js__WEBPACK_IMPORTED_MODULE_1__.getOperationDefinition)(doc) || (0,_getFromAST_js__WEBPACK_IMPORTED_MODULE_1__.getFragmentDefinition)(doc), (0,_fragments_js__WEBPACK_IMPORTED_MODULE_2__.createFragmentMap)((0,_getFromAST_js__WEBPACK_IMPORTED_MODULE_1__.getFragmentDefinitions)(doc)))\n        ? null\n        : doc;\n}\nfunction getDirectiveMatcher(directives) {\n    return function directiveMatcher(directive) {\n        return directives.some(function (dir) {\n            return (dir.name && dir.name === directive.name.value) ||\n                (dir.test && dir.test(directive));\n        });\n    };\n}\nfunction removeDirectivesFromDocument(directives, doc) {\n    var variablesInUse = Object.create(null);\n    var variablesToRemove = [];\n    var fragmentSpreadsInUse = Object.create(null);\n    var fragmentSpreadsToRemove = [];\n    var modifiedDoc = nullIfDocIsEmpty((0,graphql__WEBPACK_IMPORTED_MODULE_3__.visit)(doc, {\n        Variable: {\n            enter: function (node, _key, parent) {\n                if (parent.kind !== 'VariableDefinition') {\n                    variablesInUse[node.name.value] = true;\n                }\n            },\n        },\n        Field: {\n            enter: function (node) {\n                if (directives && node.directives) {\n                    var shouldRemoveField = directives.some(function (directive) { return directive.remove; });\n                    if (shouldRemoveField &&\n                        node.directives &&\n                        node.directives.some(getDirectiveMatcher(directives))) {\n                        if (node.arguments) {\n                            node.arguments.forEach(function (arg) {\n                                if (arg.value.kind === 'Variable') {\n                                    variablesToRemove.push({\n                                        name: arg.value.name.value,\n                                    });\n                                }\n                            });\n                        }\n                        if (node.selectionSet) {\n                            getAllFragmentSpreadsFromSelectionSet(node.selectionSet).forEach(function (frag) {\n                                fragmentSpreadsToRemove.push({\n                                    name: frag.name.value,\n                                });\n                            });\n                        }\n                        return null;\n                    }\n                }\n            },\n        },\n        FragmentSpread: {\n            enter: function (node) {\n                fragmentSpreadsInUse[node.name.value] = true;\n            },\n        },\n        Directive: {\n            enter: function (node) {\n                if (getDirectiveMatcher(directives)(node)) {\n                    return null;\n                }\n            },\n        },\n    }));\n    if (modifiedDoc &&\n        (0,_common_filterInPlace_js__WEBPACK_IMPORTED_MODULE_4__.filterInPlace)(variablesToRemove, function (v) { return !!v.name && !variablesInUse[v.name]; }).length) {\n        modifiedDoc = removeArgumentsFromDocument(variablesToRemove, modifiedDoc);\n    }\n    if (modifiedDoc &&\n        (0,_common_filterInPlace_js__WEBPACK_IMPORTED_MODULE_4__.filterInPlace)(fragmentSpreadsToRemove, function (fs) { return !!fs.name && !fragmentSpreadsInUse[fs.name]; })\n            .length) {\n        modifiedDoc = removeFragmentSpreadFromDocument(fragmentSpreadsToRemove, modifiedDoc);\n    }\n    return modifiedDoc;\n}\nvar addTypenameToDocument = Object.assign(function (doc) {\n    return (0,graphql__WEBPACK_IMPORTED_MODULE_3__.visit)((0,_getFromAST_js__WEBPACK_IMPORTED_MODULE_1__.checkDocument)(doc), {\n        SelectionSet: {\n            enter: function (node, _key, parent) {\n                if (parent &&\n                    parent.kind === 'OperationDefinition') {\n                    return;\n                }\n                var selections = node.selections;\n                if (!selections) {\n                    return;\n                }\n                var skip = selections.some(function (selection) {\n                    return ((0,_storeUtils_js__WEBPACK_IMPORTED_MODULE_5__.isField)(selection) &&\n                        (selection.name.value === '__typename' ||\n                            selection.name.value.lastIndexOf('__', 0) === 0));\n                });\n                if (skip) {\n                    return;\n                }\n                var field = parent;\n                if ((0,_storeUtils_js__WEBPACK_IMPORTED_MODULE_5__.isField)(field) &&\n                    field.directives &&\n                    field.directives.some(function (d) { return d.name.value === 'export'; })) {\n                    return;\n                }\n                return (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_6__.__assign)({}, node), { selections: (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__spreadArray)((0,tslib__WEBPACK_IMPORTED_MODULE_6__.__spreadArray)([], selections, true), [TYPENAME_FIELD], false) });\n            },\n        },\n    });\n}, {\n    added: function (field) {\n        return field === TYPENAME_FIELD;\n    },\n});\nvar connectionRemoveConfig = {\n    test: function (directive) {\n        var willRemove = directive.name.value === 'connection';\n        if (willRemove) {\n            if (!directive.arguments ||\n                !directive.arguments.some(function (arg) { return arg.name.value === 'key'; })) {\n                __DEV__ && _globals_index_js__WEBPACK_IMPORTED_MODULE_0__.invariant.warn('Removing an @connection directive even though it does not have a key. ' +\n                    'You may want to use the key parameter to specify a store key.');\n            }\n        }\n        return willRemove;\n    },\n};\nfunction removeConnectionDirectiveFromDocument(doc) {\n    return removeDirectivesFromDocument([connectionRemoveConfig], (0,_getFromAST_js__WEBPACK_IMPORTED_MODULE_1__.checkDocument)(doc));\n}\nfunction hasDirectivesInSelectionSet(directives, selectionSet, nestedCheck) {\n    if (nestedCheck === void 0) { nestedCheck = true; }\n    return (!!selectionSet &&\n        selectionSet.selections &&\n        selectionSet.selections.some(function (selection) {\n            return hasDirectivesInSelection(directives, selection, nestedCheck);\n        }));\n}\nfunction hasDirectivesInSelection(directives, selection, nestedCheck) {\n    if (nestedCheck === void 0) { nestedCheck = true; }\n    if (!(0,_storeUtils_js__WEBPACK_IMPORTED_MODULE_5__.isField)(selection)) {\n        return true;\n    }\n    if (!selection.directives) {\n        return false;\n    }\n    return (selection.directives.some(getDirectiveMatcher(directives)) ||\n        (nestedCheck &&\n            hasDirectivesInSelectionSet(directives, selection.selectionSet, nestedCheck)));\n}\nfunction getArgumentMatcher(config) {\n    return function argumentMatcher(argument) {\n        return config.some(function (aConfig) {\n            return argument.value &&\n                argument.value.kind === 'Variable' &&\n                argument.value.name &&\n                (aConfig.name === argument.value.name.value ||\n                    (aConfig.test && aConfig.test(argument)));\n        });\n    };\n}\nfunction removeArgumentsFromDocument(config, doc) {\n    var argMatcher = getArgumentMatcher(config);\n    return nullIfDocIsEmpty((0,graphql__WEBPACK_IMPORTED_MODULE_3__.visit)(doc, {\n        OperationDefinition: {\n            enter: function (node) {\n                return (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_6__.__assign)({}, node), { variableDefinitions: node.variableDefinitions ? node.variableDefinitions.filter(function (varDef) {\n                        return !config.some(function (arg) { return arg.name === varDef.variable.name.value; });\n                    }) : [] });\n            },\n        },\n        Field: {\n            enter: function (node) {\n                var shouldRemoveField = config.some(function (argConfig) { return argConfig.remove; });\n                if (shouldRemoveField) {\n                    var argMatchCount_1 = 0;\n                    if (node.arguments) {\n                        node.arguments.forEach(function (arg) {\n                            if (argMatcher(arg)) {\n                                argMatchCount_1 += 1;\n                            }\n                        });\n                    }\n                    if (argMatchCount_1 === 1) {\n                        return null;\n                    }\n                }\n            },\n        },\n        Argument: {\n            enter: function (node) {\n                if (argMatcher(node)) {\n                    return null;\n                }\n            },\n        },\n    }));\n}\nfunction removeFragmentSpreadFromDocument(config, doc) {\n    function enter(node) {\n        if (config.some(function (def) { return def.name === node.name.value; })) {\n            return null;\n        }\n    }\n    return nullIfDocIsEmpty((0,graphql__WEBPACK_IMPORTED_MODULE_3__.visit)(doc, {\n        FragmentSpread: { enter: enter },\n        FragmentDefinition: { enter: enter },\n    }));\n}\nfunction getAllFragmentSpreadsFromSelectionSet(selectionSet) {\n    var allFragments = [];\n    selectionSet.selections.forEach(function (selection) {\n        if (((0,_storeUtils_js__WEBPACK_IMPORTED_MODULE_5__.isField)(selection) || (0,_storeUtils_js__WEBPACK_IMPORTED_MODULE_5__.isInlineFragment)(selection)) &&\n            selection.selectionSet) {\n            getAllFragmentSpreadsFromSelectionSet(selection.selectionSet).forEach(function (frag) { return allFragments.push(frag); });\n        }\n        else if (selection.kind === 'FragmentSpread') {\n            allFragments.push(selection);\n        }\n    });\n    return allFragments;\n}\nfunction buildQueryFromSelectionSet(document) {\n    var definition = (0,_getFromAST_js__WEBPACK_IMPORTED_MODULE_1__.getMainDefinition)(document);\n    var definitionOperation = definition.operation;\n    if (definitionOperation === 'query') {\n        return document;\n    }\n    var modifiedDoc = (0,graphql__WEBPACK_IMPORTED_MODULE_3__.visit)(document, {\n        OperationDefinition: {\n            enter: function (node) {\n                return (0,tslib__WEBPACK_IMPORTED_MODULE_6__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_6__.__assign)({}, node), { operation: 'query' });\n            },\n        },\n    });\n    return modifiedDoc;\n}\nfunction removeClientSetsFromDocument(document) {\n    (0,_getFromAST_js__WEBPACK_IMPORTED_MODULE_1__.checkDocument)(document);\n    var modifiedDoc = removeDirectivesFromDocument([\n        {\n            test: function (directive) { return directive.name.value === 'client'; },\n            remove: true,\n        },\n    ], document);\n    if (modifiedDoc) {\n        modifiedDoc = (0,graphql__WEBPACK_IMPORTED_MODULE_3__.visit)(modifiedDoc, {\n            FragmentDefinition: {\n                enter: function (node) {\n                    if (node.selectionSet) {\n                        var isTypenameOnly = node.selectionSet.selections.every(function (selection) {\n                            return (0,_storeUtils_js__WEBPACK_IMPORTED_MODULE_5__.isField)(selection) && selection.name.value === '__typename';\n                        });\n                        if (isTypenameOnly) {\n                            return null;\n                        }\n                    }\n                },\n            },\n        });\n    }\n    return modifiedDoc;\n}\n//# sourceMappingURL=transform.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2dyYXBocWwvdHJhbnNmb3JtLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQWdEO0FBQ0E7QUFDZjtBQUMwRztBQUNoRjtBQUNDO0FBQ1I7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxtQkFBbUIsc0VBQXNCLFNBQVMscUVBQXFCLE9BQU8sZ0VBQWlCLENBQUMsc0VBQXNCO0FBQ3RIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsOENBQUs7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsbUZBQW1GLDBCQUEwQjtBQUM3RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakMsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBLFFBQVEsdUVBQWEsbUNBQW1DLDZDQUE2QztBQUNyRztBQUNBO0FBQ0E7QUFDQSxRQUFRLHVFQUFhLDBDQUEwQyxxREFBcUQ7QUFDcEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsV0FBVyw4Q0FBSyxDQUFDLDZEQUFhO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsdURBQU87QUFDbkM7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix1REFBTztBQUMzQjtBQUNBLHlEQUF5RCxtQ0FBbUM7QUFDNUY7QUFDQTtBQUNBLHVCQUF1QiwrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsV0FBVyxZQUFZLG9EQUFhLENBQUMsb0RBQWEsa0RBQWtEO0FBQy9JLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSztBQUNMLENBQUM7QUFDRDtBQUNBO0FBQ0EsS0FBSztBQUNMLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkRBQTJELGtDQUFrQztBQUM3RiwyQkFBMkIsNkRBQWM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDTztBQUNQLGtFQUFrRSw2REFBYTtBQUMvRTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEMsU0FBUyx1REFBTztBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDTztBQUNQO0FBQ0EsNEJBQTRCLDhDQUFLO0FBQ2pDO0FBQ0E7QUFDQSx1QkFBdUIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLFdBQVc7QUFDdEQsNkRBQTZELGlEQUFpRDtBQUM5RyxxQkFBcUIsUUFBUTtBQUM3QixhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQSwyRUFBMkUsMEJBQTBCO0FBQ3JHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNPO0FBQ1A7QUFDQSx5Q0FBeUMsc0NBQXNDO0FBQy9FO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qiw4Q0FBSztBQUNqQywwQkFBMEIsY0FBYztBQUN4Qyw4QkFBOEIsY0FBYztBQUM1QyxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHVEQUFPLGVBQWUsZ0VBQWdCO0FBQ25EO0FBQ0Esb0dBQW9HLGlDQUFpQztBQUNySTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ087QUFDUCxxQkFBcUIsaUVBQWlCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLDhDQUFLO0FBQzNCO0FBQ0E7QUFDQSx1QkFBdUIsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLFdBQVcsb0JBQW9CO0FBQzFFLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQLElBQUksNkRBQWE7QUFDakI7QUFDQTtBQUNBLHlDQUF5QywyQ0FBMkM7QUFDcEY7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLHNCQUFzQiw4Q0FBSztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyx1REFBTztBQUMxQyx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2dyYXBocWwvdHJhbnNmb3JtLmpzP2E2ZDIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgX19hc3NpZ24sIF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IGludmFyaWFudCB9IGZyb20gXCIuLi9nbG9iYWxzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyB2aXNpdCwgfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7IGNoZWNrRG9jdW1lbnQsIGdldE9wZXJhdGlvbkRlZmluaXRpb24sIGdldEZyYWdtZW50RGVmaW5pdGlvbiwgZ2V0RnJhZ21lbnREZWZpbml0aW9ucywgZ2V0TWFpbkRlZmluaXRpb24sIH0gZnJvbSBcIi4vZ2V0RnJvbUFTVC5qc1wiO1xuaW1wb3J0IHsgZmlsdGVySW5QbGFjZSB9IGZyb20gXCIuLi9jb21tb24vZmlsdGVySW5QbGFjZS5qc1wiO1xuaW1wb3J0IHsgaXNGaWVsZCwgaXNJbmxpbmVGcmFnbWVudCB9IGZyb20gXCIuL3N0b3JlVXRpbHMuanNcIjtcbmltcG9ydCB7IGNyZWF0ZUZyYWdtZW50TWFwLCB9IGZyb20gXCIuL2ZyYWdtZW50cy5qc1wiO1xudmFyIFRZUEVOQU1FX0ZJRUxEID0ge1xuICAgIGtpbmQ6ICdGaWVsZCcsXG4gICAgbmFtZToge1xuICAgICAgICBraW5kOiAnTmFtZScsXG4gICAgICAgIHZhbHVlOiAnX190eXBlbmFtZScsXG4gICAgfSxcbn07XG5mdW5jdGlvbiBpc0VtcHR5KG9wLCBmcmFnbWVudHMpIHtcbiAgICByZXR1cm4gb3Auc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMuZXZlcnkoZnVuY3Rpb24gKHNlbGVjdGlvbikge1xuICAgICAgICByZXR1cm4gc2VsZWN0aW9uLmtpbmQgPT09ICdGcmFnbWVudFNwcmVhZCcgJiZcbiAgICAgICAgICAgIGlzRW1wdHkoZnJhZ21lbnRzW3NlbGVjdGlvbi5uYW1lLnZhbHVlXSwgZnJhZ21lbnRzKTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIG51bGxJZkRvY0lzRW1wdHkoZG9jKSB7XG4gICAgcmV0dXJuIGlzRW1wdHkoZ2V0T3BlcmF0aW9uRGVmaW5pdGlvbihkb2MpIHx8IGdldEZyYWdtZW50RGVmaW5pdGlvbihkb2MpLCBjcmVhdGVGcmFnbWVudE1hcChnZXRGcmFnbWVudERlZmluaXRpb25zKGRvYykpKVxuICAgICAgICA/IG51bGxcbiAgICAgICAgOiBkb2M7XG59XG5mdW5jdGlvbiBnZXREaXJlY3RpdmVNYXRjaGVyKGRpcmVjdGl2ZXMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gZGlyZWN0aXZlTWF0Y2hlcihkaXJlY3RpdmUpIHtcbiAgICAgICAgcmV0dXJuIGRpcmVjdGl2ZXMuc29tZShmdW5jdGlvbiAoZGlyKSB7XG4gICAgICAgICAgICByZXR1cm4gKGRpci5uYW1lICYmIGRpci5uYW1lID09PSBkaXJlY3RpdmUubmFtZS52YWx1ZSkgfHxcbiAgICAgICAgICAgICAgICAoZGlyLnRlc3QgJiYgZGlyLnRlc3QoZGlyZWN0aXZlKSk7XG4gICAgICAgIH0pO1xuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRGlyZWN0aXZlc0Zyb21Eb2N1bWVudChkaXJlY3RpdmVzLCBkb2MpIHtcbiAgICB2YXIgdmFyaWFibGVzSW5Vc2UgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHZhciB2YXJpYWJsZXNUb1JlbW92ZSA9IFtdO1xuICAgIHZhciBmcmFnbWVudFNwcmVhZHNJblVzZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdmFyIGZyYWdtZW50U3ByZWFkc1RvUmVtb3ZlID0gW107XG4gICAgdmFyIG1vZGlmaWVkRG9jID0gbnVsbElmRG9jSXNFbXB0eSh2aXNpdChkb2MsIHtcbiAgICAgICAgVmFyaWFibGU6IHtcbiAgICAgICAgICAgIGVudGVyOiBmdW5jdGlvbiAobm9kZSwgX2tleSwgcGFyZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudC5raW5kICE9PSAnVmFyaWFibGVEZWZpbml0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXNJblVzZVtub2RlLm5hbWUudmFsdWVdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBGaWVsZDoge1xuICAgICAgICAgICAgZW50ZXI6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZXMgJiYgbm9kZS5kaXJlY3RpdmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzaG91bGRSZW1vdmVGaWVsZCA9IGRpcmVjdGl2ZXMuc29tZShmdW5jdGlvbiAoZGlyZWN0aXZlKSB7IHJldHVybiBkaXJlY3RpdmUucmVtb3ZlOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFJlbW92ZUZpZWxkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmRpcmVjdGl2ZXMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuZGlyZWN0aXZlcy5zb21lKGdldERpcmVjdGl2ZU1hdGNoZXIoZGlyZWN0aXZlcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5hcmd1bWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLmFyZ3VtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZy52YWx1ZS5raW5kID09PSAnVmFyaWFibGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXNUb1JlbW92ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhcmcudmFsdWUubmFtZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5zZWxlY3Rpb25TZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRBbGxGcmFnbWVudFNwcmVhZHNGcm9tU2VsZWN0aW9uU2V0KG5vZGUuc2VsZWN0aW9uU2V0KS5mb3JFYWNoKGZ1bmN0aW9uIChmcmFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50U3ByZWFkc1RvUmVtb3ZlLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZnJhZy5uYW1lLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgRnJhZ21lbnRTcHJlYWQ6IHtcbiAgICAgICAgICAgIGVudGVyOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgICAgIGZyYWdtZW50U3ByZWFkc0luVXNlW25vZGUubmFtZS52YWx1ZV0gPSB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgRGlyZWN0aXZlOiB7XG4gICAgICAgICAgICBlbnRlcjogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZ2V0RGlyZWN0aXZlTWF0Y2hlcihkaXJlY3RpdmVzKShub2RlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH0pKTtcbiAgICBpZiAobW9kaWZpZWREb2MgJiZcbiAgICAgICAgZmlsdGVySW5QbGFjZSh2YXJpYWJsZXNUb1JlbW92ZSwgZnVuY3Rpb24gKHYpIHsgcmV0dXJuICEhdi5uYW1lICYmICF2YXJpYWJsZXNJblVzZVt2Lm5hbWVdOyB9KS5sZW5ndGgpIHtcbiAgICAgICAgbW9kaWZpZWREb2MgPSByZW1vdmVBcmd1bWVudHNGcm9tRG9jdW1lbnQodmFyaWFibGVzVG9SZW1vdmUsIG1vZGlmaWVkRG9jKTtcbiAgICB9XG4gICAgaWYgKG1vZGlmaWVkRG9jICYmXG4gICAgICAgIGZpbHRlckluUGxhY2UoZnJhZ21lbnRTcHJlYWRzVG9SZW1vdmUsIGZ1bmN0aW9uIChmcykgeyByZXR1cm4gISFmcy5uYW1lICYmICFmcmFnbWVudFNwcmVhZHNJblVzZVtmcy5uYW1lXTsgfSlcbiAgICAgICAgICAgIC5sZW5ndGgpIHtcbiAgICAgICAgbW9kaWZpZWREb2MgPSByZW1vdmVGcmFnbWVudFNwcmVhZEZyb21Eb2N1bWVudChmcmFnbWVudFNwcmVhZHNUb1JlbW92ZSwgbW9kaWZpZWREb2MpO1xuICAgIH1cbiAgICByZXR1cm4gbW9kaWZpZWREb2M7XG59XG5leHBvcnQgdmFyIGFkZFR5cGVuYW1lVG9Eb2N1bWVudCA9IE9iamVjdC5hc3NpZ24oZnVuY3Rpb24gKGRvYykge1xuICAgIHJldHVybiB2aXNpdChjaGVja0RvY3VtZW50KGRvYyksIHtcbiAgICAgICAgU2VsZWN0aW9uU2V0OiB7XG4gICAgICAgICAgICBlbnRlcjogZnVuY3Rpb24gKG5vZGUsIF9rZXksIHBhcmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChwYXJlbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50LmtpbmQgPT09ICdPcGVyYXRpb25EZWZpbml0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBzZWxlY3Rpb25zID0gbm9kZS5zZWxlY3Rpb25zO1xuICAgICAgICAgICAgICAgIGlmICghc2VsZWN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBza2lwID0gc2VsZWN0aW9ucy5zb21lKGZ1bmN0aW9uIChzZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChpc0ZpZWxkKHNlbGVjdGlvbikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb24ubmFtZS52YWx1ZSA9PT0gJ19fdHlwZW5hbWUnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uLm5hbWUudmFsdWUubGFzdEluZGV4T2YoJ19fJywgMCkgPT09IDApKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoc2tpcCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBmaWVsZCA9IHBhcmVudDtcbiAgICAgICAgICAgICAgICBpZiAoaXNGaWVsZChmaWVsZCkgJiZcbiAgICAgICAgICAgICAgICAgICAgZmllbGQuZGlyZWN0aXZlcyAmJlxuICAgICAgICAgICAgICAgICAgICBmaWVsZC5kaXJlY3RpdmVzLnNvbWUoZnVuY3Rpb24gKGQpIHsgcmV0dXJuIGQubmFtZS52YWx1ZSA9PT0gJ2V4cG9ydCc7IH0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBub2RlKSwgeyBzZWxlY3Rpb25zOiBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIHNlbGVjdGlvbnMsIHRydWUpLCBbVFlQRU5BTUVfRklFTERdLCBmYWxzZSkgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH0pO1xufSwge1xuICAgIGFkZGVkOiBmdW5jdGlvbiAoZmllbGQpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkID09PSBUWVBFTkFNRV9GSUVMRDtcbiAgICB9LFxufSk7XG52YXIgY29ubmVjdGlvblJlbW92ZUNvbmZpZyA9IHtcbiAgICB0ZXN0OiBmdW5jdGlvbiAoZGlyZWN0aXZlKSB7XG4gICAgICAgIHZhciB3aWxsUmVtb3ZlID0gZGlyZWN0aXZlLm5hbWUudmFsdWUgPT09ICdjb25uZWN0aW9uJztcbiAgICAgICAgaWYgKHdpbGxSZW1vdmUpIHtcbiAgICAgICAgICAgIGlmICghZGlyZWN0aXZlLmFyZ3VtZW50cyB8fFxuICAgICAgICAgICAgICAgICFkaXJlY3RpdmUuYXJndW1lbnRzLnNvbWUoZnVuY3Rpb24gKGFyZykgeyByZXR1cm4gYXJnLm5hbWUudmFsdWUgPT09ICdrZXknOyB9KSkge1xuICAgICAgICAgICAgICAgIF9fREVWX18gJiYgaW52YXJpYW50Lndhcm4oJ1JlbW92aW5nIGFuIEBjb25uZWN0aW9uIGRpcmVjdGl2ZSBldmVuIHRob3VnaCBpdCBkb2VzIG5vdCBoYXZlIGEga2V5LiAnICtcbiAgICAgICAgICAgICAgICAgICAgJ1lvdSBtYXkgd2FudCB0byB1c2UgdGhlIGtleSBwYXJhbWV0ZXIgdG8gc3BlY2lmeSBhIHN0b3JlIGtleS4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gd2lsbFJlbW92ZTtcbiAgICB9LFxufTtcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVDb25uZWN0aW9uRGlyZWN0aXZlRnJvbURvY3VtZW50KGRvYykge1xuICAgIHJldHVybiByZW1vdmVEaXJlY3RpdmVzRnJvbURvY3VtZW50KFtjb25uZWN0aW9uUmVtb3ZlQ29uZmlnXSwgY2hlY2tEb2N1bWVudChkb2MpKTtcbn1cbmZ1bmN0aW9uIGhhc0RpcmVjdGl2ZXNJblNlbGVjdGlvblNldChkaXJlY3RpdmVzLCBzZWxlY3Rpb25TZXQsIG5lc3RlZENoZWNrKSB7XG4gICAgaWYgKG5lc3RlZENoZWNrID09PSB2b2lkIDApIHsgbmVzdGVkQ2hlY2sgPSB0cnVlOyB9XG4gICAgcmV0dXJuICghIXNlbGVjdGlvblNldCAmJlxuICAgICAgICBzZWxlY3Rpb25TZXQuc2VsZWN0aW9ucyAmJlxuICAgICAgICBzZWxlY3Rpb25TZXQuc2VsZWN0aW9ucy5zb21lKGZ1bmN0aW9uIChzZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBoYXNEaXJlY3RpdmVzSW5TZWxlY3Rpb24oZGlyZWN0aXZlcywgc2VsZWN0aW9uLCBuZXN0ZWRDaGVjayk7XG4gICAgICAgIH0pKTtcbn1cbmZ1bmN0aW9uIGhhc0RpcmVjdGl2ZXNJblNlbGVjdGlvbihkaXJlY3RpdmVzLCBzZWxlY3Rpb24sIG5lc3RlZENoZWNrKSB7XG4gICAgaWYgKG5lc3RlZENoZWNrID09PSB2b2lkIDApIHsgbmVzdGVkQ2hlY2sgPSB0cnVlOyB9XG4gICAgaWYgKCFpc0ZpZWxkKHNlbGVjdGlvbikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICghc2VsZWN0aW9uLmRpcmVjdGl2ZXMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gKHNlbGVjdGlvbi5kaXJlY3RpdmVzLnNvbWUoZ2V0RGlyZWN0aXZlTWF0Y2hlcihkaXJlY3RpdmVzKSkgfHxcbiAgICAgICAgKG5lc3RlZENoZWNrICYmXG4gICAgICAgICAgICBoYXNEaXJlY3RpdmVzSW5TZWxlY3Rpb25TZXQoZGlyZWN0aXZlcywgc2VsZWN0aW9uLnNlbGVjdGlvblNldCwgbmVzdGVkQ2hlY2spKSk7XG59XG5mdW5jdGlvbiBnZXRBcmd1bWVudE1hdGNoZXIoY29uZmlnKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGFyZ3VtZW50TWF0Y2hlcihhcmd1bWVudCkge1xuICAgICAgICByZXR1cm4gY29uZmlnLnNvbWUoZnVuY3Rpb24gKGFDb25maWcpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudC52YWx1ZSAmJlxuICAgICAgICAgICAgICAgIGFyZ3VtZW50LnZhbHVlLmtpbmQgPT09ICdWYXJpYWJsZScgJiZcbiAgICAgICAgICAgICAgICBhcmd1bWVudC52YWx1ZS5uYW1lICYmXG4gICAgICAgICAgICAgICAgKGFDb25maWcubmFtZSA9PT0gYXJndW1lbnQudmFsdWUubmFtZS52YWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgICAoYUNvbmZpZy50ZXN0ICYmIGFDb25maWcudGVzdChhcmd1bWVudCkpKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVBcmd1bWVudHNGcm9tRG9jdW1lbnQoY29uZmlnLCBkb2MpIHtcbiAgICB2YXIgYXJnTWF0Y2hlciA9IGdldEFyZ3VtZW50TWF0Y2hlcihjb25maWcpO1xuICAgIHJldHVybiBudWxsSWZEb2NJc0VtcHR5KHZpc2l0KGRvYywge1xuICAgICAgICBPcGVyYXRpb25EZWZpbml0aW9uOiB7XG4gICAgICAgICAgICBlbnRlcjogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIG5vZGUpLCB7IHZhcmlhYmxlRGVmaW5pdGlvbnM6IG5vZGUudmFyaWFibGVEZWZpbml0aW9ucyA/IG5vZGUudmFyaWFibGVEZWZpbml0aW9ucy5maWx0ZXIoZnVuY3Rpb24gKHZhckRlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFjb25maWcuc29tZShmdW5jdGlvbiAoYXJnKSB7IHJldHVybiBhcmcubmFtZSA9PT0gdmFyRGVmLnZhcmlhYmxlLm5hbWUudmFsdWU7IH0pO1xuICAgICAgICAgICAgICAgICAgICB9KSA6IFtdIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgRmllbGQ6IHtcbiAgICAgICAgICAgIGVudGVyOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgICAgIHZhciBzaG91bGRSZW1vdmVGaWVsZCA9IGNvbmZpZy5zb21lKGZ1bmN0aW9uIChhcmdDb25maWcpIHsgcmV0dXJuIGFyZ0NvbmZpZy5yZW1vdmU7IH0pO1xuICAgICAgICAgICAgICAgIGlmIChzaG91bGRSZW1vdmVGaWVsZCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYXJnTWF0Y2hDb3VudF8xID0gMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuYXJndW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmFyZ3VtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnTWF0Y2hlcihhcmcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ01hdGNoQ291bnRfMSArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcmdNYXRjaENvdW50XzEgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgQXJndW1lbnQ6IHtcbiAgICAgICAgICAgIGVudGVyOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgICAgIGlmIChhcmdNYXRjaGVyKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUZyYWdtZW50U3ByZWFkRnJvbURvY3VtZW50KGNvbmZpZywgZG9jKSB7XG4gICAgZnVuY3Rpb24gZW50ZXIobm9kZSkge1xuICAgICAgICBpZiAoY29uZmlnLnNvbWUoZnVuY3Rpb24gKGRlZikgeyByZXR1cm4gZGVmLm5hbWUgPT09IG5vZGUubmFtZS52YWx1ZTsgfSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsSWZEb2NJc0VtcHR5KHZpc2l0KGRvYywge1xuICAgICAgICBGcmFnbWVudFNwcmVhZDogeyBlbnRlcjogZW50ZXIgfSxcbiAgICAgICAgRnJhZ21lbnREZWZpbml0aW9uOiB7IGVudGVyOiBlbnRlciB9LFxuICAgIH0pKTtcbn1cbmZ1bmN0aW9uIGdldEFsbEZyYWdtZW50U3ByZWFkc0Zyb21TZWxlY3Rpb25TZXQoc2VsZWN0aW9uU2V0KSB7XG4gICAgdmFyIGFsbEZyYWdtZW50cyA9IFtdO1xuICAgIHNlbGVjdGlvblNldC5zZWxlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24gKHNlbGVjdGlvbikge1xuICAgICAgICBpZiAoKGlzRmllbGQoc2VsZWN0aW9uKSB8fCBpc0lubGluZUZyYWdtZW50KHNlbGVjdGlvbikpICYmXG4gICAgICAgICAgICBzZWxlY3Rpb24uc2VsZWN0aW9uU2V0KSB7XG4gICAgICAgICAgICBnZXRBbGxGcmFnbWVudFNwcmVhZHNGcm9tU2VsZWN0aW9uU2V0KHNlbGVjdGlvbi5zZWxlY3Rpb25TZXQpLmZvckVhY2goZnVuY3Rpb24gKGZyYWcpIHsgcmV0dXJuIGFsbEZyYWdtZW50cy5wdXNoKGZyYWcpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzZWxlY3Rpb24ua2luZCA9PT0gJ0ZyYWdtZW50U3ByZWFkJykge1xuICAgICAgICAgICAgYWxsRnJhZ21lbnRzLnB1c2goc2VsZWN0aW9uKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhbGxGcmFnbWVudHM7XG59XG5leHBvcnQgZnVuY3Rpb24gYnVpbGRRdWVyeUZyb21TZWxlY3Rpb25TZXQoZG9jdW1lbnQpIHtcbiAgICB2YXIgZGVmaW5pdGlvbiA9IGdldE1haW5EZWZpbml0aW9uKGRvY3VtZW50KTtcbiAgICB2YXIgZGVmaW5pdGlvbk9wZXJhdGlvbiA9IGRlZmluaXRpb24ub3BlcmF0aW9uO1xuICAgIGlmIChkZWZpbml0aW9uT3BlcmF0aW9uID09PSAncXVlcnknKSB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudDtcbiAgICB9XG4gICAgdmFyIG1vZGlmaWVkRG9jID0gdmlzaXQoZG9jdW1lbnQsIHtcbiAgICAgICAgT3BlcmF0aW9uRGVmaW5pdGlvbjoge1xuICAgICAgICAgICAgZW50ZXI6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKHt9LCBub2RlKSwgeyBvcGVyYXRpb246ICdxdWVyeScgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIH0pO1xuICAgIHJldHVybiBtb2RpZmllZERvYztcbn1cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVDbGllbnRTZXRzRnJvbURvY3VtZW50KGRvY3VtZW50KSB7XG4gICAgY2hlY2tEb2N1bWVudChkb2N1bWVudCk7XG4gICAgdmFyIG1vZGlmaWVkRG9jID0gcmVtb3ZlRGlyZWN0aXZlc0Zyb21Eb2N1bWVudChbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRlc3Q6IGZ1bmN0aW9uIChkaXJlY3RpdmUpIHsgcmV0dXJuIGRpcmVjdGl2ZS5uYW1lLnZhbHVlID09PSAnY2xpZW50JzsgfSxcbiAgICAgICAgICAgIHJlbW92ZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLCBkb2N1bWVudCk7XG4gICAgaWYgKG1vZGlmaWVkRG9jKSB7XG4gICAgICAgIG1vZGlmaWVkRG9jID0gdmlzaXQobW9kaWZpZWREb2MsIHtcbiAgICAgICAgICAgIEZyYWdtZW50RGVmaW5pdGlvbjoge1xuICAgICAgICAgICAgICAgIGVudGVyOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5zZWxlY3Rpb25TZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpc1R5cGVuYW1lT25seSA9IG5vZGUuc2VsZWN0aW9uU2V0LnNlbGVjdGlvbnMuZXZlcnkoZnVuY3Rpb24gKHNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc0ZpZWxkKHNlbGVjdGlvbikgJiYgc2VsZWN0aW9uLm5hbWUudmFsdWUgPT09ICdfX3R5cGVuYW1lJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzVHlwZW5hbWVPbmx5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBtb2RpZmllZERvYztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRyYW5zZm9ybS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/graphql/transform.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/index.js":
/*!********************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/index.js ***!
  \********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DEV\": function() { return /* reexport safe */ _globals_index_js__WEBPACK_IMPORTED_MODULE_0__.DEV; },\n/* harmony export */   \"Observable\": function() { return /* reexport safe */ _observables_Observable_js__WEBPACK_IMPORTED_MODULE_7__.Observable; },\n/* harmony export */   \"addTypenameToDocument\": function() { return /* reexport safe */ _graphql_transform_js__WEBPACK_IMPORTED_MODULE_5__.addTypenameToDocument; },\n/* harmony export */   \"argumentsObjectFromField\": function() { return /* reexport safe */ _graphql_storeUtils_js__WEBPACK_IMPORTED_MODULE_4__.argumentsObjectFromField; },\n/* harmony export */   \"buildQueryFromSelectionSet\": function() { return /* reexport safe */ _graphql_transform_js__WEBPACK_IMPORTED_MODULE_5__.buildQueryFromSelectionSet; },\n/* harmony export */   \"checkDocument\": function() { return /* reexport safe */ _graphql_getFromAST_js__WEBPACK_IMPORTED_MODULE_3__.checkDocument; },\n/* harmony export */   \"concatPagination\": function() { return /* reexport safe */ _policies_pagination_js__WEBPACK_IMPORTED_MODULE_6__.concatPagination; },\n/* harmony export */   \"createFragmentMap\": function() { return /* reexport safe */ _graphql_fragments_js__WEBPACK_IMPORTED_MODULE_2__.createFragmentMap; },\n/* harmony export */   \"getDefaultValues\": function() { return /* reexport safe */ _graphql_getFromAST_js__WEBPACK_IMPORTED_MODULE_3__.getDefaultValues; },\n/* harmony export */   \"getDirectiveNames\": function() { return /* reexport safe */ _graphql_directives_js__WEBPACK_IMPORTED_MODULE_1__.getDirectiveNames; },\n/* harmony export */   \"getFragmentDefinition\": function() { return /* reexport safe */ _graphql_getFromAST_js__WEBPACK_IMPORTED_MODULE_3__.getFragmentDefinition; },\n/* harmony export */   \"getFragmentDefinitions\": function() { return /* reexport safe */ _graphql_getFromAST_js__WEBPACK_IMPORTED_MODULE_3__.getFragmentDefinitions; },\n/* harmony export */   \"getFragmentFromSelection\": function() { return /* reexport safe */ _graphql_fragments_js__WEBPACK_IMPORTED_MODULE_2__.getFragmentFromSelection; },\n/* harmony export */   \"getFragmentQueryDocument\": function() { return /* reexport safe */ _graphql_fragments_js__WEBPACK_IMPORTED_MODULE_2__.getFragmentQueryDocument; },\n/* harmony export */   \"getInclusionDirectives\": function() { return /* reexport safe */ _graphql_directives_js__WEBPACK_IMPORTED_MODULE_1__.getInclusionDirectives; },\n/* harmony export */   \"getMainDefinition\": function() { return /* reexport safe */ _graphql_getFromAST_js__WEBPACK_IMPORTED_MODULE_3__.getMainDefinition; },\n/* harmony export */   \"getOperationDefinition\": function() { return /* reexport safe */ _graphql_getFromAST_js__WEBPACK_IMPORTED_MODULE_3__.getOperationDefinition; },\n/* harmony export */   \"getOperationName\": function() { return /* reexport safe */ _graphql_getFromAST_js__WEBPACK_IMPORTED_MODULE_3__.getOperationName; },\n/* harmony export */   \"getQueryDefinition\": function() { return /* reexport safe */ _graphql_getFromAST_js__WEBPACK_IMPORTED_MODULE_3__.getQueryDefinition; },\n/* harmony export */   \"getStoreKeyName\": function() { return /* reexport safe */ _graphql_storeUtils_js__WEBPACK_IMPORTED_MODULE_4__.getStoreKeyName; },\n/* harmony export */   \"getTypenameFromResult\": function() { return /* reexport safe */ _graphql_storeUtils_js__WEBPACK_IMPORTED_MODULE_4__.getTypenameFromResult; },\n/* harmony export */   \"hasClientExports\": function() { return /* reexport safe */ _graphql_directives_js__WEBPACK_IMPORTED_MODULE_1__.hasClientExports; },\n/* harmony export */   \"hasDirectives\": function() { return /* reexport safe */ _graphql_directives_js__WEBPACK_IMPORTED_MODULE_1__.hasDirectives; },\n/* harmony export */   \"isDocumentNode\": function() { return /* reexport safe */ _graphql_storeUtils_js__WEBPACK_IMPORTED_MODULE_4__.isDocumentNode; },\n/* harmony export */   \"isField\": function() { return /* reexport safe */ _graphql_storeUtils_js__WEBPACK_IMPORTED_MODULE_4__.isField; },\n/* harmony export */   \"isInlineFragment\": function() { return /* reexport safe */ _graphql_storeUtils_js__WEBPACK_IMPORTED_MODULE_4__.isInlineFragment; },\n/* harmony export */   \"isReference\": function() { return /* reexport safe */ _graphql_storeUtils_js__WEBPACK_IMPORTED_MODULE_4__.isReference; },\n/* harmony export */   \"makeReference\": function() { return /* reexport safe */ _graphql_storeUtils_js__WEBPACK_IMPORTED_MODULE_4__.makeReference; },\n/* harmony export */   \"maybe\": function() { return /* reexport safe */ _globals_index_js__WEBPACK_IMPORTED_MODULE_0__.maybe; },\n/* harmony export */   \"offsetLimitPagination\": function() { return /* reexport safe */ _policies_pagination_js__WEBPACK_IMPORTED_MODULE_6__.offsetLimitPagination; },\n/* harmony export */   \"relayStylePagination\": function() { return /* reexport safe */ _policies_pagination_js__WEBPACK_IMPORTED_MODULE_6__.relayStylePagination; },\n/* harmony export */   \"removeArgumentsFromDocument\": function() { return /* reexport safe */ _graphql_transform_js__WEBPACK_IMPORTED_MODULE_5__.removeArgumentsFromDocument; },\n/* harmony export */   \"removeClientSetsFromDocument\": function() { return /* reexport safe */ _graphql_transform_js__WEBPACK_IMPORTED_MODULE_5__.removeClientSetsFromDocument; },\n/* harmony export */   \"removeConnectionDirectiveFromDocument\": function() { return /* reexport safe */ _graphql_transform_js__WEBPACK_IMPORTED_MODULE_5__.removeConnectionDirectiveFromDocument; },\n/* harmony export */   \"removeDirectivesFromDocument\": function() { return /* reexport safe */ _graphql_transform_js__WEBPACK_IMPORTED_MODULE_5__.removeDirectivesFromDocument; },\n/* harmony export */   \"removeFragmentSpreadFromDocument\": function() { return /* reexport safe */ _graphql_transform_js__WEBPACK_IMPORTED_MODULE_5__.removeFragmentSpreadFromDocument; },\n/* harmony export */   \"resultKeyNameFromField\": function() { return /* reexport safe */ _graphql_storeUtils_js__WEBPACK_IMPORTED_MODULE_4__.resultKeyNameFromField; },\n/* harmony export */   \"shouldInclude\": function() { return /* reexport safe */ _graphql_directives_js__WEBPACK_IMPORTED_MODULE_1__.shouldInclude; },\n/* harmony export */   \"storeKeyNameFromField\": function() { return /* reexport safe */ _graphql_storeUtils_js__WEBPACK_IMPORTED_MODULE_4__.storeKeyNameFromField; },\n/* harmony export */   \"valueToObjectRepresentation\": function() { return /* reexport safe */ _graphql_storeUtils_js__WEBPACK_IMPORTED_MODULE_4__.valueToObjectRepresentation; }\n/* harmony export */ });\n/* harmony import */ var _globals_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./globals/index.js */ \"./node_modules/@apollo/client/utilities/globals/index.js\");\n/* harmony import */ var _graphql_directives_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./graphql/directives.js */ \"./node_modules/@apollo/client/utilities/graphql/directives.js\");\n/* harmony import */ var _graphql_fragments_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./graphql/fragments.js */ \"./node_modules/@apollo/client/utilities/graphql/fragments.js\");\n/* harmony import */ var _graphql_getFromAST_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./graphql/getFromAST.js */ \"./node_modules/@apollo/client/utilities/graphql/getFromAST.js\");\n/* harmony import */ var _graphql_storeUtils_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./graphql/storeUtils.js */ \"./node_modules/@apollo/client/utilities/graphql/storeUtils.js\");\n/* harmony import */ var _graphql_transform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./graphql/transform.js */ \"./node_modules/@apollo/client/utilities/graphql/transform.js\");\n/* harmony import */ var _policies_pagination_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./policies/pagination.js */ \"./node_modules/@apollo/client/utilities/policies/pagination.js\");\n/* harmony import */ var _observables_Observable_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./observables/Observable.js */ \"./node_modules/@apollo/client/utilities/observables/Observable.js\");\n/* harmony import */ var _common_mergeDeep_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./common/mergeDeep.js */ \"./node_modules/@apollo/client/utilities/common/mergeDeep.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _common_mergeDeep_js__WEBPACK_IMPORTED_MODULE_8__) if([\"default\",\"DEV\",\"maybe\",\"shouldInclude\",\"hasDirectives\",\"hasClientExports\",\"getDirectiveNames\",\"getInclusionDirectives\",\"createFragmentMap\",\"getFragmentQueryDocument\",\"getFragmentFromSelection\",\"checkDocument\",\"getOperationDefinition\",\"getOperationName\",\"getFragmentDefinitions\",\"getQueryDefinition\",\"getFragmentDefinition\",\"getMainDefinition\",\"getDefaultValues\",\"makeReference\",\"isDocumentNode\",\"isReference\",\"isField\",\"isInlineFragment\",\"valueToObjectRepresentation\",\"storeKeyNameFromField\",\"argumentsObjectFromField\",\"resultKeyNameFromField\",\"getStoreKeyName\",\"getTypenameFromResult\",\"addTypenameToDocument\",\"buildQueryFromSelectionSet\",\"removeDirectivesFromDocument\",\"removeConnectionDirectiveFromDocument\",\"removeArgumentsFromDocument\",\"removeFragmentSpreadFromDocument\",\"removeClientSetsFromDocument\",\"concatPagination\",\"offsetLimitPagination\",\"relayStylePagination\",\"Observable\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _common_mergeDeep_js__WEBPACK_IMPORTED_MODULE_8__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _common_cloneDeep_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./common/cloneDeep.js */ \"./node_modules/@apollo/client/utilities/common/cloneDeep.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _common_cloneDeep_js__WEBPACK_IMPORTED_MODULE_9__) if([\"default\",\"DEV\",\"maybe\",\"shouldInclude\",\"hasDirectives\",\"hasClientExports\",\"getDirectiveNames\",\"getInclusionDirectives\",\"createFragmentMap\",\"getFragmentQueryDocument\",\"getFragmentFromSelection\",\"checkDocument\",\"getOperationDefinition\",\"getOperationName\",\"getFragmentDefinitions\",\"getQueryDefinition\",\"getFragmentDefinition\",\"getMainDefinition\",\"getDefaultValues\",\"makeReference\",\"isDocumentNode\",\"isReference\",\"isField\",\"isInlineFragment\",\"valueToObjectRepresentation\",\"storeKeyNameFromField\",\"argumentsObjectFromField\",\"resultKeyNameFromField\",\"getStoreKeyName\",\"getTypenameFromResult\",\"addTypenameToDocument\",\"buildQueryFromSelectionSet\",\"removeDirectivesFromDocument\",\"removeConnectionDirectiveFromDocument\",\"removeArgumentsFromDocument\",\"removeFragmentSpreadFromDocument\",\"removeClientSetsFromDocument\",\"concatPagination\",\"offsetLimitPagination\",\"relayStylePagination\",\"Observable\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _common_cloneDeep_js__WEBPACK_IMPORTED_MODULE_9__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _common_maybeDeepFreeze_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./common/maybeDeepFreeze.js */ \"./node_modules/@apollo/client/utilities/common/maybeDeepFreeze.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _common_maybeDeepFreeze_js__WEBPACK_IMPORTED_MODULE_10__) if([\"default\",\"DEV\",\"maybe\",\"shouldInclude\",\"hasDirectives\",\"hasClientExports\",\"getDirectiveNames\",\"getInclusionDirectives\",\"createFragmentMap\",\"getFragmentQueryDocument\",\"getFragmentFromSelection\",\"checkDocument\",\"getOperationDefinition\",\"getOperationName\",\"getFragmentDefinitions\",\"getQueryDefinition\",\"getFragmentDefinition\",\"getMainDefinition\",\"getDefaultValues\",\"makeReference\",\"isDocumentNode\",\"isReference\",\"isField\",\"isInlineFragment\",\"valueToObjectRepresentation\",\"storeKeyNameFromField\",\"argumentsObjectFromField\",\"resultKeyNameFromField\",\"getStoreKeyName\",\"getTypenameFromResult\",\"addTypenameToDocument\",\"buildQueryFromSelectionSet\",\"removeDirectivesFromDocument\",\"removeConnectionDirectiveFromDocument\",\"removeArgumentsFromDocument\",\"removeFragmentSpreadFromDocument\",\"removeClientSetsFromDocument\",\"concatPagination\",\"offsetLimitPagination\",\"relayStylePagination\",\"Observable\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _common_maybeDeepFreeze_js__WEBPACK_IMPORTED_MODULE_10__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _observables_iteration_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./observables/iteration.js */ \"./node_modules/@apollo/client/utilities/observables/iteration.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _observables_iteration_js__WEBPACK_IMPORTED_MODULE_11__) if([\"default\",\"DEV\",\"maybe\",\"shouldInclude\",\"hasDirectives\",\"hasClientExports\",\"getDirectiveNames\",\"getInclusionDirectives\",\"createFragmentMap\",\"getFragmentQueryDocument\",\"getFragmentFromSelection\",\"checkDocument\",\"getOperationDefinition\",\"getOperationName\",\"getFragmentDefinitions\",\"getQueryDefinition\",\"getFragmentDefinition\",\"getMainDefinition\",\"getDefaultValues\",\"makeReference\",\"isDocumentNode\",\"isReference\",\"isField\",\"isInlineFragment\",\"valueToObjectRepresentation\",\"storeKeyNameFromField\",\"argumentsObjectFromField\",\"resultKeyNameFromField\",\"getStoreKeyName\",\"getTypenameFromResult\",\"addTypenameToDocument\",\"buildQueryFromSelectionSet\",\"removeDirectivesFromDocument\",\"removeConnectionDirectiveFromDocument\",\"removeArgumentsFromDocument\",\"removeFragmentSpreadFromDocument\",\"removeClientSetsFromDocument\",\"concatPagination\",\"offsetLimitPagination\",\"relayStylePagination\",\"Observable\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _observables_iteration_js__WEBPACK_IMPORTED_MODULE_11__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _observables_asyncMap_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./observables/asyncMap.js */ \"./node_modules/@apollo/client/utilities/observables/asyncMap.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _observables_asyncMap_js__WEBPACK_IMPORTED_MODULE_12__) if([\"default\",\"DEV\",\"maybe\",\"shouldInclude\",\"hasDirectives\",\"hasClientExports\",\"getDirectiveNames\",\"getInclusionDirectives\",\"createFragmentMap\",\"getFragmentQueryDocument\",\"getFragmentFromSelection\",\"checkDocument\",\"getOperationDefinition\",\"getOperationName\",\"getFragmentDefinitions\",\"getQueryDefinition\",\"getFragmentDefinition\",\"getMainDefinition\",\"getDefaultValues\",\"makeReference\",\"isDocumentNode\",\"isReference\",\"isField\",\"isInlineFragment\",\"valueToObjectRepresentation\",\"storeKeyNameFromField\",\"argumentsObjectFromField\",\"resultKeyNameFromField\",\"getStoreKeyName\",\"getTypenameFromResult\",\"addTypenameToDocument\",\"buildQueryFromSelectionSet\",\"removeDirectivesFromDocument\",\"removeConnectionDirectiveFromDocument\",\"removeArgumentsFromDocument\",\"removeFragmentSpreadFromDocument\",\"removeClientSetsFromDocument\",\"concatPagination\",\"offsetLimitPagination\",\"relayStylePagination\",\"Observable\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _observables_asyncMap_js__WEBPACK_IMPORTED_MODULE_12__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _observables_Concast_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./observables/Concast.js */ \"./node_modules/@apollo/client/utilities/observables/Concast.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _observables_Concast_js__WEBPACK_IMPORTED_MODULE_13__) if([\"default\",\"DEV\",\"maybe\",\"shouldInclude\",\"hasDirectives\",\"hasClientExports\",\"getDirectiveNames\",\"getInclusionDirectives\",\"createFragmentMap\",\"getFragmentQueryDocument\",\"getFragmentFromSelection\",\"checkDocument\",\"getOperationDefinition\",\"getOperationName\",\"getFragmentDefinitions\",\"getQueryDefinition\",\"getFragmentDefinition\",\"getMainDefinition\",\"getDefaultValues\",\"makeReference\",\"isDocumentNode\",\"isReference\",\"isField\",\"isInlineFragment\",\"valueToObjectRepresentation\",\"storeKeyNameFromField\",\"argumentsObjectFromField\",\"resultKeyNameFromField\",\"getStoreKeyName\",\"getTypenameFromResult\",\"addTypenameToDocument\",\"buildQueryFromSelectionSet\",\"removeDirectivesFromDocument\",\"removeConnectionDirectiveFromDocument\",\"removeArgumentsFromDocument\",\"removeFragmentSpreadFromDocument\",\"removeClientSetsFromDocument\",\"concatPagination\",\"offsetLimitPagination\",\"relayStylePagination\",\"Observable\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _observables_Concast_js__WEBPACK_IMPORTED_MODULE_13__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _observables_subclassing_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./observables/subclassing.js */ \"./node_modules/@apollo/client/utilities/observables/subclassing.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _observables_subclassing_js__WEBPACK_IMPORTED_MODULE_14__) if([\"default\",\"DEV\",\"maybe\",\"shouldInclude\",\"hasDirectives\",\"hasClientExports\",\"getDirectiveNames\",\"getInclusionDirectives\",\"createFragmentMap\",\"getFragmentQueryDocument\",\"getFragmentFromSelection\",\"checkDocument\",\"getOperationDefinition\",\"getOperationName\",\"getFragmentDefinitions\",\"getQueryDefinition\",\"getFragmentDefinition\",\"getMainDefinition\",\"getDefaultValues\",\"makeReference\",\"isDocumentNode\",\"isReference\",\"isField\",\"isInlineFragment\",\"valueToObjectRepresentation\",\"storeKeyNameFromField\",\"argumentsObjectFromField\",\"resultKeyNameFromField\",\"getStoreKeyName\",\"getTypenameFromResult\",\"addTypenameToDocument\",\"buildQueryFromSelectionSet\",\"removeDirectivesFromDocument\",\"removeConnectionDirectiveFromDocument\",\"removeArgumentsFromDocument\",\"removeFragmentSpreadFromDocument\",\"removeClientSetsFromDocument\",\"concatPagination\",\"offsetLimitPagination\",\"relayStylePagination\",\"Observable\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _observables_subclassing_js__WEBPACK_IMPORTED_MODULE_14__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _common_arrays_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./common/arrays.js */ \"./node_modules/@apollo/client/utilities/common/arrays.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _common_arrays_js__WEBPACK_IMPORTED_MODULE_15__) if([\"default\",\"DEV\",\"maybe\",\"shouldInclude\",\"hasDirectives\",\"hasClientExports\",\"getDirectiveNames\",\"getInclusionDirectives\",\"createFragmentMap\",\"getFragmentQueryDocument\",\"getFragmentFromSelection\",\"checkDocument\",\"getOperationDefinition\",\"getOperationName\",\"getFragmentDefinitions\",\"getQueryDefinition\",\"getFragmentDefinition\",\"getMainDefinition\",\"getDefaultValues\",\"makeReference\",\"isDocumentNode\",\"isReference\",\"isField\",\"isInlineFragment\",\"valueToObjectRepresentation\",\"storeKeyNameFromField\",\"argumentsObjectFromField\",\"resultKeyNameFromField\",\"getStoreKeyName\",\"getTypenameFromResult\",\"addTypenameToDocument\",\"buildQueryFromSelectionSet\",\"removeDirectivesFromDocument\",\"removeConnectionDirectiveFromDocument\",\"removeArgumentsFromDocument\",\"removeFragmentSpreadFromDocument\",\"removeClientSetsFromDocument\",\"concatPagination\",\"offsetLimitPagination\",\"relayStylePagination\",\"Observable\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _common_arrays_js__WEBPACK_IMPORTED_MODULE_15__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _common_objects_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./common/objects.js */ \"./node_modules/@apollo/client/utilities/common/objects.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _common_objects_js__WEBPACK_IMPORTED_MODULE_16__) if([\"default\",\"DEV\",\"maybe\",\"shouldInclude\",\"hasDirectives\",\"hasClientExports\",\"getDirectiveNames\",\"getInclusionDirectives\",\"createFragmentMap\",\"getFragmentQueryDocument\",\"getFragmentFromSelection\",\"checkDocument\",\"getOperationDefinition\",\"getOperationName\",\"getFragmentDefinitions\",\"getQueryDefinition\",\"getFragmentDefinition\",\"getMainDefinition\",\"getDefaultValues\",\"makeReference\",\"isDocumentNode\",\"isReference\",\"isField\",\"isInlineFragment\",\"valueToObjectRepresentation\",\"storeKeyNameFromField\",\"argumentsObjectFromField\",\"resultKeyNameFromField\",\"getStoreKeyName\",\"getTypenameFromResult\",\"addTypenameToDocument\",\"buildQueryFromSelectionSet\",\"removeDirectivesFromDocument\",\"removeConnectionDirectiveFromDocument\",\"removeArgumentsFromDocument\",\"removeFragmentSpreadFromDocument\",\"removeClientSetsFromDocument\",\"concatPagination\",\"offsetLimitPagination\",\"relayStylePagination\",\"Observable\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _common_objects_js__WEBPACK_IMPORTED_MODULE_16__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _common_errorHandling_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./common/errorHandling.js */ \"./node_modules/@apollo/client/utilities/common/errorHandling.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _common_errorHandling_js__WEBPACK_IMPORTED_MODULE_17__) if([\"default\",\"DEV\",\"maybe\",\"shouldInclude\",\"hasDirectives\",\"hasClientExports\",\"getDirectiveNames\",\"getInclusionDirectives\",\"createFragmentMap\",\"getFragmentQueryDocument\",\"getFragmentFromSelection\",\"checkDocument\",\"getOperationDefinition\",\"getOperationName\",\"getFragmentDefinitions\",\"getQueryDefinition\",\"getFragmentDefinition\",\"getMainDefinition\",\"getDefaultValues\",\"makeReference\",\"isDocumentNode\",\"isReference\",\"isField\",\"isInlineFragment\",\"valueToObjectRepresentation\",\"storeKeyNameFromField\",\"argumentsObjectFromField\",\"resultKeyNameFromField\",\"getStoreKeyName\",\"getTypenameFromResult\",\"addTypenameToDocument\",\"buildQueryFromSelectionSet\",\"removeDirectivesFromDocument\",\"removeConnectionDirectiveFromDocument\",\"removeArgumentsFromDocument\",\"removeFragmentSpreadFromDocument\",\"removeClientSetsFromDocument\",\"concatPagination\",\"offsetLimitPagination\",\"relayStylePagination\",\"Observable\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _common_errorHandling_js__WEBPACK_IMPORTED_MODULE_17__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _common_canUse_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./common/canUse.js */ \"./node_modules/@apollo/client/utilities/common/canUse.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _common_canUse_js__WEBPACK_IMPORTED_MODULE_18__) if([\"default\",\"DEV\",\"maybe\",\"shouldInclude\",\"hasDirectives\",\"hasClientExports\",\"getDirectiveNames\",\"getInclusionDirectives\",\"createFragmentMap\",\"getFragmentQueryDocument\",\"getFragmentFromSelection\",\"checkDocument\",\"getOperationDefinition\",\"getOperationName\",\"getFragmentDefinitions\",\"getQueryDefinition\",\"getFragmentDefinition\",\"getMainDefinition\",\"getDefaultValues\",\"makeReference\",\"isDocumentNode\",\"isReference\",\"isField\",\"isInlineFragment\",\"valueToObjectRepresentation\",\"storeKeyNameFromField\",\"argumentsObjectFromField\",\"resultKeyNameFromField\",\"getStoreKeyName\",\"getTypenameFromResult\",\"addTypenameToDocument\",\"buildQueryFromSelectionSet\",\"removeDirectivesFromDocument\",\"removeConnectionDirectiveFromDocument\",\"removeArgumentsFromDocument\",\"removeFragmentSpreadFromDocument\",\"removeClientSetsFromDocument\",\"concatPagination\",\"offsetLimitPagination\",\"relayStylePagination\",\"Observable\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _common_canUse_js__WEBPACK_IMPORTED_MODULE_18__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _common_compact_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./common/compact.js */ \"./node_modules/@apollo/client/utilities/common/compact.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _common_compact_js__WEBPACK_IMPORTED_MODULE_19__) if([\"default\",\"DEV\",\"maybe\",\"shouldInclude\",\"hasDirectives\",\"hasClientExports\",\"getDirectiveNames\",\"getInclusionDirectives\",\"createFragmentMap\",\"getFragmentQueryDocument\",\"getFragmentFromSelection\",\"checkDocument\",\"getOperationDefinition\",\"getOperationName\",\"getFragmentDefinitions\",\"getQueryDefinition\",\"getFragmentDefinition\",\"getMainDefinition\",\"getDefaultValues\",\"makeReference\",\"isDocumentNode\",\"isReference\",\"isField\",\"isInlineFragment\",\"valueToObjectRepresentation\",\"storeKeyNameFromField\",\"argumentsObjectFromField\",\"resultKeyNameFromField\",\"getStoreKeyName\",\"getTypenameFromResult\",\"addTypenameToDocument\",\"buildQueryFromSelectionSet\",\"removeDirectivesFromDocument\",\"removeConnectionDirectiveFromDocument\",\"removeArgumentsFromDocument\",\"removeFragmentSpreadFromDocument\",\"removeClientSetsFromDocument\",\"concatPagination\",\"offsetLimitPagination\",\"relayStylePagination\",\"Observable\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _common_compact_js__WEBPACK_IMPORTED_MODULE_19__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _common_makeUniqueId_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./common/makeUniqueId.js */ \"./node_modules/@apollo/client/utilities/common/makeUniqueId.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _common_makeUniqueId_js__WEBPACK_IMPORTED_MODULE_20__) if([\"default\",\"DEV\",\"maybe\",\"shouldInclude\",\"hasDirectives\",\"hasClientExports\",\"getDirectiveNames\",\"getInclusionDirectives\",\"createFragmentMap\",\"getFragmentQueryDocument\",\"getFragmentFromSelection\",\"checkDocument\",\"getOperationDefinition\",\"getOperationName\",\"getFragmentDefinitions\",\"getQueryDefinition\",\"getFragmentDefinition\",\"getMainDefinition\",\"getDefaultValues\",\"makeReference\",\"isDocumentNode\",\"isReference\",\"isField\",\"isInlineFragment\",\"valueToObjectRepresentation\",\"storeKeyNameFromField\",\"argumentsObjectFromField\",\"resultKeyNameFromField\",\"getStoreKeyName\",\"getTypenameFromResult\",\"addTypenameToDocument\",\"buildQueryFromSelectionSet\",\"removeDirectivesFromDocument\",\"removeConnectionDirectiveFromDocument\",\"removeArgumentsFromDocument\",\"removeFragmentSpreadFromDocument\",\"removeClientSetsFromDocument\",\"concatPagination\",\"offsetLimitPagination\",\"relayStylePagination\",\"Observable\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _common_makeUniqueId_js__WEBPACK_IMPORTED_MODULE_20__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _common_stringifyForDisplay_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./common/stringifyForDisplay.js */ \"./node_modules/@apollo/client/utilities/common/stringifyForDisplay.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _common_stringifyForDisplay_js__WEBPACK_IMPORTED_MODULE_21__) if([\"default\",\"DEV\",\"maybe\",\"shouldInclude\",\"hasDirectives\",\"hasClientExports\",\"getDirectiveNames\",\"getInclusionDirectives\",\"createFragmentMap\",\"getFragmentQueryDocument\",\"getFragmentFromSelection\",\"checkDocument\",\"getOperationDefinition\",\"getOperationName\",\"getFragmentDefinitions\",\"getQueryDefinition\",\"getFragmentDefinition\",\"getMainDefinition\",\"getDefaultValues\",\"makeReference\",\"isDocumentNode\",\"isReference\",\"isField\",\"isInlineFragment\",\"valueToObjectRepresentation\",\"storeKeyNameFromField\",\"argumentsObjectFromField\",\"resultKeyNameFromField\",\"getStoreKeyName\",\"getTypenameFromResult\",\"addTypenameToDocument\",\"buildQueryFromSelectionSet\",\"removeDirectivesFromDocument\",\"removeConnectionDirectiveFromDocument\",\"removeArgumentsFromDocument\",\"removeFragmentSpreadFromDocument\",\"removeClientSetsFromDocument\",\"concatPagination\",\"offsetLimitPagination\",\"relayStylePagination\",\"Observable\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _common_stringifyForDisplay_js__WEBPACK_IMPORTED_MODULE_21__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _types_IsStrictlyAny_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./types/IsStrictlyAny.js */ \"./node_modules/@apollo/client/utilities/types/IsStrictlyAny.js\");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _types_IsStrictlyAny_js__WEBPACK_IMPORTED_MODULE_22__) if([\"default\",\"DEV\",\"maybe\",\"shouldInclude\",\"hasDirectives\",\"hasClientExports\",\"getDirectiveNames\",\"getInclusionDirectives\",\"createFragmentMap\",\"getFragmentQueryDocument\",\"getFragmentFromSelection\",\"checkDocument\",\"getOperationDefinition\",\"getOperationName\",\"getFragmentDefinitions\",\"getQueryDefinition\",\"getFragmentDefinition\",\"getMainDefinition\",\"getDefaultValues\",\"makeReference\",\"isDocumentNode\",\"isReference\",\"isField\",\"isInlineFragment\",\"valueToObjectRepresentation\",\"storeKeyNameFromField\",\"argumentsObjectFromField\",\"resultKeyNameFromField\",\"getStoreKeyName\",\"getTypenameFromResult\",\"addTypenameToDocument\",\"buildQueryFromSelectionSet\",\"removeDirectivesFromDocument\",\"removeConnectionDirectiveFromDocument\",\"removeArgumentsFromDocument\",\"removeFragmentSpreadFromDocument\",\"removeClientSetsFromDocument\",\"concatPagination\",\"offsetLimitPagination\",\"relayStylePagination\",\"Observable\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _types_IsStrictlyAny_js__WEBPACK_IMPORTED_MODULE_22__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFnRDtBQUNxRjtBQUNyQjtBQUMyRjtBQUNvRDtBQUNEO0FBQ3BKO0FBQ2pEO0FBQ25CO0FBQ0E7QUFDTTtBQUNEO0FBQ0Q7QUFDRDtBQUNJO0FBQ1Y7QUFDQztBQUNNO0FBQ1A7QUFDQztBQUNLO0FBQ087QUFDUDtBQUN6QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL2luZGV4LmpzP2I1ZWQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgREVWLCBtYXliZSB9IGZyb20gXCIuL2dsb2JhbHMvaW5kZXguanNcIjtcbmV4cG9ydCB7IHNob3VsZEluY2x1ZGUsIGhhc0RpcmVjdGl2ZXMsIGhhc0NsaWVudEV4cG9ydHMsIGdldERpcmVjdGl2ZU5hbWVzLCBnZXRJbmNsdXNpb25EaXJlY3RpdmVzLCB9IGZyb20gXCIuL2dyYXBocWwvZGlyZWN0aXZlcy5qc1wiO1xuZXhwb3J0IHsgY3JlYXRlRnJhZ21lbnRNYXAsIGdldEZyYWdtZW50UXVlcnlEb2N1bWVudCwgZ2V0RnJhZ21lbnRGcm9tU2VsZWN0aW9uLCB9IGZyb20gXCIuL2dyYXBocWwvZnJhZ21lbnRzLmpzXCI7XG5leHBvcnQgeyBjaGVja0RvY3VtZW50LCBnZXRPcGVyYXRpb25EZWZpbml0aW9uLCBnZXRPcGVyYXRpb25OYW1lLCBnZXRGcmFnbWVudERlZmluaXRpb25zLCBnZXRRdWVyeURlZmluaXRpb24sIGdldEZyYWdtZW50RGVmaW5pdGlvbiwgZ2V0TWFpbkRlZmluaXRpb24sIGdldERlZmF1bHRWYWx1ZXMsIH0gZnJvbSBcIi4vZ3JhcGhxbC9nZXRGcm9tQVNULmpzXCI7XG5leHBvcnQgeyBtYWtlUmVmZXJlbmNlLCBpc0RvY3VtZW50Tm9kZSwgaXNSZWZlcmVuY2UsIGlzRmllbGQsIGlzSW5saW5lRnJhZ21lbnQsIHZhbHVlVG9PYmplY3RSZXByZXNlbnRhdGlvbiwgc3RvcmVLZXlOYW1lRnJvbUZpZWxkLCBhcmd1bWVudHNPYmplY3RGcm9tRmllbGQsIHJlc3VsdEtleU5hbWVGcm9tRmllbGQsIGdldFN0b3JlS2V5TmFtZSwgZ2V0VHlwZW5hbWVGcm9tUmVzdWx0LCB9IGZyb20gXCIuL2dyYXBocWwvc3RvcmVVdGlscy5qc1wiO1xuZXhwb3J0IHsgYWRkVHlwZW5hbWVUb0RvY3VtZW50LCBidWlsZFF1ZXJ5RnJvbVNlbGVjdGlvblNldCwgcmVtb3ZlRGlyZWN0aXZlc0Zyb21Eb2N1bWVudCwgcmVtb3ZlQ29ubmVjdGlvbkRpcmVjdGl2ZUZyb21Eb2N1bWVudCwgcmVtb3ZlQXJndW1lbnRzRnJvbURvY3VtZW50LCByZW1vdmVGcmFnbWVudFNwcmVhZEZyb21Eb2N1bWVudCwgcmVtb3ZlQ2xpZW50U2V0c0Zyb21Eb2N1bWVudCwgfSBmcm9tIFwiLi9ncmFwaHFsL3RyYW5zZm9ybS5qc1wiO1xuZXhwb3J0IHsgY29uY2F0UGFnaW5hdGlvbiwgb2Zmc2V0TGltaXRQYWdpbmF0aW9uLCByZWxheVN0eWxlUGFnaW5hdGlvbiwgfSBmcm9tIFwiLi9wb2xpY2llcy9wYWdpbmF0aW9uLmpzXCI7XG5leHBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcIi4vb2JzZXJ2YWJsZXMvT2JzZXJ2YWJsZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tbW9uL21lcmdlRGVlcC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tbW9uL2Nsb25lRGVlcC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tbW9uL21heWJlRGVlcEZyZWV6ZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vb2JzZXJ2YWJsZXMvaXRlcmF0aW9uLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9vYnNlcnZhYmxlcy9hc3luY01hcC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vb2JzZXJ2YWJsZXMvQ29uY2FzdC5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vb2JzZXJ2YWJsZXMvc3ViY2xhc3NpbmcuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbW1vbi9hcnJheXMuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbW1vbi9vYmplY3RzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb21tb24vZXJyb3JIYW5kbGluZy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tbW9uL2NhblVzZS5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tbW9uL2NvbXBhY3QuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbW1vbi9tYWtlVW5pcXVlSWQuanNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbW1vbi9zdHJpbmdpZnlGb3JEaXNwbGF5LmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy9Jc1N0cmljdGx5QW55LmpzXCI7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/index.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/observables/Concast.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/observables/Concast.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Concast\": function() { return /* binding */ Concast; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _Observable_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Observable.js */ \"./node_modules/@apollo/client/utilities/observables/Observable.js\");\n/* harmony import */ var _iteration_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./iteration.js */ \"./node_modules/@apollo/client/utilities/observables/iteration.js\");\n/* harmony import */ var _subclassing_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./subclassing.js */ \"./node_modules/@apollo/client/utilities/observables/subclassing.js\");\n\n\n\n\nfunction isPromiseLike(value) {\n    return value && typeof value.then === \"function\";\n}\nvar Concast = (function (_super) {\n    (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(Concast, _super);\n    function Concast(sources) {\n        var _this = _super.call(this, function (observer) {\n            _this.addObserver(observer);\n            return function () { return _this.removeObserver(observer); };\n        }) || this;\n        _this.observers = new Set();\n        _this.addCount = 0;\n        _this.promise = new Promise(function (resolve, reject) {\n            _this.resolve = resolve;\n            _this.reject = reject;\n        });\n        _this.handlers = {\n            next: function (result) {\n                if (_this.sub !== null) {\n                    _this.latest = [\"next\", result];\n                    (0,_iteration_js__WEBPACK_IMPORTED_MODULE_1__.iterateObserversSafely)(_this.observers, \"next\", result);\n                }\n            },\n            error: function (error) {\n                var sub = _this.sub;\n                if (sub !== null) {\n                    if (sub)\n                        setTimeout(function () { return sub.unsubscribe(); });\n                    _this.sub = null;\n                    _this.latest = [\"error\", error];\n                    _this.reject(error);\n                    (0,_iteration_js__WEBPACK_IMPORTED_MODULE_1__.iterateObserversSafely)(_this.observers, \"error\", error);\n                }\n            },\n            complete: function () {\n                if (_this.sub !== null) {\n                    var value = _this.sources.shift();\n                    if (!value) {\n                        _this.sub = null;\n                        if (_this.latest &&\n                            _this.latest[0] === \"next\") {\n                            _this.resolve(_this.latest[1]);\n                        }\n                        else {\n                            _this.resolve();\n                        }\n                        (0,_iteration_js__WEBPACK_IMPORTED_MODULE_1__.iterateObserversSafely)(_this.observers, \"complete\");\n                    }\n                    else if (isPromiseLike(value)) {\n                        value.then(function (obs) { return _this.sub = obs.subscribe(_this.handlers); });\n                    }\n                    else {\n                        _this.sub = value.subscribe(_this.handlers);\n                    }\n                }\n            },\n        };\n        _this.cancel = function (reason) {\n            _this.reject(reason);\n            _this.sources = [];\n            _this.handlers.complete();\n        };\n        _this.promise.catch(function (_) { });\n        if (typeof sources === \"function\") {\n            sources = [new _Observable_js__WEBPACK_IMPORTED_MODULE_2__.Observable(sources)];\n        }\n        if (isPromiseLike(sources)) {\n            sources.then(function (iterable) { return _this.start(iterable); }, _this.handlers.error);\n        }\n        else {\n            _this.start(sources);\n        }\n        return _this;\n    }\n    Concast.prototype.start = function (sources) {\n        if (this.sub !== void 0)\n            return;\n        this.sources = Array.from(sources);\n        this.handlers.complete();\n    };\n    Concast.prototype.deliverLastMessage = function (observer) {\n        if (this.latest) {\n            var nextOrError = this.latest[0];\n            var method = observer[nextOrError];\n            if (method) {\n                method.call(observer, this.latest[1]);\n            }\n            if (this.sub === null &&\n                nextOrError === \"next\" &&\n                observer.complete) {\n                observer.complete();\n            }\n        }\n    };\n    Concast.prototype.addObserver = function (observer) {\n        if (!this.observers.has(observer)) {\n            this.deliverLastMessage(observer);\n            this.observers.add(observer);\n            ++this.addCount;\n        }\n    };\n    Concast.prototype.removeObserver = function (observer, quietly) {\n        if (this.observers.delete(observer) &&\n            --this.addCount < 1 &&\n            !quietly) {\n            this.handlers.error(new Error(\"Observable cancelled prematurely\"));\n        }\n    };\n    Concast.prototype.cleanup = function (callback) {\n        var _this = this;\n        var called = false;\n        var once = function () {\n            if (!called) {\n                called = true;\n                _this.observers.delete(observer);\n                callback();\n            }\n        };\n        var observer = {\n            next: once,\n            error: once,\n            complete: once,\n        };\n        var count = this.addCount;\n        this.addObserver(observer);\n        this.addCount = count;\n    };\n    return Concast;\n}(_Observable_js__WEBPACK_IMPORTED_MODULE_2__.Observable));\n\n(0,_subclassing_js__WEBPACK_IMPORTED_MODULE_3__.fixObservableSubclass)(Concast);\n//# sourceMappingURL=Concast.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL29ic2VydmFibGVzL0NvbmNhc3QuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBa0M7QUFDVztBQUNXO0FBQ0M7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGdEQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHFFQUFzQjtBQUMxQztBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlEQUFpRCwyQkFBMkI7QUFDNUU7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHFFQUFzQjtBQUMxQztBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IscUVBQXNCO0FBQzlDO0FBQ0E7QUFDQSxvREFBb0QsbURBQW1EO0FBQ3ZHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDO0FBQ0EsMkJBQTJCLHNEQUFVO0FBQ3JDO0FBQ0E7QUFDQSwrQ0FBK0MsK0JBQStCO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyxzREFBVTtBQUNPO0FBQ25CLHNFQUFxQjtBQUNyQiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL29ic2VydmFibGVzL0NvbmNhc3QuanM/OTU3YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwiLi9PYnNlcnZhYmxlLmpzXCI7XG5pbXBvcnQgeyBpdGVyYXRlT2JzZXJ2ZXJzU2FmZWx5IH0gZnJvbSBcIi4vaXRlcmF0aW9uLmpzXCI7XG5pbXBvcnQgeyBmaXhPYnNlcnZhYmxlU3ViY2xhc3MgfSBmcm9tIFwiLi9zdWJjbGFzc2luZy5qc1wiO1xuZnVuY3Rpb24gaXNQcm9taXNlTGlrZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PT0gXCJmdW5jdGlvblwiO1xufVxudmFyIENvbmNhc3QgPSAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDb25jYXN0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENvbmNhc3Qoc291cmNlcykge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIF90aGlzLmFkZE9ic2VydmVyKG9ic2VydmVyKTtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBfdGhpcy5yZW1vdmVPYnNlcnZlcihvYnNlcnZlcik7IH07XG4gICAgICAgIH0pIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLm9ic2VydmVycyA9IG5ldyBTZXQoKTtcbiAgICAgICAgX3RoaXMuYWRkQ291bnQgPSAwO1xuICAgICAgICBfdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgX3RoaXMucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgICAgICBfdGhpcy5yZWplY3QgPSByZWplY3Q7XG4gICAgICAgIH0pO1xuICAgICAgICBfdGhpcy5oYW5kbGVycyA9IHtcbiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMuc3ViICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmxhdGVzdCA9IFtcIm5leHRcIiwgcmVzdWx0XTtcbiAgICAgICAgICAgICAgICAgICAgaXRlcmF0ZU9ic2VydmVyc1NhZmVseShfdGhpcy5vYnNlcnZlcnMsIFwibmV4dFwiLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdmFyIHN1YiA9IF90aGlzLnN1YjtcbiAgICAgICAgICAgICAgICBpZiAoc3ViICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdWIpXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN1Yi51bnN1YnNjcmliZSgpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuc3ViID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMubGF0ZXN0ID0gW1wiZXJyb3JcIiwgZXJyb3JdO1xuICAgICAgICAgICAgICAgICAgICBfdGhpcy5yZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICBpdGVyYXRlT2JzZXJ2ZXJzU2FmZWx5KF90aGlzLm9ic2VydmVycywgXCJlcnJvclwiLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKF90aGlzLnN1YiAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBfdGhpcy5zb3VyY2VzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnN1YiA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXMubGF0ZXN0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMubGF0ZXN0WzBdID09PSBcIm5leHRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnJlc29sdmUoX3RoaXMubGF0ZXN0WzFdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdGVPYnNlcnZlcnNTYWZlbHkoX3RoaXMub2JzZXJ2ZXJzLCBcImNvbXBsZXRlXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzUHJvbWlzZUxpa2UodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS50aGVuKGZ1bmN0aW9uIChvYnMpIHsgcmV0dXJuIF90aGlzLnN1YiA9IG9icy5zdWJzY3JpYmUoX3RoaXMuaGFuZGxlcnMpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzLnN1YiA9IHZhbHVlLnN1YnNjcmliZShfdGhpcy5oYW5kbGVycyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBfdGhpcy5jYW5jZWwgPSBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgICAgICBfdGhpcy5yZWplY3QocmVhc29uKTtcbiAgICAgICAgICAgIF90aGlzLnNvdXJjZXMgPSBbXTtcbiAgICAgICAgICAgIF90aGlzLmhhbmRsZXJzLmNvbXBsZXRlKCk7XG4gICAgICAgIH07XG4gICAgICAgIF90aGlzLnByb21pc2UuY2F0Y2goZnVuY3Rpb24gKF8pIHsgfSk7XG4gICAgICAgIGlmICh0eXBlb2Ygc291cmNlcyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBzb3VyY2VzID0gW25ldyBPYnNlcnZhYmxlKHNvdXJjZXMpXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNQcm9taXNlTGlrZShzb3VyY2VzKSkge1xuICAgICAgICAgICAgc291cmNlcy50aGVuKGZ1bmN0aW9uIChpdGVyYWJsZSkgeyByZXR1cm4gX3RoaXMuc3RhcnQoaXRlcmFibGUpOyB9LCBfdGhpcy5oYW5kbGVycy5lcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5zdGFydChzb3VyY2VzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIENvbmNhc3QucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24gKHNvdXJjZXMpIHtcbiAgICAgICAgaWYgKHRoaXMuc3ViICE9PSB2b2lkIDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuc291cmNlcyA9IEFycmF5LmZyb20oc291cmNlcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlcnMuY29tcGxldGUoKTtcbiAgICB9O1xuICAgIENvbmNhc3QucHJvdG90eXBlLmRlbGl2ZXJMYXN0TWVzc2FnZSA9IGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICBpZiAodGhpcy5sYXRlc3QpIHtcbiAgICAgICAgICAgIHZhciBuZXh0T3JFcnJvciA9IHRoaXMubGF0ZXN0WzBdO1xuICAgICAgICAgICAgdmFyIG1ldGhvZCA9IG9ic2VydmVyW25leHRPckVycm9yXTtcbiAgICAgICAgICAgIGlmIChtZXRob2QpIHtcbiAgICAgICAgICAgICAgICBtZXRob2QuY2FsbChvYnNlcnZlciwgdGhpcy5sYXRlc3RbMV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuc3ViID09PSBudWxsICYmXG4gICAgICAgICAgICAgICAgbmV4dE9yRXJyb3IgPT09IFwibmV4dFwiICYmXG4gICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUpIHtcbiAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBDb25jYXN0LnByb3RvdHlwZS5hZGRPYnNlcnZlciA9IGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICBpZiAoIXRoaXMub2JzZXJ2ZXJzLmhhcyhvYnNlcnZlcikpIHtcbiAgICAgICAgICAgIHRoaXMuZGVsaXZlckxhc3RNZXNzYWdlKG9ic2VydmVyKTtcbiAgICAgICAgICAgIHRoaXMub2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7XG4gICAgICAgICAgICArK3RoaXMuYWRkQ291bnQ7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIENvbmNhc3QucHJvdG90eXBlLnJlbW92ZU9ic2VydmVyID0gZnVuY3Rpb24gKG9ic2VydmVyLCBxdWlldGx5KSB7XG4gICAgICAgIGlmICh0aGlzLm9ic2VydmVycy5kZWxldGUob2JzZXJ2ZXIpICYmXG4gICAgICAgICAgICAtLXRoaXMuYWRkQ291bnQgPCAxICYmXG4gICAgICAgICAgICAhcXVpZXRseSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVycy5lcnJvcihuZXcgRXJyb3IoXCJPYnNlcnZhYmxlIGNhbmNlbGxlZCBwcmVtYXR1cmVseVwiKSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIENvbmNhc3QucHJvdG90eXBlLmNsZWFudXAgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICAgICAgICB2YXIgb25jZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgY2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBfdGhpcy5vYnNlcnZlcnMuZGVsZXRlKG9ic2VydmVyKTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB2YXIgb2JzZXJ2ZXIgPSB7XG4gICAgICAgICAgICBuZXh0OiBvbmNlLFxuICAgICAgICAgICAgZXJyb3I6IG9uY2UsXG4gICAgICAgICAgICBjb21wbGV0ZTogb25jZSxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGNvdW50ID0gdGhpcy5hZGRDb3VudDtcbiAgICAgICAgdGhpcy5hZGRPYnNlcnZlcihvYnNlcnZlcik7XG4gICAgICAgIHRoaXMuYWRkQ291bnQgPSBjb3VudDtcbiAgICB9O1xuICAgIHJldHVybiBDb25jYXN0O1xufShPYnNlcnZhYmxlKSk7XG5leHBvcnQgeyBDb25jYXN0IH07XG5maXhPYnNlcnZhYmxlU3ViY2xhc3MoQ29uY2FzdCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1Db25jYXN0LmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/observables/Concast.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/observables/Observable.js":
/*!*************************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/observables/Observable.js ***!
  \*************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Observable\": function() { return /* reexport safe */ zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__.Observable; }\n/* harmony export */ });\n/* harmony import */ var zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! zen-observable-ts */ \"./node_modules/zen-observable-ts/module.js\");\n/* harmony import */ var symbol_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! symbol-observable */ \"./node_modules/symbol-observable/es/index.js\");\n\n\nvar prototype = zen_observable_ts__WEBPACK_IMPORTED_MODULE_0__.Observable.prototype;\nvar fakeObsSymbol = '@@observable';\nif (!prototype[fakeObsSymbol]) {\n    prototype[fakeObsSymbol] = function () { return this; };\n}\n\n//# sourceMappingURL=Observable.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL29ic2VydmFibGVzL09ic2VydmFibGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQWdEO0FBQ3JCO0FBQzNCLGdCQUFnQixtRUFBb0I7QUFDcEM7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNzQjtBQUN0QiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL29ic2VydmFibGVzL09ic2VydmFibGUuanM/OTM1MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCB9IGZyb20gJ3plbi1vYnNlcnZhYmxlLXRzJztcbmltcG9ydCAnc3ltYm9sLW9ic2VydmFibGUnO1xudmFyIHByb3RvdHlwZSA9IE9ic2VydmFibGUucHJvdG90eXBlO1xudmFyIGZha2VPYnNTeW1ib2wgPSAnQEBvYnNlcnZhYmxlJztcbmlmICghcHJvdG90eXBlW2Zha2VPYnNTeW1ib2xdKSB7XG4gICAgcHJvdG90eXBlW2Zha2VPYnNTeW1ib2xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcbn1cbmV4cG9ydCB7IE9ic2VydmFibGUgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPU9ic2VydmFibGUuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/observables/Observable.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/observables/asyncMap.js":
/*!***********************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/observables/asyncMap.js ***!
  \***********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"asyncMap\": function() { return /* binding */ asyncMap; }\n/* harmony export */ });\n/* harmony import */ var _Observable_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Observable.js */ \"./node_modules/@apollo/client/utilities/observables/Observable.js\");\n\nfunction asyncMap(observable, mapFn, catchFn) {\n    return new _Observable_js__WEBPACK_IMPORTED_MODULE_0__.Observable(function (observer) {\n        var next = observer.next, error = observer.error, complete = observer.complete;\n        var activeCallbackCount = 0;\n        var completed = false;\n        var promiseQueue = {\n            then: function (callback) {\n                return new Promise(function (resolve) { return resolve(callback()); });\n            },\n        };\n        function makeCallback(examiner, delegate) {\n            if (examiner) {\n                return function (arg) {\n                    ++activeCallbackCount;\n                    var both = function () { return examiner(arg); };\n                    promiseQueue = promiseQueue.then(both, both).then(function (result) {\n                        --activeCallbackCount;\n                        next && next.call(observer, result);\n                        if (completed) {\n                            handler.complete();\n                        }\n                    }, function (error) {\n                        --activeCallbackCount;\n                        throw error;\n                    }).catch(function (caught) {\n                        error && error.call(observer, caught);\n                    });\n                };\n            }\n            else {\n                return function (arg) { return delegate && delegate.call(observer, arg); };\n            }\n        }\n        var handler = {\n            next: makeCallback(mapFn, next),\n            error: makeCallback(catchFn, error),\n            complete: function () {\n                completed = true;\n                if (!activeCallbackCount) {\n                    complete && complete.call(observer);\n                }\n            },\n        };\n        var sub = observable.subscribe(handler);\n        return function () { return sub.unsubscribe(); };\n    });\n}\n//# sourceMappingURL=asyncMap.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL29ic2VydmFibGVzL2FzeW5jTWFwLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTZDO0FBQ3RDO0FBQ1AsZUFBZSxzREFBVTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdELDZCQUE2QjtBQUNyRixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QixLQUFLO0FBQ0w7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL29ic2VydmFibGVzL2FzeW5jTWFwLmpzPzY3ZDMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCIuL09ic2VydmFibGUuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBhc3luY01hcChvYnNlcnZhYmxlLCBtYXBGbiwgY2F0Y2hGbikge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgdmFyIG5leHQgPSBvYnNlcnZlci5uZXh0LCBlcnJvciA9IG9ic2VydmVyLmVycm9yLCBjb21wbGV0ZSA9IG9ic2VydmVyLmNvbXBsZXRlO1xuICAgICAgICB2YXIgYWN0aXZlQ2FsbGJhY2tDb3VudCA9IDA7XG4gICAgICAgIHZhciBjb21wbGV0ZWQgPSBmYWxzZTtcbiAgICAgICAgdmFyIHByb21pc2VRdWV1ZSA9IHtcbiAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXR1cm4gcmVzb2x2ZShjYWxsYmFjaygpKTsgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBmdW5jdGlvbiBtYWtlQ2FsbGJhY2soZXhhbWluZXIsIGRlbGVnYXRlKSB7XG4gICAgICAgICAgICBpZiAoZXhhbWluZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAgICAgICAgICAgICAgICAgICArK2FjdGl2ZUNhbGxiYWNrQ291bnQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciBib3RoID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZXhhbWluZXIoYXJnKTsgfTtcbiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZVF1ZXVlID0gcHJvbWlzZVF1ZXVlLnRoZW4oYm90aCwgYm90aCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAtLWFjdGl2ZUNhbGxiYWNrQ291bnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0ICYmIG5leHQuY2FsbChvYnNlcnZlciwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLS1hY3RpdmVDYWxsYmFja0NvdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChjYXVnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yICYmIGVycm9yLmNhbGwob2JzZXJ2ZXIsIGNhdWdodCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGFyZykgeyByZXR1cm4gZGVsZWdhdGUgJiYgZGVsZWdhdGUuY2FsbChvYnNlcnZlciwgYXJnKTsgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgaGFuZGxlciA9IHtcbiAgICAgICAgICAgIG5leHQ6IG1ha2VDYWxsYmFjayhtYXBGbiwgbmV4dCksXG4gICAgICAgICAgICBlcnJvcjogbWFrZUNhbGxiYWNrKGNhdGNoRm4sIGVycm9yKSxcbiAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZUNhbGxiYWNrQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGUgJiYgY29tcGxldGUuY2FsbChvYnNlcnZlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHN1YiA9IG9ic2VydmFibGUuc3Vic2NyaWJlKGhhbmRsZXIpO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gc3ViLnVuc3Vic2NyaWJlKCk7IH07XG4gICAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1hc3luY01hcC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/observables/asyncMap.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/observables/iteration.js":
/*!************************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/observables/iteration.js ***!
  \************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"iterateObserversSafely\": function() { return /* binding */ iterateObserversSafely; }\n/* harmony export */ });\nfunction iterateObserversSafely(observers, method, argument) {\n    var observersWithMethod = [];\n    observers.forEach(function (obs) { return obs[method] && observersWithMethod.push(obs); });\n    observersWithMethod.forEach(function (obs) { return obs[method](argument); });\n}\n//# sourceMappingURL=iteration.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL29ic2VydmFibGVzL2l0ZXJhdGlvbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU87QUFDUDtBQUNBLHVDQUF1QyxzREFBc0Q7QUFDN0YsaURBQWlELCtCQUErQjtBQUNoRjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC91dGlsaXRpZXMvb2JzZXJ2YWJsZXMvaXRlcmF0aW9uLmpzPzg1ZjMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVPYnNlcnZlcnNTYWZlbHkob2JzZXJ2ZXJzLCBtZXRob2QsIGFyZ3VtZW50KSB7XG4gICAgdmFyIG9ic2VydmVyc1dpdGhNZXRob2QgPSBbXTtcbiAgICBvYnNlcnZlcnMuZm9yRWFjaChmdW5jdGlvbiAob2JzKSB7IHJldHVybiBvYnNbbWV0aG9kXSAmJiBvYnNlcnZlcnNXaXRoTWV0aG9kLnB1c2gob2JzKTsgfSk7XG4gICAgb2JzZXJ2ZXJzV2l0aE1ldGhvZC5mb3JFYWNoKGZ1bmN0aW9uIChvYnMpIHsgcmV0dXJuIG9ic1ttZXRob2RdKGFyZ3VtZW50KTsgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pdGVyYXRpb24uanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/observables/iteration.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/observables/subclassing.js":
/*!**************************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/observables/subclassing.js ***!
  \**************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"fixObservableSubclass\": function() { return /* binding */ fixObservableSubclass; }\n/* harmony export */ });\n/* harmony import */ var _Observable_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Observable.js */ \"./node_modules/@apollo/client/utilities/observables/Observable.js\");\n/* harmony import */ var _common_canUse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/canUse.js */ \"./node_modules/@apollo/client/utilities/common/canUse.js\");\n\n\nfunction fixObservableSubclass(subclass) {\n    function set(key) {\n        Object.defineProperty(subclass, key, { value: _Observable_js__WEBPACK_IMPORTED_MODULE_0__.Observable });\n    }\n    if (_common_canUse_js__WEBPACK_IMPORTED_MODULE_1__.canUseSymbol && Symbol.species) {\n        set(Symbol.species);\n    }\n    set(\"@@species\");\n    return subclass;\n}\n//# sourceMappingURL=subclassing.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL29ic2VydmFibGVzL3N1YmNsYXNzaW5nLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE2QztBQUNNO0FBQzVDO0FBQ1A7QUFDQSwrQ0FBK0MsT0FBTyxzREFBVSxFQUFFO0FBQ2xFO0FBQ0EsUUFBUSwyREFBWTtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L3V0aWxpdGllcy9vYnNlcnZhYmxlcy9zdWJjbGFzc2luZy5qcz83ZjEwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwiLi9PYnNlcnZhYmxlLmpzXCI7XG5pbXBvcnQgeyBjYW5Vc2VTeW1ib2wgfSBmcm9tIFwiLi4vY29tbW9uL2NhblVzZS5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIGZpeE9ic2VydmFibGVTdWJjbGFzcyhzdWJjbGFzcykge1xuICAgIGZ1bmN0aW9uIHNldChrZXkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN1YmNsYXNzLCBrZXksIHsgdmFsdWU6IE9ic2VydmFibGUgfSk7XG4gICAgfVxuICAgIGlmIChjYW5Vc2VTeW1ib2wgJiYgU3ltYm9sLnNwZWNpZXMpIHtcbiAgICAgICAgc2V0KFN5bWJvbC5zcGVjaWVzKTtcbiAgICB9XG4gICAgc2V0KFwiQEBzcGVjaWVzXCIpO1xuICAgIHJldHVybiBzdWJjbGFzcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN1YmNsYXNzaW5nLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/observables/subclassing.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/policies/pagination.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/policies/pagination.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"concatPagination\": function() { return /* binding */ concatPagination; },\n/* harmony export */   \"offsetLimitPagination\": function() { return /* binding */ offsetLimitPagination; },\n/* harmony export */   \"relayStylePagination\": function() { return /* binding */ relayStylePagination; }\n/* harmony export */ });\n/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ \"./node_modules/@apollo/client/node_modules/tslib/tslib.es6.js\");\n/* harmony import */ var _common_mergeDeep_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common/mergeDeep.js */ \"./node_modules/@apollo/client/utilities/common/mergeDeep.js\");\n\n\n\nfunction concatPagination(keyArgs) {\n    if (keyArgs === void 0) { keyArgs = false; }\n    return {\n        keyArgs: keyArgs,\n        merge: function (existing, incoming) {\n            return existing ? (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__spreadArray)((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__spreadArray)([], existing, true), incoming, true) : incoming;\n        },\n    };\n}\nfunction offsetLimitPagination(keyArgs) {\n    if (keyArgs === void 0) { keyArgs = false; }\n    return {\n        keyArgs: keyArgs,\n        merge: function (existing, incoming, _a) {\n            var args = _a.args;\n            var merged = existing ? existing.slice(0) : [];\n            if (args) {\n                var _b = args.offset, offset = _b === void 0 ? 0 : _b;\n                for (var i = 0; i < incoming.length; ++i) {\n                    merged[offset + i] = incoming[i];\n                }\n            }\n            else {\n                merged.push.apply(merged, incoming);\n            }\n            return merged;\n        },\n    };\n}\nfunction relayStylePagination(keyArgs) {\n    if (keyArgs === void 0) { keyArgs = false; }\n    return {\n        keyArgs: keyArgs,\n        read: function (existing, _a) {\n            var canRead = _a.canRead, readField = _a.readField;\n            if (!existing)\n                return existing;\n            var edges = [];\n            var firstEdgeCursor = \"\";\n            var lastEdgeCursor = \"\";\n            existing.edges.forEach(function (edge) {\n                if (canRead(readField(\"node\", edge))) {\n                    edges.push(edge);\n                    if (edge.cursor) {\n                        firstEdgeCursor = firstEdgeCursor || edge.cursor || \"\";\n                        lastEdgeCursor = edge.cursor || lastEdgeCursor;\n                    }\n                }\n            });\n            var _b = existing.pageInfo || {}, startCursor = _b.startCursor, endCursor = _b.endCursor;\n            return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)({}, getExtras(existing)), { edges: edges, pageInfo: (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)({}, existing.pageInfo), { startCursor: startCursor || firstEdgeCursor, endCursor: endCursor || lastEdgeCursor }) });\n        },\n        merge: function (existing, incoming, _a) {\n            var args = _a.args, isReference = _a.isReference, readField = _a.readField;\n            if (!existing) {\n                existing = makeEmptyData();\n            }\n            if (!incoming) {\n                return existing;\n            }\n            var incomingEdges = incoming.edges ? incoming.edges.map(function (edge) {\n                if (isReference(edge = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)({}, edge))) {\n                    edge.cursor = readField(\"cursor\", edge);\n                }\n                return edge;\n            }) : [];\n            if (incoming.pageInfo) {\n                var pageInfo_1 = incoming.pageInfo;\n                var startCursor = pageInfo_1.startCursor, endCursor = pageInfo_1.endCursor;\n                var firstEdge = incomingEdges[0];\n                var lastEdge = incomingEdges[incomingEdges.length - 1];\n                if (firstEdge && startCursor) {\n                    firstEdge.cursor = startCursor;\n                }\n                if (lastEdge && endCursor) {\n                    lastEdge.cursor = endCursor;\n                }\n                var firstCursor = firstEdge && firstEdge.cursor;\n                if (firstCursor && !startCursor) {\n                    incoming = (0,_common_mergeDeep_js__WEBPACK_IMPORTED_MODULE_1__.mergeDeep)(incoming, {\n                        pageInfo: {\n                            startCursor: firstCursor,\n                        },\n                    });\n                }\n                var lastCursor = lastEdge && lastEdge.cursor;\n                if (lastCursor && !endCursor) {\n                    incoming = (0,_common_mergeDeep_js__WEBPACK_IMPORTED_MODULE_1__.mergeDeep)(incoming, {\n                        pageInfo: {\n                            endCursor: lastCursor,\n                        },\n                    });\n                }\n            }\n            var prefix = existing.edges;\n            var suffix = [];\n            if (args && args.after) {\n                var index = prefix.findIndex(function (edge) { return edge.cursor === args.after; });\n                if (index >= 0) {\n                    prefix = prefix.slice(0, index + 1);\n                }\n            }\n            else if (args && args.before) {\n                var index = prefix.findIndex(function (edge) { return edge.cursor === args.before; });\n                suffix = index < 0 ? prefix : prefix.slice(index);\n                prefix = [];\n            }\n            else if (incoming.edges) {\n                prefix = [];\n            }\n            var edges = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__spreadArray)((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__spreadArray)((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__spreadArray)([], prefix, true), incomingEdges, true), suffix, true);\n            var pageInfo = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)({}, incoming.pageInfo), existing.pageInfo);\n            if (incoming.pageInfo) {\n                var _b = incoming.pageInfo, hasPreviousPage = _b.hasPreviousPage, hasNextPage = _b.hasNextPage, startCursor = _b.startCursor, endCursor = _b.endCursor, extras = (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__rest)(_b, [\"hasPreviousPage\", \"hasNextPage\", \"startCursor\", \"endCursor\"]);\n                Object.assign(pageInfo, extras);\n                if (!prefix.length) {\n                    if (void 0 !== hasPreviousPage)\n                        pageInfo.hasPreviousPage = hasPreviousPage;\n                    if (void 0 !== startCursor)\n                        pageInfo.startCursor = startCursor;\n                }\n                if (!suffix.length) {\n                    if (void 0 !== hasNextPage)\n                        pageInfo.hasNextPage = hasNextPage;\n                    if (void 0 !== endCursor)\n                        pageInfo.endCursor = endCursor;\n                }\n            }\n            return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_0__.__assign)({}, getExtras(existing)), getExtras(incoming)), { edges: edges, pageInfo: pageInfo });\n        },\n    };\n}\nvar getExtras = function (obj) { return (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__rest)(obj, notExtras); };\nvar notExtras = [\"edges\", \"pageInfo\"];\nfunction makeEmptyData() {\n    return {\n        edges: [],\n        pageInfo: {\n            hasPreviousPage: false,\n            hasNextPage: true,\n            startCursor: \"\",\n            endCursor: \"\",\n        },\n    };\n}\n//# sourceMappingURL=pagination.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL3BvbGljaWVzL3BhZ2luYXRpb24uanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBb0U7QUFDckM7QUFDb0I7QUFDNUM7QUFDUCw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLG9EQUFhLENBQUMsb0RBQWE7QUFDekQsU0FBUztBQUNUO0FBQ0E7QUFDTztBQUNQLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyxxQkFBcUI7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNPO0FBQ1AsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsNENBQTRDO0FBQzVDLG1CQUFtQiwrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsMEJBQTBCLHdCQUF3QiwrQ0FBUSxDQUFDLCtDQUFRLEdBQUcsd0JBQXdCLHFGQUFxRixHQUFHO0FBQzdOLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsK0NBQVEsR0FBRztBQUNsRDtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsK0RBQVM7QUFDeEM7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QixxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLCtEQUFTO0FBQ3hDO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrREFBK0Qsb0NBQW9DO0FBQ25HO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrREFBK0QscUNBQXFDO0FBQ3BHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixvREFBYSxDQUFDLG9EQUFhLENBQUMsb0RBQWE7QUFDakUsMkJBQTJCLCtDQUFRLENBQUMsK0NBQVEsR0FBRztBQUMvQztBQUNBLGlMQUFpTCw2Q0FBUTtBQUN6TDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLCtDQUFRLENBQUMsK0NBQVEsQ0FBQywrQ0FBUSxHQUFHLGdEQUFnRCxrQ0FBa0M7QUFDbEksU0FBUztBQUNUO0FBQ0E7QUFDQSxpQ0FBaUMsT0FBTyw2Q0FBTTtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYXBvbGxvL2NsaWVudC91dGlsaXRpZXMvcG9saWNpZXMvcGFnaW5hdGlvbi5qcz9lYmFkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgYXMgX19yZXN0XzEsIF9fc3ByZWFkQXJyYXkgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgbWVyZ2VEZWVwIH0gZnJvbSBcIi4uL2NvbW1vbi9tZXJnZURlZXAuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBjb25jYXRQYWdpbmF0aW9uKGtleUFyZ3MpIHtcbiAgICBpZiAoa2V5QXJncyA9PT0gdm9pZCAwKSB7IGtleUFyZ3MgPSBmYWxzZTsgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGtleUFyZ3M6IGtleUFyZ3MsXG4gICAgICAgIG1lcmdlOiBmdW5jdGlvbiAoZXhpc3RpbmcsIGluY29taW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gZXhpc3RpbmcgPyBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIGV4aXN0aW5nLCB0cnVlKSwgaW5jb21pbmcsIHRydWUpIDogaW5jb21pbmc7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBvZmZzZXRMaW1pdFBhZ2luYXRpb24oa2V5QXJncykge1xuICAgIGlmIChrZXlBcmdzID09PSB2b2lkIDApIHsga2V5QXJncyA9IGZhbHNlOyB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5QXJnczoga2V5QXJncyxcbiAgICAgICAgbWVyZ2U6IGZ1bmN0aW9uIChleGlzdGluZywgaW5jb21pbmcsIF9hKSB7XG4gICAgICAgICAgICB2YXIgYXJncyA9IF9hLmFyZ3M7XG4gICAgICAgICAgICB2YXIgbWVyZ2VkID0gZXhpc3RpbmcgPyBleGlzdGluZy5zbGljZSgwKSA6IFtdO1xuICAgICAgICAgICAgaWYgKGFyZ3MpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2IgPSBhcmdzLm9mZnNldCwgb2Zmc2V0ID0gX2IgPT09IHZvaWQgMCA/IDAgOiBfYjtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluY29taW5nLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lcmdlZFtvZmZzZXQgKyBpXSA9IGluY29taW5nW2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG1lcmdlZC5wdXNoLmFwcGx5KG1lcmdlZCwgaW5jb21pbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1lcmdlZDtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlbGF5U3R5bGVQYWdpbmF0aW9uKGtleUFyZ3MpIHtcbiAgICBpZiAoa2V5QXJncyA9PT0gdm9pZCAwKSB7IGtleUFyZ3MgPSBmYWxzZTsgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGtleUFyZ3M6IGtleUFyZ3MsXG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uIChleGlzdGluZywgX2EpIHtcbiAgICAgICAgICAgIHZhciBjYW5SZWFkID0gX2EuY2FuUmVhZCwgcmVhZEZpZWxkID0gX2EucmVhZEZpZWxkO1xuICAgICAgICAgICAgaWYgKCFleGlzdGluZylcbiAgICAgICAgICAgICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgICAgICAgICB2YXIgZWRnZXMgPSBbXTtcbiAgICAgICAgICAgIHZhciBmaXJzdEVkZ2VDdXJzb3IgPSBcIlwiO1xuICAgICAgICAgICAgdmFyIGxhc3RFZGdlQ3Vyc29yID0gXCJcIjtcbiAgICAgICAgICAgIGV4aXN0aW5nLmVkZ2VzLmZvckVhY2goZnVuY3Rpb24gKGVkZ2UpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2FuUmVhZChyZWFkRmllbGQoXCJub2RlXCIsIGVkZ2UpKSkge1xuICAgICAgICAgICAgICAgICAgICBlZGdlcy5wdXNoKGVkZ2UpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS5jdXJzb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0RWRnZUN1cnNvciA9IGZpcnN0RWRnZUN1cnNvciB8fCBlZGdlLmN1cnNvciB8fCBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEVkZ2VDdXJzb3IgPSBlZGdlLmN1cnNvciB8fCBsYXN0RWRnZUN1cnNvcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIF9iID0gZXhpc3RpbmcucGFnZUluZm8gfHwge30sIHN0YXJ0Q3Vyc29yID0gX2Iuc3RhcnRDdXJzb3IsIGVuZEN1cnNvciA9IF9iLmVuZEN1cnNvcjtcbiAgICAgICAgICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgZ2V0RXh0cmFzKGV4aXN0aW5nKSksIHsgZWRnZXM6IGVkZ2VzLCBwYWdlSW5mbzogX19hc3NpZ24oX19hc3NpZ24oe30sIGV4aXN0aW5nLnBhZ2VJbmZvKSwgeyBzdGFydEN1cnNvcjogc3RhcnRDdXJzb3IgfHwgZmlyc3RFZGdlQ3Vyc29yLCBlbmRDdXJzb3I6IGVuZEN1cnNvciB8fCBsYXN0RWRnZUN1cnNvciB9KSB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgbWVyZ2U6IGZ1bmN0aW9uIChleGlzdGluZywgaW5jb21pbmcsIF9hKSB7XG4gICAgICAgICAgICB2YXIgYXJncyA9IF9hLmFyZ3MsIGlzUmVmZXJlbmNlID0gX2EuaXNSZWZlcmVuY2UsIHJlYWRGaWVsZCA9IF9hLnJlYWRGaWVsZDtcbiAgICAgICAgICAgIGlmICghZXhpc3RpbmcpIHtcbiAgICAgICAgICAgICAgICBleGlzdGluZyA9IG1ha2VFbXB0eURhdGEoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaW5jb21pbmcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgaW5jb21pbmdFZGdlcyA9IGluY29taW5nLmVkZ2VzID8gaW5jb21pbmcuZWRnZXMubWFwKGZ1bmN0aW9uIChlZGdlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzUmVmZXJlbmNlKGVkZ2UgPSBfX2Fzc2lnbih7fSwgZWRnZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGVkZ2UuY3Vyc29yID0gcmVhZEZpZWxkKFwiY3Vyc29yXCIsIGVkZ2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZWRnZTtcbiAgICAgICAgICAgIH0pIDogW107XG4gICAgICAgICAgICBpZiAoaW5jb21pbmcucGFnZUluZm8pIHtcbiAgICAgICAgICAgICAgICB2YXIgcGFnZUluZm9fMSA9IGluY29taW5nLnBhZ2VJbmZvO1xuICAgICAgICAgICAgICAgIHZhciBzdGFydEN1cnNvciA9IHBhZ2VJbmZvXzEuc3RhcnRDdXJzb3IsIGVuZEN1cnNvciA9IHBhZ2VJbmZvXzEuZW5kQ3Vyc29yO1xuICAgICAgICAgICAgICAgIHZhciBmaXJzdEVkZ2UgPSBpbmNvbWluZ0VkZ2VzWzBdO1xuICAgICAgICAgICAgICAgIHZhciBsYXN0RWRnZSA9IGluY29taW5nRWRnZXNbaW5jb21pbmdFZGdlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAoZmlyc3RFZGdlICYmIHN0YXJ0Q3Vyc29yKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0RWRnZS5jdXJzb3IgPSBzdGFydEN1cnNvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGxhc3RFZGdlICYmIGVuZEN1cnNvcikge1xuICAgICAgICAgICAgICAgICAgICBsYXN0RWRnZS5jdXJzb3IgPSBlbmRDdXJzb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBmaXJzdEN1cnNvciA9IGZpcnN0RWRnZSAmJiBmaXJzdEVkZ2UuY3Vyc29yO1xuICAgICAgICAgICAgICAgIGlmIChmaXJzdEN1cnNvciAmJiAhc3RhcnRDdXJzb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5jb21pbmcgPSBtZXJnZURlZXAoaW5jb21pbmcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VJbmZvOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDdXJzb3I6IGZpcnN0Q3Vyc29yLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBsYXN0Q3Vyc29yID0gbGFzdEVkZ2UgJiYgbGFzdEVkZ2UuY3Vyc29yO1xuICAgICAgICAgICAgICAgIGlmIChsYXN0Q3Vyc29yICYmICFlbmRDdXJzb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5jb21pbmcgPSBtZXJnZURlZXAoaW5jb21pbmcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VJbmZvOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kQ3Vyc29yOiBsYXN0Q3Vyc29yLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHByZWZpeCA9IGV4aXN0aW5nLmVkZ2VzO1xuICAgICAgICAgICAgdmFyIHN1ZmZpeCA9IFtdO1xuICAgICAgICAgICAgaWYgKGFyZ3MgJiYgYXJncy5hZnRlcikge1xuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHByZWZpeC5maW5kSW5kZXgoZnVuY3Rpb24gKGVkZ2UpIHsgcmV0dXJuIGVkZ2UuY3Vyc29yID09PSBhcmdzLmFmdGVyOyB9KTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSBwcmVmaXguc2xpY2UoMCwgaW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChhcmdzICYmIGFyZ3MuYmVmb3JlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gcHJlZml4LmZpbmRJbmRleChmdW5jdGlvbiAoZWRnZSkgeyByZXR1cm4gZWRnZS5jdXJzb3IgPT09IGFyZ3MuYmVmb3JlOyB9KTtcbiAgICAgICAgICAgICAgICBzdWZmaXggPSBpbmRleCA8IDAgPyBwcmVmaXggOiBwcmVmaXguc2xpY2UoaW5kZXgpO1xuICAgICAgICAgICAgICAgIHByZWZpeCA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaW5jb21pbmcuZWRnZXMpIHtcbiAgICAgICAgICAgICAgICBwcmVmaXggPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBlZGdlcyA9IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBwcmVmaXgsIHRydWUpLCBpbmNvbWluZ0VkZ2VzLCB0cnVlKSwgc3VmZml4LCB0cnVlKTtcbiAgICAgICAgICAgIHZhciBwYWdlSW5mbyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBpbmNvbWluZy5wYWdlSW5mbyksIGV4aXN0aW5nLnBhZ2VJbmZvKTtcbiAgICAgICAgICAgIGlmIChpbmNvbWluZy5wYWdlSW5mbykge1xuICAgICAgICAgICAgICAgIHZhciBfYiA9IGluY29taW5nLnBhZ2VJbmZvLCBoYXNQcmV2aW91c1BhZ2UgPSBfYi5oYXNQcmV2aW91c1BhZ2UsIGhhc05leHRQYWdlID0gX2IuaGFzTmV4dFBhZ2UsIHN0YXJ0Q3Vyc29yID0gX2Iuc3RhcnRDdXJzb3IsIGVuZEN1cnNvciA9IF9iLmVuZEN1cnNvciwgZXh0cmFzID0gX19yZXN0XzEoX2IsIFtcImhhc1ByZXZpb3VzUGFnZVwiLCBcImhhc05leHRQYWdlXCIsIFwic3RhcnRDdXJzb3JcIiwgXCJlbmRDdXJzb3JcIl0pO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocGFnZUluZm8sIGV4dHJhcyk7XG4gICAgICAgICAgICAgICAgaWYgKCFwcmVmaXgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2b2lkIDAgIT09IGhhc1ByZXZpb3VzUGFnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VJbmZvLmhhc1ByZXZpb3VzUGFnZSA9IGhhc1ByZXZpb3VzUGFnZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gc3RhcnRDdXJzb3IpXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlSW5mby5zdGFydEN1cnNvciA9IHN0YXJ0Q3Vyc29yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXN1ZmZpeC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZvaWQgMCAhPT0gaGFzTmV4dFBhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlSW5mby5oYXNOZXh0UGFnZSA9IGhhc05leHRQYWdlO1xuICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwICE9PSBlbmRDdXJzb3IpXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlSW5mby5lbmRDdXJzb3IgPSBlbmRDdXJzb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCBnZXRFeHRyYXMoZXhpc3RpbmcpKSwgZ2V0RXh0cmFzKGluY29taW5nKSksIHsgZWRnZXM6IGVkZ2VzLCBwYWdlSW5mbzogcGFnZUluZm8gfSk7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbnZhciBnZXRFeHRyYXMgPSBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBfX3Jlc3Qob2JqLCBub3RFeHRyYXMpOyB9O1xudmFyIG5vdEV4dHJhcyA9IFtcImVkZ2VzXCIsIFwicGFnZUluZm9cIl07XG5mdW5jdGlvbiBtYWtlRW1wdHlEYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIGVkZ2VzOiBbXSxcbiAgICAgICAgcGFnZUluZm86IHtcbiAgICAgICAgICAgIGhhc1ByZXZpb3VzUGFnZTogZmFsc2UsXG4gICAgICAgICAgICBoYXNOZXh0UGFnZTogdHJ1ZSxcbiAgICAgICAgICAgIHN0YXJ0Q3Vyc29yOiBcIlwiLFxuICAgICAgICAgICAgZW5kQ3Vyc29yOiBcIlwiLFxuICAgICAgICB9LFxuICAgIH07XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYWdpbmF0aW9uLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/policies/pagination.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/utilities/types/IsStrictlyAny.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@apollo/client/utilities/types/IsStrictlyAny.js ***!
  \**********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceMappingURL=IsStrictlyAny.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdXRpbGl0aWVzL3R5cGVzL0lzU3RyaWN0bHlBbnkuanMuanMiLCJtYXBwaW5ncyI6IjtBQUFVO0FBQ1YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BhcG9sbG8vY2xpZW50L3V0aWxpdGllcy90eXBlcy9Jc1N0cmljdGx5QW55LmpzP2E1MjUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9SXNTdHJpY3RseUFueS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/utilities/types/IsStrictlyAny.js\n");
 
/***/ }),
 
/***/ "./node_modules/@apollo/client/version.js":
/*!************************************************!*\
  !*** ./node_modules/@apollo/client/version.js ***!
  \************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"version\": function() { return /* binding */ version; }\n/* harmony export */ });\nvar version = '3.5.10';\n//# sourceMappingURL=version.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdmVyc2lvbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU87QUFDUCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGFwb2xsby9jbGllbnQvdmVyc2lvbi5qcz85OWRkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgdmVyc2lvbiA9ICczLjUuMTAnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmVyc2lvbi5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@apollo/client/version.js\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/error/GraphQLError.mjs":
/*!*****************************************************!*\
  !*** ./node_modules/graphql/error/GraphQLError.mjs ***!
  \*****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"GraphQLError\": function() { return /* binding */ GraphQLError; },\n/* harmony export */   \"formatError\": function() { return /* binding */ formatError; },\n/* harmony export */   \"printError\": function() { return /* binding */ printError; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"./node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _language_location_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/location.mjs */ \"./node_modules/graphql/language/location.mjs\");\n/* harmony import */ var _language_printLocation_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/printLocation.mjs */ \"./node_modules/graphql/language/printLocation.mjs\");\n\n\n\n\nfunction toNormalizedArgs(args) {\n  const firstArg = args[0];\n\n  if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) {\n    return {\n      nodes: firstArg,\n      source: args[1],\n      positions: args[2],\n      path: args[3],\n      originalError: args[4],\n      extensions: args[5],\n    };\n  }\n\n  return firstArg;\n}\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nclass GraphQLError extends Error {\n  /**\n   * An array of `{ line, column }` locations within the source GraphQL document\n   * which correspond to this error.\n   *\n   * Errors during validation often contain multiple locations, for example to\n   * point out two things with the same name. Errors during execution include a\n   * single location, the field which produced the error.\n   *\n   * Enumerable, and appears in the result of JSON.stringify().\n   */\n\n  /**\n   * An array describing the JSON-path into the execution response which\n   * corresponds to this error. Only included for errors during execution.\n   *\n   * Enumerable, and appears in the result of JSON.stringify().\n   */\n\n  /**\n   * An array of GraphQL AST Nodes corresponding to this error.\n   */\n\n  /**\n   * The source GraphQL document for the first location of this error.\n   *\n   * Note that if this Error represents more than one node, the source may not\n   * represent nodes after the first node.\n   */\n\n  /**\n   * An array of character offsets within the source GraphQL document\n   * which correspond to this error.\n   */\n\n  /**\n   * The original error thrown from a field resolver during execution.\n   */\n\n  /**\n   * Extension fields to add to the formatted error.\n   */\n\n  /**\n   * @deprecated Please use the `GraphQLErrorArgs` constructor overload instead.\n   */\n  constructor(message, ...rawArgs) {\n    var _this$nodes, _nodeLocations$, _ref;\n\n    const { nodes, source, positions, path, originalError, extensions } =\n      toNormalizedArgs(rawArgs);\n    super(message);\n    this.name = 'GraphQLError';\n    this.path = path !== null && path !== void 0 ? path : undefined;\n    this.originalError =\n      originalError !== null && originalError !== void 0\n        ? originalError\n        : undefined; // Compute list of blame nodes.\n\n    this.nodes = undefinedIfEmpty(\n      Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined,\n    );\n    const nodeLocations = undefinedIfEmpty(\n      (_this$nodes = this.nodes) === null || _this$nodes === void 0\n        ? void 0\n        : _this$nodes.map((node) => node.loc).filter((loc) => loc != null),\n    ); // Compute locations in the source for the given nodes/positions.\n\n    this.source =\n      source !== null && source !== void 0\n        ? source\n        : nodeLocations === null || nodeLocations === void 0\n        ? void 0\n        : (_nodeLocations$ = nodeLocations[0]) === null ||\n          _nodeLocations$ === void 0\n        ? void 0\n        : _nodeLocations$.source;\n    this.positions =\n      positions !== null && positions !== void 0\n        ? positions\n        : nodeLocations === null || nodeLocations === void 0\n        ? void 0\n        : nodeLocations.map((loc) => loc.start);\n    this.locations =\n      positions && source\n        ? positions.map((pos) => (0,_language_location_mjs__WEBPACK_IMPORTED_MODULE_0__.getLocation)(source, pos))\n        : nodeLocations === null || nodeLocations === void 0\n        ? void 0\n        : nodeLocations.map((loc) => (0,_language_location_mjs__WEBPACK_IMPORTED_MODULE_0__.getLocation)(loc.source, loc.start));\n    const originalExtensions = (0,_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_1__.isObjectLike)(\n      originalError === null || originalError === void 0\n        ? void 0\n        : originalError.extensions,\n    )\n      ? originalError === null || originalError === void 0\n        ? void 0\n        : originalError.extensions\n      : undefined;\n    this.extensions =\n      (_ref =\n        extensions !== null && extensions !== void 0\n          ? extensions\n          : originalExtensions) !== null && _ref !== void 0\n        ? _ref\n        : Object.create(null); // Only properties prescribed by the spec should be enumerable.\n    // Keep the rest as non-enumerable.\n\n    Object.defineProperties(this, {\n      message: {\n        writable: true,\n        enumerable: true,\n      },\n      name: {\n        enumerable: false,\n      },\n      nodes: {\n        enumerable: false,\n      },\n      source: {\n        enumerable: false,\n      },\n      positions: {\n        enumerable: false,\n      },\n      originalError: {\n        enumerable: false,\n      },\n    }); // Include (non-enumerable) stack trace.\n\n    /* c8 ignore start */\n    // FIXME: https://github.com/graphql/graphql-js/issues/2317\n\n    if (\n      originalError !== null &&\n      originalError !== void 0 &&\n      originalError.stack\n    ) {\n      Object.defineProperty(this, 'stack', {\n        value: originalError.stack,\n        writable: true,\n        configurable: true,\n      });\n    } else if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, GraphQLError);\n    } else {\n      Object.defineProperty(this, 'stack', {\n        value: Error().stack,\n        writable: true,\n        configurable: true,\n      });\n    }\n    /* c8 ignore stop */\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLError';\n  }\n\n  toString() {\n    let output = this.message;\n\n    if (this.nodes) {\n      for (const node of this.nodes) {\n        if (node.loc) {\n          output += '\\n\\n' + (0,_language_printLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.printLocation)(node.loc);\n        }\n      }\n    } else if (this.source && this.locations) {\n      for (const location of this.locations) {\n        output += '\\n\\n' + (0,_language_printLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.printSourceLocation)(this.source, location);\n      }\n    }\n\n    return output;\n  }\n\n  toJSON() {\n    const formattedError = {\n      message: this.message,\n    };\n\n    if (this.locations != null) {\n      formattedError.locations = this.locations;\n    }\n\n    if (this.path != null) {\n      formattedError.path = this.path;\n    }\n\n    if (this.extensions != null && Object.keys(this.extensions).length > 0) {\n      formattedError.extensions = this.extensions;\n    }\n\n    return formattedError;\n  }\n}\n\nfunction undefinedIfEmpty(array) {\n  return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * See: https://spec.graphql.org/draft/#sec-Errors\n */\n\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n *\n * @deprecated Please use `error.toString` instead. Will be removed in v17\n */\nfunction printError(error) {\n  return error.toString();\n}\n/**\n * Given a GraphQLError, format it according to the rules described by the\n * Response Format, Errors section of the GraphQL Specification.\n *\n * @deprecated Please use `error.toString` instead. Will be removed in v17\n */\n\nfunction formatError(error) {\n  return error.toJSON();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9lcnJvci9HcmFwaFFMRXJyb3IubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUEyRDtBQUNKO0FBSWhCOztBQUV2QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLG9CQUFvQixjQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFlBQVksNERBQTREO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxtRUFBVztBQUM1QztBQUNBO0FBQ0EscUNBQXFDLG1FQUFXO0FBQ2hELCtCQUErQix1RUFBWTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLLEdBQUc7O0FBRVI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsMEVBQWE7QUFDMUM7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLDJCQUEyQixnRkFBbUI7QUFDOUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9lcnJvci9HcmFwaFFMRXJyb3IubWpzPzU4ZWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNPYmplY3RMaWtlIH0gZnJvbSAnLi4vanN1dGlscy9pc09iamVjdExpa2UubWpzJztcbmltcG9ydCB7IGdldExvY2F0aW9uIH0gZnJvbSAnLi4vbGFuZ3VhZ2UvbG9jYXRpb24ubWpzJztcbmltcG9ydCB7XG4gIHByaW50TG9jYXRpb24sXG4gIHByaW50U291cmNlTG9jYXRpb24sXG59IGZyb20gJy4uL2xhbmd1YWdlL3ByaW50TG9jYXRpb24ubWpzJztcblxuZnVuY3Rpb24gdG9Ob3JtYWxpemVkQXJncyhhcmdzKSB7XG4gIGNvbnN0IGZpcnN0QXJnID0gYXJnc1swXTtcblxuICBpZiAoZmlyc3RBcmcgPT0gbnVsbCB8fCAna2luZCcgaW4gZmlyc3RBcmcgfHwgJ2xlbmd0aCcgaW4gZmlyc3RBcmcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbm9kZXM6IGZpcnN0QXJnLFxuICAgICAgc291cmNlOiBhcmdzWzFdLFxuICAgICAgcG9zaXRpb25zOiBhcmdzWzJdLFxuICAgICAgcGF0aDogYXJnc1szXSxcbiAgICAgIG9yaWdpbmFsRXJyb3I6IGFyZ3NbNF0sXG4gICAgICBleHRlbnNpb25zOiBhcmdzWzVdLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gZmlyc3RBcmc7XG59XG4vKipcbiAqIEEgR3JhcGhRTEVycm9yIGRlc2NyaWJlcyBhbiBFcnJvciBmb3VuZCBkdXJpbmcgdGhlIHBhcnNlLCB2YWxpZGF0ZSwgb3JcbiAqIGV4ZWN1dGUgcGhhc2VzIG9mIHBlcmZvcm1pbmcgYSBHcmFwaFFMIG9wZXJhdGlvbi4gSW4gYWRkaXRpb24gdG8gYSBtZXNzYWdlXG4gKiBhbmQgc3RhY2sgdHJhY2UsIGl0IGFsc28gaW5jbHVkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxvY2F0aW9ucyBpbiBhXG4gKiBHcmFwaFFMIGRvY3VtZW50IGFuZC9vciBleGVjdXRpb24gcmVzdWx0IHRoYXQgY29ycmVzcG9uZCB0byB0aGUgRXJyb3IuXG4gKi9cblxuZXhwb3J0IGNsYXNzIEdyYXBoUUxFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGB7IGxpbmUsIGNvbHVtbiB9YCBsb2NhdGlvbnMgd2l0aGluIHRoZSBzb3VyY2UgR3JhcGhRTCBkb2N1bWVudFxuICAgKiB3aGljaCBjb3JyZXNwb25kIHRvIHRoaXMgZXJyb3IuXG4gICAqXG4gICAqIEVycm9ycyBkdXJpbmcgdmFsaWRhdGlvbiBvZnRlbiBjb250YWluIG11bHRpcGxlIGxvY2F0aW9ucywgZm9yIGV4YW1wbGUgdG9cbiAgICogcG9pbnQgb3V0IHR3byB0aGluZ3Mgd2l0aCB0aGUgc2FtZSBuYW1lLiBFcnJvcnMgZHVyaW5nIGV4ZWN1dGlvbiBpbmNsdWRlIGFcbiAgICogc2luZ2xlIGxvY2F0aW9uLCB0aGUgZmllbGQgd2hpY2ggcHJvZHVjZWQgdGhlIGVycm9yLlxuICAgKlxuICAgKiBFbnVtZXJhYmxlLCBhbmQgYXBwZWFycyBpbiB0aGUgcmVzdWx0IG9mIEpTT04uc3RyaW5naWZ5KCkuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBkZXNjcmliaW5nIHRoZSBKU09OLXBhdGggaW50byB0aGUgZXhlY3V0aW9uIHJlc3BvbnNlIHdoaWNoXG4gICAqIGNvcnJlc3BvbmRzIHRvIHRoaXMgZXJyb3IuIE9ubHkgaW5jbHVkZWQgZm9yIGVycm9ycyBkdXJpbmcgZXhlY3V0aW9uLlxuICAgKlxuICAgKiBFbnVtZXJhYmxlLCBhbmQgYXBwZWFycyBpbiB0aGUgcmVzdWx0IG9mIEpTT04uc3RyaW5naWZ5KCkuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBHcmFwaFFMIEFTVCBOb2RlcyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgZXJyb3IuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIEdyYXBoUUwgZG9jdW1lbnQgZm9yIHRoZSBmaXJzdCBsb2NhdGlvbiBvZiB0aGlzIGVycm9yLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgaWYgdGhpcyBFcnJvciByZXByZXNlbnRzIG1vcmUgdGhhbiBvbmUgbm9kZSwgdGhlIHNvdXJjZSBtYXkgbm90XG4gICAqIHJlcHJlc2VudCBub2RlcyBhZnRlciB0aGUgZmlyc3Qgbm9kZS5cbiAgICovXG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIGNoYXJhY3RlciBvZmZzZXRzIHdpdGhpbiB0aGUgc291cmNlIEdyYXBoUUwgZG9jdW1lbnRcbiAgICogd2hpY2ggY29ycmVzcG9uZCB0byB0aGlzIGVycm9yLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlIG9yaWdpbmFsIGVycm9yIHRocm93biBmcm9tIGEgZmllbGQgcmVzb2x2ZXIgZHVyaW5nIGV4ZWN1dGlvbi5cbiAgICovXG5cbiAgLyoqXG4gICAqIEV4dGVuc2lvbiBmaWVsZHMgdG8gYWRkIHRvIHRoZSBmb3JtYXR0ZWQgZXJyb3IuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIHRoZSBgR3JhcGhRTEVycm9yQXJnc2AgY29uc3RydWN0b3Igb3ZlcmxvYWQgaW5zdGVhZC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UsIC4uLnJhd0FyZ3MpIHtcbiAgICB2YXIgX3RoaXMkbm9kZXMsIF9ub2RlTG9jYXRpb25zJCwgX3JlZjtcblxuICAgIGNvbnN0IHsgbm9kZXMsIHNvdXJjZSwgcG9zaXRpb25zLCBwYXRoLCBvcmlnaW5hbEVycm9yLCBleHRlbnNpb25zIH0gPVxuICAgICAgdG9Ob3JtYWxpemVkQXJncyhyYXdBcmdzKTtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnR3JhcGhRTEVycm9yJztcbiAgICB0aGlzLnBhdGggPSBwYXRoICE9PSBudWxsICYmIHBhdGggIT09IHZvaWQgMCA/IHBhdGggOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5vcmlnaW5hbEVycm9yID1cbiAgICAgIG9yaWdpbmFsRXJyb3IgIT09IG51bGwgJiYgb3JpZ2luYWxFcnJvciAhPT0gdm9pZCAwXG4gICAgICAgID8gb3JpZ2luYWxFcnJvclxuICAgICAgICA6IHVuZGVmaW5lZDsgLy8gQ29tcHV0ZSBsaXN0IG9mIGJsYW1lIG5vZGVzLlxuXG4gICAgdGhpcy5ub2RlcyA9IHVuZGVmaW5lZElmRW1wdHkoXG4gICAgICBBcnJheS5pc0FycmF5KG5vZGVzKSA/IG5vZGVzIDogbm9kZXMgPyBbbm9kZXNdIDogdW5kZWZpbmVkLFxuICAgICk7XG4gICAgY29uc3Qgbm9kZUxvY2F0aW9ucyA9IHVuZGVmaW5lZElmRW1wdHkoXG4gICAgICAoX3RoaXMkbm9kZXMgPSB0aGlzLm5vZGVzKSA9PT0gbnVsbCB8fCBfdGhpcyRub2RlcyA9PT0gdm9pZCAwXG4gICAgICAgID8gdm9pZCAwXG4gICAgICAgIDogX3RoaXMkbm9kZXMubWFwKChub2RlKSA9PiBub2RlLmxvYykuZmlsdGVyKChsb2MpID0+IGxvYyAhPSBudWxsKSxcbiAgICApOyAvLyBDb21wdXRlIGxvY2F0aW9ucyBpbiB0aGUgc291cmNlIGZvciB0aGUgZ2l2ZW4gbm9kZXMvcG9zaXRpb25zLlxuXG4gICAgdGhpcy5zb3VyY2UgPVxuICAgICAgc291cmNlICE9PSBudWxsICYmIHNvdXJjZSAhPT0gdm9pZCAwXG4gICAgICAgID8gc291cmNlXG4gICAgICAgIDogbm9kZUxvY2F0aW9ucyA9PT0gbnVsbCB8fCBub2RlTG9jYXRpb25zID09PSB2b2lkIDBcbiAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgOiAoX25vZGVMb2NhdGlvbnMkID0gbm9kZUxvY2F0aW9uc1swXSkgPT09IG51bGwgfHxcbiAgICAgICAgICBfbm9kZUxvY2F0aW9ucyQgPT09IHZvaWQgMFxuICAgICAgICA/IHZvaWQgMFxuICAgICAgICA6IF9ub2RlTG9jYXRpb25zJC5zb3VyY2U7XG4gICAgdGhpcy5wb3NpdGlvbnMgPVxuICAgICAgcG9zaXRpb25zICE9PSBudWxsICYmIHBvc2l0aW9ucyAhPT0gdm9pZCAwXG4gICAgICAgID8gcG9zaXRpb25zXG4gICAgICAgIDogbm9kZUxvY2F0aW9ucyA9PT0gbnVsbCB8fCBub2RlTG9jYXRpb25zID09PSB2b2lkIDBcbiAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgOiBub2RlTG9jYXRpb25zLm1hcCgobG9jKSA9PiBsb2Muc3RhcnQpO1xuICAgIHRoaXMubG9jYXRpb25zID1cbiAgICAgIHBvc2l0aW9ucyAmJiBzb3VyY2VcbiAgICAgICAgPyBwb3NpdGlvbnMubWFwKChwb3MpID0+IGdldExvY2F0aW9uKHNvdXJjZSwgcG9zKSlcbiAgICAgICAgOiBub2RlTG9jYXRpb25zID09PSBudWxsIHx8IG5vZGVMb2NhdGlvbnMgPT09IHZvaWQgMFxuICAgICAgICA/IHZvaWQgMFxuICAgICAgICA6IG5vZGVMb2NhdGlvbnMubWFwKChsb2MpID0+IGdldExvY2F0aW9uKGxvYy5zb3VyY2UsIGxvYy5zdGFydCkpO1xuICAgIGNvbnN0IG9yaWdpbmFsRXh0ZW5zaW9ucyA9IGlzT2JqZWN0TGlrZShcbiAgICAgIG9yaWdpbmFsRXJyb3IgPT09IG51bGwgfHwgb3JpZ2luYWxFcnJvciA9PT0gdm9pZCAwXG4gICAgICAgID8gdm9pZCAwXG4gICAgICAgIDogb3JpZ2luYWxFcnJvci5leHRlbnNpb25zLFxuICAgIClcbiAgICAgID8gb3JpZ2luYWxFcnJvciA9PT0gbnVsbCB8fCBvcmlnaW5hbEVycm9yID09PSB2b2lkIDBcbiAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgOiBvcmlnaW5hbEVycm9yLmV4dGVuc2lvbnNcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIHRoaXMuZXh0ZW5zaW9ucyA9XG4gICAgICAoX3JlZiA9XG4gICAgICAgIGV4dGVuc2lvbnMgIT09IG51bGwgJiYgZXh0ZW5zaW9ucyAhPT0gdm9pZCAwXG4gICAgICAgICAgPyBleHRlbnNpb25zXG4gICAgICAgICAgOiBvcmlnaW5hbEV4dGVuc2lvbnMpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMFxuICAgICAgICA/IF9yZWZcbiAgICAgICAgOiBPYmplY3QuY3JlYXRlKG51bGwpOyAvLyBPbmx5IHByb3BlcnRpZXMgcHJlc2NyaWJlZCBieSB0aGUgc3BlYyBzaG91bGQgYmUgZW51bWVyYWJsZS5cbiAgICAvLyBLZWVwIHRoZSByZXN0IGFzIG5vbi1lbnVtZXJhYmxlLlxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcywge1xuICAgICAgbWVzc2FnZToge1xuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBuYW1lOiB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIG5vZGVzOiB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHNvdXJjZToge1xuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB9LFxuICAgICAgb3JpZ2luYWxFcnJvcjoge1xuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSk7IC8vIEluY2x1ZGUgKG5vbi1lbnVtZXJhYmxlKSBzdGFjayB0cmFjZS5cblxuICAgIC8qIGM4IGlnbm9yZSBzdGFydCAqL1xuICAgIC8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMzE3XG5cbiAgICBpZiAoXG4gICAgICBvcmlnaW5hbEVycm9yICE9PSBudWxsICYmXG4gICAgICBvcmlnaW5hbEVycm9yICE9PSB2b2lkIDAgJiZcbiAgICAgIG9yaWdpbmFsRXJyb3Iuc3RhY2tcbiAgICApIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnc3RhY2snLCB7XG4gICAgICAgIHZhbHVlOiBvcmlnaW5hbEVycm9yLnN0YWNrLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgR3JhcGhRTEVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdzdGFjaycsIHtcbiAgICAgICAgdmFsdWU6IEVycm9yKCkuc3RhY2ssXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgLyogYzggaWdub3JlIHN0b3AgKi9cbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gJ0dyYXBoUUxFcnJvcic7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICBsZXQgb3V0cHV0ID0gdGhpcy5tZXNzYWdlO1xuXG4gICAgaWYgKHRoaXMubm9kZXMpIHtcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzLm5vZGVzKSB7XG4gICAgICAgIGlmIChub2RlLmxvYykge1xuICAgICAgICAgIG91dHB1dCArPSAnXFxuXFxuJyArIHByaW50TG9jYXRpb24obm9kZS5sb2MpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnNvdXJjZSAmJiB0aGlzLmxvY2F0aW9ucykge1xuICAgICAgZm9yIChjb25zdCBsb2NhdGlvbiBvZiB0aGlzLmxvY2F0aW9ucykge1xuICAgICAgICBvdXRwdXQgKz0gJ1xcblxcbicgKyBwcmludFNvdXJjZUxvY2F0aW9uKHRoaXMuc291cmNlLCBsb2NhdGlvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBmb3JtYXR0ZWRFcnJvciA9IHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMubG9jYXRpb25zICE9IG51bGwpIHtcbiAgICAgIGZvcm1hdHRlZEVycm9yLmxvY2F0aW9ucyA9IHRoaXMubG9jYXRpb25zO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBhdGggIT0gbnVsbCkge1xuICAgICAgZm9ybWF0dGVkRXJyb3IucGF0aCA9IHRoaXMucGF0aDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5leHRlbnNpb25zICE9IG51bGwgJiYgT2JqZWN0LmtleXModGhpcy5leHRlbnNpb25zKS5sZW5ndGggPiAwKSB7XG4gICAgICBmb3JtYXR0ZWRFcnJvci5leHRlbnNpb25zID0gdGhpcy5leHRlbnNpb25zO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtYXR0ZWRFcnJvcjtcbiAgfVxufVxuXG5mdW5jdGlvbiB1bmRlZmluZWRJZkVtcHR5KGFycmF5KSB7XG4gIHJldHVybiBhcnJheSA9PT0gdW5kZWZpbmVkIHx8IGFycmF5Lmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IGFycmF5O1xufVxuLyoqXG4gKiBTZWU6IGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLUVycm9yc1xuICovXG5cbi8qKlxuICogUHJpbnRzIGEgR3JhcGhRTEVycm9yIHRvIGEgc3RyaW5nLCByZXByZXNlbnRpbmcgdXNlZnVsIGxvY2F0aW9uIGluZm9ybWF0aW9uXG4gKiBhYm91dCB0aGUgZXJyb3IncyBwb3NpdGlvbiBpbiB0aGUgc291cmNlLlxuICpcbiAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYGVycm9yLnRvU3RyaW5nYCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjE3XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludEVycm9yKGVycm9yKSB7XG4gIHJldHVybiBlcnJvci50b1N0cmluZygpO1xufVxuLyoqXG4gKiBHaXZlbiBhIEdyYXBoUUxFcnJvciwgZm9ybWF0IGl0IGFjY29yZGluZyB0byB0aGUgcnVsZXMgZGVzY3JpYmVkIGJ5IHRoZVxuICogUmVzcG9uc2UgRm9ybWF0LCBFcnJvcnMgc2VjdGlvbiBvZiB0aGUgR3JhcGhRTCBTcGVjaWZpY2F0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYGVycm9yLnRvU3RyaW5nYCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjE3XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEVycm9yKGVycm9yKSB7XG4gIHJldHVybiBlcnJvci50b0pTT04oKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/error/GraphQLError.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/error/index.mjs":
/*!**********************************************!*\
  !*** ./node_modules/graphql/error/index.mjs ***!
  \**********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"GraphQLError\": function() { return /* reexport safe */ _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError; },\n/* harmony export */   \"formatError\": function() { return /* reexport safe */ _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.formatError; },\n/* harmony export */   \"locatedError\": function() { return /* reexport safe */ _locatedError_mjs__WEBPACK_IMPORTED_MODULE_2__.locatedError; },\n/* harmony export */   \"printError\": function() { return /* reexport safe */ _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.printError; },\n/* harmony export */   \"syntaxError\": function() { return /* reexport safe */ _syntaxError_mjs__WEBPACK_IMPORTED_MODULE_1__.syntaxError; }\n/* harmony export */ });\n/* harmony import */ var _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _syntaxError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./syntaxError.mjs */ \"./node_modules/graphql/error/syntaxError.mjs\");\n/* harmony import */ var _locatedError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./locatedError.mjs */ \"./node_modules/graphql/error/locatedError.mjs\");\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9lcnJvci9pbmRleC5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBMkU7QUFDM0I7QUFDRSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9lcnJvci9pbmRleC5tanM/ZGQ3OSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBHcmFwaFFMRXJyb3IsIHByaW50RXJyb3IsIGZvcm1hdEVycm9yIH0gZnJvbSAnLi9HcmFwaFFMRXJyb3IubWpzJztcbmV4cG9ydCB7IHN5bnRheEVycm9yIH0gZnJvbSAnLi9zeW50YXhFcnJvci5tanMnO1xuZXhwb3J0IHsgbG9jYXRlZEVycm9yIH0gZnJvbSAnLi9sb2NhdGVkRXJyb3IubWpzJztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/error/index.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/error/locatedError.mjs":
/*!*****************************************************!*\
  !*** ./node_modules/graphql/error/locatedError.mjs ***!
  \*****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"locatedError\": function() { return /* binding */ locatedError; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_toError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/toError.mjs */ \"./node_modules/graphql/jsutils/toError.mjs\");\n/* harmony import */ var _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Given an arbitrary value, presumably thrown while attempting to execute a\n * GraphQL operation, produce a new GraphQLError aware of the location in the\n * document responsible for the original Error.\n */\n\nfunction locatedError(rawOriginalError, nodes, path) {\n  var _nodes;\n\n  const originalError = (0,_jsutils_toError_mjs__WEBPACK_IMPORTED_MODULE_0__.toError)(rawOriginalError); // Note: this uses a brand-check to support GraphQL errors originating from other contexts.\n\n  if (isLocatedGraphQLError(originalError)) {\n    return originalError;\n  }\n\n  return new _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n    originalError.message,\n    (_nodes = originalError.nodes) !== null && _nodes !== void 0\n      ? _nodes\n      : nodes,\n    originalError.source,\n    originalError.positions,\n    path,\n    originalError,\n  );\n}\n\nfunction isLocatedGraphQLError(error) {\n  return Array.isArray(error.path);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9lcnJvci9sb2NhdGVkRXJyb3IubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFpRDtBQUNDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDs7QUFFQSx3QkFBd0IsNkRBQU8sb0JBQW9COztBQUVuRDtBQUNBO0FBQ0E7O0FBRUEsYUFBYSwyREFBWTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvZXJyb3IvbG9jYXRlZEVycm9yLm1qcz8wYzc4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRvRXJyb3IgfSBmcm9tICcuLi9qc3V0aWxzL3RvRXJyb3IubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4vR3JhcGhRTEVycm9yLm1qcyc7XG4vKipcbiAqIEdpdmVuIGFuIGFyYml0cmFyeSB2YWx1ZSwgcHJlc3VtYWJseSB0aHJvd24gd2hpbGUgYXR0ZW1wdGluZyB0byBleGVjdXRlIGFcbiAqIEdyYXBoUUwgb3BlcmF0aW9uLCBwcm9kdWNlIGEgbmV3IEdyYXBoUUxFcnJvciBhd2FyZSBvZiB0aGUgbG9jYXRpb24gaW4gdGhlXG4gKiBkb2N1bWVudCByZXNwb25zaWJsZSBmb3IgdGhlIG9yaWdpbmFsIEVycm9yLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBsb2NhdGVkRXJyb3IocmF3T3JpZ2luYWxFcnJvciwgbm9kZXMsIHBhdGgpIHtcbiAgdmFyIF9ub2RlcztcblxuICBjb25zdCBvcmlnaW5hbEVycm9yID0gdG9FcnJvcihyYXdPcmlnaW5hbEVycm9yKTsgLy8gTm90ZTogdGhpcyB1c2VzIGEgYnJhbmQtY2hlY2sgdG8gc3VwcG9ydCBHcmFwaFFMIGVycm9ycyBvcmlnaW5hdGluZyBmcm9tIG90aGVyIGNvbnRleHRzLlxuXG4gIGlmIChpc0xvY2F0ZWRHcmFwaFFMRXJyb3Iob3JpZ2luYWxFcnJvcikpIHtcbiAgICByZXR1cm4gb3JpZ2luYWxFcnJvcjtcbiAgfVxuXG4gIHJldHVybiBuZXcgR3JhcGhRTEVycm9yKFxuICAgIG9yaWdpbmFsRXJyb3IubWVzc2FnZSxcbiAgICAoX25vZGVzID0gb3JpZ2luYWxFcnJvci5ub2RlcykgIT09IG51bGwgJiYgX25vZGVzICE9PSB2b2lkIDBcbiAgICAgID8gX25vZGVzXG4gICAgICA6IG5vZGVzLFxuICAgIG9yaWdpbmFsRXJyb3Iuc291cmNlLFxuICAgIG9yaWdpbmFsRXJyb3IucG9zaXRpb25zLFxuICAgIHBhdGgsXG4gICAgb3JpZ2luYWxFcnJvcixcbiAgKTtcbn1cblxuZnVuY3Rpb24gaXNMb2NhdGVkR3JhcGhRTEVycm9yKGVycm9yKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGVycm9yLnBhdGgpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/error/locatedError.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/error/syntaxError.mjs":
/*!****************************************************!*\
  !*** ./node_modules/graphql/error/syntaxError.mjs ***!
  \****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"syntaxError\": function() { return /* binding */ syntaxError; }\n/* harmony export */ });\n/* harmony import */ var _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nfunction syntaxError(source, position, description) {\n  return new _GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(`Syntax Error: ${description}`, undefined, source, [\n    position,\n  ]);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9lcnJvci9zeW50YXhFcnJvci5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBa0Q7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxhQUFhLDJEQUFZLGtCQUFrQixZQUFZO0FBQ3ZEO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9lcnJvci9zeW50YXhFcnJvci5tanM/OGY3YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuL0dyYXBoUUxFcnJvci5tanMnO1xuLyoqXG4gKiBQcm9kdWNlcyBhIEdyYXBoUUxFcnJvciByZXByZXNlbnRpbmcgYSBzeW50YXggZXJyb3IsIGNvbnRhaW5pbmcgdXNlZnVsXG4gKiBkZXNjcmlwdGl2ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3ludGF4IGVycm9yJ3MgcG9zaXRpb24gaW4gdGhlIHNvdXJjZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3ludGF4RXJyb3Ioc291cmNlLCBwb3NpdGlvbiwgZGVzY3JpcHRpb24pIHtcbiAgcmV0dXJuIG5ldyBHcmFwaFFMRXJyb3IoYFN5bnRheCBFcnJvcjogJHtkZXNjcmlwdGlvbn1gLCB1bmRlZmluZWQsIHNvdXJjZSwgW1xuICAgIHBvc2l0aW9uLFxuICBdKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/error/syntaxError.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/execution/collectFields.mjs":
/*!**********************************************************!*\
  !*** ./node_modules/graphql/execution/collectFields.mjs ***!
  \**********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"collectFields\": function() { return /* binding */ collectFields; },\n/* harmony export */   \"collectSubfields\": function() { return /* binding */ collectSubfields; }\n/* harmony export */ });\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../type/directives.mjs */ \"./node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utilities/typeFromAST.mjs */ \"./node_modules/graphql/utilities/typeFromAST.mjs\");\n/* harmony import */ var _values_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./values.mjs */ \"./node_modules/graphql/execution/values.mjs\");\n\n\n\n\n\n/**\n * Given a selectionSet, collects all of the fields and returns them.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field that\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n\nfunction collectFields(\n  schema,\n  fragments,\n  variableValues,\n  runtimeType,\n  selectionSet,\n) {\n  const fields = new Map();\n  collectFieldsImpl(\n    schema,\n    fragments,\n    variableValues,\n    runtimeType,\n    selectionSet,\n    fields,\n    new Set(),\n  );\n  return fields;\n}\n/**\n * Given an array of field nodes, collects all of the subfields of the passed\n * in fields, and returns them at the end.\n *\n * CollectSubFields requires the \"return type\" of an object. For a field that\n * returns an Interface or Union type, the \"return type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n\nfunction collectSubfields(\n  schema,\n  fragments,\n  variableValues,\n  returnType,\n  fieldNodes,\n) {\n  const subFieldNodes = new Map();\n  const visitedFragmentNames = new Set();\n\n  for (const node of fieldNodes) {\n    if (node.selectionSet) {\n      collectFieldsImpl(\n        schema,\n        fragments,\n        variableValues,\n        returnType,\n        node.selectionSet,\n        subFieldNodes,\n        visitedFragmentNames,\n      );\n    }\n  }\n\n  return subFieldNodes;\n}\n\nfunction collectFieldsImpl(\n  schema,\n  fragments,\n  variableValues,\n  runtimeType,\n  selectionSet,\n  fields,\n  visitedFragmentNames,\n) {\n  for (const selection of selectionSet.selections) {\n    switch (selection.kind) {\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.FIELD: {\n        if (!shouldIncludeNode(variableValues, selection)) {\n          continue;\n        }\n\n        const name = getFieldEntryKey(selection);\n        const fieldList = fields.get(name);\n\n        if (fieldList !== undefined) {\n          fieldList.push(selection);\n        } else {\n          fields.set(name, [selection]);\n        }\n\n        break;\n      }\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.INLINE_FRAGMENT: {\n        if (\n          !shouldIncludeNode(variableValues, selection) ||\n          !doesFragmentConditionMatch(schema, selection, runtimeType)\n        ) {\n          continue;\n        }\n\n        collectFieldsImpl(\n          schema,\n          fragments,\n          variableValues,\n          runtimeType,\n          selection.selectionSet,\n          fields,\n          visitedFragmentNames,\n        );\n        break;\n      }\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.FRAGMENT_SPREAD: {\n        const fragName = selection.name.value;\n\n        if (\n          visitedFragmentNames.has(fragName) ||\n          !shouldIncludeNode(variableValues, selection)\n        ) {\n          continue;\n        }\n\n        visitedFragmentNames.add(fragName);\n        const fragment = fragments[fragName];\n\n        if (\n          !fragment ||\n          !doesFragmentConditionMatch(schema, fragment, runtimeType)\n        ) {\n          continue;\n        }\n\n        collectFieldsImpl(\n          schema,\n          fragments,\n          variableValues,\n          runtimeType,\n          fragment.selectionSet,\n          fields,\n          visitedFragmentNames,\n        );\n        break;\n      }\n    }\n  }\n}\n/**\n * Determines if a field should be included based on the `@include` and `@skip`\n * directives, where `@skip` has higher precedence than `@include`.\n */\n\nfunction shouldIncludeNode(variableValues, node) {\n  const skip = (0,_values_mjs__WEBPACK_IMPORTED_MODULE_1__.getDirectiveValues)(_type_directives_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLSkipDirective, node, variableValues);\n\n  if ((skip === null || skip === void 0 ? void 0 : skip.if) === true) {\n    return false;\n  }\n\n  const include = (0,_values_mjs__WEBPACK_IMPORTED_MODULE_1__.getDirectiveValues)(\n    _type_directives_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLIncludeDirective,\n    node,\n    variableValues,\n  );\n\n  if (\n    (include === null || include === void 0 ? void 0 : include.if) === false\n  ) {\n    return false;\n  }\n\n  return true;\n}\n/**\n * Determines if a fragment is applicable to the given type.\n */\n\nfunction doesFragmentConditionMatch(schema, fragment, type) {\n  const typeConditionNode = fragment.typeCondition;\n\n  if (!typeConditionNode) {\n    return true;\n  }\n\n  const conditionalType = (0,_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_3__.typeFromAST)(schema, typeConditionNode);\n\n  if (conditionalType === type) {\n    return true;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_4__.isAbstractType)(conditionalType)) {\n    return schema.isSubType(conditionalType, type);\n  }\n\n  return false;\n}\n/**\n * Implements the logic to compute the key of a given field's entry\n */\n\nfunction getFieldEntryKey(node) {\n  return node.alias ? node.alias.value : node.name.value;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9leGVjdXRpb24vY29sbGVjdEZpZWxkcy5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUE2QztBQUNXO0FBSXhCO0FBQzJCO0FBQ1Q7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsMkRBQVU7QUFDckI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsV0FBVyxxRUFBb0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsV0FBVyxxRUFBb0I7QUFDL0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWUsK0RBQWtCLENBQUMsc0VBQW9COztBQUV0RDtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLCtEQUFrQjtBQUNwQyxJQUFJLHlFQUF1QjtBQUMzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDBCQUEwQix1RUFBVzs7QUFFckM7QUFDQTtBQUNBOztBQUVBLE1BQU0sb0VBQWM7QUFDcEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9leGVjdXRpb24vY29sbGVjdEZpZWxkcy5tanM/MzRkZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbmltcG9ydCB7IGlzQWJzdHJhY3RUeXBlIH0gZnJvbSAnLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5pbXBvcnQge1xuICBHcmFwaFFMSW5jbHVkZURpcmVjdGl2ZSxcbiAgR3JhcGhRTFNraXBEaXJlY3RpdmUsXG59IGZyb20gJy4uL3R5cGUvZGlyZWN0aXZlcy5tanMnO1xuaW1wb3J0IHsgdHlwZUZyb21BU1QgfSBmcm9tICcuLi91dGlsaXRpZXMvdHlwZUZyb21BU1QubWpzJztcbmltcG9ydCB7IGdldERpcmVjdGl2ZVZhbHVlcyB9IGZyb20gJy4vdmFsdWVzLm1qcyc7XG4vKipcbiAqIEdpdmVuIGEgc2VsZWN0aW9uU2V0LCBjb2xsZWN0cyBhbGwgb2YgdGhlIGZpZWxkcyBhbmQgcmV0dXJucyB0aGVtLlxuICpcbiAqIENvbGxlY3RGaWVsZHMgcmVxdWlyZXMgdGhlIFwicnVudGltZSB0eXBlXCIgb2YgYW4gb2JqZWN0LiBGb3IgYSBmaWVsZCB0aGF0XG4gKiByZXR1cm5zIGFuIEludGVyZmFjZSBvciBVbmlvbiB0eXBlLCB0aGUgXCJydW50aW1lIHR5cGVcIiB3aWxsIGJlIHRoZSBhY3R1YWxcbiAqIG9iamVjdCB0eXBlIHJldHVybmVkIGJ5IHRoYXQgZmllbGQuXG4gKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbGxlY3RGaWVsZHMoXG4gIHNjaGVtYSxcbiAgZnJhZ21lbnRzLFxuICB2YXJpYWJsZVZhbHVlcyxcbiAgcnVudGltZVR5cGUsXG4gIHNlbGVjdGlvblNldCxcbikge1xuICBjb25zdCBmaWVsZHMgPSBuZXcgTWFwKCk7XG4gIGNvbGxlY3RGaWVsZHNJbXBsKFxuICAgIHNjaGVtYSxcbiAgICBmcmFnbWVudHMsXG4gICAgdmFyaWFibGVWYWx1ZXMsXG4gICAgcnVudGltZVR5cGUsXG4gICAgc2VsZWN0aW9uU2V0LFxuICAgIGZpZWxkcyxcbiAgICBuZXcgU2V0KCksXG4gICk7XG4gIHJldHVybiBmaWVsZHM7XG59XG4vKipcbiAqIEdpdmVuIGFuIGFycmF5IG9mIGZpZWxkIG5vZGVzLCBjb2xsZWN0cyBhbGwgb2YgdGhlIHN1YmZpZWxkcyBvZiB0aGUgcGFzc2VkXG4gKiBpbiBmaWVsZHMsIGFuZCByZXR1cm5zIHRoZW0gYXQgdGhlIGVuZC5cbiAqXG4gKiBDb2xsZWN0U3ViRmllbGRzIHJlcXVpcmVzIHRoZSBcInJldHVybiB0eXBlXCIgb2YgYW4gb2JqZWN0LiBGb3IgYSBmaWVsZCB0aGF0XG4gKiByZXR1cm5zIGFuIEludGVyZmFjZSBvciBVbmlvbiB0eXBlLCB0aGUgXCJyZXR1cm4gdHlwZVwiIHdpbGwgYmUgdGhlIGFjdHVhbFxuICogb2JqZWN0IHR5cGUgcmV0dXJuZWQgYnkgdGhhdCBmaWVsZC5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gY29sbGVjdFN1YmZpZWxkcyhcbiAgc2NoZW1hLFxuICBmcmFnbWVudHMsXG4gIHZhcmlhYmxlVmFsdWVzLFxuICByZXR1cm5UeXBlLFxuICBmaWVsZE5vZGVzLFxuKSB7XG4gIGNvbnN0IHN1YkZpZWxkTm9kZXMgPSBuZXcgTWFwKCk7XG4gIGNvbnN0IHZpc2l0ZWRGcmFnbWVudE5hbWVzID0gbmV3IFNldCgpO1xuXG4gIGZvciAoY29uc3Qgbm9kZSBvZiBmaWVsZE5vZGVzKSB7XG4gICAgaWYgKG5vZGUuc2VsZWN0aW9uU2V0KSB7XG4gICAgICBjb2xsZWN0RmllbGRzSW1wbChcbiAgICAgICAgc2NoZW1hLFxuICAgICAgICBmcmFnbWVudHMsXG4gICAgICAgIHZhcmlhYmxlVmFsdWVzLFxuICAgICAgICByZXR1cm5UeXBlLFxuICAgICAgICBub2RlLnNlbGVjdGlvblNldCxcbiAgICAgICAgc3ViRmllbGROb2RlcyxcbiAgICAgICAgdmlzaXRlZEZyYWdtZW50TmFtZXMsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdWJGaWVsZE5vZGVzO1xufVxuXG5mdW5jdGlvbiBjb2xsZWN0RmllbGRzSW1wbChcbiAgc2NoZW1hLFxuICBmcmFnbWVudHMsXG4gIHZhcmlhYmxlVmFsdWVzLFxuICBydW50aW1lVHlwZSxcbiAgc2VsZWN0aW9uU2V0LFxuICBmaWVsZHMsXG4gIHZpc2l0ZWRGcmFnbWVudE5hbWVzLFxuKSB7XG4gIGZvciAoY29uc3Qgc2VsZWN0aW9uIG9mIHNlbGVjdGlvblNldC5zZWxlY3Rpb25zKSB7XG4gICAgc3dpdGNoIChzZWxlY3Rpb24ua2luZCkge1xuICAgICAgY2FzZSBLaW5kLkZJRUxEOiB7XG4gICAgICAgIGlmICghc2hvdWxkSW5jbHVkZU5vZGUodmFyaWFibGVWYWx1ZXMsIHNlbGVjdGlvbikpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5hbWUgPSBnZXRGaWVsZEVudHJ5S2V5KHNlbGVjdGlvbik7XG4gICAgICAgIGNvbnN0IGZpZWxkTGlzdCA9IGZpZWxkcy5nZXQobmFtZSk7XG5cbiAgICAgICAgaWYgKGZpZWxkTGlzdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZmllbGRMaXN0LnB1c2goc2VsZWN0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWVsZHMuc2V0KG5hbWUsIFtzZWxlY3Rpb25dKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuSU5MSU5FX0ZSQUdNRU5UOiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhc2hvdWxkSW5jbHVkZU5vZGUodmFyaWFibGVWYWx1ZXMsIHNlbGVjdGlvbikgfHxcbiAgICAgICAgICAhZG9lc0ZyYWdtZW50Q29uZGl0aW9uTWF0Y2goc2NoZW1hLCBzZWxlY3Rpb24sIHJ1bnRpbWVUeXBlKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbGxlY3RGaWVsZHNJbXBsKFxuICAgICAgICAgIHNjaGVtYSxcbiAgICAgICAgICBmcmFnbWVudHMsXG4gICAgICAgICAgdmFyaWFibGVWYWx1ZXMsXG4gICAgICAgICAgcnVudGltZVR5cGUsXG4gICAgICAgICAgc2VsZWN0aW9uLnNlbGVjdGlvblNldCxcbiAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgdmlzaXRlZEZyYWdtZW50TmFtZXMsXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuRlJBR01FTlRfU1BSRUFEOiB7XG4gICAgICAgIGNvbnN0IGZyYWdOYW1lID0gc2VsZWN0aW9uLm5hbWUudmFsdWU7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHZpc2l0ZWRGcmFnbWVudE5hbWVzLmhhcyhmcmFnTmFtZSkgfHxcbiAgICAgICAgICAhc2hvdWxkSW5jbHVkZU5vZGUodmFyaWFibGVWYWx1ZXMsIHNlbGVjdGlvbilcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2aXNpdGVkRnJhZ21lbnROYW1lcy5hZGQoZnJhZ05hbWUpO1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IGZyYWdtZW50c1tmcmFnTmFtZV07XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICFmcmFnbWVudCB8fFxuICAgICAgICAgICFkb2VzRnJhZ21lbnRDb25kaXRpb25NYXRjaChzY2hlbWEsIGZyYWdtZW50LCBydW50aW1lVHlwZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb2xsZWN0RmllbGRzSW1wbChcbiAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgZnJhZ21lbnRzLFxuICAgICAgICAgIHZhcmlhYmxlVmFsdWVzLFxuICAgICAgICAgIHJ1bnRpbWVUeXBlLFxuICAgICAgICAgIGZyYWdtZW50LnNlbGVjdGlvblNldCxcbiAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgdmlzaXRlZEZyYWdtZW50TmFtZXMsXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIGEgZmllbGQgc2hvdWxkIGJlIGluY2x1ZGVkIGJhc2VkIG9uIHRoZSBgQGluY2x1ZGVgIGFuZCBgQHNraXBgXG4gKiBkaXJlY3RpdmVzLCB3aGVyZSBgQHNraXBgIGhhcyBoaWdoZXIgcHJlY2VkZW5jZSB0aGFuIGBAaW5jbHVkZWAuXG4gKi9cblxuZnVuY3Rpb24gc2hvdWxkSW5jbHVkZU5vZGUodmFyaWFibGVWYWx1ZXMsIG5vZGUpIHtcbiAgY29uc3Qgc2tpcCA9IGdldERpcmVjdGl2ZVZhbHVlcyhHcmFwaFFMU2tpcERpcmVjdGl2ZSwgbm9kZSwgdmFyaWFibGVWYWx1ZXMpO1xuXG4gIGlmICgoc2tpcCA9PT0gbnVsbCB8fCBza2lwID09PSB2b2lkIDAgPyB2b2lkIDAgOiBza2lwLmlmKSA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGluY2x1ZGUgPSBnZXREaXJlY3RpdmVWYWx1ZXMoXG4gICAgR3JhcGhRTEluY2x1ZGVEaXJlY3RpdmUsXG4gICAgbm9kZSxcbiAgICB2YXJpYWJsZVZhbHVlcyxcbiAgKTtcblxuICBpZiAoXG4gICAgKGluY2x1ZGUgPT09IG51bGwgfHwgaW5jbHVkZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaW5jbHVkZS5pZikgPT09IGZhbHNlXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIGEgZnJhZ21lbnQgaXMgYXBwbGljYWJsZSB0byB0aGUgZ2l2ZW4gdHlwZS5cbiAqL1xuXG5mdW5jdGlvbiBkb2VzRnJhZ21lbnRDb25kaXRpb25NYXRjaChzY2hlbWEsIGZyYWdtZW50LCB0eXBlKSB7XG4gIGNvbnN0IHR5cGVDb25kaXRpb25Ob2RlID0gZnJhZ21lbnQudHlwZUNvbmRpdGlvbjtcblxuICBpZiAoIXR5cGVDb25kaXRpb25Ob2RlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCBjb25kaXRpb25hbFR5cGUgPSB0eXBlRnJvbUFTVChzY2hlbWEsIHR5cGVDb25kaXRpb25Ob2RlKTtcblxuICBpZiAoY29uZGl0aW9uYWxUeXBlID09PSB0eXBlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoaXNBYnN0cmFjdFR5cGUoY29uZGl0aW9uYWxUeXBlKSkge1xuICAgIHJldHVybiBzY2hlbWEuaXNTdWJUeXBlKGNvbmRpdGlvbmFsVHlwZSwgdHlwZSk7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG4vKipcbiAqIEltcGxlbWVudHMgdGhlIGxvZ2ljIHRvIGNvbXB1dGUgdGhlIGtleSBvZiBhIGdpdmVuIGZpZWxkJ3MgZW50cnlcbiAqL1xuXG5mdW5jdGlvbiBnZXRGaWVsZEVudHJ5S2V5KG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUuYWxpYXMgPyBub2RlLmFsaWFzLnZhbHVlIDogbm9kZS5uYW1lLnZhbHVlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/execution/collectFields.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/execution/execute.mjs":
/*!****************************************************!*\
  !*** ./node_modules/graphql/execution/execute.mjs ***!
  \****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"assertValidExecutionArguments\": function() { return /* binding */ assertValidExecutionArguments; },\n/* harmony export */   \"buildExecutionContext\": function() { return /* binding */ buildExecutionContext; },\n/* harmony export */   \"buildResolveInfo\": function() { return /* binding */ buildResolveInfo; },\n/* harmony export */   \"defaultFieldResolver\": function() { return /* binding */ defaultFieldResolver; },\n/* harmony export */   \"defaultTypeResolver\": function() { return /* binding */ defaultTypeResolver; },\n/* harmony export */   \"execute\": function() { return /* binding */ execute; },\n/* harmony export */   \"executeSync\": function() { return /* binding */ executeSync; },\n/* harmony export */   \"getFieldDef\": function() { return /* binding */ getFieldDef; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"./node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"./node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_isIterableObject_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../jsutils/isIterableObject.mjs */ \"./node_modules/graphql/jsutils/isIterableObject.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"./node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/isPromise.mjs */ \"./node_modules/graphql/jsutils/isPromise.mjs\");\n/* harmony import */ var _jsutils_memoize3_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/memoize3.mjs */ \"./node_modules/graphql/jsutils/memoize3.mjs\");\n/* harmony import */ var _jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../jsutils/Path.mjs */ \"./node_modules/graphql/jsutils/Path.mjs\");\n/* harmony import */ var _jsutils_promiseForObject_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../jsutils/promiseForObject.mjs */ \"./node_modules/graphql/jsutils/promiseForObject.mjs\");\n/* harmony import */ var _jsutils_promiseReduce_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../jsutils/promiseReduce.mjs */ \"./node_modules/graphql/jsutils/promiseReduce.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../error/locatedError.mjs */ \"./node_modules/graphql/error/locatedError.mjs\");\n/* harmony import */ var _language_ast_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../language/ast.mjs */ \"./node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../type/introspection.mjs */ \"./node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _type_validate_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../type/validate.mjs */ \"./node_modules/graphql/type/validate.mjs\");\n/* harmony import */ var _collectFields_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./collectFields.mjs */ \"./node_modules/graphql/execution/collectFields.mjs\");\n/* harmony import */ var _values_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./values.mjs */ \"./node_modules/graphql/execution/values.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * A memoized collection of relevant subfields with regard to the return\n * type. Memoizing ensures the subfields are not repeatedly calculated, which\n * saves overhead when resolving lists of values.\n */\n\nconst collectSubfields = (0,_jsutils_memoize3_mjs__WEBPACK_IMPORTED_MODULE_0__.memoize3)((exeContext, returnType, fieldNodes) =>\n  (0,_collectFields_mjs__WEBPACK_IMPORTED_MODULE_1__.collectSubfields)(\n    exeContext.schema,\n    exeContext.fragments,\n    exeContext.variableValues,\n    returnType,\n    fieldNodes,\n  ),\n);\n/**\n * Terminology\n *\n * \"Definitions\" are the generic name for top-level statements in the document.\n * Examples of this include:\n * 1) Operations (such as a query)\n * 2) Fragments\n *\n * \"Operations\" are a generic name for requests in the document.\n * Examples of this include:\n * 1) query,\n * 2) mutation\n *\n * \"Selections\" are the definitions that can appear legally and at\n * single level of the query. These include:\n * 1) field references e.g `a`\n * 2) fragment \"spreads\" e.g. `...c`\n * 3) inline fragment \"spreads\" e.g. `...on Type { a }`\n */\n\n/**\n * Data that must be available at all points during query execution.\n *\n * Namely, schema of the type system that is currently executing,\n * and the fragments defined in the query document\n */\n\n/**\n * Implements the \"Executing requests\" section of the GraphQL specification.\n *\n * Returns either a synchronous ExecutionResult (if all encountered resolvers\n * are synchronous), or a Promise of an ExecutionResult that will eventually be\n * resolved and never rejected.\n *\n * If the arguments to this function do not result in a legal execution context,\n * a GraphQLError will be thrown immediately explaining the invalid input.\n */\nfunction execute(args) {\n  // Temporary for v15 to v16 migration. Remove in v17\n  arguments.length < 2 ||\n    (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n      false,\n      'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n    );\n  const { schema, document, variableValues, rootValue } = args; // If arguments are missing or incorrect, throw an error.\n\n  assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n  // a \"Response\" with only errors is returned.\n\n  const exeContext = buildExecutionContext(args); // Return early errors if execution context failed.\n\n  if (!('schema' in exeContext)) {\n    return {\n      errors: exeContext,\n    };\n  } // Return a Promise that will eventually resolve to the data described by\n  // The \"Response\" section of the GraphQL specification.\n  //\n  // If errors are encountered while executing a GraphQL field, only that\n  // field and its descendants will be omitted, and sibling fields will still\n  // be executed. An execution which encounters errors will still result in a\n  // resolved Promise.\n  //\n  // Errors from sub-fields of a NonNull type may propagate to the top level,\n  // at which point we still log the error and null the parent field, which\n  // in this case is the entire response.\n\n  try {\n    const { operation } = exeContext;\n    const result = executeOperation(exeContext, operation, rootValue);\n\n    if ((0,_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_3__.isPromise)(result)) {\n      return result.then(\n        (data) => buildResponse(data, exeContext.errors),\n        (error) => {\n          exeContext.errors.push(error);\n          return buildResponse(null, exeContext.errors);\n        },\n      );\n    }\n\n    return buildResponse(result, exeContext.errors);\n  } catch (error) {\n    exeContext.errors.push(error);\n    return buildResponse(null, exeContext.errors);\n  }\n}\n/**\n * Also implements the \"Executing requests\" section of the GraphQL specification.\n * However, it guarantees to complete synchronously (or throw an error) assuming\n * that all field resolvers are also synchronous.\n */\n\nfunction executeSync(args) {\n  const result = execute(args); // Assert that the execution was synchronous.\n\n  if ((0,_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_3__.isPromise)(result)) {\n    throw new Error('GraphQL execution failed to complete synchronously.');\n  }\n\n  return result;\n}\n/**\n * Given a completed execution context and data, build the `{ errors, data }`\n * response defined by the \"Response\" section of the GraphQL specification.\n */\n\nfunction buildResponse(data, errors) {\n  return errors.length === 0\n    ? {\n        data,\n      }\n    : {\n        errors,\n        data,\n      };\n}\n/**\n * Essential assertions before executing to provide developer feedback for\n * improper use of the GraphQL library.\n *\n * @internal\n */\n\nfunction assertValidExecutionArguments(\n  schema,\n  document,\n  rawVariableValues,\n) {\n  document || (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(false, 'Must provide document.'); // If the schema used for execution is invalid, throw an error.\n\n  (0,_type_validate_mjs__WEBPACK_IMPORTED_MODULE_4__.assertValidSchema)(schema); // Variables, if provided, must be an object.\n\n  rawVariableValues == null ||\n    (0,_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_5__.isObjectLike)(rawVariableValues) ||\n    (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n      false,\n      'Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.',\n    );\n}\n/**\n * Constructs a ExecutionContext object from the arguments passed to\n * execute, which we will pass throughout the other execution methods.\n *\n * Throws a GraphQLError if a valid execution context cannot be created.\n *\n * @internal\n */\n\nfunction buildExecutionContext(args) {\n  var _definition$name, _operation$variableDe;\n\n  const {\n    schema,\n    document,\n    rootValue,\n    contextValue,\n    variableValues: rawVariableValues,\n    operationName,\n    fieldResolver,\n    typeResolver,\n    subscribeFieldResolver,\n  } = args;\n  let operation;\n  const fragments = Object.create(null);\n\n  for (const definition of document.definitions) {\n    switch (definition.kind) {\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_6__.Kind.OPERATION_DEFINITION:\n        if (operationName == null) {\n          if (operation !== undefined) {\n            return [\n              new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLError(\n                'Must provide operation name if query contains multiple operations.',\n              ),\n            ];\n          }\n\n          operation = definition;\n        } else if (\n          ((_definition$name = definition.name) === null ||\n          _definition$name === void 0\n            ? void 0\n            : _definition$name.value) === operationName\n        ) {\n          operation = definition;\n        }\n\n        break;\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_6__.Kind.FRAGMENT_DEFINITION:\n        fragments[definition.name.value] = definition;\n        break;\n\n      default: // ignore non-executable definitions\n    }\n  }\n\n  if (!operation) {\n    if (operationName != null) {\n      return [new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLError(`Unknown operation named \"${operationName}\".`)];\n    }\n\n    return [new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLError('Must provide an operation.')];\n  } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n  /* c8 ignore next */\n\n  const variableDefinitions =\n    (_operation$variableDe = operation.variableDefinitions) !== null &&\n    _operation$variableDe !== void 0\n      ? _operation$variableDe\n      : [];\n  const coercedVariableValues = (0,_values_mjs__WEBPACK_IMPORTED_MODULE_8__.getVariableValues)(\n    schema,\n    variableDefinitions,\n    rawVariableValues !== null && rawVariableValues !== void 0\n      ? rawVariableValues\n      : {},\n    {\n      maxErrors: 50,\n    },\n  );\n\n  if (coercedVariableValues.errors) {\n    return coercedVariableValues.errors;\n  }\n\n  return {\n    schema,\n    fragments,\n    rootValue,\n    contextValue,\n    operation,\n    variableValues: coercedVariableValues.coerced,\n    fieldResolver:\n      fieldResolver !== null && fieldResolver !== void 0\n        ? fieldResolver\n        : defaultFieldResolver,\n    typeResolver:\n      typeResolver !== null && typeResolver !== void 0\n        ? typeResolver\n        : defaultTypeResolver,\n    subscribeFieldResolver:\n      subscribeFieldResolver !== null && subscribeFieldResolver !== void 0\n        ? subscribeFieldResolver\n        : defaultFieldResolver,\n    errors: [],\n  };\n}\n/**\n * Implements the \"Executing operations\" section of the spec.\n */\n\nfunction executeOperation(exeContext, operation, rootValue) {\n  const rootType = exeContext.schema.getRootType(operation.operation);\n\n  if (rootType == null) {\n    throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLError(\n      `Schema is not configured to execute ${operation.operation} operation.`,\n      operation,\n    );\n  }\n\n  const rootFields = (0,_collectFields_mjs__WEBPACK_IMPORTED_MODULE_1__.collectFields)(\n    exeContext.schema,\n    exeContext.fragments,\n    exeContext.variableValues,\n    rootType,\n    operation.selectionSet,\n  );\n  const path = undefined;\n\n  switch (operation.operation) {\n    case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_9__.OperationTypeNode.QUERY:\n      return executeFields(exeContext, rootType, rootValue, path, rootFields);\n\n    case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_9__.OperationTypeNode.MUTATION:\n      return executeFieldsSerially(\n        exeContext,\n        rootType,\n        rootValue,\n        path,\n        rootFields,\n      );\n\n    case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_9__.OperationTypeNode.SUBSCRIPTION:\n      // TODO: deprecate `subscribe` and move all logic here\n      // Temporary solution until we finish merging execute and subscribe together\n      return executeFields(exeContext, rootType, rootValue, path, rootFields);\n  }\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that must be executed serially.\n */\n\nfunction executeFieldsSerially(\n  exeContext,\n  parentType,\n  sourceValue,\n  path,\n  fields,\n) {\n  return (0,_jsutils_promiseReduce_mjs__WEBPACK_IMPORTED_MODULE_10__.promiseReduce)(\n    fields.entries(),\n    (results, [responseName, fieldNodes]) => {\n      const fieldPath = (0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_11__.addPath)(path, responseName, parentType.name);\n      const result = executeField(\n        exeContext,\n        parentType,\n        sourceValue,\n        fieldNodes,\n        fieldPath,\n      );\n\n      if (result === undefined) {\n        return results;\n      }\n\n      if ((0,_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_3__.isPromise)(result)) {\n        return result.then((resolvedResult) => {\n          results[responseName] = resolvedResult;\n          return results;\n        });\n      }\n\n      results[responseName] = result;\n      return results;\n    },\n    Object.create(null),\n  );\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that may be executed in parallel.\n */\n\nfunction executeFields(exeContext, parentType, sourceValue, path, fields) {\n  const results = Object.create(null);\n  let containsPromise = false;\n\n  for (const [responseName, fieldNodes] of fields.entries()) {\n    const fieldPath = (0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_11__.addPath)(path, responseName, parentType.name);\n    const result = executeField(\n      exeContext,\n      parentType,\n      sourceValue,\n      fieldNodes,\n      fieldPath,\n    );\n\n    if (result !== undefined) {\n      results[responseName] = result;\n\n      if ((0,_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_3__.isPromise)(result)) {\n        containsPromise = true;\n      }\n    }\n  } // If there are no promises, we can just return the object\n\n  if (!containsPromise) {\n    return results;\n  } // Otherwise, results is a map from field name to the result of resolving that\n  // field, which is possibly a promise. Return a promise that will return this\n  // same map, but with any promises replaced with the values they resolved to.\n\n  return (0,_jsutils_promiseForObject_mjs__WEBPACK_IMPORTED_MODULE_12__.promiseForObject)(results);\n}\n/**\n * Implements the \"Executing fields\" section of the spec\n * In particular, this function figures out the value that the field returns by\n * calling its resolve function, then calls completeValue to complete promises,\n * serialize scalars, or execute the sub-selection-set for objects.\n */\n\nfunction executeField(exeContext, parentType, source, fieldNodes, path) {\n  var _fieldDef$resolve;\n\n  const fieldDef = getFieldDef(exeContext.schema, parentType, fieldNodes[0]);\n\n  if (!fieldDef) {\n    return;\n  }\n\n  const returnType = fieldDef.type;\n  const resolveFn =\n    (_fieldDef$resolve = fieldDef.resolve) !== null &&\n    _fieldDef$resolve !== void 0\n      ? _fieldDef$resolve\n      : exeContext.fieldResolver;\n  const info = buildResolveInfo(\n    exeContext,\n    fieldDef,\n    fieldNodes,\n    parentType,\n    path,\n  ); // Get the resolve function, regardless of if its result is normal or abrupt (error).\n\n  try {\n    // Build a JS object of arguments from the field.arguments AST, using the\n    // variables scope to fulfill any variable references.\n    // TODO: find a way to memoize, in case this field is within a List type.\n    const args = (0,_values_mjs__WEBPACK_IMPORTED_MODULE_8__.getArgumentValues)(\n      fieldDef,\n      fieldNodes[0],\n      exeContext.variableValues,\n    ); // The resolve function's optional third argument is a context value that\n    // is provided to every resolve function within an execution. It is commonly\n    // used to represent an authenticated user, or request-specific caches.\n\n    const contextValue = exeContext.contextValue;\n    const result = resolveFn(source, args, contextValue, info);\n    let completed;\n\n    if ((0,_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_3__.isPromise)(result)) {\n      completed = result.then((resolved) =>\n        completeValue(exeContext, returnType, fieldNodes, info, path, resolved),\n      );\n    } else {\n      completed = completeValue(\n        exeContext,\n        returnType,\n        fieldNodes,\n        info,\n        path,\n        result,\n      );\n    }\n\n    if ((0,_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_3__.isPromise)(completed)) {\n      // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n      // to take a second callback for the error case.\n      return completed.then(undefined, (rawError) => {\n        const error = (0,_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_13__.locatedError)(rawError, fieldNodes, (0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_11__.pathToArray)(path));\n        return handleFieldError(error, returnType, exeContext);\n      });\n    }\n\n    return completed;\n  } catch (rawError) {\n    const error = (0,_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_13__.locatedError)(rawError, fieldNodes, (0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_11__.pathToArray)(path));\n    return handleFieldError(error, returnType, exeContext);\n  }\n}\n/**\n * @internal\n */\n\nfunction buildResolveInfo(\n  exeContext,\n  fieldDef,\n  fieldNodes,\n  parentType,\n  path,\n) {\n  // The resolve function's optional fourth argument is a collection of\n  // information about the current execution state.\n  return {\n    fieldName: fieldDef.name,\n    fieldNodes,\n    returnType: fieldDef.type,\n    parentType,\n    path,\n    schema: exeContext.schema,\n    fragments: exeContext.fragments,\n    rootValue: exeContext.rootValue,\n    operation: exeContext.operation,\n    variableValues: exeContext.variableValues,\n  };\n}\n\nfunction handleFieldError(error, returnType, exeContext) {\n  // If the field type is non-nullable, then it is resolved without any\n  // protection from errors, however it still properly locates the error.\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__.isNonNullType)(returnType)) {\n    throw error;\n  } // Otherwise, error protection is applied, logging the error and resolving\n  // a null value for this field if one is encountered.\n\n  exeContext.errors.push(error);\n  return null;\n}\n/**\n * Implements the instructions for completeValue as defined in the\n * \"Value Completion\" section of the spec.\n *\n * If the field type is Non-Null, then this recursively completes the value\n * for the inner type. It throws a field error if that completion returns null,\n * as per the \"Nullability\" section of the spec.\n *\n * If the field type is a List, then this recursively completes the value\n * for the inner type on each item in the list.\n *\n * If the field type is a Scalar or Enum, ensures the completed value is a legal\n * value of the type by calling the `serialize` method of GraphQL type\n * definition.\n *\n * If the field is an abstract type, determine the runtime type of the value\n * and then complete based on that type\n *\n * Otherwise, the field type expects a sub-selection set, and will complete the\n * value by executing all sub-selections.\n */\n\nfunction completeValue(exeContext, returnType, fieldNodes, info, path, result) {\n  // If result is an Error, throw a located error.\n  if (result instanceof Error) {\n    throw result;\n  } // If field type is NonNull, complete for inner type, and throw field error\n  // if result is null.\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__.isNonNullType)(returnType)) {\n    const completed = completeValue(\n      exeContext,\n      returnType.ofType,\n      fieldNodes,\n      info,\n      path,\n      result,\n    );\n\n    if (completed === null) {\n      throw new Error(\n        `Cannot return null for non-nullable field ${info.parentType.name}.${info.fieldName}.`,\n      );\n    }\n\n    return completed;\n  } // If result value is null or undefined then return null.\n\n  if (result == null) {\n    return null;\n  } // If field type is List, complete each item in the list with the inner type\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__.isListType)(returnType)) {\n    return completeListValue(\n      exeContext,\n      returnType,\n      fieldNodes,\n      info,\n      path,\n      result,\n    );\n  } // If field type is a leaf type, Scalar or Enum, serialize to a valid value,\n  // returning null if serialization is not possible.\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__.isLeafType)(returnType)) {\n    return completeLeafValue(returnType, result);\n  } // If field type is an abstract type, Interface or Union, determine the\n  // runtime Object type and complete for that type.\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__.isAbstractType)(returnType)) {\n    return completeAbstractValue(\n      exeContext,\n      returnType,\n      fieldNodes,\n      info,\n      path,\n      result,\n    );\n  } // If field type is Object, execute and complete all sub-selections.\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__.isObjectType)(returnType)) {\n    return completeObjectValue(\n      exeContext,\n      returnType,\n      fieldNodes,\n      info,\n      path,\n      result,\n    );\n  }\n  /* c8 ignore next 6 */\n  // Not reachable, all possible output types have been considered.\n\n   false ||\n    (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_15__.invariant)(\n      false,\n      'Cannot complete value of unexpected output type: ' + (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_16__.inspect)(returnType),\n    );\n}\n/**\n * Complete a list value by completing each item in the list with the\n * inner type\n */\n\nfunction completeListValue(\n  exeContext,\n  returnType,\n  fieldNodes,\n  info,\n  path,\n  result,\n) {\n  if (!(0,_jsutils_isIterableObject_mjs__WEBPACK_IMPORTED_MODULE_17__.isIterableObject)(result)) {\n    throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLError(\n      `Expected Iterable, but did not find one for field \"${info.parentType.name}.${info.fieldName}\".`,\n    );\n  } // This is specified as a simple map, however we're optimizing the path\n  // where the list contains no Promises by avoiding creating another Promise.\n\n  const itemType = returnType.ofType;\n  let containsPromise = false;\n  const completedResults = Array.from(result, (item, index) => {\n    // No need to modify the info object containing the path,\n    // since from here on it is not ever accessed by resolver functions.\n    const itemPath = (0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_11__.addPath)(path, index, undefined);\n\n    try {\n      let completedItem;\n\n      if ((0,_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_3__.isPromise)(item)) {\n        completedItem = item.then((resolved) =>\n          completeValue(\n            exeContext,\n            itemType,\n            fieldNodes,\n            info,\n            itemPath,\n            resolved,\n          ),\n        );\n      } else {\n        completedItem = completeValue(\n          exeContext,\n          itemType,\n          fieldNodes,\n          info,\n          itemPath,\n          item,\n        );\n      }\n\n      if ((0,_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_3__.isPromise)(completedItem)) {\n        containsPromise = true; // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n        // to take a second callback for the error case.\n\n        return completedItem.then(undefined, (rawError) => {\n          const error = (0,_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_13__.locatedError)(\n            rawError,\n            fieldNodes,\n            (0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_11__.pathToArray)(itemPath),\n          );\n          return handleFieldError(error, itemType, exeContext);\n        });\n      }\n\n      return completedItem;\n    } catch (rawError) {\n      const error = (0,_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_13__.locatedError)(rawError, fieldNodes, (0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_11__.pathToArray)(itemPath));\n      return handleFieldError(error, itemType, exeContext);\n    }\n  });\n  return containsPromise ? Promise.all(completedResults) : completedResults;\n}\n/**\n * Complete a Scalar or Enum by serializing to a valid value, returning\n * null if serialization is not possible.\n */\n\nfunction completeLeafValue(returnType, result) {\n  const serializedResult = returnType.serialize(result);\n\n  if (serializedResult == null) {\n    throw new Error(\n      `Expected \\`${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_16__.inspect)(returnType)}.serialize(${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_16__.inspect)(result)})\\` to ` +\n        `return non-nullable value, returned: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_16__.inspect)(serializedResult)}`,\n    );\n  }\n\n  return serializedResult;\n}\n/**\n * Complete a value of an abstract type by determining the runtime object type\n * of that value, then complete the value for that type.\n */\n\nfunction completeAbstractValue(\n  exeContext,\n  returnType,\n  fieldNodes,\n  info,\n  path,\n  result,\n) {\n  var _returnType$resolveTy;\n\n  const resolveTypeFn =\n    (_returnType$resolveTy = returnType.resolveType) !== null &&\n    _returnType$resolveTy !== void 0\n      ? _returnType$resolveTy\n      : exeContext.typeResolver;\n  const contextValue = exeContext.contextValue;\n  const runtimeType = resolveTypeFn(result, contextValue, info, returnType);\n\n  if ((0,_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_3__.isPromise)(runtimeType)) {\n    return runtimeType.then((resolvedRuntimeType) =>\n      completeObjectValue(\n        exeContext,\n        ensureValidRuntimeType(\n          resolvedRuntimeType,\n          exeContext,\n          returnType,\n          fieldNodes,\n          info,\n          result,\n        ),\n        fieldNodes,\n        info,\n        path,\n        result,\n      ),\n    );\n  }\n\n  return completeObjectValue(\n    exeContext,\n    ensureValidRuntimeType(\n      runtimeType,\n      exeContext,\n      returnType,\n      fieldNodes,\n      info,\n      result,\n    ),\n    fieldNodes,\n    info,\n    path,\n    result,\n  );\n}\n\nfunction ensureValidRuntimeType(\n  runtimeTypeName,\n  exeContext,\n  returnType,\n  fieldNodes,\n  info,\n  result,\n) {\n  if (runtimeTypeName == null) {\n    throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLError(\n      `Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\". Either the \"${returnType.name}\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function.`,\n      fieldNodes,\n    );\n  } // releases before 16.0.0 supported returning `GraphQLObjectType` from `resolveType`\n  // TODO: remove in 17.0.0 release\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__.isObjectType)(runtimeTypeName)) {\n    throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLError(\n      'Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.',\n    );\n  }\n\n  if (typeof runtimeTypeName !== 'string') {\n    throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLError(\n      `Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\" with ` +\n        `value ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_16__.inspect)(result)}, received \"${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_16__.inspect)(runtimeTypeName)}\".`,\n    );\n  }\n\n  const runtimeType = exeContext.schema.getType(runtimeTypeName);\n\n  if (runtimeType == null) {\n    throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLError(\n      `Abstract type \"${returnType.name}\" was resolved to a type \"${runtimeTypeName}\" that does not exist inside the schema.`,\n      fieldNodes,\n    );\n  }\n\n  if (!(0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_14__.isObjectType)(runtimeType)) {\n    throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLError(\n      `Abstract type \"${returnType.name}\" was resolved to a non-object type \"${runtimeTypeName}\".`,\n      fieldNodes,\n    );\n  }\n\n  if (!exeContext.schema.isSubType(returnType, runtimeType)) {\n    throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLError(\n      `Runtime Object type \"${runtimeType.name}\" is not a possible type for \"${returnType.name}\".`,\n      fieldNodes,\n    );\n  }\n\n  return runtimeType;\n}\n/**\n * Complete an Object value by executing all sub-selections.\n */\n\nfunction completeObjectValue(\n  exeContext,\n  returnType,\n  fieldNodes,\n  info,\n  path,\n  result,\n) {\n  // Collect sub-fields to execute to complete this value.\n  const subFieldNodes = collectSubfields(exeContext, returnType, fieldNodes); // If there is an isTypeOf predicate function, call it with the\n  // current result. If isTypeOf returns false, then raise an error rather\n  // than continuing execution.\n\n  if (returnType.isTypeOf) {\n    const isTypeOf = returnType.isTypeOf(result, exeContext.contextValue, info);\n\n    if ((0,_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_3__.isPromise)(isTypeOf)) {\n      return isTypeOf.then((resolvedIsTypeOf) => {\n        if (!resolvedIsTypeOf) {\n          throw invalidReturnTypeError(returnType, result, fieldNodes);\n        }\n\n        return executeFields(\n          exeContext,\n          returnType,\n          result,\n          path,\n          subFieldNodes,\n        );\n      });\n    }\n\n    if (!isTypeOf) {\n      throw invalidReturnTypeError(returnType, result, fieldNodes);\n    }\n  }\n\n  return executeFields(exeContext, returnType, result, path, subFieldNodes);\n}\n\nfunction invalidReturnTypeError(returnType, result, fieldNodes) {\n  return new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLError(\n    `Expected value of type \"${returnType.name}\" but got: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_16__.inspect)(result)}.`,\n    fieldNodes,\n  );\n}\n/**\n * If a resolveType function is not given, then a default resolve behavior is\n * used which attempts two strategies:\n *\n * First, See if the provided value has a `__typename` field defined, if so, use\n * that value as name of the resolved type.\n *\n * Otherwise, test each possible type for the abstract type by calling\n * isTypeOf for the object being coerced, returning the first type that matches.\n */\n\nconst defaultTypeResolver = function (\n  value,\n  contextValue,\n  info,\n  abstractType,\n) {\n  // First, look for `__typename`.\n  if ((0,_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_5__.isObjectLike)(value) && typeof value.__typename === 'string') {\n    return value.__typename;\n  } // Otherwise, test each possible type.\n\n  const possibleTypes = info.schema.getPossibleTypes(abstractType);\n  const promisedIsTypeOfResults = [];\n\n  for (let i = 0; i < possibleTypes.length; i++) {\n    const type = possibleTypes[i];\n\n    if (type.isTypeOf) {\n      const isTypeOfResult = type.isTypeOf(value, contextValue, info);\n\n      if ((0,_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_3__.isPromise)(isTypeOfResult)) {\n        promisedIsTypeOfResults[i] = isTypeOfResult;\n      } else if (isTypeOfResult) {\n        return type.name;\n      }\n    }\n  }\n\n  if (promisedIsTypeOfResults.length) {\n    return Promise.all(promisedIsTypeOfResults).then((isTypeOfResults) => {\n      for (let i = 0; i < isTypeOfResults.length; i++) {\n        if (isTypeOfResults[i]) {\n          return possibleTypes[i].name;\n        }\n      }\n    });\n  }\n};\n/**\n * If a resolve function is not given, then a default resolve behavior is used\n * which takes the property of the source object of the same name as the field\n * and returns it as the result, or if it's a function, returns the result\n * of calling that function while passing along args and context value.\n */\n\nconst defaultFieldResolver = function (\n  source,\n  args,\n  contextValue,\n  info,\n) {\n  // ensure source is a value for which property access is acceptable.\n  if ((0,_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_5__.isObjectLike)(source) || typeof source === 'function') {\n    const property = source[info.fieldName];\n\n    if (typeof property === 'function') {\n      return source[info.fieldName](args, contextValue, info);\n    }\n\n    return property;\n  }\n};\n/**\n * This method looks up the field on the given type definition.\n * It has special casing for the three introspection fields,\n * __schema, __type and __typename. __typename is special because\n * it can always be queried as a field, even in situations where no\n * other fields are allowed, like on a Union. __schema and __type\n * could get automatically added to the query type, but that would\n * require mutating type definitions, which would cause issues.\n *\n * @internal\n */\n\nfunction getFieldDef(schema, parentType, fieldNode) {\n  const fieldName = fieldNode.name.value;\n\n  if (\n    fieldName === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_18__.SchemaMetaFieldDef.name &&\n    schema.getQueryType() === parentType\n  ) {\n    return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_18__.SchemaMetaFieldDef;\n  } else if (\n    fieldName === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_18__.TypeMetaFieldDef.name &&\n    schema.getQueryType() === parentType\n  ) {\n    return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_18__.TypeMetaFieldDef;\n  } else if (fieldName === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_18__.TypeNameMetaFieldDef.name) {\n    return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_18__.TypeNameMetaFieldDef;\n  }\n\n  return parentType.getFields()[fieldName];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9leGVjdXRpb24vZXhlY3V0ZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXFEO0FBQ0o7QUFDSTtBQUNjO0FBQ1I7QUFDTjtBQUNGO0FBQ1E7QUFDUTtBQUNOO0FBQ0o7QUFDQTtBQUNEO0FBQ1g7QUFPYjtBQUtHO0FBQ3NCO0FBSTVCO0FBQ3VDO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLCtEQUFRO0FBQ2pDLEVBQUUsb0VBQWlCO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFtRCxHQUFHO0FBQ3REOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLElBQUksaUVBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQSxVQUFVLDhDQUE4QyxRQUFROztBQUVoRSxtRUFBbUU7QUFDbkU7O0FBRUEsa0RBQWtEOztBQUVsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFlBQVksWUFBWTtBQUN4Qjs7QUFFQSxRQUFRLGlFQUFTO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxnQ0FBZ0M7O0FBRWhDLE1BQU0saUVBQVM7QUFDZjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDhEQUE4RCxjQUFjO0FBQzVFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsaUVBQVMsbUNBQW1DOztBQUUxRCxFQUFFLHFFQUFpQixVQUFVOztBQUU3QjtBQUNBLElBQUksdUVBQVk7QUFDaEIsSUFBSSxpRUFBUztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsMEVBQXlCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixpRUFBWTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxXQUFXLHlFQUF3QjtBQUNuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCLGlFQUFZLDZCQUE2QixjQUFjO0FBQ3pFOztBQUVBLGdCQUFnQixpRUFBWTtBQUM1QixJQUFJOztBQUVKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsOERBQWlCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxjQUFjLGlFQUFZO0FBQzFCLDZDQUE2QyxxQkFBcUI7QUFDbEU7QUFDQTtBQUNBOztBQUVBLHFCQUFxQixpRUFBYTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsc0VBQXVCO0FBQ2hDOztBQUVBLFNBQVMseUVBQTBCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMsNkVBQThCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsMEVBQWE7QUFDdEI7QUFDQTtBQUNBLHdCQUF3QiwyREFBTztBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsVUFBVSxpRUFBUztBQUNuQjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0IsMkRBQU87QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxVQUFVLGlFQUFTO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBLFNBQVMsZ0ZBQWdCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsOERBQWlCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLGlFQUFTO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsUUFBUSxpRUFBUztBQUNqQjtBQUNBO0FBQ0E7QUFDQSxzQkFBc0Isc0VBQVksdUJBQXVCLCtEQUFXO0FBQ3BFO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0EsSUFBSTtBQUNKLGtCQUFrQixzRUFBWSx1QkFBdUIsK0RBQVc7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sb0VBQWE7QUFDbkI7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBLE1BQU0sb0VBQWE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscURBQXFELHFCQUFxQixHQUFHLGVBQWU7QUFDNUY7QUFDQTs7QUFFQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBLElBQUk7O0FBRUosTUFBTSxpRUFBVTtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBLE1BQU0saUVBQVU7QUFDaEI7QUFDQSxJQUFJO0FBQ0o7O0FBRUEsTUFBTSxxRUFBYztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSixNQUFNLG1FQUFZO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSxNQUFLO0FBQ1AsSUFBSSxrRUFBUztBQUNiO0FBQ0EsNERBQTRELDhEQUFPO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxnRkFBZ0I7QUFDdkIsY0FBYyxpRUFBWTtBQUMxQiw0REFBNEQscUJBQXFCLEdBQUcsZUFBZTtBQUNuRztBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDJEQUFPOztBQUU1QjtBQUNBOztBQUVBLFVBQVUsaUVBQVM7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVUsaUVBQVM7QUFDbkIsZ0NBQWdDO0FBQ2hDOztBQUVBO0FBQ0Esd0JBQXdCLHNFQUFZO0FBQ3BDO0FBQ0E7QUFDQSxZQUFZLCtEQUFXO0FBQ3ZCO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQSxNQUFNO0FBQ04sb0JBQW9CLHNFQUFZLHVCQUF1QiwrREFBVztBQUNsRTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxvQkFBb0IsOERBQU8sYUFBYSxhQUFhLDhEQUFPLFNBQVM7QUFDckUsZ0RBQWdELDhEQUFPLG1CQUFtQjtBQUMxRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTSxpRUFBUztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLGlFQUFZO0FBQzFCLHdCQUF3QixnQkFBZ0IseURBQXlELHFCQUFxQixHQUFHLGVBQWUsaUJBQWlCLGdCQUFnQjtBQUN6SztBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBLE1BQU0sbUVBQVk7QUFDbEIsY0FBYyxpRUFBWTtBQUMxQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxjQUFjLGlFQUFZO0FBQzFCLHdCQUF3QixnQkFBZ0IseURBQXlELHFCQUFxQixHQUFHLGVBQWU7QUFDeEksaUJBQWlCLDhEQUFPLFNBQVMsY0FBYyw4REFBTyxrQkFBa0I7QUFDeEU7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGNBQWMsaUVBQVk7QUFDMUIsd0JBQXdCLGdCQUFnQiw0QkFBNEIsZ0JBQWdCO0FBQ3BGO0FBQ0E7QUFDQTs7QUFFQSxPQUFPLG1FQUFZO0FBQ25CLGNBQWMsaUVBQVk7QUFDMUIsd0JBQXdCLGdCQUFnQix1Q0FBdUMsZ0JBQWdCO0FBQy9GO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGNBQWMsaUVBQVk7QUFDMUIsOEJBQThCLGlCQUFpQixnQ0FBZ0MsZ0JBQWdCO0FBQy9GO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhFQUE4RTtBQUM5RTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsUUFBUSxpRUFBUztBQUNqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxpRUFBWTtBQUN6QiwrQkFBK0IsZ0JBQWdCLGFBQWEsOERBQU8sU0FBUztBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sdUVBQVk7QUFDbEI7QUFDQSxJQUFJOztBQUVKO0FBQ0E7O0FBRUEsa0JBQWtCLDBCQUEwQjtBQUM1Qzs7QUFFQTtBQUNBOztBQUVBLFVBQVUsaUVBQVM7QUFDbkI7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNCQUFzQiw0QkFBNEI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sdUVBQVk7QUFDbEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDs7QUFFQTtBQUNBLGtCQUFrQiw2RUFBdUI7QUFDekM7QUFDQTtBQUNBLFdBQVcsd0VBQWtCO0FBQzdCLElBQUk7QUFDSixrQkFBa0IsMkVBQXFCO0FBQ3ZDO0FBQ0E7QUFDQSxXQUFXLHNFQUFnQjtBQUMzQixJQUFJLHVCQUF1QiwrRUFBeUI7QUFDcEQsV0FBVywwRUFBb0I7QUFDL0I7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9leGVjdXRpb24vZXhlY3V0ZS5tanM/ZmMzZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXZBc3NlcnQgfSBmcm9tICcuLi9qc3V0aWxzL2RldkFzc2VydC5tanMnO1xuaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSAnLi4vanN1dGlscy9pbnZhcmlhbnQubWpzJztcbmltcG9ydCB7IGlzSXRlcmFibGVPYmplY3QgfSBmcm9tICcuLi9qc3V0aWxzL2lzSXRlcmFibGVPYmplY3QubWpzJztcbmltcG9ydCB7IGlzT2JqZWN0TGlrZSB9IGZyb20gJy4uL2pzdXRpbHMvaXNPYmplY3RMaWtlLm1qcyc7XG5pbXBvcnQgeyBpc1Byb21pc2UgfSBmcm9tICcuLi9qc3V0aWxzL2lzUHJvbWlzZS5tanMnO1xuaW1wb3J0IHsgbWVtb2l6ZTMgfSBmcm9tICcuLi9qc3V0aWxzL21lbW9pemUzLm1qcyc7XG5pbXBvcnQgeyBhZGRQYXRoLCBwYXRoVG9BcnJheSB9IGZyb20gJy4uL2pzdXRpbHMvUGF0aC5tanMnO1xuaW1wb3J0IHsgcHJvbWlzZUZvck9iamVjdCB9IGZyb20gJy4uL2pzdXRpbHMvcHJvbWlzZUZvck9iamVjdC5tanMnO1xuaW1wb3J0IHsgcHJvbWlzZVJlZHVjZSB9IGZyb20gJy4uL2pzdXRpbHMvcHJvbWlzZVJlZHVjZS5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBsb2NhdGVkRXJyb3IgfSBmcm9tICcuLi9lcnJvci9sb2NhdGVkRXJyb3IubWpzJztcbmltcG9ydCB7IE9wZXJhdGlvblR5cGVOb2RlIH0gZnJvbSAnLi4vbGFuZ3VhZ2UvYXN0Lm1qcyc7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbmltcG9ydCB7XG4gIGlzQWJzdHJhY3RUeXBlLFxuICBpc0xlYWZUeXBlLFxuICBpc0xpc3RUeXBlLFxuICBpc05vbk51bGxUeXBlLFxuICBpc09iamVjdFR5cGUsXG59IGZyb20gJy4uL3R5cGUvZGVmaW5pdGlvbi5tanMnO1xuaW1wb3J0IHtcbiAgU2NoZW1hTWV0YUZpZWxkRGVmLFxuICBUeXBlTWV0YUZpZWxkRGVmLFxuICBUeXBlTmFtZU1ldGFGaWVsZERlZixcbn0gZnJvbSAnLi4vdHlwZS9pbnRyb3NwZWN0aW9uLm1qcyc7XG5pbXBvcnQgeyBhc3NlcnRWYWxpZFNjaGVtYSB9IGZyb20gJy4uL3R5cGUvdmFsaWRhdGUubWpzJztcbmltcG9ydCB7XG4gIGNvbGxlY3RGaWVsZHMsXG4gIGNvbGxlY3RTdWJmaWVsZHMgYXMgX2NvbGxlY3RTdWJmaWVsZHMsXG59IGZyb20gJy4vY29sbGVjdEZpZWxkcy5tanMnO1xuaW1wb3J0IHsgZ2V0QXJndW1lbnRWYWx1ZXMsIGdldFZhcmlhYmxlVmFsdWVzIH0gZnJvbSAnLi92YWx1ZXMubWpzJztcbi8qKlxuICogQSBtZW1vaXplZCBjb2xsZWN0aW9uIG9mIHJlbGV2YW50IHN1YmZpZWxkcyB3aXRoIHJlZ2FyZCB0byB0aGUgcmV0dXJuXG4gKiB0eXBlLiBNZW1vaXppbmcgZW5zdXJlcyB0aGUgc3ViZmllbGRzIGFyZSBub3QgcmVwZWF0ZWRseSBjYWxjdWxhdGVkLCB3aGljaFxuICogc2F2ZXMgb3ZlcmhlYWQgd2hlbiByZXNvbHZpbmcgbGlzdHMgb2YgdmFsdWVzLlxuICovXG5cbmNvbnN0IGNvbGxlY3RTdWJmaWVsZHMgPSBtZW1vaXplMygoZXhlQ29udGV4dCwgcmV0dXJuVHlwZSwgZmllbGROb2RlcykgPT5cbiAgX2NvbGxlY3RTdWJmaWVsZHMoXG4gICAgZXhlQ29udGV4dC5zY2hlbWEsXG4gICAgZXhlQ29udGV4dC5mcmFnbWVudHMsXG4gICAgZXhlQ29udGV4dC52YXJpYWJsZVZhbHVlcyxcbiAgICByZXR1cm5UeXBlLFxuICAgIGZpZWxkTm9kZXMsXG4gICksXG4pO1xuLyoqXG4gKiBUZXJtaW5vbG9neVxuICpcbiAqIFwiRGVmaW5pdGlvbnNcIiBhcmUgdGhlIGdlbmVyaWMgbmFtZSBmb3IgdG9wLWxldmVsIHN0YXRlbWVudHMgaW4gdGhlIGRvY3VtZW50LlxuICogRXhhbXBsZXMgb2YgdGhpcyBpbmNsdWRlOlxuICogMSkgT3BlcmF0aW9ucyAoc3VjaCBhcyBhIHF1ZXJ5KVxuICogMikgRnJhZ21lbnRzXG4gKlxuICogXCJPcGVyYXRpb25zXCIgYXJlIGEgZ2VuZXJpYyBuYW1lIGZvciByZXF1ZXN0cyBpbiB0aGUgZG9jdW1lbnQuXG4gKiBFeGFtcGxlcyBvZiB0aGlzIGluY2x1ZGU6XG4gKiAxKSBxdWVyeSxcbiAqIDIpIG11dGF0aW9uXG4gKlxuICogXCJTZWxlY3Rpb25zXCIgYXJlIHRoZSBkZWZpbml0aW9ucyB0aGF0IGNhbiBhcHBlYXIgbGVnYWxseSBhbmQgYXRcbiAqIHNpbmdsZSBsZXZlbCBvZiB0aGUgcXVlcnkuIFRoZXNlIGluY2x1ZGU6XG4gKiAxKSBmaWVsZCByZWZlcmVuY2VzIGUuZyBgYWBcbiAqIDIpIGZyYWdtZW50IFwic3ByZWFkc1wiIGUuZy4gYC4uLmNgXG4gKiAzKSBpbmxpbmUgZnJhZ21lbnQgXCJzcHJlYWRzXCIgZS5nLiBgLi4ub24gVHlwZSB7IGEgfWBcbiAqL1xuXG4vKipcbiAqIERhdGEgdGhhdCBtdXN0IGJlIGF2YWlsYWJsZSBhdCBhbGwgcG9pbnRzIGR1cmluZyBxdWVyeSBleGVjdXRpb24uXG4gKlxuICogTmFtZWx5LCBzY2hlbWEgb2YgdGhlIHR5cGUgc3lzdGVtIHRoYXQgaXMgY3VycmVudGx5IGV4ZWN1dGluZyxcbiAqIGFuZCB0aGUgZnJhZ21lbnRzIGRlZmluZWQgaW4gdGhlIHF1ZXJ5IGRvY3VtZW50XG4gKi9cblxuLyoqXG4gKiBJbXBsZW1lbnRzIHRoZSBcIkV4ZWN1dGluZyByZXF1ZXN0c1wiIHNlY3Rpb24gb2YgdGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbi5cbiAqXG4gKiBSZXR1cm5zIGVpdGhlciBhIHN5bmNocm9ub3VzIEV4ZWN1dGlvblJlc3VsdCAoaWYgYWxsIGVuY291bnRlcmVkIHJlc29sdmVyc1xuICogYXJlIHN5bmNocm9ub3VzKSwgb3IgYSBQcm9taXNlIG9mIGFuIEV4ZWN1dGlvblJlc3VsdCB0aGF0IHdpbGwgZXZlbnR1YWxseSBiZVxuICogcmVzb2x2ZWQgYW5kIG5ldmVyIHJlamVjdGVkLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudHMgdG8gdGhpcyBmdW5jdGlvbiBkbyBub3QgcmVzdWx0IGluIGEgbGVnYWwgZXhlY3V0aW9uIGNvbnRleHQsXG4gKiBhIEdyYXBoUUxFcnJvciB3aWxsIGJlIHRocm93biBpbW1lZGlhdGVseSBleHBsYWluaW5nIHRoZSBpbnZhbGlkIGlucHV0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlY3V0ZShhcmdzKSB7XG4gIC8vIFRlbXBvcmFyeSBmb3IgdjE1IHRvIHYxNiBtaWdyYXRpb24uIFJlbW92ZSBpbiB2MTdcbiAgYXJndW1lbnRzLmxlbmd0aCA8IDIgfHxcbiAgICBkZXZBc3NlcnQoXG4gICAgICBmYWxzZSxcbiAgICAgICdncmFwaHFsQDE2IGRyb3BwZWQgbG9uZy1kZXByZWNhdGVkIHN1cHBvcnQgZm9yIHBvc2l0aW9uYWwgYXJndW1lbnRzLCBwbGVhc2UgcGFzcyBhbiBvYmplY3QgaW5zdGVhZC4nLFxuICAgICk7XG4gIGNvbnN0IHsgc2NoZW1hLCBkb2N1bWVudCwgdmFyaWFibGVWYWx1ZXMsIHJvb3RWYWx1ZSB9ID0gYXJnczsgLy8gSWYgYXJndW1lbnRzIGFyZSBtaXNzaW5nIG9yIGluY29ycmVjdCwgdGhyb3cgYW4gZXJyb3IuXG5cbiAgYXNzZXJ0VmFsaWRFeGVjdXRpb25Bcmd1bWVudHMoc2NoZW1hLCBkb2N1bWVudCwgdmFyaWFibGVWYWx1ZXMpOyAvLyBJZiBhIHZhbGlkIGV4ZWN1dGlvbiBjb250ZXh0IGNhbm5vdCBiZSBjcmVhdGVkIGR1ZSB0byBpbmNvcnJlY3QgYXJndW1lbnRzLFxuICAvLyBhIFwiUmVzcG9uc2VcIiB3aXRoIG9ubHkgZXJyb3JzIGlzIHJldHVybmVkLlxuXG4gIGNvbnN0IGV4ZUNvbnRleHQgPSBidWlsZEV4ZWN1dGlvbkNvbnRleHQoYXJncyk7IC8vIFJldHVybiBlYXJseSBlcnJvcnMgaWYgZXhlY3V0aW9uIGNvbnRleHQgZmFpbGVkLlxuXG4gIGlmICghKCdzY2hlbWEnIGluIGV4ZUNvbnRleHQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yczogZXhlQ29udGV4dCxcbiAgICB9O1xuICB9IC8vIFJldHVybiBhIFByb21pc2UgdGhhdCB3aWxsIGV2ZW50dWFsbHkgcmVzb2x2ZSB0byB0aGUgZGF0YSBkZXNjcmliZWQgYnlcbiAgLy8gVGhlIFwiUmVzcG9uc2VcIiBzZWN0aW9uIG9mIHRoZSBHcmFwaFFMIHNwZWNpZmljYXRpb24uXG4gIC8vXG4gIC8vIElmIGVycm9ycyBhcmUgZW5jb3VudGVyZWQgd2hpbGUgZXhlY3V0aW5nIGEgR3JhcGhRTCBmaWVsZCwgb25seSB0aGF0XG4gIC8vIGZpZWxkIGFuZCBpdHMgZGVzY2VuZGFudHMgd2lsbCBiZSBvbWl0dGVkLCBhbmQgc2libGluZyBmaWVsZHMgd2lsbCBzdGlsbFxuICAvLyBiZSBleGVjdXRlZC4gQW4gZXhlY3V0aW9uIHdoaWNoIGVuY291bnRlcnMgZXJyb3JzIHdpbGwgc3RpbGwgcmVzdWx0IGluIGFcbiAgLy8gcmVzb2x2ZWQgUHJvbWlzZS5cbiAgLy9cbiAgLy8gRXJyb3JzIGZyb20gc3ViLWZpZWxkcyBvZiBhIE5vbk51bGwgdHlwZSBtYXkgcHJvcGFnYXRlIHRvIHRoZSB0b3AgbGV2ZWwsXG4gIC8vIGF0IHdoaWNoIHBvaW50IHdlIHN0aWxsIGxvZyB0aGUgZXJyb3IgYW5kIG51bGwgdGhlIHBhcmVudCBmaWVsZCwgd2hpY2hcbiAgLy8gaW4gdGhpcyBjYXNlIGlzIHRoZSBlbnRpcmUgcmVzcG9uc2UuXG5cbiAgdHJ5IHtcbiAgICBjb25zdCB7IG9wZXJhdGlvbiB9ID0gZXhlQ29udGV4dDtcbiAgICBjb25zdCByZXN1bHQgPSBleGVjdXRlT3BlcmF0aW9uKGV4ZUNvbnRleHQsIG9wZXJhdGlvbiwgcm9vdFZhbHVlKTtcblxuICAgIGlmIChpc1Byb21pc2UocmVzdWx0KSkge1xuICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKFxuICAgICAgICAoZGF0YSkgPT4gYnVpbGRSZXNwb25zZShkYXRhLCBleGVDb250ZXh0LmVycm9ycyksXG4gICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgIGV4ZUNvbnRleHQuZXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgICAgIHJldHVybiBidWlsZFJlc3BvbnNlKG51bGwsIGV4ZUNvbnRleHQuZXJyb3JzKTtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1aWxkUmVzcG9uc2UocmVzdWx0LCBleGVDb250ZXh0LmVycm9ycyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZXhlQ29udGV4dC5lcnJvcnMucHVzaChlcnJvcik7XG4gICAgcmV0dXJuIGJ1aWxkUmVzcG9uc2UobnVsbCwgZXhlQ29udGV4dC5lcnJvcnMpO1xuICB9XG59XG4vKipcbiAqIEFsc28gaW1wbGVtZW50cyB0aGUgXCJFeGVjdXRpbmcgcmVxdWVzdHNcIiBzZWN0aW9uIG9mIHRoZSBHcmFwaFFMIHNwZWNpZmljYXRpb24uXG4gKiBIb3dldmVyLCBpdCBndWFyYW50ZWVzIHRvIGNvbXBsZXRlIHN5bmNocm9ub3VzbHkgKG9yIHRocm93IGFuIGVycm9yKSBhc3N1bWluZ1xuICogdGhhdCBhbGwgZmllbGQgcmVzb2x2ZXJzIGFyZSBhbHNvIHN5bmNocm9ub3VzLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBleGVjdXRlU3luYyhhcmdzKSB7XG4gIGNvbnN0IHJlc3VsdCA9IGV4ZWN1dGUoYXJncyk7IC8vIEFzc2VydCB0aGF0IHRoZSBleGVjdXRpb24gd2FzIHN5bmNocm9ub3VzLlxuXG4gIGlmIChpc1Byb21pc2UocmVzdWx0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignR3JhcGhRTCBleGVjdXRpb24gZmFpbGVkIHRvIGNvbXBsZXRlIHN5bmNocm9ub3VzbHkuJyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBHaXZlbiBhIGNvbXBsZXRlZCBleGVjdXRpb24gY29udGV4dCBhbmQgZGF0YSwgYnVpbGQgdGhlIGB7IGVycm9ycywgZGF0YSB9YFxuICogcmVzcG9uc2UgZGVmaW5lZCBieSB0aGUgXCJSZXNwb25zZVwiIHNlY3Rpb24gb2YgdGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbi5cbiAqL1xuXG5mdW5jdGlvbiBidWlsZFJlc3BvbnNlKGRhdGEsIGVycm9ycykge1xuICByZXR1cm4gZXJyb3JzLmxlbmd0aCA9PT0gMFxuICAgID8ge1xuICAgICAgICBkYXRhLFxuICAgICAgfVxuICAgIDoge1xuICAgICAgICBlcnJvcnMsXG4gICAgICAgIGRhdGEsXG4gICAgICB9O1xufVxuLyoqXG4gKiBFc3NlbnRpYWwgYXNzZXJ0aW9ucyBiZWZvcmUgZXhlY3V0aW5nIHRvIHByb3ZpZGUgZGV2ZWxvcGVyIGZlZWRiYWNrIGZvclxuICogaW1wcm9wZXIgdXNlIG9mIHRoZSBHcmFwaFFMIGxpYnJhcnkuXG4gKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFZhbGlkRXhlY3V0aW9uQXJndW1lbnRzKFxuICBzY2hlbWEsXG4gIGRvY3VtZW50LFxuICByYXdWYXJpYWJsZVZhbHVlcyxcbikge1xuICBkb2N1bWVudCB8fCBkZXZBc3NlcnQoZmFsc2UsICdNdXN0IHByb3ZpZGUgZG9jdW1lbnQuJyk7IC8vIElmIHRoZSBzY2hlbWEgdXNlZCBmb3IgZXhlY3V0aW9uIGlzIGludmFsaWQsIHRocm93IGFuIGVycm9yLlxuXG4gIGFzc2VydFZhbGlkU2NoZW1hKHNjaGVtYSk7IC8vIFZhcmlhYmxlcywgaWYgcHJvdmlkZWQsIG11c3QgYmUgYW4gb2JqZWN0LlxuXG4gIHJhd1ZhcmlhYmxlVmFsdWVzID09IG51bGwgfHxcbiAgICBpc09iamVjdExpa2UocmF3VmFyaWFibGVWYWx1ZXMpIHx8XG4gICAgZGV2QXNzZXJ0KFxuICAgICAgZmFsc2UsXG4gICAgICAnVmFyaWFibGVzIG11c3QgYmUgcHJvdmlkZWQgYXMgYW4gT2JqZWN0IHdoZXJlIGVhY2ggcHJvcGVydHkgaXMgYSB2YXJpYWJsZSB2YWx1ZS4gUGVyaGFwcyBsb29rIHRvIHNlZSBpZiBhbiB1bnBhcnNlZCBKU09OIHN0cmluZyB3YXMgcHJvdmlkZWQuJyxcbiAgICApO1xufVxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgRXhlY3V0aW9uQ29udGV4dCBvYmplY3QgZnJvbSB0aGUgYXJndW1lbnRzIHBhc3NlZCB0b1xuICogZXhlY3V0ZSwgd2hpY2ggd2Ugd2lsbCBwYXNzIHRocm91Z2hvdXQgdGhlIG90aGVyIGV4ZWN1dGlvbiBtZXRob2RzLlxuICpcbiAqIFRocm93cyBhIEdyYXBoUUxFcnJvciBpZiBhIHZhbGlkIGV4ZWN1dGlvbiBjb250ZXh0IGNhbm5vdCBiZSBjcmVhdGVkLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEV4ZWN1dGlvbkNvbnRleHQoYXJncykge1xuICB2YXIgX2RlZmluaXRpb24kbmFtZSwgX29wZXJhdGlvbiR2YXJpYWJsZURlO1xuXG4gIGNvbnN0IHtcbiAgICBzY2hlbWEsXG4gICAgZG9jdW1lbnQsXG4gICAgcm9vdFZhbHVlLFxuICAgIGNvbnRleHRWYWx1ZSxcbiAgICB2YXJpYWJsZVZhbHVlczogcmF3VmFyaWFibGVWYWx1ZXMsXG4gICAgb3BlcmF0aW9uTmFtZSxcbiAgICBmaWVsZFJlc29sdmVyLFxuICAgIHR5cGVSZXNvbHZlcixcbiAgICBzdWJzY3JpYmVGaWVsZFJlc29sdmVyLFxuICB9ID0gYXJncztcbiAgbGV0IG9wZXJhdGlvbjtcbiAgY29uc3QgZnJhZ21lbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKGNvbnN0IGRlZmluaXRpb24gb2YgZG9jdW1lbnQuZGVmaW5pdGlvbnMpIHtcbiAgICBzd2l0Y2ggKGRlZmluaXRpb24ua2luZCkge1xuICAgICAgY2FzZSBLaW5kLk9QRVJBVElPTl9ERUZJTklUSU9OOlxuICAgICAgICBpZiAob3BlcmF0aW9uTmFtZSA9PSBudWxsKSB7XG4gICAgICAgICAgaWYgKG9wZXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgICAgICdNdXN0IHByb3ZpZGUgb3BlcmF0aW9uIG5hbWUgaWYgcXVlcnkgY29udGFpbnMgbXVsdGlwbGUgb3BlcmF0aW9ucy4nLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBvcGVyYXRpb24gPSBkZWZpbml0aW9uO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICgoX2RlZmluaXRpb24kbmFtZSA9IGRlZmluaXRpb24ubmFtZSkgPT09IG51bGwgfHxcbiAgICAgICAgICBfZGVmaW5pdGlvbiRuYW1lID09PSB2b2lkIDBcbiAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICA6IF9kZWZpbml0aW9uJG5hbWUudmFsdWUpID09PSBvcGVyYXRpb25OYW1lXG4gICAgICAgICkge1xuICAgICAgICAgIG9wZXJhdGlvbiA9IGRlZmluaXRpb247XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBLaW5kLkZSQUdNRU5UX0RFRklOSVRJT046XG4gICAgICAgIGZyYWdtZW50c1tkZWZpbml0aW9uLm5hbWUudmFsdWVdID0gZGVmaW5pdGlvbjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6IC8vIGlnbm9yZSBub24tZXhlY3V0YWJsZSBkZWZpbml0aW9uc1xuICAgIH1cbiAgfVxuXG4gIGlmICghb3BlcmF0aW9uKSB7XG4gICAgaWYgKG9wZXJhdGlvbk5hbWUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFtuZXcgR3JhcGhRTEVycm9yKGBVbmtub3duIG9wZXJhdGlvbiBuYW1lZCBcIiR7b3BlcmF0aW9uTmFtZX1cIi5gKV07XG4gICAgfVxuXG4gICAgcmV0dXJuIFtuZXcgR3JhcGhRTEVycm9yKCdNdXN0IHByb3ZpZGUgYW4gb3BlcmF0aW9uLicpXTtcbiAgfSAvLyBGSVhNRTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuXG4gIC8qIGM4IGlnbm9yZSBuZXh0ICovXG5cbiAgY29uc3QgdmFyaWFibGVEZWZpbml0aW9ucyA9XG4gICAgKF9vcGVyYXRpb24kdmFyaWFibGVEZSA9IG9wZXJhdGlvbi52YXJpYWJsZURlZmluaXRpb25zKSAhPT0gbnVsbCAmJlxuICAgIF9vcGVyYXRpb24kdmFyaWFibGVEZSAhPT0gdm9pZCAwXG4gICAgICA/IF9vcGVyYXRpb24kdmFyaWFibGVEZVxuICAgICAgOiBbXTtcbiAgY29uc3QgY29lcmNlZFZhcmlhYmxlVmFsdWVzID0gZ2V0VmFyaWFibGVWYWx1ZXMoXG4gICAgc2NoZW1hLFxuICAgIHZhcmlhYmxlRGVmaW5pdGlvbnMsXG4gICAgcmF3VmFyaWFibGVWYWx1ZXMgIT09IG51bGwgJiYgcmF3VmFyaWFibGVWYWx1ZXMgIT09IHZvaWQgMFxuICAgICAgPyByYXdWYXJpYWJsZVZhbHVlc1xuICAgICAgOiB7fSxcbiAgICB7XG4gICAgICBtYXhFcnJvcnM6IDUwLFxuICAgIH0sXG4gICk7XG5cbiAgaWYgKGNvZXJjZWRWYXJpYWJsZVZhbHVlcy5lcnJvcnMpIHtcbiAgICByZXR1cm4gY29lcmNlZFZhcmlhYmxlVmFsdWVzLmVycm9ycztcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc2NoZW1hLFxuICAgIGZyYWdtZW50cyxcbiAgICByb290VmFsdWUsXG4gICAgY29udGV4dFZhbHVlLFxuICAgIG9wZXJhdGlvbixcbiAgICB2YXJpYWJsZVZhbHVlczogY29lcmNlZFZhcmlhYmxlVmFsdWVzLmNvZXJjZWQsXG4gICAgZmllbGRSZXNvbHZlcjpcbiAgICAgIGZpZWxkUmVzb2x2ZXIgIT09IG51bGwgJiYgZmllbGRSZXNvbHZlciAhPT0gdm9pZCAwXG4gICAgICAgID8gZmllbGRSZXNvbHZlclxuICAgICAgICA6IGRlZmF1bHRGaWVsZFJlc29sdmVyLFxuICAgIHR5cGVSZXNvbHZlcjpcbiAgICAgIHR5cGVSZXNvbHZlciAhPT0gbnVsbCAmJiB0eXBlUmVzb2x2ZXIgIT09IHZvaWQgMFxuICAgICAgICA/IHR5cGVSZXNvbHZlclxuICAgICAgICA6IGRlZmF1bHRUeXBlUmVzb2x2ZXIsXG4gICAgc3Vic2NyaWJlRmllbGRSZXNvbHZlcjpcbiAgICAgIHN1YnNjcmliZUZpZWxkUmVzb2x2ZXIgIT09IG51bGwgJiYgc3Vic2NyaWJlRmllbGRSZXNvbHZlciAhPT0gdm9pZCAwXG4gICAgICAgID8gc3Vic2NyaWJlRmllbGRSZXNvbHZlclxuICAgICAgICA6IGRlZmF1bHRGaWVsZFJlc29sdmVyLFxuICAgIGVycm9yczogW10sXG4gIH07XG59XG4vKipcbiAqIEltcGxlbWVudHMgdGhlIFwiRXhlY3V0aW5nIG9wZXJhdGlvbnNcIiBzZWN0aW9uIG9mIHRoZSBzcGVjLlxuICovXG5cbmZ1bmN0aW9uIGV4ZWN1dGVPcGVyYXRpb24oZXhlQ29udGV4dCwgb3BlcmF0aW9uLCByb290VmFsdWUpIHtcbiAgY29uc3Qgcm9vdFR5cGUgPSBleGVDb250ZXh0LnNjaGVtYS5nZXRSb290VHlwZShvcGVyYXRpb24ub3BlcmF0aW9uKTtcblxuICBpZiAocm9vdFR5cGUgPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICBgU2NoZW1hIGlzIG5vdCBjb25maWd1cmVkIHRvIGV4ZWN1dGUgJHtvcGVyYXRpb24ub3BlcmF0aW9ufSBvcGVyYXRpb24uYCxcbiAgICAgIG9wZXJhdGlvbixcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgcm9vdEZpZWxkcyA9IGNvbGxlY3RGaWVsZHMoXG4gICAgZXhlQ29udGV4dC5zY2hlbWEsXG4gICAgZXhlQ29udGV4dC5mcmFnbWVudHMsXG4gICAgZXhlQ29udGV4dC52YXJpYWJsZVZhbHVlcyxcbiAgICByb290VHlwZSxcbiAgICBvcGVyYXRpb24uc2VsZWN0aW9uU2V0LFxuICApO1xuICBjb25zdCBwYXRoID0gdW5kZWZpbmVkO1xuXG4gIHN3aXRjaCAob3BlcmF0aW9uLm9wZXJhdGlvbikge1xuICAgIGNhc2UgT3BlcmF0aW9uVHlwZU5vZGUuUVVFUlk6XG4gICAgICByZXR1cm4gZXhlY3V0ZUZpZWxkcyhleGVDb250ZXh0LCByb290VHlwZSwgcm9vdFZhbHVlLCBwYXRoLCByb290RmllbGRzKTtcblxuICAgIGNhc2UgT3BlcmF0aW9uVHlwZU5vZGUuTVVUQVRJT046XG4gICAgICByZXR1cm4gZXhlY3V0ZUZpZWxkc1NlcmlhbGx5KFxuICAgICAgICBleGVDb250ZXh0LFxuICAgICAgICByb290VHlwZSxcbiAgICAgICAgcm9vdFZhbHVlLFxuICAgICAgICBwYXRoLFxuICAgICAgICByb290RmllbGRzLFxuICAgICAgKTtcblxuICAgIGNhc2UgT3BlcmF0aW9uVHlwZU5vZGUuU1VCU0NSSVBUSU9OOlxuICAgICAgLy8gVE9ETzogZGVwcmVjYXRlIGBzdWJzY3JpYmVgIGFuZCBtb3ZlIGFsbCBsb2dpYyBoZXJlXG4gICAgICAvLyBUZW1wb3Jhcnkgc29sdXRpb24gdW50aWwgd2UgZmluaXNoIG1lcmdpbmcgZXhlY3V0ZSBhbmQgc3Vic2NyaWJlIHRvZ2V0aGVyXG4gICAgICByZXR1cm4gZXhlY3V0ZUZpZWxkcyhleGVDb250ZXh0LCByb290VHlwZSwgcm9vdFZhbHVlLCBwYXRoLCByb290RmllbGRzKTtcbiAgfVxufVxuLyoqXG4gKiBJbXBsZW1lbnRzIHRoZSBcIkV4ZWN1dGluZyBzZWxlY3Rpb24gc2V0c1wiIHNlY3Rpb24gb2YgdGhlIHNwZWNcbiAqIGZvciBmaWVsZHMgdGhhdCBtdXN0IGJlIGV4ZWN1dGVkIHNlcmlhbGx5LlxuICovXG5cbmZ1bmN0aW9uIGV4ZWN1dGVGaWVsZHNTZXJpYWxseShcbiAgZXhlQ29udGV4dCxcbiAgcGFyZW50VHlwZSxcbiAgc291cmNlVmFsdWUsXG4gIHBhdGgsXG4gIGZpZWxkcyxcbikge1xuICByZXR1cm4gcHJvbWlzZVJlZHVjZShcbiAgICBmaWVsZHMuZW50cmllcygpLFxuICAgIChyZXN1bHRzLCBbcmVzcG9uc2VOYW1lLCBmaWVsZE5vZGVzXSkgPT4ge1xuICAgICAgY29uc3QgZmllbGRQYXRoID0gYWRkUGF0aChwYXRoLCByZXNwb25zZU5hbWUsIHBhcmVudFR5cGUubmFtZSk7XG4gICAgICBjb25zdCByZXN1bHQgPSBleGVjdXRlRmllbGQoXG4gICAgICAgIGV4ZUNvbnRleHQsXG4gICAgICAgIHBhcmVudFR5cGUsXG4gICAgICAgIHNvdXJjZVZhbHVlLFxuICAgICAgICBmaWVsZE5vZGVzLFxuICAgICAgICBmaWVsZFBhdGgsXG4gICAgICApO1xuXG4gICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc1Byb21pc2UocmVzdWx0KSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHJlc29sdmVkUmVzdWx0KSA9PiB7XG4gICAgICAgICAgcmVzdWx0c1tyZXNwb25zZU5hbWVdID0gcmVzb2x2ZWRSZXN1bHQ7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXN1bHRzW3Jlc3BvbnNlTmFtZV0gPSByZXN1bHQ7XG4gICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9LFxuICAgIE9iamVjdC5jcmVhdGUobnVsbCksXG4gICk7XG59XG4vKipcbiAqIEltcGxlbWVudHMgdGhlIFwiRXhlY3V0aW5nIHNlbGVjdGlvbiBzZXRzXCIgc2VjdGlvbiBvZiB0aGUgc3BlY1xuICogZm9yIGZpZWxkcyB0aGF0IG1heSBiZSBleGVjdXRlZCBpbiBwYXJhbGxlbC5cbiAqL1xuXG5mdW5jdGlvbiBleGVjdXRlRmllbGRzKGV4ZUNvbnRleHQsIHBhcmVudFR5cGUsIHNvdXJjZVZhbHVlLCBwYXRoLCBmaWVsZHMpIHtcbiAgY29uc3QgcmVzdWx0cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGxldCBjb250YWluc1Byb21pc2UgPSBmYWxzZTtcblxuICBmb3IgKGNvbnN0IFtyZXNwb25zZU5hbWUsIGZpZWxkTm9kZXNdIG9mIGZpZWxkcy5lbnRyaWVzKCkpIHtcbiAgICBjb25zdCBmaWVsZFBhdGggPSBhZGRQYXRoKHBhdGgsIHJlc3BvbnNlTmFtZSwgcGFyZW50VHlwZS5uYW1lKTtcbiAgICBjb25zdCByZXN1bHQgPSBleGVjdXRlRmllbGQoXG4gICAgICBleGVDb250ZXh0LFxuICAgICAgcGFyZW50VHlwZSxcbiAgICAgIHNvdXJjZVZhbHVlLFxuICAgICAgZmllbGROb2RlcyxcbiAgICAgIGZpZWxkUGF0aCxcbiAgICApO1xuXG4gICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXN1bHRzW3Jlc3BvbnNlTmFtZV0gPSByZXN1bHQ7XG5cbiAgICAgIGlmIChpc1Byb21pc2UocmVzdWx0KSkge1xuICAgICAgICBjb250YWluc1Byb21pc2UgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBJZiB0aGVyZSBhcmUgbm8gcHJvbWlzZXMsIHdlIGNhbiBqdXN0IHJldHVybiB0aGUgb2JqZWN0XG5cbiAgaWYgKCFjb250YWluc1Byb21pc2UpIHtcbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfSAvLyBPdGhlcndpc2UsIHJlc3VsdHMgaXMgYSBtYXAgZnJvbSBmaWVsZCBuYW1lIHRvIHRoZSByZXN1bHQgb2YgcmVzb2x2aW5nIHRoYXRcbiAgLy8gZmllbGQsIHdoaWNoIGlzIHBvc3NpYmx5IGEgcHJvbWlzZS4gUmV0dXJuIGEgcHJvbWlzZSB0aGF0IHdpbGwgcmV0dXJuIHRoaXNcbiAgLy8gc2FtZSBtYXAsIGJ1dCB3aXRoIGFueSBwcm9taXNlcyByZXBsYWNlZCB3aXRoIHRoZSB2YWx1ZXMgdGhleSByZXNvbHZlZCB0by5cblxuICByZXR1cm4gcHJvbWlzZUZvck9iamVjdChyZXN1bHRzKTtcbn1cbi8qKlxuICogSW1wbGVtZW50cyB0aGUgXCJFeGVjdXRpbmcgZmllbGRzXCIgc2VjdGlvbiBvZiB0aGUgc3BlY1xuICogSW4gcGFydGljdWxhciwgdGhpcyBmdW5jdGlvbiBmaWd1cmVzIG91dCB0aGUgdmFsdWUgdGhhdCB0aGUgZmllbGQgcmV0dXJucyBieVxuICogY2FsbGluZyBpdHMgcmVzb2x2ZSBmdW5jdGlvbiwgdGhlbiBjYWxscyBjb21wbGV0ZVZhbHVlIHRvIGNvbXBsZXRlIHByb21pc2VzLFxuICogc2VyaWFsaXplIHNjYWxhcnMsIG9yIGV4ZWN1dGUgdGhlIHN1Yi1zZWxlY3Rpb24tc2V0IGZvciBvYmplY3RzLlxuICovXG5cbmZ1bmN0aW9uIGV4ZWN1dGVGaWVsZChleGVDb250ZXh0LCBwYXJlbnRUeXBlLCBzb3VyY2UsIGZpZWxkTm9kZXMsIHBhdGgpIHtcbiAgdmFyIF9maWVsZERlZiRyZXNvbHZlO1xuXG4gIGNvbnN0IGZpZWxkRGVmID0gZ2V0RmllbGREZWYoZXhlQ29udGV4dC5zY2hlbWEsIHBhcmVudFR5cGUsIGZpZWxkTm9kZXNbMF0pO1xuXG4gIGlmICghZmllbGREZWYpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCByZXR1cm5UeXBlID0gZmllbGREZWYudHlwZTtcbiAgY29uc3QgcmVzb2x2ZUZuID1cbiAgICAoX2ZpZWxkRGVmJHJlc29sdmUgPSBmaWVsZERlZi5yZXNvbHZlKSAhPT0gbnVsbCAmJlxuICAgIF9maWVsZERlZiRyZXNvbHZlICE9PSB2b2lkIDBcbiAgICAgID8gX2ZpZWxkRGVmJHJlc29sdmVcbiAgICAgIDogZXhlQ29udGV4dC5maWVsZFJlc29sdmVyO1xuICBjb25zdCBpbmZvID0gYnVpbGRSZXNvbHZlSW5mbyhcbiAgICBleGVDb250ZXh0LFxuICAgIGZpZWxkRGVmLFxuICAgIGZpZWxkTm9kZXMsXG4gICAgcGFyZW50VHlwZSxcbiAgICBwYXRoLFxuICApOyAvLyBHZXQgdGhlIHJlc29sdmUgZnVuY3Rpb24sIHJlZ2FyZGxlc3Mgb2YgaWYgaXRzIHJlc3VsdCBpcyBub3JtYWwgb3IgYWJydXB0IChlcnJvcikuXG5cbiAgdHJ5IHtcbiAgICAvLyBCdWlsZCBhIEpTIG9iamVjdCBvZiBhcmd1bWVudHMgZnJvbSB0aGUgZmllbGQuYXJndW1lbnRzIEFTVCwgdXNpbmcgdGhlXG4gICAgLy8gdmFyaWFibGVzIHNjb3BlIHRvIGZ1bGZpbGwgYW55IHZhcmlhYmxlIHJlZmVyZW5jZXMuXG4gICAgLy8gVE9ETzogZmluZCBhIHdheSB0byBtZW1vaXplLCBpbiBjYXNlIHRoaXMgZmllbGQgaXMgd2l0aGluIGEgTGlzdCB0eXBlLlxuICAgIGNvbnN0IGFyZ3MgPSBnZXRBcmd1bWVudFZhbHVlcyhcbiAgICAgIGZpZWxkRGVmLFxuICAgICAgZmllbGROb2Rlc1swXSxcbiAgICAgIGV4ZUNvbnRleHQudmFyaWFibGVWYWx1ZXMsXG4gICAgKTsgLy8gVGhlIHJlc29sdmUgZnVuY3Rpb24ncyBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpcyBhIGNvbnRleHQgdmFsdWUgdGhhdFxuICAgIC8vIGlzIHByb3ZpZGVkIHRvIGV2ZXJ5IHJlc29sdmUgZnVuY3Rpb24gd2l0aGluIGFuIGV4ZWN1dGlvbi4gSXQgaXMgY29tbW9ubHlcbiAgICAvLyB1c2VkIHRvIHJlcHJlc2VudCBhbiBhdXRoZW50aWNhdGVkIHVzZXIsIG9yIHJlcXVlc3Qtc3BlY2lmaWMgY2FjaGVzLlxuXG4gICAgY29uc3QgY29udGV4dFZhbHVlID0gZXhlQ29udGV4dC5jb250ZXh0VmFsdWU7XG4gICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUZuKHNvdXJjZSwgYXJncywgY29udGV4dFZhbHVlLCBpbmZvKTtcbiAgICBsZXQgY29tcGxldGVkO1xuXG4gICAgaWYgKGlzUHJvbWlzZShyZXN1bHQpKSB7XG4gICAgICBjb21wbGV0ZWQgPSByZXN1bHQudGhlbigocmVzb2x2ZWQpID0+XG4gICAgICAgIGNvbXBsZXRlVmFsdWUoZXhlQ29udGV4dCwgcmV0dXJuVHlwZSwgZmllbGROb2RlcywgaW5mbywgcGF0aCwgcmVzb2x2ZWQpLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcGxldGVkID0gY29tcGxldGVWYWx1ZShcbiAgICAgICAgZXhlQ29udGV4dCxcbiAgICAgICAgcmV0dXJuVHlwZSxcbiAgICAgICAgZmllbGROb2RlcyxcbiAgICAgICAgaW5mbyxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcmVzdWx0LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoaXNQcm9taXNlKGNvbXBsZXRlZCkpIHtcbiAgICAgIC8vIE5vdGU6IHdlIGRvbid0IHJlbHkgb24gYSBgY2F0Y2hgIG1ldGhvZCwgYnV0IHdlIGRvIGV4cGVjdCBcInRoZW5hYmxlXCJcbiAgICAgIC8vIHRvIHRha2UgYSBzZWNvbmQgY2FsbGJhY2sgZm9yIHRoZSBlcnJvciBjYXNlLlxuICAgICAgcmV0dXJuIGNvbXBsZXRlZC50aGVuKHVuZGVmaW5lZCwgKHJhd0Vycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbG9jYXRlZEVycm9yKHJhd0Vycm9yLCBmaWVsZE5vZGVzLCBwYXRoVG9BcnJheShwYXRoKSk7XG4gICAgICAgIHJldHVybiBoYW5kbGVGaWVsZEVycm9yKGVycm9yLCByZXR1cm5UeXBlLCBleGVDb250ZXh0KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjb21wbGV0ZWQ7XG4gIH0gY2F0Y2ggKHJhd0Vycm9yKSB7XG4gICAgY29uc3QgZXJyb3IgPSBsb2NhdGVkRXJyb3IocmF3RXJyb3IsIGZpZWxkTm9kZXMsIHBhdGhUb0FycmF5KHBhdGgpKTtcbiAgICByZXR1cm4gaGFuZGxlRmllbGRFcnJvcihlcnJvciwgcmV0dXJuVHlwZSwgZXhlQ29udGV4dCk7XG4gIH1cbn1cbi8qKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUmVzb2x2ZUluZm8oXG4gIGV4ZUNvbnRleHQsXG4gIGZpZWxkRGVmLFxuICBmaWVsZE5vZGVzLFxuICBwYXJlbnRUeXBlLFxuICBwYXRoLFxuKSB7XG4gIC8vIFRoZSByZXNvbHZlIGZ1bmN0aW9uJ3Mgb3B0aW9uYWwgZm91cnRoIGFyZ3VtZW50IGlzIGEgY29sbGVjdGlvbiBvZlxuICAvLyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBleGVjdXRpb24gc3RhdGUuXG4gIHJldHVybiB7XG4gICAgZmllbGROYW1lOiBmaWVsZERlZi5uYW1lLFxuICAgIGZpZWxkTm9kZXMsXG4gICAgcmV0dXJuVHlwZTogZmllbGREZWYudHlwZSxcbiAgICBwYXJlbnRUeXBlLFxuICAgIHBhdGgsXG4gICAgc2NoZW1hOiBleGVDb250ZXh0LnNjaGVtYSxcbiAgICBmcmFnbWVudHM6IGV4ZUNvbnRleHQuZnJhZ21lbnRzLFxuICAgIHJvb3RWYWx1ZTogZXhlQ29udGV4dC5yb290VmFsdWUsXG4gICAgb3BlcmF0aW9uOiBleGVDb250ZXh0Lm9wZXJhdGlvbixcbiAgICB2YXJpYWJsZVZhbHVlczogZXhlQ29udGV4dC52YXJpYWJsZVZhbHVlcyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlRmllbGRFcnJvcihlcnJvciwgcmV0dXJuVHlwZSwgZXhlQ29udGV4dCkge1xuICAvLyBJZiB0aGUgZmllbGQgdHlwZSBpcyBub24tbnVsbGFibGUsIHRoZW4gaXQgaXMgcmVzb2x2ZWQgd2l0aG91dCBhbnlcbiAgLy8gcHJvdGVjdGlvbiBmcm9tIGVycm9ycywgaG93ZXZlciBpdCBzdGlsbCBwcm9wZXJseSBsb2NhdGVzIHRoZSBlcnJvci5cbiAgaWYgKGlzTm9uTnVsbFR5cGUocmV0dXJuVHlwZSkpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfSAvLyBPdGhlcndpc2UsIGVycm9yIHByb3RlY3Rpb24gaXMgYXBwbGllZCwgbG9nZ2luZyB0aGUgZXJyb3IgYW5kIHJlc29sdmluZ1xuICAvLyBhIG51bGwgdmFsdWUgZm9yIHRoaXMgZmllbGQgaWYgb25lIGlzIGVuY291bnRlcmVkLlxuXG4gIGV4ZUNvbnRleHQuZXJyb3JzLnB1c2goZXJyb3IpO1xuICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuICogSW1wbGVtZW50cyB0aGUgaW5zdHJ1Y3Rpb25zIGZvciBjb21wbGV0ZVZhbHVlIGFzIGRlZmluZWQgaW4gdGhlXG4gKiBcIlZhbHVlIENvbXBsZXRpb25cIiBzZWN0aW9uIG9mIHRoZSBzcGVjLlxuICpcbiAqIElmIHRoZSBmaWVsZCB0eXBlIGlzIE5vbi1OdWxsLCB0aGVuIHRoaXMgcmVjdXJzaXZlbHkgY29tcGxldGVzIHRoZSB2YWx1ZVxuICogZm9yIHRoZSBpbm5lciB0eXBlLiBJdCB0aHJvd3MgYSBmaWVsZCBlcnJvciBpZiB0aGF0IGNvbXBsZXRpb24gcmV0dXJucyBudWxsLFxuICogYXMgcGVyIHRoZSBcIk51bGxhYmlsaXR5XCIgc2VjdGlvbiBvZiB0aGUgc3BlYy5cbiAqXG4gKiBJZiB0aGUgZmllbGQgdHlwZSBpcyBhIExpc3QsIHRoZW4gdGhpcyByZWN1cnNpdmVseSBjb21wbGV0ZXMgdGhlIHZhbHVlXG4gKiBmb3IgdGhlIGlubmVyIHR5cGUgb24gZWFjaCBpdGVtIGluIHRoZSBsaXN0LlxuICpcbiAqIElmIHRoZSBmaWVsZCB0eXBlIGlzIGEgU2NhbGFyIG9yIEVudW0sIGVuc3VyZXMgdGhlIGNvbXBsZXRlZCB2YWx1ZSBpcyBhIGxlZ2FsXG4gKiB2YWx1ZSBvZiB0aGUgdHlwZSBieSBjYWxsaW5nIHRoZSBgc2VyaWFsaXplYCBtZXRob2Qgb2YgR3JhcGhRTCB0eXBlXG4gKiBkZWZpbml0aW9uLlxuICpcbiAqIElmIHRoZSBmaWVsZCBpcyBhbiBhYnN0cmFjdCB0eXBlLCBkZXRlcm1pbmUgdGhlIHJ1bnRpbWUgdHlwZSBvZiB0aGUgdmFsdWVcbiAqIGFuZCB0aGVuIGNvbXBsZXRlIGJhc2VkIG9uIHRoYXQgdHlwZVxuICpcbiAqIE90aGVyd2lzZSwgdGhlIGZpZWxkIHR5cGUgZXhwZWN0cyBhIHN1Yi1zZWxlY3Rpb24gc2V0LCBhbmQgd2lsbCBjb21wbGV0ZSB0aGVcbiAqIHZhbHVlIGJ5IGV4ZWN1dGluZyBhbGwgc3ViLXNlbGVjdGlvbnMuXG4gKi9cblxuZnVuY3Rpb24gY29tcGxldGVWYWx1ZShleGVDb250ZXh0LCByZXR1cm5UeXBlLCBmaWVsZE5vZGVzLCBpbmZvLCBwYXRoLCByZXN1bHQpIHtcbiAgLy8gSWYgcmVzdWx0IGlzIGFuIEVycm9yLCB0aHJvdyBhIGxvY2F0ZWQgZXJyb3IuXG4gIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIHRocm93IHJlc3VsdDtcbiAgfSAvLyBJZiBmaWVsZCB0eXBlIGlzIE5vbk51bGwsIGNvbXBsZXRlIGZvciBpbm5lciB0eXBlLCBhbmQgdGhyb3cgZmllbGQgZXJyb3JcbiAgLy8gaWYgcmVzdWx0IGlzIG51bGwuXG5cbiAgaWYgKGlzTm9uTnVsbFR5cGUocmV0dXJuVHlwZSkpIHtcbiAgICBjb25zdCBjb21wbGV0ZWQgPSBjb21wbGV0ZVZhbHVlKFxuICAgICAgZXhlQ29udGV4dCxcbiAgICAgIHJldHVyblR5cGUub2ZUeXBlLFxuICAgICAgZmllbGROb2RlcyxcbiAgICAgIGluZm8sXG4gICAgICBwYXRoLFxuICAgICAgcmVzdWx0LFxuICAgICk7XG5cbiAgICBpZiAoY29tcGxldGVkID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDYW5ub3QgcmV0dXJuIG51bGwgZm9yIG5vbi1udWxsYWJsZSBmaWVsZCAke2luZm8ucGFyZW50VHlwZS5uYW1lfS4ke2luZm8uZmllbGROYW1lfS5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGxldGVkO1xuICB9IC8vIElmIHJlc3VsdCB2YWx1ZSBpcyBudWxsIG9yIHVuZGVmaW5lZCB0aGVuIHJldHVybiBudWxsLlxuXG4gIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9IC8vIElmIGZpZWxkIHR5cGUgaXMgTGlzdCwgY29tcGxldGUgZWFjaCBpdGVtIGluIHRoZSBsaXN0IHdpdGggdGhlIGlubmVyIHR5cGVcblxuICBpZiAoaXNMaXN0VHlwZShyZXR1cm5UeXBlKSkge1xuICAgIHJldHVybiBjb21wbGV0ZUxpc3RWYWx1ZShcbiAgICAgIGV4ZUNvbnRleHQsXG4gICAgICByZXR1cm5UeXBlLFxuICAgICAgZmllbGROb2RlcyxcbiAgICAgIGluZm8sXG4gICAgICBwYXRoLFxuICAgICAgcmVzdWx0LFxuICAgICk7XG4gIH0gLy8gSWYgZmllbGQgdHlwZSBpcyBhIGxlYWYgdHlwZSwgU2NhbGFyIG9yIEVudW0sIHNlcmlhbGl6ZSB0byBhIHZhbGlkIHZhbHVlLFxuICAvLyByZXR1cm5pbmcgbnVsbCBpZiBzZXJpYWxpemF0aW9uIGlzIG5vdCBwb3NzaWJsZS5cblxuICBpZiAoaXNMZWFmVHlwZShyZXR1cm5UeXBlKSkge1xuICAgIHJldHVybiBjb21wbGV0ZUxlYWZWYWx1ZShyZXR1cm5UeXBlLCByZXN1bHQpO1xuICB9IC8vIElmIGZpZWxkIHR5cGUgaXMgYW4gYWJzdHJhY3QgdHlwZSwgSW50ZXJmYWNlIG9yIFVuaW9uLCBkZXRlcm1pbmUgdGhlXG4gIC8vIHJ1bnRpbWUgT2JqZWN0IHR5cGUgYW5kIGNvbXBsZXRlIGZvciB0aGF0IHR5cGUuXG5cbiAgaWYgKGlzQWJzdHJhY3RUeXBlKHJldHVyblR5cGUpKSB7XG4gICAgcmV0dXJuIGNvbXBsZXRlQWJzdHJhY3RWYWx1ZShcbiAgICAgIGV4ZUNvbnRleHQsXG4gICAgICByZXR1cm5UeXBlLFxuICAgICAgZmllbGROb2RlcyxcbiAgICAgIGluZm8sXG4gICAgICBwYXRoLFxuICAgICAgcmVzdWx0LFxuICAgICk7XG4gIH0gLy8gSWYgZmllbGQgdHlwZSBpcyBPYmplY3QsIGV4ZWN1dGUgYW5kIGNvbXBsZXRlIGFsbCBzdWItc2VsZWN0aW9ucy5cblxuICBpZiAoaXNPYmplY3RUeXBlKHJldHVyblR5cGUpKSB7XG4gICAgcmV0dXJuIGNvbXBsZXRlT2JqZWN0VmFsdWUoXG4gICAgICBleGVDb250ZXh0LFxuICAgICAgcmV0dXJuVHlwZSxcbiAgICAgIGZpZWxkTm9kZXMsXG4gICAgICBpbmZvLFxuICAgICAgcGF0aCxcbiAgICAgIHJlc3VsdCxcbiAgICApO1xuICB9XG4gIC8qIGM4IGlnbm9yZSBuZXh0IDYgKi9cbiAgLy8gTm90IHJlYWNoYWJsZSwgYWxsIHBvc3NpYmxlIG91dHB1dCB0eXBlcyBoYXZlIGJlZW4gY29uc2lkZXJlZC5cblxuICBmYWxzZSB8fFxuICAgIGludmFyaWFudChcbiAgICAgIGZhbHNlLFxuICAgICAgJ0Nhbm5vdCBjb21wbGV0ZSB2YWx1ZSBvZiB1bmV4cGVjdGVkIG91dHB1dCB0eXBlOiAnICsgaW5zcGVjdChyZXR1cm5UeXBlKSxcbiAgICApO1xufVxuLyoqXG4gKiBDb21wbGV0ZSBhIGxpc3QgdmFsdWUgYnkgY29tcGxldGluZyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgd2l0aCB0aGVcbiAqIGlubmVyIHR5cGVcbiAqL1xuXG5mdW5jdGlvbiBjb21wbGV0ZUxpc3RWYWx1ZShcbiAgZXhlQ29udGV4dCxcbiAgcmV0dXJuVHlwZSxcbiAgZmllbGROb2RlcyxcbiAgaW5mbyxcbiAgcGF0aCxcbiAgcmVzdWx0LFxuKSB7XG4gIGlmICghaXNJdGVyYWJsZU9iamVjdChyZXN1bHQpKSB7XG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgIGBFeHBlY3RlZCBJdGVyYWJsZSwgYnV0IGRpZCBub3QgZmluZCBvbmUgZm9yIGZpZWxkIFwiJHtpbmZvLnBhcmVudFR5cGUubmFtZX0uJHtpbmZvLmZpZWxkTmFtZX1cIi5gLFxuICAgICk7XG4gIH0gLy8gVGhpcyBpcyBzcGVjaWZpZWQgYXMgYSBzaW1wbGUgbWFwLCBob3dldmVyIHdlJ3JlIG9wdGltaXppbmcgdGhlIHBhdGhcbiAgLy8gd2hlcmUgdGhlIGxpc3QgY29udGFpbnMgbm8gUHJvbWlzZXMgYnkgYXZvaWRpbmcgY3JlYXRpbmcgYW5vdGhlciBQcm9taXNlLlxuXG4gIGNvbnN0IGl0ZW1UeXBlID0gcmV0dXJuVHlwZS5vZlR5cGU7XG4gIGxldCBjb250YWluc1Byb21pc2UgPSBmYWxzZTtcbiAgY29uc3QgY29tcGxldGVkUmVzdWx0cyA9IEFycmF5LmZyb20ocmVzdWx0LCAoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAvLyBObyBuZWVkIHRvIG1vZGlmeSB0aGUgaW5mbyBvYmplY3QgY29udGFpbmluZyB0aGUgcGF0aCxcbiAgICAvLyBzaW5jZSBmcm9tIGhlcmUgb24gaXQgaXMgbm90IGV2ZXIgYWNjZXNzZWQgYnkgcmVzb2x2ZXIgZnVuY3Rpb25zLlxuICAgIGNvbnN0IGl0ZW1QYXRoID0gYWRkUGF0aChwYXRoLCBpbmRleCwgdW5kZWZpbmVkKTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgY29tcGxldGVkSXRlbTtcblxuICAgICAgaWYgKGlzUHJvbWlzZShpdGVtKSkge1xuICAgICAgICBjb21wbGV0ZWRJdGVtID0gaXRlbS50aGVuKChyZXNvbHZlZCkgPT5cbiAgICAgICAgICBjb21wbGV0ZVZhbHVlKFxuICAgICAgICAgICAgZXhlQ29udGV4dCxcbiAgICAgICAgICAgIGl0ZW1UeXBlLFxuICAgICAgICAgICAgZmllbGROb2RlcyxcbiAgICAgICAgICAgIGluZm8sXG4gICAgICAgICAgICBpdGVtUGF0aCxcbiAgICAgICAgICAgIHJlc29sdmVkLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21wbGV0ZWRJdGVtID0gY29tcGxldGVWYWx1ZShcbiAgICAgICAgICBleGVDb250ZXh0LFxuICAgICAgICAgIGl0ZW1UeXBlLFxuICAgICAgICAgIGZpZWxkTm9kZXMsXG4gICAgICAgICAgaW5mbyxcbiAgICAgICAgICBpdGVtUGF0aCxcbiAgICAgICAgICBpdGVtLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNQcm9taXNlKGNvbXBsZXRlZEl0ZW0pKSB7XG4gICAgICAgIGNvbnRhaW5zUHJvbWlzZSA9IHRydWU7IC8vIE5vdGU6IHdlIGRvbid0IHJlbHkgb24gYSBgY2F0Y2hgIG1ldGhvZCwgYnV0IHdlIGRvIGV4cGVjdCBcInRoZW5hYmxlXCJcbiAgICAgICAgLy8gdG8gdGFrZSBhIHNlY29uZCBjYWxsYmFjayBmb3IgdGhlIGVycm9yIGNhc2UuXG5cbiAgICAgICAgcmV0dXJuIGNvbXBsZXRlZEl0ZW0udGhlbih1bmRlZmluZWQsIChyYXdFcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gbG9jYXRlZEVycm9yKFxuICAgICAgICAgICAgcmF3RXJyb3IsXG4gICAgICAgICAgICBmaWVsZE5vZGVzLFxuICAgICAgICAgICAgcGF0aFRvQXJyYXkoaXRlbVBhdGgpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZUZpZWxkRXJyb3IoZXJyb3IsIGl0ZW1UeXBlLCBleGVDb250ZXh0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21wbGV0ZWRJdGVtO1xuICAgIH0gY2F0Y2ggKHJhd0Vycm9yKSB7XG4gICAgICBjb25zdCBlcnJvciA9IGxvY2F0ZWRFcnJvcihyYXdFcnJvciwgZmllbGROb2RlcywgcGF0aFRvQXJyYXkoaXRlbVBhdGgpKTtcbiAgICAgIHJldHVybiBoYW5kbGVGaWVsZEVycm9yKGVycm9yLCBpdGVtVHlwZSwgZXhlQ29udGV4dCk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNvbnRhaW5zUHJvbWlzZSA/IFByb21pc2UuYWxsKGNvbXBsZXRlZFJlc3VsdHMpIDogY29tcGxldGVkUmVzdWx0cztcbn1cbi8qKlxuICogQ29tcGxldGUgYSBTY2FsYXIgb3IgRW51bSBieSBzZXJpYWxpemluZyB0byBhIHZhbGlkIHZhbHVlLCByZXR1cm5pbmdcbiAqIG51bGwgaWYgc2VyaWFsaXphdGlvbiBpcyBub3QgcG9zc2libGUuXG4gKi9cblxuZnVuY3Rpb24gY29tcGxldGVMZWFmVmFsdWUocmV0dXJuVHlwZSwgcmVzdWx0KSB7XG4gIGNvbnN0IHNlcmlhbGl6ZWRSZXN1bHQgPSByZXR1cm5UeXBlLnNlcmlhbGl6ZShyZXN1bHQpO1xuXG4gIGlmIChzZXJpYWxpemVkUmVzdWx0ID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgRXhwZWN0ZWQgXFxgJHtpbnNwZWN0KHJldHVyblR5cGUpfS5zZXJpYWxpemUoJHtpbnNwZWN0KHJlc3VsdCl9KVxcYCB0byBgICtcbiAgICAgICAgYHJldHVybiBub24tbnVsbGFibGUgdmFsdWUsIHJldHVybmVkOiAke2luc3BlY3Qoc2VyaWFsaXplZFJlc3VsdCl9YCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHNlcmlhbGl6ZWRSZXN1bHQ7XG59XG4vKipcbiAqIENvbXBsZXRlIGEgdmFsdWUgb2YgYW4gYWJzdHJhY3QgdHlwZSBieSBkZXRlcm1pbmluZyB0aGUgcnVudGltZSBvYmplY3QgdHlwZVxuICogb2YgdGhhdCB2YWx1ZSwgdGhlbiBjb21wbGV0ZSB0aGUgdmFsdWUgZm9yIHRoYXQgdHlwZS5cbiAqL1xuXG5mdW5jdGlvbiBjb21wbGV0ZUFic3RyYWN0VmFsdWUoXG4gIGV4ZUNvbnRleHQsXG4gIHJldHVyblR5cGUsXG4gIGZpZWxkTm9kZXMsXG4gIGluZm8sXG4gIHBhdGgsXG4gIHJlc3VsdCxcbikge1xuICB2YXIgX3JldHVyblR5cGUkcmVzb2x2ZVR5O1xuXG4gIGNvbnN0IHJlc29sdmVUeXBlRm4gPVxuICAgIChfcmV0dXJuVHlwZSRyZXNvbHZlVHkgPSByZXR1cm5UeXBlLnJlc29sdmVUeXBlKSAhPT0gbnVsbCAmJlxuICAgIF9yZXR1cm5UeXBlJHJlc29sdmVUeSAhPT0gdm9pZCAwXG4gICAgICA/IF9yZXR1cm5UeXBlJHJlc29sdmVUeVxuICAgICAgOiBleGVDb250ZXh0LnR5cGVSZXNvbHZlcjtcbiAgY29uc3QgY29udGV4dFZhbHVlID0gZXhlQ29udGV4dC5jb250ZXh0VmFsdWU7XG4gIGNvbnN0IHJ1bnRpbWVUeXBlID0gcmVzb2x2ZVR5cGVGbihyZXN1bHQsIGNvbnRleHRWYWx1ZSwgaW5mbywgcmV0dXJuVHlwZSk7XG5cbiAgaWYgKGlzUHJvbWlzZShydW50aW1lVHlwZSkpIHtcbiAgICByZXR1cm4gcnVudGltZVR5cGUudGhlbigocmVzb2x2ZWRSdW50aW1lVHlwZSkgPT5cbiAgICAgIGNvbXBsZXRlT2JqZWN0VmFsdWUoXG4gICAgICAgIGV4ZUNvbnRleHQsXG4gICAgICAgIGVuc3VyZVZhbGlkUnVudGltZVR5cGUoXG4gICAgICAgICAgcmVzb2x2ZWRSdW50aW1lVHlwZSxcbiAgICAgICAgICBleGVDb250ZXh0LFxuICAgICAgICAgIHJldHVyblR5cGUsXG4gICAgICAgICAgZmllbGROb2RlcyxcbiAgICAgICAgICBpbmZvLFxuICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgKSxcbiAgICAgICAgZmllbGROb2RlcyxcbiAgICAgICAgaW5mbyxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcmVzdWx0LFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGNvbXBsZXRlT2JqZWN0VmFsdWUoXG4gICAgZXhlQ29udGV4dCxcbiAgICBlbnN1cmVWYWxpZFJ1bnRpbWVUeXBlKFxuICAgICAgcnVudGltZVR5cGUsXG4gICAgICBleGVDb250ZXh0LFxuICAgICAgcmV0dXJuVHlwZSxcbiAgICAgIGZpZWxkTm9kZXMsXG4gICAgICBpbmZvLFxuICAgICAgcmVzdWx0LFxuICAgICksXG4gICAgZmllbGROb2RlcyxcbiAgICBpbmZvLFxuICAgIHBhdGgsXG4gICAgcmVzdWx0LFxuICApO1xufVxuXG5mdW5jdGlvbiBlbnN1cmVWYWxpZFJ1bnRpbWVUeXBlKFxuICBydW50aW1lVHlwZU5hbWUsXG4gIGV4ZUNvbnRleHQsXG4gIHJldHVyblR5cGUsXG4gIGZpZWxkTm9kZXMsXG4gIGluZm8sXG4gIHJlc3VsdCxcbikge1xuICBpZiAocnVudGltZVR5cGVOYW1lID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgYEFic3RyYWN0IHR5cGUgXCIke3JldHVyblR5cGUubmFtZX1cIiBtdXN0IHJlc29sdmUgdG8gYW4gT2JqZWN0IHR5cGUgYXQgcnVudGltZSBmb3IgZmllbGQgXCIke2luZm8ucGFyZW50VHlwZS5uYW1lfS4ke2luZm8uZmllbGROYW1lfVwiLiBFaXRoZXIgdGhlIFwiJHtyZXR1cm5UeXBlLm5hbWV9XCIgdHlwZSBzaG91bGQgcHJvdmlkZSBhIFwicmVzb2x2ZVR5cGVcIiBmdW5jdGlvbiBvciBlYWNoIHBvc3NpYmxlIHR5cGUgc2hvdWxkIHByb3ZpZGUgYW4gXCJpc1R5cGVPZlwiIGZ1bmN0aW9uLmAsXG4gICAgICBmaWVsZE5vZGVzLFxuICAgICk7XG4gIH0gLy8gcmVsZWFzZXMgYmVmb3JlIDE2LjAuMCBzdXBwb3J0ZWQgcmV0dXJuaW5nIGBHcmFwaFFMT2JqZWN0VHlwZWAgZnJvbSBgcmVzb2x2ZVR5cGVgXG4gIC8vIFRPRE86IHJlbW92ZSBpbiAxNy4wLjAgcmVsZWFzZVxuXG4gIGlmIChpc09iamVjdFR5cGUocnVudGltZVR5cGVOYW1lKSkge1xuICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAnU3VwcG9ydCBmb3IgcmV0dXJuaW5nIEdyYXBoUUxPYmplY3RUeXBlIGZyb20gcmVzb2x2ZVR5cGUgd2FzIHJlbW92ZWQgaW4gZ3JhcGhxbC1qc0AxNi4wLjAgcGxlYXNlIHJldHVybiB0eXBlIG5hbWUgaW5zdGVhZC4nLFxuICAgICk7XG4gIH1cblxuICBpZiAodHlwZW9mIHJ1bnRpbWVUeXBlTmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgYEFic3RyYWN0IHR5cGUgXCIke3JldHVyblR5cGUubmFtZX1cIiBtdXN0IHJlc29sdmUgdG8gYW4gT2JqZWN0IHR5cGUgYXQgcnVudGltZSBmb3IgZmllbGQgXCIke2luZm8ucGFyZW50VHlwZS5uYW1lfS4ke2luZm8uZmllbGROYW1lfVwiIHdpdGggYCArXG4gICAgICAgIGB2YWx1ZSAke2luc3BlY3QocmVzdWx0KX0sIHJlY2VpdmVkIFwiJHtpbnNwZWN0KHJ1bnRpbWVUeXBlTmFtZSl9XCIuYCxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgcnVudGltZVR5cGUgPSBleGVDb250ZXh0LnNjaGVtYS5nZXRUeXBlKHJ1bnRpbWVUeXBlTmFtZSk7XG5cbiAgaWYgKHJ1bnRpbWVUeXBlID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgYEFic3RyYWN0IHR5cGUgXCIke3JldHVyblR5cGUubmFtZX1cIiB3YXMgcmVzb2x2ZWQgdG8gYSB0eXBlIFwiJHtydW50aW1lVHlwZU5hbWV9XCIgdGhhdCBkb2VzIG5vdCBleGlzdCBpbnNpZGUgdGhlIHNjaGVtYS5gLFxuICAgICAgZmllbGROb2RlcyxcbiAgICApO1xuICB9XG5cbiAgaWYgKCFpc09iamVjdFR5cGUocnVudGltZVR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgIGBBYnN0cmFjdCB0eXBlIFwiJHtyZXR1cm5UeXBlLm5hbWV9XCIgd2FzIHJlc29sdmVkIHRvIGEgbm9uLW9iamVjdCB0eXBlIFwiJHtydW50aW1lVHlwZU5hbWV9XCIuYCxcbiAgICAgIGZpZWxkTm9kZXMsXG4gICAgKTtcbiAgfVxuXG4gIGlmICghZXhlQ29udGV4dC5zY2hlbWEuaXNTdWJUeXBlKHJldHVyblR5cGUsIHJ1bnRpbWVUeXBlKSkge1xuICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICBgUnVudGltZSBPYmplY3QgdHlwZSBcIiR7cnVudGltZVR5cGUubmFtZX1cIiBpcyBub3QgYSBwb3NzaWJsZSB0eXBlIGZvciBcIiR7cmV0dXJuVHlwZS5uYW1lfVwiLmAsXG4gICAgICBmaWVsZE5vZGVzLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gcnVudGltZVR5cGU7XG59XG4vKipcbiAqIENvbXBsZXRlIGFuIE9iamVjdCB2YWx1ZSBieSBleGVjdXRpbmcgYWxsIHN1Yi1zZWxlY3Rpb25zLlxuICovXG5cbmZ1bmN0aW9uIGNvbXBsZXRlT2JqZWN0VmFsdWUoXG4gIGV4ZUNvbnRleHQsXG4gIHJldHVyblR5cGUsXG4gIGZpZWxkTm9kZXMsXG4gIGluZm8sXG4gIHBhdGgsXG4gIHJlc3VsdCxcbikge1xuICAvLyBDb2xsZWN0IHN1Yi1maWVsZHMgdG8gZXhlY3V0ZSB0byBjb21wbGV0ZSB0aGlzIHZhbHVlLlxuICBjb25zdCBzdWJGaWVsZE5vZGVzID0gY29sbGVjdFN1YmZpZWxkcyhleGVDb250ZXh0LCByZXR1cm5UeXBlLCBmaWVsZE5vZGVzKTsgLy8gSWYgdGhlcmUgaXMgYW4gaXNUeXBlT2YgcHJlZGljYXRlIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggdGhlXG4gIC8vIGN1cnJlbnQgcmVzdWx0LiBJZiBpc1R5cGVPZiByZXR1cm5zIGZhbHNlLCB0aGVuIHJhaXNlIGFuIGVycm9yIHJhdGhlclxuICAvLyB0aGFuIGNvbnRpbnVpbmcgZXhlY3V0aW9uLlxuXG4gIGlmIChyZXR1cm5UeXBlLmlzVHlwZU9mKSB7XG4gICAgY29uc3QgaXNUeXBlT2YgPSByZXR1cm5UeXBlLmlzVHlwZU9mKHJlc3VsdCwgZXhlQ29udGV4dC5jb250ZXh0VmFsdWUsIGluZm8pO1xuXG4gICAgaWYgKGlzUHJvbWlzZShpc1R5cGVPZikpIHtcbiAgICAgIHJldHVybiBpc1R5cGVPZi50aGVuKChyZXNvbHZlZElzVHlwZU9mKSA9PiB7XG4gICAgICAgIGlmICghcmVzb2x2ZWRJc1R5cGVPZikge1xuICAgICAgICAgIHRocm93IGludmFsaWRSZXR1cm5UeXBlRXJyb3IocmV0dXJuVHlwZSwgcmVzdWx0LCBmaWVsZE5vZGVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBleGVjdXRlRmllbGRzKFxuICAgICAgICAgIGV4ZUNvbnRleHQsXG4gICAgICAgICAgcmV0dXJuVHlwZSxcbiAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBzdWJGaWVsZE5vZGVzLFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKCFpc1R5cGVPZikge1xuICAgICAgdGhyb3cgaW52YWxpZFJldHVyblR5cGVFcnJvcihyZXR1cm5UeXBlLCByZXN1bHQsIGZpZWxkTm9kZXMpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBleGVjdXRlRmllbGRzKGV4ZUNvbnRleHQsIHJldHVyblR5cGUsIHJlc3VsdCwgcGF0aCwgc3ViRmllbGROb2Rlcyk7XG59XG5cbmZ1bmN0aW9uIGludmFsaWRSZXR1cm5UeXBlRXJyb3IocmV0dXJuVHlwZSwgcmVzdWx0LCBmaWVsZE5vZGVzKSB7XG4gIHJldHVybiBuZXcgR3JhcGhRTEVycm9yKFxuICAgIGBFeHBlY3RlZCB2YWx1ZSBvZiB0eXBlIFwiJHtyZXR1cm5UeXBlLm5hbWV9XCIgYnV0IGdvdDogJHtpbnNwZWN0KHJlc3VsdCl9LmAsXG4gICAgZmllbGROb2RlcyxcbiAgKTtcbn1cbi8qKlxuICogSWYgYSByZXNvbHZlVHlwZSBmdW5jdGlvbiBpcyBub3QgZ2l2ZW4sIHRoZW4gYSBkZWZhdWx0IHJlc29sdmUgYmVoYXZpb3IgaXNcbiAqIHVzZWQgd2hpY2ggYXR0ZW1wdHMgdHdvIHN0cmF0ZWdpZXM6XG4gKlxuICogRmlyc3QsIFNlZSBpZiB0aGUgcHJvdmlkZWQgdmFsdWUgaGFzIGEgYF9fdHlwZW5hbWVgIGZpZWxkIGRlZmluZWQsIGlmIHNvLCB1c2VcbiAqIHRoYXQgdmFsdWUgYXMgbmFtZSBvZiB0aGUgcmVzb2x2ZWQgdHlwZS5cbiAqXG4gKiBPdGhlcndpc2UsIHRlc3QgZWFjaCBwb3NzaWJsZSB0eXBlIGZvciB0aGUgYWJzdHJhY3QgdHlwZSBieSBjYWxsaW5nXG4gKiBpc1R5cGVPZiBmb3IgdGhlIG9iamVjdCBiZWluZyBjb2VyY2VkLCByZXR1cm5pbmcgdGhlIGZpcnN0IHR5cGUgdGhhdCBtYXRjaGVzLlxuICovXG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VHlwZVJlc29sdmVyID0gZnVuY3Rpb24gKFxuICB2YWx1ZSxcbiAgY29udGV4dFZhbHVlLFxuICBpbmZvLFxuICBhYnN0cmFjdFR5cGUsXG4pIHtcbiAgLy8gRmlyc3QsIGxvb2sgZm9yIGBfX3R5cGVuYW1lYC5cbiAgaWYgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgdHlwZW9mIHZhbHVlLl9fdHlwZW5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlLl9fdHlwZW5hbWU7XG4gIH0gLy8gT3RoZXJ3aXNlLCB0ZXN0IGVhY2ggcG9zc2libGUgdHlwZS5cblxuICBjb25zdCBwb3NzaWJsZVR5cGVzID0gaW5mby5zY2hlbWEuZ2V0UG9zc2libGVUeXBlcyhhYnN0cmFjdFR5cGUpO1xuICBjb25zdCBwcm9taXNlZElzVHlwZU9mUmVzdWx0cyA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zc2libGVUeXBlcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHR5cGUgPSBwb3NzaWJsZVR5cGVzW2ldO1xuXG4gICAgaWYgKHR5cGUuaXNUeXBlT2YpIHtcbiAgICAgIGNvbnN0IGlzVHlwZU9mUmVzdWx0ID0gdHlwZS5pc1R5cGVPZih2YWx1ZSwgY29udGV4dFZhbHVlLCBpbmZvKTtcblxuICAgICAgaWYgKGlzUHJvbWlzZShpc1R5cGVPZlJlc3VsdCkpIHtcbiAgICAgICAgcHJvbWlzZWRJc1R5cGVPZlJlc3VsdHNbaV0gPSBpc1R5cGVPZlJlc3VsdDtcbiAgICAgIH0gZWxzZSBpZiAoaXNUeXBlT2ZSZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIHR5cGUubmFtZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAocHJvbWlzZWRJc1R5cGVPZlJlc3VsdHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VkSXNUeXBlT2ZSZXN1bHRzKS50aGVuKChpc1R5cGVPZlJlc3VsdHMpID0+IHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXNUeXBlT2ZSZXN1bHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpc1R5cGVPZlJlc3VsdHNbaV0pIHtcbiAgICAgICAgICByZXR1cm4gcG9zc2libGVUeXBlc1tpXS5uYW1lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG4vKipcbiAqIElmIGEgcmVzb2x2ZSBmdW5jdGlvbiBpcyBub3QgZ2l2ZW4sIHRoZW4gYSBkZWZhdWx0IHJlc29sdmUgYmVoYXZpb3IgaXMgdXNlZFxuICogd2hpY2ggdGFrZXMgdGhlIHByb3BlcnR5IG9mIHRoZSBzb3VyY2Ugb2JqZWN0IG9mIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGZpZWxkXG4gKiBhbmQgcmV0dXJucyBpdCBhcyB0aGUgcmVzdWx0LCBvciBpZiBpdCdzIGEgZnVuY3Rpb24sIHJldHVybnMgdGhlIHJlc3VsdFxuICogb2YgY2FsbGluZyB0aGF0IGZ1bmN0aW9uIHdoaWxlIHBhc3NpbmcgYWxvbmcgYXJncyBhbmQgY29udGV4dCB2YWx1ZS5cbiAqL1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEZpZWxkUmVzb2x2ZXIgPSBmdW5jdGlvbiAoXG4gIHNvdXJjZSxcbiAgYXJncyxcbiAgY29udGV4dFZhbHVlLFxuICBpbmZvLFxuKSB7XG4gIC8vIGVuc3VyZSBzb3VyY2UgaXMgYSB2YWx1ZSBmb3Igd2hpY2ggcHJvcGVydHkgYWNjZXNzIGlzIGFjY2VwdGFibGUuXG4gIGlmIChpc09iamVjdExpa2Uoc291cmNlKSB8fCB0eXBlb2Ygc291cmNlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3QgcHJvcGVydHkgPSBzb3VyY2VbaW5mby5maWVsZE5hbWVdO1xuXG4gICAgaWYgKHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHNvdXJjZVtpbmZvLmZpZWxkTmFtZV0oYXJncywgY29udGV4dFZhbHVlLCBpbmZvKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcGVydHk7XG4gIH1cbn07XG4vKipcbiAqIFRoaXMgbWV0aG9kIGxvb2tzIHVwIHRoZSBmaWVsZCBvbiB0aGUgZ2l2ZW4gdHlwZSBkZWZpbml0aW9uLlxuICogSXQgaGFzIHNwZWNpYWwgY2FzaW5nIGZvciB0aGUgdGhyZWUgaW50cm9zcGVjdGlvbiBmaWVsZHMsXG4gKiBfX3NjaGVtYSwgX190eXBlIGFuZCBfX3R5cGVuYW1lLiBfX3R5cGVuYW1lIGlzIHNwZWNpYWwgYmVjYXVzZVxuICogaXQgY2FuIGFsd2F5cyBiZSBxdWVyaWVkIGFzIGEgZmllbGQsIGV2ZW4gaW4gc2l0dWF0aW9ucyB3aGVyZSBub1xuICogb3RoZXIgZmllbGRzIGFyZSBhbGxvd2VkLCBsaWtlIG9uIGEgVW5pb24uIF9fc2NoZW1hIGFuZCBfX3R5cGVcbiAqIGNvdWxkIGdldCBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBxdWVyeSB0eXBlLCBidXQgdGhhdCB3b3VsZFxuICogcmVxdWlyZSBtdXRhdGluZyB0eXBlIGRlZmluaXRpb25zLCB3aGljaCB3b3VsZCBjYXVzZSBpc3N1ZXMuXG4gKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpZWxkRGVmKHNjaGVtYSwgcGFyZW50VHlwZSwgZmllbGROb2RlKSB7XG4gIGNvbnN0IGZpZWxkTmFtZSA9IGZpZWxkTm9kZS5uYW1lLnZhbHVlO1xuXG4gIGlmIChcbiAgICBmaWVsZE5hbWUgPT09IFNjaGVtYU1ldGFGaWVsZERlZi5uYW1lICYmXG4gICAgc2NoZW1hLmdldFF1ZXJ5VHlwZSgpID09PSBwYXJlbnRUeXBlXG4gICkge1xuICAgIHJldHVybiBTY2hlbWFNZXRhRmllbGREZWY7XG4gIH0gZWxzZSBpZiAoXG4gICAgZmllbGROYW1lID09PSBUeXBlTWV0YUZpZWxkRGVmLm5hbWUgJiZcbiAgICBzY2hlbWEuZ2V0UXVlcnlUeXBlKCkgPT09IHBhcmVudFR5cGVcbiAgKSB7XG4gICAgcmV0dXJuIFR5cGVNZXRhRmllbGREZWY7XG4gIH0gZWxzZSBpZiAoZmllbGROYW1lID09PSBUeXBlTmFtZU1ldGFGaWVsZERlZi5uYW1lKSB7XG4gICAgcmV0dXJuIFR5cGVOYW1lTWV0YUZpZWxkRGVmO1xuICB9XG5cbiAgcmV0dXJuIHBhcmVudFR5cGUuZ2V0RmllbGRzKClbZmllbGROYW1lXTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/execution/execute.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/execution/index.mjs":
/*!**************************************************!*\
  !*** ./node_modules/graphql/execution/index.mjs ***!
  \**************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createSourceEventStream\": function() { return /* reexport safe */ _subscribe_mjs__WEBPACK_IMPORTED_MODULE_2__.createSourceEventStream; },\n/* harmony export */   \"defaultFieldResolver\": function() { return /* reexport safe */ _execute_mjs__WEBPACK_IMPORTED_MODULE_1__.defaultFieldResolver; },\n/* harmony export */   \"defaultTypeResolver\": function() { return /* reexport safe */ _execute_mjs__WEBPACK_IMPORTED_MODULE_1__.defaultTypeResolver; },\n/* harmony export */   \"execute\": function() { return /* reexport safe */ _execute_mjs__WEBPACK_IMPORTED_MODULE_1__.execute; },\n/* harmony export */   \"executeSync\": function() { return /* reexport safe */ _execute_mjs__WEBPACK_IMPORTED_MODULE_1__.executeSync; },\n/* harmony export */   \"getDirectiveValues\": function() { return /* reexport safe */ _values_mjs__WEBPACK_IMPORTED_MODULE_3__.getDirectiveValues; },\n/* harmony export */   \"getVariableValues\": function() { return /* reexport safe */ _values_mjs__WEBPACK_IMPORTED_MODULE_3__.getVariableValues; },\n/* harmony export */   \"responsePathAsArray\": function() { return /* reexport safe */ _jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_0__.pathToArray; },\n/* harmony export */   \"subscribe\": function() { return /* reexport safe */ _subscribe_mjs__WEBPACK_IMPORTED_MODULE_2__.subscribe; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/Path.mjs */ \"./node_modules/graphql/jsutils/Path.mjs\");\n/* harmony import */ var _execute_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./execute.mjs */ \"./node_modules/graphql/execution/execute.mjs\");\n/* harmony import */ var _subscribe_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./subscribe.mjs */ \"./node_modules/graphql/execution/subscribe.mjs\");\n/* harmony import */ var _values_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./values.mjs */ \"./node_modules/graphql/execution/values.mjs\");\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9leGVjdXRpb24vaW5kZXgubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBeUU7QUFNbEQ7QUFDOEM7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9leGVjdXRpb24vaW5kZXgubWpzP2ViY2QiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgcGF0aFRvQXJyYXkgYXMgcmVzcG9uc2VQYXRoQXNBcnJheSB9IGZyb20gJy4uL2pzdXRpbHMvUGF0aC5tanMnO1xuZXhwb3J0IHtcbiAgZXhlY3V0ZSxcbiAgZXhlY3V0ZVN5bmMsXG4gIGRlZmF1bHRGaWVsZFJlc29sdmVyLFxuICBkZWZhdWx0VHlwZVJlc29sdmVyLFxufSBmcm9tICcuL2V4ZWN1dGUubWpzJztcbmV4cG9ydCB7IHN1YnNjcmliZSwgY3JlYXRlU291cmNlRXZlbnRTdHJlYW0gfSBmcm9tICcuL3N1YnNjcmliZS5tanMnO1xuZXhwb3J0IHsgZ2V0VmFyaWFibGVWYWx1ZXMsIGdldERpcmVjdGl2ZVZhbHVlcyB9IGZyb20gJy4vdmFsdWVzLm1qcyc7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/execution/index.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/execution/mapAsyncIterator.mjs":
/*!*************************************************************!*\
  !*** ./node_modules/graphql/execution/mapAsyncIterator.mjs ***!
  \*************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"mapAsyncIterator\": function() { return /* binding */ mapAsyncIterator; }\n/* harmony export */ });\n/**\n * Given an AsyncIterable and a callback function, return an AsyncIterator\n * which produces values mapped via calling the callback function.\n */\nfunction mapAsyncIterator(iterable, callback) {\n  const iterator = iterable[Symbol.asyncIterator]();\n\n  async function mapResult(result) {\n    if (result.done) {\n      return result;\n    }\n\n    try {\n      return {\n        value: await callback(result.value),\n        done: false,\n      };\n    } catch (error) {\n      /* c8 ignore start */\n      // FIXME: add test case\n      if (typeof iterator.return === 'function') {\n        try {\n          await iterator.return();\n        } catch (_e) {\n          /* ignore error */\n        }\n      }\n\n      throw error;\n      /* c8 ignore stop */\n    }\n  }\n\n  return {\n    async next() {\n      return mapResult(await iterator.next());\n    },\n\n    async return() {\n      // If iterator.return() does not exist, then type R must be undefined.\n      return typeof iterator.return === 'function'\n        ? mapResult(await iterator.return())\n        : {\n            value: undefined,\n            done: true,\n          };\n    },\n\n    async throw(error) {\n      if (typeof iterator.throw === 'function') {\n        return mapResult(await iterator.throw(error));\n      }\n\n      throw error;\n    },\n\n    [Symbol.asyncIterator]() {\n      return this;\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9leGVjdXRpb24vbWFwQXN5bmNJdGVyYXRvci5tanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9leGVjdXRpb24vbWFwQXN5bmNJdGVyYXRvci5tanM/ZDZmNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdpdmVuIGFuIEFzeW5jSXRlcmFibGUgYW5kIGEgY2FsbGJhY2sgZnVuY3Rpb24sIHJldHVybiBhbiBBc3luY0l0ZXJhdG9yXG4gKiB3aGljaCBwcm9kdWNlcyB2YWx1ZXMgbWFwcGVkIHZpYSBjYWxsaW5nIHRoZSBjYWxsYmFjayBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcEFzeW5jSXRlcmF0b3IoaXRlcmFibGUsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGl0ZXJhdG9yID0gaXRlcmFibGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gbWFwUmVzdWx0KHJlc3VsdCkge1xuICAgIGlmIChyZXN1bHQuZG9uZSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IGF3YWl0IGNhbGxiYWNrKHJlc3VsdC52YWx1ZSksXG4gICAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLyogYzggaWdub3JlIHN0YXJ0ICovXG4gICAgICAvLyBGSVhNRTogYWRkIHRlc3QgY2FzZVxuICAgICAgaWYgKHR5cGVvZiBpdGVyYXRvci5yZXR1cm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBpdGVyYXRvci5yZXR1cm4oKTtcbiAgICAgICAgfSBjYXRjaCAoX2UpIHtcbiAgICAgICAgICAvKiBpZ25vcmUgZXJyb3IgKi9cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIC8qIGM4IGlnbm9yZSBzdG9wICovXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhc3luYyBuZXh0KCkge1xuICAgICAgcmV0dXJuIG1hcFJlc3VsdChhd2FpdCBpdGVyYXRvci5uZXh0KCkpO1xuICAgIH0sXG5cbiAgICBhc3luYyByZXR1cm4oKSB7XG4gICAgICAvLyBJZiBpdGVyYXRvci5yZXR1cm4oKSBkb2VzIG5vdCBleGlzdCwgdGhlbiB0eXBlIFIgbXVzdCBiZSB1bmRlZmluZWQuXG4gICAgICByZXR1cm4gdHlwZW9mIGl0ZXJhdG9yLnJldHVybiA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IG1hcFJlc3VsdChhd2FpdCBpdGVyYXRvci5yZXR1cm4oKSlcbiAgICAgICAgOiB7XG4gICAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZG9uZTogdHJ1ZSxcbiAgICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBhc3luYyB0aHJvdyhlcnJvcikge1xuICAgICAgaWYgKHR5cGVvZiBpdGVyYXRvci50aHJvdyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbWFwUmVzdWx0KGF3YWl0IGl0ZXJhdG9yLnRocm93KGVycm9yKSk7XG4gICAgICB9XG5cbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0sXG5cbiAgICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/execution/mapAsyncIterator.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/execution/subscribe.mjs":
/*!******************************************************!*\
  !*** ./node_modules/graphql/execution/subscribe.mjs ***!
  \******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createSourceEventStream\": function() { return /* binding */ createSourceEventStream; },\n/* harmony export */   \"subscribe\": function() { return /* binding */ subscribe; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"./node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_isAsyncIterable_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/isAsyncIterable.mjs */ \"./node_modules/graphql/jsutils/isAsyncIterable.mjs\");\n/* harmony import */ var _jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jsutils/Path.mjs */ \"./node_modules/graphql/jsutils/Path.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../error/locatedError.mjs */ \"./node_modules/graphql/error/locatedError.mjs\");\n/* harmony import */ var _collectFields_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./collectFields.mjs */ \"./node_modules/graphql/execution/collectFields.mjs\");\n/* harmony import */ var _execute_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./execute.mjs */ \"./node_modules/graphql/execution/execute.mjs\");\n/* harmony import */ var _mapAsyncIterator_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mapAsyncIterator.mjs */ \"./node_modules/graphql/execution/mapAsyncIterator.mjs\");\n/* harmony import */ var _values_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./values.mjs */ \"./node_modules/graphql/execution/values.mjs\");\n\n\n\n\n\n\n\n\n\n\n/**\n * Implements the \"Subscribe\" algorithm described in the GraphQL specification.\n *\n * Returns a Promise which resolves to either an AsyncIterator (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with\n * descriptive errors and no data will be returned.\n *\n * If the source stream could not be created due to faulty subscription\n * resolver logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to an AsyncIterator, which\n * yields a stream of ExecutionResults representing the response stream.\n *\n * Accepts either an object with named arguments, or individual arguments.\n */\n\nasync function subscribe(args) {\n  // Temporary for v15 to v16 migration. Remove in v17\n  arguments.length < 2 ||\n    (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__.devAssert)(\n      false,\n      'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n    );\n  const {\n    schema,\n    document,\n    rootValue,\n    contextValue,\n    variableValues,\n    operationName,\n    fieldResolver,\n    subscribeFieldResolver,\n  } = args;\n  const resultOrStream = await createSourceEventStream(\n    schema,\n    document,\n    rootValue,\n    contextValue,\n    variableValues,\n    operationName,\n    subscribeFieldResolver,\n  );\n\n  if (!(0,_jsutils_isAsyncIterable_mjs__WEBPACK_IMPORTED_MODULE_1__.isAsyncIterable)(resultOrStream)) {\n    return resultOrStream;\n  } // For each payload yielded from a subscription, map it over the normal\n  // GraphQL `execute` function, with `payload` as the rootValue.\n  // This implements the \"MapSourceToResponseEvent\" algorithm described in\n  // the GraphQL specification. The `execute` function provides the\n  // \"ExecuteSubscriptionEvent\" algorithm, as it is nearly identical to the\n  // \"ExecuteQuery\" algorithm, for which `execute` is also used.\n\n  const mapSourceToResponse = (payload) =>\n    (0,_execute_mjs__WEBPACK_IMPORTED_MODULE_2__.execute)({\n      schema,\n      document,\n      rootValue: payload,\n      contextValue,\n      variableValues,\n      operationName,\n      fieldResolver,\n    }); // Map every source value to a ExecutionResult value as described above.\n\n  return (0,_mapAsyncIterator_mjs__WEBPACK_IMPORTED_MODULE_3__.mapAsyncIterator)(resultOrStream, mapSourceToResponse);\n}\n/**\n * Implements the \"CreateSourceEventStream\" algorithm described in the\n * GraphQL specification, resolving the subscription source event stream.\n *\n * Returns a Promise which resolves to either an AsyncIterable (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with\n * descriptive errors and no data will be returned.\n *\n * If the the source stream could not be created due to faulty subscription\n * resolver logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to the AsyncIterable for the\n * event stream returned by the resolver.\n *\n * A Source Event Stream represents a sequence of events, each of which triggers\n * a GraphQL execution for that event.\n *\n * This may be useful when hosting the stateful subscription service in a\n * different process or machine than the stateless GraphQL execution engine,\n * or otherwise separating these two steps. For more on this, see the\n * \"Supporting Subscriptions at Scale\" information in the GraphQL specification.\n */\n\nasync function createSourceEventStream(\n  schema,\n  document,\n  rootValue,\n  contextValue,\n  variableValues,\n  operationName,\n  subscribeFieldResolver,\n) {\n  // If arguments are missing or incorrectly typed, this is an internal\n  // developer mistake which should throw an early error.\n  (0,_execute_mjs__WEBPACK_IMPORTED_MODULE_2__.assertValidExecutionArguments)(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n  // a \"Response\" with only errors is returned.\n\n  const exeContext = (0,_execute_mjs__WEBPACK_IMPORTED_MODULE_2__.buildExecutionContext)({\n    schema,\n    document,\n    rootValue,\n    contextValue,\n    variableValues,\n    operationName,\n    subscribeFieldResolver,\n  }); // Return early errors if execution context failed.\n\n  if (!('schema' in exeContext)) {\n    return {\n      errors: exeContext,\n    };\n  }\n\n  try {\n    const eventStream = await executeSubscription(exeContext); // Assert field returned an event stream, otherwise yield an error.\n\n    if (!(0,_jsutils_isAsyncIterable_mjs__WEBPACK_IMPORTED_MODULE_1__.isAsyncIterable)(eventStream)) {\n      throw new Error(\n        'Subscription field must return Async Iterable. ' +\n          `Received: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_4__.inspect)(eventStream)}.`,\n      );\n    }\n\n    return eventStream;\n  } catch (error) {\n    // If it GraphQLError, report it as an ExecutionResult, containing only errors and no data.\n    // Otherwise treat the error as a system-class error and re-throw it.\n    if (error instanceof _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLError) {\n      return {\n        errors: [error],\n      };\n    }\n\n    throw error;\n  }\n}\n\nasync function executeSubscription(exeContext) {\n  const { schema, fragments, operation, variableValues, rootValue } =\n    exeContext;\n  const rootType = schema.getSubscriptionType();\n\n  if (rootType == null) {\n    throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLError(\n      'Schema is not configured to execute subscription operation.',\n      operation,\n    );\n  }\n\n  const rootFields = (0,_collectFields_mjs__WEBPACK_IMPORTED_MODULE_6__.collectFields)(\n    schema,\n    fragments,\n    variableValues,\n    rootType,\n    operation.selectionSet,\n  );\n  const [responseName, fieldNodes] = [...rootFields.entries()][0];\n  const fieldDef = (0,_execute_mjs__WEBPACK_IMPORTED_MODULE_2__.getFieldDef)(schema, rootType, fieldNodes[0]);\n\n  if (!fieldDef) {\n    const fieldName = fieldNodes[0].name.value;\n    throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLError(\n      `The subscription field \"${fieldName}\" is not defined.`,\n      fieldNodes,\n    );\n  }\n\n  const path = (0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_7__.addPath)(undefined, responseName, rootType.name);\n  const info = (0,_execute_mjs__WEBPACK_IMPORTED_MODULE_2__.buildResolveInfo)(\n    exeContext,\n    fieldDef,\n    fieldNodes,\n    rootType,\n    path,\n  );\n\n  try {\n    var _fieldDef$subscribe;\n\n    // Implements the \"ResolveFieldEventStream\" algorithm from GraphQL specification.\n    // It differs from \"ResolveFieldValue\" due to providing a different `resolveFn`.\n    // Build a JS object of arguments from the field.arguments AST, using the\n    // variables scope to fulfill any variable references.\n    const args = (0,_values_mjs__WEBPACK_IMPORTED_MODULE_8__.getArgumentValues)(fieldDef, fieldNodes[0], variableValues); // The resolve function's optional third argument is a context value that\n    // is provided to every resolve function within an execution. It is commonly\n    // used to represent an authenticated user, or request-specific caches.\n\n    const contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an\n    // AsyncIterable yielding raw payloads.\n\n    const resolveFn =\n      (_fieldDef$subscribe = fieldDef.subscribe) !== null &&\n      _fieldDef$subscribe !== void 0\n        ? _fieldDef$subscribe\n        : exeContext.subscribeFieldResolver;\n    const eventStream = await resolveFn(rootValue, args, contextValue, info);\n\n    if (eventStream instanceof Error) {\n      throw eventStream;\n    }\n\n    return eventStream;\n  } catch (error) {\n    throw (0,_error_locatedError_mjs__WEBPACK_IMPORTED_MODULE_9__.locatedError)(error, fieldNodes, (0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_7__.pathToArray)(path));\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9leGVjdXRpb24vc3Vic2NyaWJlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBcUQ7QUFDSjtBQUNnQjtBQUNOO0FBQ0Y7QUFDQTtBQUNMO0FBTzdCO0FBQ21DO0FBQ1Q7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBLElBQUksaUVBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU8sNkVBQWU7QUFDdEI7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUkscURBQU87QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssR0FBRzs7QUFFUixTQUFTLHVFQUFnQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLDJFQUE2QixvQ0FBb0M7QUFDbkU7O0FBRUEscUJBQXFCLG1FQUFxQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsR0FBRzs7QUFFTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0RBQStEOztBQUUvRCxTQUFTLDZFQUFlO0FBQ3hCO0FBQ0E7QUFDQSx1QkFBdUIsNkRBQU8sY0FBYztBQUM1QztBQUNBOztBQUVBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSx5QkFBeUIsaUVBQVk7QUFDckM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSwwREFBMEQ7QUFDcEU7QUFDQTs7QUFFQTtBQUNBLGNBQWMsaUVBQVk7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLGlFQUFhO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHlEQUFXOztBQUU5QjtBQUNBO0FBQ0EsY0FBYyxpRUFBWTtBQUMxQixpQ0FBaUMsVUFBVTtBQUMzQztBQUNBO0FBQ0E7O0FBRUEsZUFBZSwwREFBTztBQUN0QixlQUFlLDhEQUFnQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiw4REFBaUIsMkNBQTJDO0FBQzdFO0FBQ0E7O0FBRUEsa0RBQWtEO0FBQ2xEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0osVUFBVSxxRUFBWSxvQkFBb0IsOERBQVc7QUFDckQ7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9leGVjdXRpb24vc3Vic2NyaWJlLm1qcz8zMTdlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRldkFzc2VydCB9IGZyb20gJy4uL2pzdXRpbHMvZGV2QXNzZXJ0Lm1qcyc7XG5pbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSAnLi4vanN1dGlscy9pbnNwZWN0Lm1qcyc7XG5pbXBvcnQgeyBpc0FzeW5jSXRlcmFibGUgfSBmcm9tICcuLi9qc3V0aWxzL2lzQXN5bmNJdGVyYWJsZS5tanMnO1xuaW1wb3J0IHsgYWRkUGF0aCwgcGF0aFRvQXJyYXkgfSBmcm9tICcuLi9qc3V0aWxzL1BhdGgubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgbG9jYXRlZEVycm9yIH0gZnJvbSAnLi4vZXJyb3IvbG9jYXRlZEVycm9yLm1qcyc7XG5pbXBvcnQgeyBjb2xsZWN0RmllbGRzIH0gZnJvbSAnLi9jb2xsZWN0RmllbGRzLm1qcyc7XG5pbXBvcnQge1xuICBhc3NlcnRWYWxpZEV4ZWN1dGlvbkFyZ3VtZW50cyxcbiAgYnVpbGRFeGVjdXRpb25Db250ZXh0LFxuICBidWlsZFJlc29sdmVJbmZvLFxuICBleGVjdXRlLFxuICBnZXRGaWVsZERlZixcbn0gZnJvbSAnLi9leGVjdXRlLm1qcyc7XG5pbXBvcnQgeyBtYXBBc3luY0l0ZXJhdG9yIH0gZnJvbSAnLi9tYXBBc3luY0l0ZXJhdG9yLm1qcyc7XG5pbXBvcnQgeyBnZXRBcmd1bWVudFZhbHVlcyB9IGZyb20gJy4vdmFsdWVzLm1qcyc7XG4vKipcbiAqIEltcGxlbWVudHMgdGhlIFwiU3Vic2NyaWJlXCIgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiB0aGUgR3JhcGhRTCBzcGVjaWZpY2F0aW9uLlxuICpcbiAqIFJldHVybnMgYSBQcm9taXNlIHdoaWNoIHJlc29sdmVzIHRvIGVpdGhlciBhbiBBc3luY0l0ZXJhdG9yIChpZiBzdWNjZXNzZnVsKVxuICogb3IgYW4gRXhlY3V0aW9uUmVzdWx0IChlcnJvcikuIFRoZSBwcm9taXNlIHdpbGwgYmUgcmVqZWN0ZWQgaWYgdGhlIHNjaGVtYSBvclxuICogb3RoZXIgYXJndW1lbnRzIHRvIHRoaXMgZnVuY3Rpb24gYXJlIGludmFsaWQsIG9yIGlmIHRoZSByZXNvbHZlZCBldmVudCBzdHJlYW1cbiAqIGlzIG5vdCBhbiBhc3luYyBpdGVyYWJsZS5cbiAqXG4gKiBJZiB0aGUgY2xpZW50LXByb3ZpZGVkIGFyZ3VtZW50cyB0byB0aGlzIGZ1bmN0aW9uIGRvIG5vdCByZXN1bHQgaW4gYVxuICogY29tcGxpYW50IHN1YnNjcmlwdGlvbiwgYSBHcmFwaFFMIFJlc3BvbnNlIChFeGVjdXRpb25SZXN1bHQpIHdpdGhcbiAqIGRlc2NyaXB0aXZlIGVycm9ycyBhbmQgbm8gZGF0YSB3aWxsIGJlIHJldHVybmVkLlxuICpcbiAqIElmIHRoZSBzb3VyY2Ugc3RyZWFtIGNvdWxkIG5vdCBiZSBjcmVhdGVkIGR1ZSB0byBmYXVsdHkgc3Vic2NyaXB0aW9uXG4gKiByZXNvbHZlciBsb2dpYyBvciB1bmRlcmx5aW5nIHN5c3RlbXMsIHRoZSBwcm9taXNlIHdpbGwgcmVzb2x2ZSB0byBhIHNpbmdsZVxuICogRXhlY3V0aW9uUmVzdWx0IGNvbnRhaW5pbmcgYGVycm9yc2AgYW5kIG5vIGBkYXRhYC5cbiAqXG4gKiBJZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRlZCwgdGhlIHByb21pc2UgcmVzb2x2ZXMgdG8gYW4gQXN5bmNJdGVyYXRvciwgd2hpY2hcbiAqIHlpZWxkcyBhIHN0cmVhbSBvZiBFeGVjdXRpb25SZXN1bHRzIHJlcHJlc2VudGluZyB0aGUgcmVzcG9uc2Ugc3RyZWFtLlxuICpcbiAqIEFjY2VwdHMgZWl0aGVyIGFuIG9iamVjdCB3aXRoIG5hbWVkIGFyZ3VtZW50cywgb3IgaW5kaXZpZHVhbCBhcmd1bWVudHMuXG4gKi9cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN1YnNjcmliZShhcmdzKSB7XG4gIC8vIFRlbXBvcmFyeSBmb3IgdjE1IHRvIHYxNiBtaWdyYXRpb24uIFJlbW92ZSBpbiB2MTdcbiAgYXJndW1lbnRzLmxlbmd0aCA8IDIgfHxcbiAgICBkZXZBc3NlcnQoXG4gICAgICBmYWxzZSxcbiAgICAgICdncmFwaHFsQDE2IGRyb3BwZWQgbG9uZy1kZXByZWNhdGVkIHN1cHBvcnQgZm9yIHBvc2l0aW9uYWwgYXJndW1lbnRzLCBwbGVhc2UgcGFzcyBhbiBvYmplY3QgaW5zdGVhZC4nLFxuICAgICk7XG4gIGNvbnN0IHtcbiAgICBzY2hlbWEsXG4gICAgZG9jdW1lbnQsXG4gICAgcm9vdFZhbHVlLFxuICAgIGNvbnRleHRWYWx1ZSxcbiAgICB2YXJpYWJsZVZhbHVlcyxcbiAgICBvcGVyYXRpb25OYW1lLFxuICAgIGZpZWxkUmVzb2x2ZXIsXG4gICAgc3Vic2NyaWJlRmllbGRSZXNvbHZlcixcbiAgfSA9IGFyZ3M7XG4gIGNvbnN0IHJlc3VsdE9yU3RyZWFtID0gYXdhaXQgY3JlYXRlU291cmNlRXZlbnRTdHJlYW0oXG4gICAgc2NoZW1hLFxuICAgIGRvY3VtZW50LFxuICAgIHJvb3RWYWx1ZSxcbiAgICBjb250ZXh0VmFsdWUsXG4gICAgdmFyaWFibGVWYWx1ZXMsXG4gICAgb3BlcmF0aW9uTmFtZSxcbiAgICBzdWJzY3JpYmVGaWVsZFJlc29sdmVyLFxuICApO1xuXG4gIGlmICghaXNBc3luY0l0ZXJhYmxlKHJlc3VsdE9yU3RyZWFtKSkge1xuICAgIHJldHVybiByZXN1bHRPclN0cmVhbTtcbiAgfSAvLyBGb3IgZWFjaCBwYXlsb2FkIHlpZWxkZWQgZnJvbSBhIHN1YnNjcmlwdGlvbiwgbWFwIGl0IG92ZXIgdGhlIG5vcm1hbFxuICAvLyBHcmFwaFFMIGBleGVjdXRlYCBmdW5jdGlvbiwgd2l0aCBgcGF5bG9hZGAgYXMgdGhlIHJvb3RWYWx1ZS5cbiAgLy8gVGhpcyBpbXBsZW1lbnRzIHRoZSBcIk1hcFNvdXJjZVRvUmVzcG9uc2VFdmVudFwiIGFsZ29yaXRobSBkZXNjcmliZWQgaW5cbiAgLy8gdGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbi4gVGhlIGBleGVjdXRlYCBmdW5jdGlvbiBwcm92aWRlcyB0aGVcbiAgLy8gXCJFeGVjdXRlU3Vic2NyaXB0aW9uRXZlbnRcIiBhbGdvcml0aG0sIGFzIGl0IGlzIG5lYXJseSBpZGVudGljYWwgdG8gdGhlXG4gIC8vIFwiRXhlY3V0ZVF1ZXJ5XCIgYWxnb3JpdGhtLCBmb3Igd2hpY2ggYGV4ZWN1dGVgIGlzIGFsc28gdXNlZC5cblxuICBjb25zdCBtYXBTb3VyY2VUb1Jlc3BvbnNlID0gKHBheWxvYWQpID0+XG4gICAgZXhlY3V0ZSh7XG4gICAgICBzY2hlbWEsXG4gICAgICBkb2N1bWVudCxcbiAgICAgIHJvb3RWYWx1ZTogcGF5bG9hZCxcbiAgICAgIGNvbnRleHRWYWx1ZSxcbiAgICAgIHZhcmlhYmxlVmFsdWVzLFxuICAgICAgb3BlcmF0aW9uTmFtZSxcbiAgICAgIGZpZWxkUmVzb2x2ZXIsXG4gICAgfSk7IC8vIE1hcCBldmVyeSBzb3VyY2UgdmFsdWUgdG8gYSBFeGVjdXRpb25SZXN1bHQgdmFsdWUgYXMgZGVzY3JpYmVkIGFib3ZlLlxuXG4gIHJldHVybiBtYXBBc3luY0l0ZXJhdG9yKHJlc3VsdE9yU3RyZWFtLCBtYXBTb3VyY2VUb1Jlc3BvbnNlKTtcbn1cbi8qKlxuICogSW1wbGVtZW50cyB0aGUgXCJDcmVhdGVTb3VyY2VFdmVudFN0cmVhbVwiIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gdGhlXG4gKiBHcmFwaFFMIHNwZWNpZmljYXRpb24sIHJlc29sdmluZyB0aGUgc3Vic2NyaXB0aW9uIHNvdXJjZSBldmVudCBzdHJlYW0uXG4gKlxuICogUmV0dXJucyBhIFByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgdG8gZWl0aGVyIGFuIEFzeW5jSXRlcmFibGUgKGlmIHN1Y2Nlc3NmdWwpXG4gKiBvciBhbiBFeGVjdXRpb25SZXN1bHQgKGVycm9yKS4gVGhlIHByb21pc2Ugd2lsbCBiZSByZWplY3RlZCBpZiB0aGUgc2NoZW1hIG9yXG4gKiBvdGhlciBhcmd1bWVudHMgdG8gdGhpcyBmdW5jdGlvbiBhcmUgaW52YWxpZCwgb3IgaWYgdGhlIHJlc29sdmVkIGV2ZW50IHN0cmVhbVxuICogaXMgbm90IGFuIGFzeW5jIGl0ZXJhYmxlLlxuICpcbiAqIElmIHRoZSBjbGllbnQtcHJvdmlkZWQgYXJndW1lbnRzIHRvIHRoaXMgZnVuY3Rpb24gZG8gbm90IHJlc3VsdCBpbiBhXG4gKiBjb21wbGlhbnQgc3Vic2NyaXB0aW9uLCBhIEdyYXBoUUwgUmVzcG9uc2UgKEV4ZWN1dGlvblJlc3VsdCkgd2l0aFxuICogZGVzY3JpcHRpdmUgZXJyb3JzIGFuZCBubyBkYXRhIHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogSWYgdGhlIHRoZSBzb3VyY2Ugc3RyZWFtIGNvdWxkIG5vdCBiZSBjcmVhdGVkIGR1ZSB0byBmYXVsdHkgc3Vic2NyaXB0aW9uXG4gKiByZXNvbHZlciBsb2dpYyBvciB1bmRlcmx5aW5nIHN5c3RlbXMsIHRoZSBwcm9taXNlIHdpbGwgcmVzb2x2ZSB0byBhIHNpbmdsZVxuICogRXhlY3V0aW9uUmVzdWx0IGNvbnRhaW5pbmcgYGVycm9yc2AgYW5kIG5vIGBkYXRhYC5cbiAqXG4gKiBJZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRlZCwgdGhlIHByb21pc2UgcmVzb2x2ZXMgdG8gdGhlIEFzeW5jSXRlcmFibGUgZm9yIHRoZVxuICogZXZlbnQgc3RyZWFtIHJldHVybmVkIGJ5IHRoZSByZXNvbHZlci5cbiAqXG4gKiBBIFNvdXJjZSBFdmVudCBTdHJlYW0gcmVwcmVzZW50cyBhIHNlcXVlbmNlIG9mIGV2ZW50cywgZWFjaCBvZiB3aGljaCB0cmlnZ2Vyc1xuICogYSBHcmFwaFFMIGV4ZWN1dGlvbiBmb3IgdGhhdCBldmVudC5cbiAqXG4gKiBUaGlzIG1heSBiZSB1c2VmdWwgd2hlbiBob3N0aW5nIHRoZSBzdGF0ZWZ1bCBzdWJzY3JpcHRpb24gc2VydmljZSBpbiBhXG4gKiBkaWZmZXJlbnQgcHJvY2VzcyBvciBtYWNoaW5lIHRoYW4gdGhlIHN0YXRlbGVzcyBHcmFwaFFMIGV4ZWN1dGlvbiBlbmdpbmUsXG4gKiBvciBvdGhlcndpc2Ugc2VwYXJhdGluZyB0aGVzZSB0d28gc3RlcHMuIEZvciBtb3JlIG9uIHRoaXMsIHNlZSB0aGVcbiAqIFwiU3VwcG9ydGluZyBTdWJzY3JpcHRpb25zIGF0IFNjYWxlXCIgaW5mb3JtYXRpb24gaW4gdGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbi5cbiAqL1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU291cmNlRXZlbnRTdHJlYW0oXG4gIHNjaGVtYSxcbiAgZG9jdW1lbnQsXG4gIHJvb3RWYWx1ZSxcbiAgY29udGV4dFZhbHVlLFxuICB2YXJpYWJsZVZhbHVlcyxcbiAgb3BlcmF0aW9uTmFtZSxcbiAgc3Vic2NyaWJlRmllbGRSZXNvbHZlcixcbikge1xuICAvLyBJZiBhcmd1bWVudHMgYXJlIG1pc3Npbmcgb3IgaW5jb3JyZWN0bHkgdHlwZWQsIHRoaXMgaXMgYW4gaW50ZXJuYWxcbiAgLy8gZGV2ZWxvcGVyIG1pc3Rha2Ugd2hpY2ggc2hvdWxkIHRocm93IGFuIGVhcmx5IGVycm9yLlxuICBhc3NlcnRWYWxpZEV4ZWN1dGlvbkFyZ3VtZW50cyhzY2hlbWEsIGRvY3VtZW50LCB2YXJpYWJsZVZhbHVlcyk7IC8vIElmIGEgdmFsaWQgZXhlY3V0aW9uIGNvbnRleHQgY2Fubm90IGJlIGNyZWF0ZWQgZHVlIHRvIGluY29ycmVjdCBhcmd1bWVudHMsXG4gIC8vIGEgXCJSZXNwb25zZVwiIHdpdGggb25seSBlcnJvcnMgaXMgcmV0dXJuZWQuXG5cbiAgY29uc3QgZXhlQ29udGV4dCA9IGJ1aWxkRXhlY3V0aW9uQ29udGV4dCh7XG4gICAgc2NoZW1hLFxuICAgIGRvY3VtZW50LFxuICAgIHJvb3RWYWx1ZSxcbiAgICBjb250ZXh0VmFsdWUsXG4gICAgdmFyaWFibGVWYWx1ZXMsXG4gICAgb3BlcmF0aW9uTmFtZSxcbiAgICBzdWJzY3JpYmVGaWVsZFJlc29sdmVyLFxuICB9KTsgLy8gUmV0dXJuIGVhcmx5IGVycm9ycyBpZiBleGVjdXRpb24gY29udGV4dCBmYWlsZWQuXG5cbiAgaWYgKCEoJ3NjaGVtYScgaW4gZXhlQ29udGV4dCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3JzOiBleGVDb250ZXh0LFxuICAgIH07XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGV2ZW50U3RyZWFtID0gYXdhaXQgZXhlY3V0ZVN1YnNjcmlwdGlvbihleGVDb250ZXh0KTsgLy8gQXNzZXJ0IGZpZWxkIHJldHVybmVkIGFuIGV2ZW50IHN0cmVhbSwgb3RoZXJ3aXNlIHlpZWxkIGFuIGVycm9yLlxuXG4gICAgaWYgKCFpc0FzeW5jSXRlcmFibGUoZXZlbnRTdHJlYW0pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdTdWJzY3JpcHRpb24gZmllbGQgbXVzdCByZXR1cm4gQXN5bmMgSXRlcmFibGUuICcgK1xuICAgICAgICAgIGBSZWNlaXZlZDogJHtpbnNwZWN0KGV2ZW50U3RyZWFtKX0uYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV2ZW50U3RyZWFtO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIElmIGl0IEdyYXBoUUxFcnJvciwgcmVwb3J0IGl0IGFzIGFuIEV4ZWN1dGlvblJlc3VsdCwgY29udGFpbmluZyBvbmx5IGVycm9ycyBhbmQgbm8gZGF0YS5cbiAgICAvLyBPdGhlcndpc2UgdHJlYXQgdGhlIGVycm9yIGFzIGEgc3lzdGVtLWNsYXNzIGVycm9yIGFuZCByZS10aHJvdyBpdC5cbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBHcmFwaFFMRXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVycm9yczogW2Vycm9yXSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZVN1YnNjcmlwdGlvbihleGVDb250ZXh0KSB7XG4gIGNvbnN0IHsgc2NoZW1hLCBmcmFnbWVudHMsIG9wZXJhdGlvbiwgdmFyaWFibGVWYWx1ZXMsIHJvb3RWYWx1ZSB9ID1cbiAgICBleGVDb250ZXh0O1xuICBjb25zdCByb290VHlwZSA9IHNjaGVtYS5nZXRTdWJzY3JpcHRpb25UeXBlKCk7XG5cbiAgaWYgKHJvb3RUeXBlID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgJ1NjaGVtYSBpcyBub3QgY29uZmlndXJlZCB0byBleGVjdXRlIHN1YnNjcmlwdGlvbiBvcGVyYXRpb24uJyxcbiAgICAgIG9wZXJhdGlvbixcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgcm9vdEZpZWxkcyA9IGNvbGxlY3RGaWVsZHMoXG4gICAgc2NoZW1hLFxuICAgIGZyYWdtZW50cyxcbiAgICB2YXJpYWJsZVZhbHVlcyxcbiAgICByb290VHlwZSxcbiAgICBvcGVyYXRpb24uc2VsZWN0aW9uU2V0LFxuICApO1xuICBjb25zdCBbcmVzcG9uc2VOYW1lLCBmaWVsZE5vZGVzXSA9IFsuLi5yb290RmllbGRzLmVudHJpZXMoKV1bMF07XG4gIGNvbnN0IGZpZWxkRGVmID0gZ2V0RmllbGREZWYoc2NoZW1hLCByb290VHlwZSwgZmllbGROb2Rlc1swXSk7XG5cbiAgaWYgKCFmaWVsZERlZikge1xuICAgIGNvbnN0IGZpZWxkTmFtZSA9IGZpZWxkTm9kZXNbMF0ubmFtZS52YWx1ZTtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgYFRoZSBzdWJzY3JpcHRpb24gZmllbGQgXCIke2ZpZWxkTmFtZX1cIiBpcyBub3QgZGVmaW5lZC5gLFxuICAgICAgZmllbGROb2RlcyxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgcGF0aCA9IGFkZFBhdGgodW5kZWZpbmVkLCByZXNwb25zZU5hbWUsIHJvb3RUeXBlLm5hbWUpO1xuICBjb25zdCBpbmZvID0gYnVpbGRSZXNvbHZlSW5mbyhcbiAgICBleGVDb250ZXh0LFxuICAgIGZpZWxkRGVmLFxuICAgIGZpZWxkTm9kZXMsXG4gICAgcm9vdFR5cGUsXG4gICAgcGF0aCxcbiAgKTtcblxuICB0cnkge1xuICAgIHZhciBfZmllbGREZWYkc3Vic2NyaWJlO1xuXG4gICAgLy8gSW1wbGVtZW50cyB0aGUgXCJSZXNvbHZlRmllbGRFdmVudFN0cmVhbVwiIGFsZ29yaXRobSBmcm9tIEdyYXBoUUwgc3BlY2lmaWNhdGlvbi5cbiAgICAvLyBJdCBkaWZmZXJzIGZyb20gXCJSZXNvbHZlRmllbGRWYWx1ZVwiIGR1ZSB0byBwcm92aWRpbmcgYSBkaWZmZXJlbnQgYHJlc29sdmVGbmAuXG4gICAgLy8gQnVpbGQgYSBKUyBvYmplY3Qgb2YgYXJndW1lbnRzIGZyb20gdGhlIGZpZWxkLmFyZ3VtZW50cyBBU1QsIHVzaW5nIHRoZVxuICAgIC8vIHZhcmlhYmxlcyBzY29wZSB0byBmdWxmaWxsIGFueSB2YXJpYWJsZSByZWZlcmVuY2VzLlxuICAgIGNvbnN0IGFyZ3MgPSBnZXRBcmd1bWVudFZhbHVlcyhmaWVsZERlZiwgZmllbGROb2Rlc1swXSwgdmFyaWFibGVWYWx1ZXMpOyAvLyBUaGUgcmVzb2x2ZSBmdW5jdGlvbidzIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlzIGEgY29udGV4dCB2YWx1ZSB0aGF0XG4gICAgLy8gaXMgcHJvdmlkZWQgdG8gZXZlcnkgcmVzb2x2ZSBmdW5jdGlvbiB3aXRoaW4gYW4gZXhlY3V0aW9uLiBJdCBpcyBjb21tb25seVxuICAgIC8vIHVzZWQgdG8gcmVwcmVzZW50IGFuIGF1dGhlbnRpY2F0ZWQgdXNlciwgb3IgcmVxdWVzdC1zcGVjaWZpYyBjYWNoZXMuXG5cbiAgICBjb25zdCBjb250ZXh0VmFsdWUgPSBleGVDb250ZXh0LmNvbnRleHRWYWx1ZTsgLy8gQ2FsbCB0aGUgYHN1YnNjcmliZSgpYCByZXNvbHZlciBvciB0aGUgZGVmYXVsdCByZXNvbHZlciB0byBwcm9kdWNlIGFuXG4gICAgLy8gQXN5bmNJdGVyYWJsZSB5aWVsZGluZyByYXcgcGF5bG9hZHMuXG5cbiAgICBjb25zdCByZXNvbHZlRm4gPVxuICAgICAgKF9maWVsZERlZiRzdWJzY3JpYmUgPSBmaWVsZERlZi5zdWJzY3JpYmUpICE9PSBudWxsICYmXG4gICAgICBfZmllbGREZWYkc3Vic2NyaWJlICE9PSB2b2lkIDBcbiAgICAgICAgPyBfZmllbGREZWYkc3Vic2NyaWJlXG4gICAgICAgIDogZXhlQ29udGV4dC5zdWJzY3JpYmVGaWVsZFJlc29sdmVyO1xuICAgIGNvbnN0IGV2ZW50U3RyZWFtID0gYXdhaXQgcmVzb2x2ZUZuKHJvb3RWYWx1ZSwgYXJncywgY29udGV4dFZhbHVlLCBpbmZvKTtcblxuICAgIGlmIChldmVudFN0cmVhbSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICB0aHJvdyBldmVudFN0cmVhbTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXZlbnRTdHJlYW07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbG9jYXRlZEVycm9yKGVycm9yLCBmaWVsZE5vZGVzLCBwYXRoVG9BcnJheShwYXRoKSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/execution/subscribe.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/execution/values.mjs":
/*!***************************************************!*\
  !*** ./node_modules/graphql/execution/values.mjs ***!
  \***************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getArgumentValues\": function() { return /* binding */ getArgumentValues; },\n/* harmony export */   \"getDirectiveValues\": function() { return /* binding */ getDirectiveValues; },\n/* harmony export */   \"getVariableValues\": function() { return /* binding */ getVariableValues; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../jsutils/keyMap.mjs */ \"./node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _jsutils_printPathArray_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jsutils/printPathArray.mjs */ \"./node_modules/graphql/jsutils/printPathArray.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../language/printer.mjs */ \"./node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_coerceInputValue_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utilities/coerceInputValue.mjs */ \"./node_modules/graphql/utilities/coerceInputValue.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utilities/typeFromAST.mjs */ \"./node_modules/graphql/utilities/typeFromAST.mjs\");\n/* harmony import */ var _utilities_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utilities/valueFromAST.mjs */ \"./node_modules/graphql/utilities/valueFromAST.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nfunction getVariableValues(schema, varDefNodes, inputs, options) {\n  const errors = [];\n  const maxErrors =\n    options === null || options === void 0 ? void 0 : options.maxErrors;\n\n  try {\n    const coerced = coerceVariableValues(\n      schema,\n      varDefNodes,\n      inputs,\n      (error) => {\n        if (maxErrors != null && errors.length >= maxErrors) {\n          throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n            'Too many errors processing variables, error limit reached. Execution aborted.',\n          );\n        }\n\n        errors.push(error);\n      },\n    );\n\n    if (errors.length === 0) {\n      return {\n        coerced,\n      };\n    }\n  } catch (error) {\n    errors.push(error);\n  }\n\n  return {\n    errors,\n  };\n}\n\nfunction coerceVariableValues(schema, varDefNodes, inputs, onError) {\n  const coercedValues = {};\n\n  for (const varDefNode of varDefNodes) {\n    const varName = varDefNode.variable.name.value;\n    const varType = (0,_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_1__.typeFromAST)(schema, varDefNode.type);\n\n    if (!(0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isInputType)(varType)) {\n      // Must use input types for variables. This should be caught during\n      // validation, however is checked again here for safety.\n      const varTypeStr = (0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_3__.print)(varDefNode.type);\n      onError(\n        new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n          `Variable \"$${varName}\" expected value of type \"${varTypeStr}\" which cannot be used as an input type.`,\n          varDefNode.type,\n        ),\n      );\n      continue;\n    }\n\n    if (!hasOwnProperty(inputs, varName)) {\n      if (varDefNode.defaultValue) {\n        coercedValues[varName] = (0,_utilities_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_4__.valueFromAST)(varDefNode.defaultValue, varType);\n      } else if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isNonNullType)(varType)) {\n        const varTypeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_5__.inspect)(varType);\n        onError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n            `Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`,\n            varDefNode,\n          ),\n        );\n      }\n\n      continue;\n    }\n\n    const value = inputs[varName];\n\n    if (value === null && (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isNonNullType)(varType)) {\n      const varTypeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_5__.inspect)(varType);\n      onError(\n        new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n          `Variable \"$${varName}\" of non-null type \"${varTypeStr}\" must not be null.`,\n          varDefNode,\n        ),\n      );\n      continue;\n    }\n\n    coercedValues[varName] = (0,_utilities_coerceInputValue_mjs__WEBPACK_IMPORTED_MODULE_6__.coerceInputValue)(\n      value,\n      varType,\n      (path, invalidValue, error) => {\n        let prefix =\n          `Variable \"$${varName}\" got invalid value ` + (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_5__.inspect)(invalidValue);\n\n        if (path.length > 0) {\n          prefix += ` at \"${varName}${(0,_jsutils_printPathArray_mjs__WEBPACK_IMPORTED_MODULE_7__.printPathArray)(path)}\"`;\n        }\n\n        onError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n            prefix + '; ' + error.message,\n            varDefNode,\n            undefined,\n            undefined,\n            undefined,\n            error.originalError,\n          ),\n        );\n      },\n    );\n  }\n\n  return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n *\n * @internal\n */\n\nfunction getArgumentValues(def, node, variableValues) {\n  var _node$arguments;\n\n  const coercedValues = {}; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n  /* c8 ignore next */\n\n  const argumentNodes =\n    (_node$arguments = node.arguments) !== null && _node$arguments !== void 0\n      ? _node$arguments\n      : [];\n  const argNodeMap = (0,_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_8__.keyMap)(argumentNodes, (arg) => arg.name.value);\n\n  for (const argDef of def.args) {\n    const name = argDef.name;\n    const argType = argDef.type;\n    const argumentNode = argNodeMap[name];\n\n    if (!argumentNode) {\n      if (argDef.defaultValue !== undefined) {\n        coercedValues[name] = argDef.defaultValue;\n      } else if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isNonNullType)(argType)) {\n        throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n          `Argument \"${name}\" of required type \"${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_5__.inspect)(argType)}\" ` +\n            'was not provided.',\n          node,\n        );\n      }\n\n      continue;\n    }\n\n    const valueNode = argumentNode.value;\n    let isNull = valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_9__.Kind.NULL;\n\n    if (valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_9__.Kind.VARIABLE) {\n      const variableName = valueNode.name.value;\n\n      if (\n        variableValues == null ||\n        !hasOwnProperty(variableValues, variableName)\n      ) {\n        if (argDef.defaultValue !== undefined) {\n          coercedValues[name] = argDef.defaultValue;\n        } else if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isNonNullType)(argType)) {\n          throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n            `Argument \"${name}\" of required type \"${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_5__.inspect)(argType)}\" ` +\n              `was provided the variable \"$${variableName}\" which was not provided a runtime value.`,\n            valueNode,\n          );\n        }\n\n        continue;\n      }\n\n      isNull = variableValues[variableName] == null;\n    }\n\n    if (isNull && (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isNonNullType)(argType)) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n        `Argument \"${name}\" of non-null type \"${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_5__.inspect)(argType)}\" ` +\n          'must not be null.',\n        valueNode,\n      );\n    }\n\n    const coercedValue = (0,_utilities_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_4__.valueFromAST)(valueNode, argType, variableValues);\n\n    if (coercedValue === undefined) {\n      // Note: ValuesOfCorrectTypeRule validation should catch this before\n      // execution. This is a runtime check to ensure execution does not\n      // continue with an invalid argument value.\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n        `Argument \"${name}\" has invalid value ${(0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_3__.print)(valueNode)}.`,\n        valueNode,\n      );\n    }\n\n    coercedValues[name] = coercedValue;\n  }\n\n  return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a directive definition\n * and a AST node which may contain directives. Optionally also accepts a map\n * of variable values.\n *\n * If the directive does not exist on the node, returns undefined.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nfunction getDirectiveValues(directiveDef, node, variableValues) {\n  var _node$directives;\n\n  const directiveNode =\n    (_node$directives = node.directives) === null || _node$directives === void 0\n      ? void 0\n      : _node$directives.find(\n          (directive) => directive.name.value === directiveDef.name,\n        );\n\n  if (directiveNode) {\n    return getArgumentValues(directiveDef, directiveNode, variableValues);\n  }\n}\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9leGVjdXRpb24vdmFsdWVzLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQWlEO0FBQ0Y7QUFDZ0I7QUFDTjtBQUNaO0FBQ0c7QUFDb0I7QUFDQztBQUNWO0FBQ0U7O0FBRTdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGlFQUFZO0FBQ2hDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esb0JBQW9CLHVFQUFXOztBQUUvQixTQUFTLGlFQUFXO0FBQ3BCO0FBQ0E7QUFDQSx5QkFBeUIsNERBQUs7QUFDOUI7QUFDQSxZQUFZLGlFQUFZO0FBQ3hCLHdCQUF3QixRQUFRLDRCQUE0QixXQUFXO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlDQUFpQyx5RUFBWTtBQUM3QyxRQUFRLFNBQVMsbUVBQWE7QUFDOUIsMkJBQTJCLDZEQUFPO0FBQ2xDO0FBQ0EsY0FBYyxpRUFBWTtBQUMxQiwwQkFBMEIsUUFBUSxzQkFBc0IsV0FBVztBQUNuRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLDBCQUEwQixtRUFBYTtBQUN2Qyx5QkFBeUIsNkRBQU87QUFDaEM7QUFDQSxZQUFZLGlFQUFZO0FBQ3hCLHdCQUF3QixRQUFRLHNCQUFzQixXQUFXO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQTZCLGlGQUFnQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixRQUFRLHdCQUF3Qiw2REFBTzs7QUFFL0Q7QUFDQSw0QkFBNEIsUUFBUSxFQUFFLDJFQUFjLE9BQU87QUFDM0Q7O0FBRUE7QUFDQSxjQUFjLGlFQUFZO0FBQzFCLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBLDRCQUE0Qjs7QUFFNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsMkRBQU07O0FBRTNCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsU0FBUyxtRUFBYTtBQUM5QixrQkFBa0IsaUVBQVk7QUFDOUIsdUJBQXVCLEtBQUssc0JBQXNCLDZEQUFPLFVBQVU7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQywwREFBUzs7QUFFN0MsMkJBQTJCLDhEQUFhO0FBQ3hDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsU0FBUyxtRUFBYTtBQUNoQyxvQkFBb0IsaUVBQVk7QUFDaEMseUJBQXlCLEtBQUssc0JBQXNCLDZEQUFPLFVBQVU7QUFDckUsNkNBQTZDLGFBQWE7QUFDMUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxrQkFBa0IsbUVBQWE7QUFDL0IsZ0JBQWdCLGlFQUFZO0FBQzVCLHFCQUFxQixLQUFLLHNCQUFzQiw2REFBTyxVQUFVO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlCQUF5Qix5RUFBWTs7QUFFckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsaUVBQVk7QUFDNUIscUJBQXFCLEtBQUssc0JBQXNCLDREQUFLLFlBQVk7QUFDakU7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2V4ZWN1dGlvbi92YWx1ZXMubWpzPzYyOGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsga2V5TWFwIH0gZnJvbSAnLi4vanN1dGlscy9rZXlNYXAubWpzJztcbmltcG9ydCB7IHByaW50UGF0aEFycmF5IH0gZnJvbSAnLi4vanN1dGlscy9wcmludFBhdGhBcnJheS5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbmltcG9ydCB7IHByaW50IH0gZnJvbSAnLi4vbGFuZ3VhZ2UvcHJpbnRlci5tanMnO1xuaW1wb3J0IHsgaXNJbnB1dFR5cGUsIGlzTm9uTnVsbFR5cGUgfSBmcm9tICcuLi90eXBlL2RlZmluaXRpb24ubWpzJztcbmltcG9ydCB7IGNvZXJjZUlucHV0VmFsdWUgfSBmcm9tICcuLi91dGlsaXRpZXMvY29lcmNlSW5wdXRWYWx1ZS5tanMnO1xuaW1wb3J0IHsgdHlwZUZyb21BU1QgfSBmcm9tICcuLi91dGlsaXRpZXMvdHlwZUZyb21BU1QubWpzJztcbmltcG9ydCB7IHZhbHVlRnJvbUFTVCB9IGZyb20gJy4uL3V0aWxpdGllcy92YWx1ZUZyb21BU1QubWpzJztcblxuLyoqXG4gKiBQcmVwYXJlcyBhbiBvYmplY3QgbWFwIG9mIHZhcmlhYmxlVmFsdWVzIG9mIHRoZSBjb3JyZWN0IHR5cGUgYmFzZWQgb24gdGhlXG4gKiBwcm92aWRlZCB2YXJpYWJsZSBkZWZpbml0aW9ucyBhbmQgYXJiaXRyYXJ5IGlucHV0LiBJZiB0aGUgaW5wdXQgY2Fubm90IGJlXG4gKiBwYXJzZWQgdG8gbWF0Y2ggdGhlIHZhcmlhYmxlIGRlZmluaXRpb25zLCBhIEdyYXBoUUxFcnJvciB3aWxsIGJlIHRocm93bi5cbiAqXG4gKiBOb3RlOiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3Qgd2l0aCBhIHByb3RvdHlwZSwgc2luY2UgaXQgaXNcbiAqIGV4cG9zZWQgdG8gdXNlciBjb2RlLiBDYXJlIHNob3VsZCBiZSB0YWtlbiB0byBub3QgcHVsbCB2YWx1ZXMgZnJvbSB0aGVcbiAqIE9iamVjdCBwcm90b3R5cGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYXJpYWJsZVZhbHVlcyhzY2hlbWEsIHZhckRlZk5vZGVzLCBpbnB1dHMsIG9wdGlvbnMpIHtcbiAgY29uc3QgZXJyb3JzID0gW107XG4gIGNvbnN0IG1heEVycm9ycyA9XG4gICAgb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLm1heEVycm9ycztcblxuICB0cnkge1xuICAgIGNvbnN0IGNvZXJjZWQgPSBjb2VyY2VWYXJpYWJsZVZhbHVlcyhcbiAgICAgIHNjaGVtYSxcbiAgICAgIHZhckRlZk5vZGVzLFxuICAgICAgaW5wdXRzLFxuICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChtYXhFcnJvcnMgIT0gbnVsbCAmJiBlcnJvcnMubGVuZ3RoID49IG1heEVycm9ycykge1xuICAgICAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICAnVG9vIG1hbnkgZXJyb3JzIHByb2Nlc3NpbmcgdmFyaWFibGVzLCBlcnJvciBsaW1pdCByZWFjaGVkLiBFeGVjdXRpb24gYWJvcnRlZC4nLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBlcnJvcnMucHVzaChlcnJvcik7XG4gICAgICB9LFxuICAgICk7XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29lcmNlZCxcbiAgICAgIH07XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGVycm9ycy5wdXNoKGVycm9yKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXJyb3JzLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb2VyY2VWYXJpYWJsZVZhbHVlcyhzY2hlbWEsIHZhckRlZk5vZGVzLCBpbnB1dHMsIG9uRXJyb3IpIHtcbiAgY29uc3QgY29lcmNlZFZhbHVlcyA9IHt9O1xuXG4gIGZvciAoY29uc3QgdmFyRGVmTm9kZSBvZiB2YXJEZWZOb2Rlcykge1xuICAgIGNvbnN0IHZhck5hbWUgPSB2YXJEZWZOb2RlLnZhcmlhYmxlLm5hbWUudmFsdWU7XG4gICAgY29uc3QgdmFyVHlwZSA9IHR5cGVGcm9tQVNUKHNjaGVtYSwgdmFyRGVmTm9kZS50eXBlKTtcblxuICAgIGlmICghaXNJbnB1dFR5cGUodmFyVHlwZSkpIHtcbiAgICAgIC8vIE11c3QgdXNlIGlucHV0IHR5cGVzIGZvciB2YXJpYWJsZXMuIFRoaXMgc2hvdWxkIGJlIGNhdWdodCBkdXJpbmdcbiAgICAgIC8vIHZhbGlkYXRpb24sIGhvd2V2ZXIgaXMgY2hlY2tlZCBhZ2FpbiBoZXJlIGZvciBzYWZldHkuXG4gICAgICBjb25zdCB2YXJUeXBlU3RyID0gcHJpbnQodmFyRGVmTm9kZS50eXBlKTtcbiAgICAgIG9uRXJyb3IoXG4gICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgYFZhcmlhYmxlIFwiJCR7dmFyTmFtZX1cIiBleHBlY3RlZCB2YWx1ZSBvZiB0eXBlIFwiJHt2YXJUeXBlU3RyfVwiIHdoaWNoIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGlucHV0IHR5cGUuYCxcbiAgICAgICAgICB2YXJEZWZOb2RlLnR5cGUsXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKCFoYXNPd25Qcm9wZXJ0eShpbnB1dHMsIHZhck5hbWUpKSB7XG4gICAgICBpZiAodmFyRGVmTm9kZS5kZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgY29lcmNlZFZhbHVlc1t2YXJOYW1lXSA9IHZhbHVlRnJvbUFTVCh2YXJEZWZOb2RlLmRlZmF1bHRWYWx1ZSwgdmFyVHlwZSk7XG4gICAgICB9IGVsc2UgaWYgKGlzTm9uTnVsbFR5cGUodmFyVHlwZSkpIHtcbiAgICAgICAgY29uc3QgdmFyVHlwZVN0ciA9IGluc3BlY3QodmFyVHlwZSk7XG4gICAgICAgIG9uRXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBWYXJpYWJsZSBcIiQke3Zhck5hbWV9XCIgb2YgcmVxdWlyZWQgdHlwZSBcIiR7dmFyVHlwZVN0cn1cIiB3YXMgbm90IHByb3ZpZGVkLmAsXG4gICAgICAgICAgICB2YXJEZWZOb2RlLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gaW5wdXRzW3Zhck5hbWVdO1xuXG4gICAgaWYgKHZhbHVlID09PSBudWxsICYmIGlzTm9uTnVsbFR5cGUodmFyVHlwZSkpIHtcbiAgICAgIGNvbnN0IHZhclR5cGVTdHIgPSBpbnNwZWN0KHZhclR5cGUpO1xuICAgICAgb25FcnJvcihcbiAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICBgVmFyaWFibGUgXCIkJHt2YXJOYW1lfVwiIG9mIG5vbi1udWxsIHR5cGUgXCIke3ZhclR5cGVTdHJ9XCIgbXVzdCBub3QgYmUgbnVsbC5gLFxuICAgICAgICAgIHZhckRlZk5vZGUsXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29lcmNlZFZhbHVlc1t2YXJOYW1lXSA9IGNvZXJjZUlucHV0VmFsdWUoXG4gICAgICB2YWx1ZSxcbiAgICAgIHZhclR5cGUsXG4gICAgICAocGF0aCwgaW52YWxpZFZhbHVlLCBlcnJvcikgPT4ge1xuICAgICAgICBsZXQgcHJlZml4ID1cbiAgICAgICAgICBgVmFyaWFibGUgXCIkJHt2YXJOYW1lfVwiIGdvdCBpbnZhbGlkIHZhbHVlIGAgKyBpbnNwZWN0KGludmFsaWRWYWx1ZSk7XG5cbiAgICAgICAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHByZWZpeCArPSBgIGF0IFwiJHt2YXJOYW1lfSR7cHJpbnRQYXRoQXJyYXkocGF0aCl9XCJgO1xuICAgICAgICB9XG5cbiAgICAgICAgb25FcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgcHJlZml4ICsgJzsgJyArIGVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgICB2YXJEZWZOb2RlLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgZXJyb3Iub3JpZ2luYWxFcnJvcixcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGNvZXJjZWRWYWx1ZXM7XG59XG4vKipcbiAqIFByZXBhcmVzIGFuIG9iamVjdCBtYXAgb2YgYXJndW1lbnQgdmFsdWVzIGdpdmVuIGEgbGlzdCBvZiBhcmd1bWVudFxuICogZGVmaW5pdGlvbnMgYW5kIGxpc3Qgb2YgYXJndW1lbnQgQVNUIG5vZGVzLlxuICpcbiAqIE5vdGU6IFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBhIHBsYWluIE9iamVjdCB3aXRoIGEgcHJvdG90eXBlLCBzaW5jZSBpdCBpc1xuICogZXhwb3NlZCB0byB1c2VyIGNvZGUuIENhcmUgc2hvdWxkIGJlIHRha2VuIHRvIG5vdCBwdWxsIHZhbHVlcyBmcm9tIHRoZVxuICogT2JqZWN0IHByb3RvdHlwZS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXJndW1lbnRWYWx1ZXMoZGVmLCBub2RlLCB2YXJpYWJsZVZhbHVlcykge1xuICB2YXIgX25vZGUkYXJndW1lbnRzO1xuXG4gIGNvbnN0IGNvZXJjZWRWYWx1ZXMgPSB7fTsgLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcblxuICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuXG4gIGNvbnN0IGFyZ3VtZW50Tm9kZXMgPVxuICAgIChfbm9kZSRhcmd1bWVudHMgPSBub2RlLmFyZ3VtZW50cykgIT09IG51bGwgJiYgX25vZGUkYXJndW1lbnRzICE9PSB2b2lkIDBcbiAgICAgID8gX25vZGUkYXJndW1lbnRzXG4gICAgICA6IFtdO1xuICBjb25zdCBhcmdOb2RlTWFwID0ga2V5TWFwKGFyZ3VtZW50Tm9kZXMsIChhcmcpID0+IGFyZy5uYW1lLnZhbHVlKTtcblxuICBmb3IgKGNvbnN0IGFyZ0RlZiBvZiBkZWYuYXJncykge1xuICAgIGNvbnN0IG5hbWUgPSBhcmdEZWYubmFtZTtcbiAgICBjb25zdCBhcmdUeXBlID0gYXJnRGVmLnR5cGU7XG4gICAgY29uc3QgYXJndW1lbnROb2RlID0gYXJnTm9kZU1hcFtuYW1lXTtcblxuICAgIGlmICghYXJndW1lbnROb2RlKSB7XG4gICAgICBpZiAoYXJnRGVmLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvZXJjZWRWYWx1ZXNbbmFtZV0gPSBhcmdEZWYuZGVmYXVsdFZhbHVlO1xuICAgICAgfSBlbHNlIGlmIChpc05vbk51bGxUeXBlKGFyZ1R5cGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgYEFyZ3VtZW50IFwiJHtuYW1lfVwiIG9mIHJlcXVpcmVkIHR5cGUgXCIke2luc3BlY3QoYXJnVHlwZSl9XCIgYCArXG4gICAgICAgICAgICAnd2FzIG5vdCBwcm92aWRlZC4nLFxuICAgICAgICAgIG5vZGUsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlTm9kZSA9IGFyZ3VtZW50Tm9kZS52YWx1ZTtcbiAgICBsZXQgaXNOdWxsID0gdmFsdWVOb2RlLmtpbmQgPT09IEtpbmQuTlVMTDtcblxuICAgIGlmICh2YWx1ZU5vZGUua2luZCA9PT0gS2luZC5WQVJJQUJMRSkge1xuICAgICAgY29uc3QgdmFyaWFibGVOYW1lID0gdmFsdWVOb2RlLm5hbWUudmFsdWU7XG5cbiAgICAgIGlmIChcbiAgICAgICAgdmFyaWFibGVWYWx1ZXMgPT0gbnVsbCB8fFxuICAgICAgICAhaGFzT3duUHJvcGVydHkodmFyaWFibGVWYWx1ZXMsIHZhcmlhYmxlTmFtZSlcbiAgICAgICkge1xuICAgICAgICBpZiAoYXJnRGVmLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29lcmNlZFZhbHVlc1tuYW1lXSA9IGFyZ0RlZi5kZWZhdWx0VmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNOb25OdWxsVHlwZShhcmdUeXBlKSkge1xuICAgICAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgQXJndW1lbnQgXCIke25hbWV9XCIgb2YgcmVxdWlyZWQgdHlwZSBcIiR7aW5zcGVjdChhcmdUeXBlKX1cIiBgICtcbiAgICAgICAgICAgICAgYHdhcyBwcm92aWRlZCB0aGUgdmFyaWFibGUgXCIkJHt2YXJpYWJsZU5hbWV9XCIgd2hpY2ggd2FzIG5vdCBwcm92aWRlZCBhIHJ1bnRpbWUgdmFsdWUuYCxcbiAgICAgICAgICAgIHZhbHVlTm9kZSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlzTnVsbCA9IHZhcmlhYmxlVmFsdWVzW3ZhcmlhYmxlTmFtZV0gPT0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoaXNOdWxsICYmIGlzTm9uTnVsbFR5cGUoYXJnVHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgIGBBcmd1bWVudCBcIiR7bmFtZX1cIiBvZiBub24tbnVsbCB0eXBlIFwiJHtpbnNwZWN0KGFyZ1R5cGUpfVwiIGAgK1xuICAgICAgICAgICdtdXN0IG5vdCBiZSBudWxsLicsXG4gICAgICAgIHZhbHVlTm9kZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgY29lcmNlZFZhbHVlID0gdmFsdWVGcm9tQVNUKHZhbHVlTm9kZSwgYXJnVHlwZSwgdmFyaWFibGVWYWx1ZXMpO1xuXG4gICAgaWYgKGNvZXJjZWRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBOb3RlOiBWYWx1ZXNPZkNvcnJlY3RUeXBlUnVsZSB2YWxpZGF0aW9uIHNob3VsZCBjYXRjaCB0aGlzIGJlZm9yZVxuICAgICAgLy8gZXhlY3V0aW9uLiBUaGlzIGlzIGEgcnVudGltZSBjaGVjayB0byBlbnN1cmUgZXhlY3V0aW9uIGRvZXMgbm90XG4gICAgICAvLyBjb250aW51ZSB3aXRoIGFuIGludmFsaWQgYXJndW1lbnQgdmFsdWUuXG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgQXJndW1lbnQgXCIke25hbWV9XCIgaGFzIGludmFsaWQgdmFsdWUgJHtwcmludCh2YWx1ZU5vZGUpfS5gLFxuICAgICAgICB2YWx1ZU5vZGUsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvZXJjZWRWYWx1ZXNbbmFtZV0gPSBjb2VyY2VkVmFsdWU7XG4gIH1cblxuICByZXR1cm4gY29lcmNlZFZhbHVlcztcbn1cbi8qKlxuICogUHJlcGFyZXMgYW4gb2JqZWN0IG1hcCBvZiBhcmd1bWVudCB2YWx1ZXMgZ2l2ZW4gYSBkaXJlY3RpdmUgZGVmaW5pdGlvblxuICogYW5kIGEgQVNUIG5vZGUgd2hpY2ggbWF5IGNvbnRhaW4gZGlyZWN0aXZlcy4gT3B0aW9uYWxseSBhbHNvIGFjY2VwdHMgYSBtYXBcbiAqIG9mIHZhcmlhYmxlIHZhbHVlcy5cbiAqXG4gKiBJZiB0aGUgZGlyZWN0aXZlIGRvZXMgbm90IGV4aXN0IG9uIHRoZSBub2RlLCByZXR1cm5zIHVuZGVmaW5lZC5cbiAqXG4gKiBOb3RlOiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3Qgd2l0aCBhIHByb3RvdHlwZSwgc2luY2UgaXQgaXNcbiAqIGV4cG9zZWQgdG8gdXNlciBjb2RlLiBDYXJlIHNob3VsZCBiZSB0YWtlbiB0byBub3QgcHVsbCB2YWx1ZXMgZnJvbSB0aGVcbiAqIE9iamVjdCBwcm90b3R5cGUuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdGl2ZVZhbHVlcyhkaXJlY3RpdmVEZWYsIG5vZGUsIHZhcmlhYmxlVmFsdWVzKSB7XG4gIHZhciBfbm9kZSRkaXJlY3RpdmVzO1xuXG4gIGNvbnN0IGRpcmVjdGl2ZU5vZGUgPVxuICAgIChfbm9kZSRkaXJlY3RpdmVzID0gbm9kZS5kaXJlY3RpdmVzKSA9PT0gbnVsbCB8fCBfbm9kZSRkaXJlY3RpdmVzID09PSB2b2lkIDBcbiAgICAgID8gdm9pZCAwXG4gICAgICA6IF9ub2RlJGRpcmVjdGl2ZXMuZmluZChcbiAgICAgICAgICAoZGlyZWN0aXZlKSA9PiBkaXJlY3RpdmUubmFtZS52YWx1ZSA9PT0gZGlyZWN0aXZlRGVmLm5hbWUsXG4gICAgICAgICk7XG5cbiAgaWYgKGRpcmVjdGl2ZU5vZGUpIHtcbiAgICByZXR1cm4gZ2V0QXJndW1lbnRWYWx1ZXMoZGlyZWN0aXZlRGVmLCBkaXJlY3RpdmVOb2RlLCB2YXJpYWJsZVZhbHVlcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFzT3duUHJvcGVydHkob2JqLCBwcm9wKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/execution/values.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/graphql.mjs":
/*!******************************************!*\
  !*** ./node_modules/graphql/graphql.mjs ***!
  \******************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"graphql\": function() { return /* binding */ graphql; },\n/* harmony export */   \"graphqlSync\": function() { return /* binding */ graphqlSync; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jsutils/devAssert.mjs */ \"./node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./jsutils/isPromise.mjs */ \"./node_modules/graphql/jsutils/isPromise.mjs\");\n/* harmony import */ var _language_parser_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./language/parser.mjs */ \"./node_modules/graphql/language/parser.mjs\");\n/* harmony import */ var _type_validate_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./type/validate.mjs */ \"./node_modules/graphql/type/validate.mjs\");\n/* harmony import */ var _validation_validate_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./validation/validate.mjs */ \"./node_modules/graphql/validation/validate.mjs\");\n/* harmony import */ var _execution_execute_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./execution/execute.mjs */ \"./node_modules/graphql/execution/execute.mjs\");\n\n\n\n\n\n\n/**\n * This is the primary entry point function for fulfilling GraphQL operations\n * by parsing, validating, and executing a GraphQL document along side a\n * GraphQL schema.\n *\n * More sophisticated GraphQL servers, such as those which persist queries,\n * may wish to separate the validation and execution phases to a static time\n * tooling step, and a server runtime step.\n *\n * Accepts either an object with named arguments, or individual arguments:\n *\n * schema:\n *    The GraphQL type system to use when validating and executing a query.\n * source:\n *    A GraphQL language formatted string representing the requested operation.\n * rootValue:\n *    The value provided as the first argument to resolver functions on the top\n *    level type (e.g. the query object type).\n * contextValue:\n *    The context value is provided as an argument to resolver functions after\n *    field arguments. It is used to pass shared information useful at any point\n *    during executing this query, for example the currently logged in user and\n *    connections to databases or other services.\n * variableValues:\n *    A mapping of variable name to runtime value to use for all variables\n *    defined in the requestString.\n * operationName:\n *    The name of the operation to use if requestString contains multiple\n *    possible operations. Can be omitted if requestString contains only\n *    one operation.\n * fieldResolver:\n *    A resolver function to use when one is not provided by the schema.\n *    If not provided, the default field resolver is used (which looks for a\n *    value or method on the source value with the field's name).\n * typeResolver:\n *    A type resolver function to use when none is provided by the schema.\n *    If not provided, the default type resolver is used (which looks for a\n *    `__typename` field or alternatively calls the `isTypeOf` method).\n */\n\nfunction graphql(args) {\n  // Always return a Promise for a consistent API.\n  return new Promise((resolve) => resolve(graphqlImpl(args)));\n}\n/**\n * The graphqlSync function also fulfills GraphQL operations by parsing,\n * validating, and executing a GraphQL document along side a GraphQL schema.\n * However, it guarantees to complete synchronously (or throw an error) assuming\n * that all field resolvers are also synchronous.\n */\n\nfunction graphqlSync(args) {\n  const result = graphqlImpl(args); // Assert that the execution was synchronous.\n\n  if ((0,_jsutils_isPromise_mjs__WEBPACK_IMPORTED_MODULE_0__.isPromise)(result)) {\n    throw new Error('GraphQL execution failed to complete synchronously.');\n  }\n\n  return result;\n}\n\nfunction graphqlImpl(args) {\n  // Temporary for v15 to v16 migration. Remove in v17\n  arguments.length < 2 ||\n    (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_1__.devAssert)(\n      false,\n      'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n    );\n  const {\n    schema,\n    source,\n    rootValue,\n    contextValue,\n    variableValues,\n    operationName,\n    fieldResolver,\n    typeResolver,\n  } = args; // Validate Schema\n\n  const schemaValidationErrors = (0,_type_validate_mjs__WEBPACK_IMPORTED_MODULE_2__.validateSchema)(schema);\n\n  if (schemaValidationErrors.length > 0) {\n    return {\n      errors: schemaValidationErrors,\n    };\n  } // Parse\n\n  let document;\n\n  try {\n    document = (0,_language_parser_mjs__WEBPACK_IMPORTED_MODULE_3__.parse)(source);\n  } catch (syntaxError) {\n    return {\n      errors: [syntaxError],\n    };\n  } // Validate\n\n  const validationErrors = (0,_validation_validate_mjs__WEBPACK_IMPORTED_MODULE_4__.validate)(schema, document);\n\n  if (validationErrors.length > 0) {\n    return {\n      errors: validationErrors,\n    };\n  } // Execute\n\n  return (0,_execution_execute_mjs__WEBPACK_IMPORTED_MODULE_5__.execute)({\n    schema,\n    document,\n    rootValue,\n    contextValue,\n    variableValues,\n    operationName,\n    fieldResolver,\n    typeResolver,\n  });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9ncmFwaHFsLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFvRDtBQUNBO0FBQ047QUFDTztBQUNBO0FBQ0g7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1Asb0NBQW9DOztBQUVwQyxNQUFNLGlFQUFTO0FBQ2Y7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUksaUVBQVM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFFBQVE7O0FBRVosaUNBQWlDLGtFQUFjOztBQUUvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7O0FBRUE7QUFDQSxlQUFlLDJEQUFLO0FBQ3BCLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKLDJCQUEyQixrRUFBUTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKLFNBQVMsK0RBQU87QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9ncmFwaHFsLm1qcz9mYzNlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRldkFzc2VydCB9IGZyb20gJy4vanN1dGlscy9kZXZBc3NlcnQubWpzJztcbmltcG9ydCB7IGlzUHJvbWlzZSB9IGZyb20gJy4vanN1dGlscy9pc1Byb21pc2UubWpzJztcbmltcG9ydCB7IHBhcnNlIH0gZnJvbSAnLi9sYW5ndWFnZS9wYXJzZXIubWpzJztcbmltcG9ydCB7IHZhbGlkYXRlU2NoZW1hIH0gZnJvbSAnLi90eXBlL3ZhbGlkYXRlLm1qcyc7XG5pbXBvcnQgeyB2YWxpZGF0ZSB9IGZyb20gJy4vdmFsaWRhdGlvbi92YWxpZGF0ZS5tanMnO1xuaW1wb3J0IHsgZXhlY3V0ZSB9IGZyb20gJy4vZXhlY3V0aW9uL2V4ZWN1dGUubWpzJztcbi8qKlxuICogVGhpcyBpcyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmdW5jdGlvbiBmb3IgZnVsZmlsbGluZyBHcmFwaFFMIG9wZXJhdGlvbnNcbiAqIGJ5IHBhcnNpbmcsIHZhbGlkYXRpbmcsIGFuZCBleGVjdXRpbmcgYSBHcmFwaFFMIGRvY3VtZW50IGFsb25nIHNpZGUgYVxuICogR3JhcGhRTCBzY2hlbWEuXG4gKlxuICogTW9yZSBzb3BoaXN0aWNhdGVkIEdyYXBoUUwgc2VydmVycywgc3VjaCBhcyB0aG9zZSB3aGljaCBwZXJzaXN0IHF1ZXJpZXMsXG4gKiBtYXkgd2lzaCB0byBzZXBhcmF0ZSB0aGUgdmFsaWRhdGlvbiBhbmQgZXhlY3V0aW9uIHBoYXNlcyB0byBhIHN0YXRpYyB0aW1lXG4gKiB0b29saW5nIHN0ZXAsIGFuZCBhIHNlcnZlciBydW50aW1lIHN0ZXAuXG4gKlxuICogQWNjZXB0cyBlaXRoZXIgYW4gb2JqZWN0IHdpdGggbmFtZWQgYXJndW1lbnRzLCBvciBpbmRpdmlkdWFsIGFyZ3VtZW50czpcbiAqXG4gKiBzY2hlbWE6XG4gKiAgICBUaGUgR3JhcGhRTCB0eXBlIHN5c3RlbSB0byB1c2Ugd2hlbiB2YWxpZGF0aW5nIGFuZCBleGVjdXRpbmcgYSBxdWVyeS5cbiAqIHNvdXJjZTpcbiAqICAgIEEgR3JhcGhRTCBsYW5ndWFnZSBmb3JtYXR0ZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcmVxdWVzdGVkIG9wZXJhdGlvbi5cbiAqIHJvb3RWYWx1ZTpcbiAqICAgIFRoZSB2YWx1ZSBwcm92aWRlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gcmVzb2x2ZXIgZnVuY3Rpb25zIG9uIHRoZSB0b3BcbiAqICAgIGxldmVsIHR5cGUgKGUuZy4gdGhlIHF1ZXJ5IG9iamVjdCB0eXBlKS5cbiAqIGNvbnRleHRWYWx1ZTpcbiAqICAgIFRoZSBjb250ZXh0IHZhbHVlIGlzIHByb3ZpZGVkIGFzIGFuIGFyZ3VtZW50IHRvIHJlc29sdmVyIGZ1bmN0aW9ucyBhZnRlclxuICogICAgZmllbGQgYXJndW1lbnRzLiBJdCBpcyB1c2VkIHRvIHBhc3Mgc2hhcmVkIGluZm9ybWF0aW9uIHVzZWZ1bCBhdCBhbnkgcG9pbnRcbiAqICAgIGR1cmluZyBleGVjdXRpbmcgdGhpcyBxdWVyeSwgZm9yIGV4YW1wbGUgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlciBhbmRcbiAqICAgIGNvbm5lY3Rpb25zIHRvIGRhdGFiYXNlcyBvciBvdGhlciBzZXJ2aWNlcy5cbiAqIHZhcmlhYmxlVmFsdWVzOlxuICogICAgQSBtYXBwaW5nIG9mIHZhcmlhYmxlIG5hbWUgdG8gcnVudGltZSB2YWx1ZSB0byB1c2UgZm9yIGFsbCB2YXJpYWJsZXNcbiAqICAgIGRlZmluZWQgaW4gdGhlIHJlcXVlc3RTdHJpbmcuXG4gKiBvcGVyYXRpb25OYW1lOlxuICogICAgVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbiB0byB1c2UgaWYgcmVxdWVzdFN0cmluZyBjb250YWlucyBtdWx0aXBsZVxuICogICAgcG9zc2libGUgb3BlcmF0aW9ucy4gQ2FuIGJlIG9taXR0ZWQgaWYgcmVxdWVzdFN0cmluZyBjb250YWlucyBvbmx5XG4gKiAgICBvbmUgb3BlcmF0aW9uLlxuICogZmllbGRSZXNvbHZlcjpcbiAqICAgIEEgcmVzb2x2ZXIgZnVuY3Rpb24gdG8gdXNlIHdoZW4gb25lIGlzIG5vdCBwcm92aWRlZCBieSB0aGUgc2NoZW1hLlxuICogICAgSWYgbm90IHByb3ZpZGVkLCB0aGUgZGVmYXVsdCBmaWVsZCByZXNvbHZlciBpcyB1c2VkICh3aGljaCBsb29rcyBmb3IgYVxuICogICAgdmFsdWUgb3IgbWV0aG9kIG9uIHRoZSBzb3VyY2UgdmFsdWUgd2l0aCB0aGUgZmllbGQncyBuYW1lKS5cbiAqIHR5cGVSZXNvbHZlcjpcbiAqICAgIEEgdHlwZSByZXNvbHZlciBmdW5jdGlvbiB0byB1c2Ugd2hlbiBub25lIGlzIHByb3ZpZGVkIGJ5IHRoZSBzY2hlbWEuXG4gKiAgICBJZiBub3QgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IHR5cGUgcmVzb2x2ZXIgaXMgdXNlZCAod2hpY2ggbG9va3MgZm9yIGFcbiAqICAgIGBfX3R5cGVuYW1lYCBmaWVsZCBvciBhbHRlcm5hdGl2ZWx5IGNhbGxzIHRoZSBgaXNUeXBlT2ZgIG1ldGhvZCkuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdyYXBocWwoYXJncykge1xuICAvLyBBbHdheXMgcmV0dXJuIGEgUHJvbWlzZSBmb3IgYSBjb25zaXN0ZW50IEFQSS5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiByZXNvbHZlKGdyYXBocWxJbXBsKGFyZ3MpKSk7XG59XG4vKipcbiAqIFRoZSBncmFwaHFsU3luYyBmdW5jdGlvbiBhbHNvIGZ1bGZpbGxzIEdyYXBoUUwgb3BlcmF0aW9ucyBieSBwYXJzaW5nLFxuICogdmFsaWRhdGluZywgYW5kIGV4ZWN1dGluZyBhIEdyYXBoUUwgZG9jdW1lbnQgYWxvbmcgc2lkZSBhIEdyYXBoUUwgc2NoZW1hLlxuICogSG93ZXZlciwgaXQgZ3VhcmFudGVlcyB0byBjb21wbGV0ZSBzeW5jaHJvbm91c2x5IChvciB0aHJvdyBhbiBlcnJvcikgYXNzdW1pbmdcbiAqIHRoYXQgYWxsIGZpZWxkIHJlc29sdmVycyBhcmUgYWxzbyBzeW5jaHJvbm91cy5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ3JhcGhxbFN5bmMoYXJncykge1xuICBjb25zdCByZXN1bHQgPSBncmFwaHFsSW1wbChhcmdzKTsgLy8gQXNzZXJ0IHRoYXQgdGhlIGV4ZWN1dGlvbiB3YXMgc3luY2hyb25vdXMuXG5cbiAgaWYgKGlzUHJvbWlzZShyZXN1bHQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHcmFwaFFMIGV4ZWN1dGlvbiBmYWlsZWQgdG8gY29tcGxldGUgc3luY2hyb25vdXNseS4nKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGdyYXBocWxJbXBsKGFyZ3MpIHtcbiAgLy8gVGVtcG9yYXJ5IGZvciB2MTUgdG8gdjE2IG1pZ3JhdGlvbi4gUmVtb3ZlIGluIHYxN1xuICBhcmd1bWVudHMubGVuZ3RoIDwgMiB8fFxuICAgIGRldkFzc2VydChcbiAgICAgIGZhbHNlLFxuICAgICAgJ2dyYXBocWxAMTYgZHJvcHBlZCBsb25nLWRlcHJlY2F0ZWQgc3VwcG9ydCBmb3IgcG9zaXRpb25hbCBhcmd1bWVudHMsIHBsZWFzZSBwYXNzIGFuIG9iamVjdCBpbnN0ZWFkLicsXG4gICAgKTtcbiAgY29uc3Qge1xuICAgIHNjaGVtYSxcbiAgICBzb3VyY2UsXG4gICAgcm9vdFZhbHVlLFxuICAgIGNvbnRleHRWYWx1ZSxcbiAgICB2YXJpYWJsZVZhbHVlcyxcbiAgICBvcGVyYXRpb25OYW1lLFxuICAgIGZpZWxkUmVzb2x2ZXIsXG4gICAgdHlwZVJlc29sdmVyLFxuICB9ID0gYXJnczsgLy8gVmFsaWRhdGUgU2NoZW1hXG5cbiAgY29uc3Qgc2NoZW1hVmFsaWRhdGlvbkVycm9ycyA9IHZhbGlkYXRlU2NoZW1hKHNjaGVtYSk7XG5cbiAgaWYgKHNjaGVtYVZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB7XG4gICAgICBlcnJvcnM6IHNjaGVtYVZhbGlkYXRpb25FcnJvcnMsXG4gICAgfTtcbiAgfSAvLyBQYXJzZVxuXG4gIGxldCBkb2N1bWVudDtcblxuICB0cnkge1xuICAgIGRvY3VtZW50ID0gcGFyc2Uoc291cmNlKTtcbiAgfSBjYXRjaCAoc3ludGF4RXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3JzOiBbc3ludGF4RXJyb3JdLFxuICAgIH07XG4gIH0gLy8gVmFsaWRhdGVcblxuICBjb25zdCB2YWxpZGF0aW9uRXJyb3JzID0gdmFsaWRhdGUoc2NoZW1hLCBkb2N1bWVudCk7XG5cbiAgaWYgKHZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB7XG4gICAgICBlcnJvcnM6IHZhbGlkYXRpb25FcnJvcnMsXG4gICAgfTtcbiAgfSAvLyBFeGVjdXRlXG5cbiAgcmV0dXJuIGV4ZWN1dGUoe1xuICAgIHNjaGVtYSxcbiAgICBkb2N1bWVudCxcbiAgICByb290VmFsdWUsXG4gICAgY29udGV4dFZhbHVlLFxuICAgIHZhcmlhYmxlVmFsdWVzLFxuICAgIG9wZXJhdGlvbk5hbWUsXG4gICAgZmllbGRSZXNvbHZlcixcbiAgICB0eXBlUmVzb2x2ZXIsXG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/graphql.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/index.mjs":
/*!****************************************!*\
  !*** ./node_modules/graphql/index.mjs ***!
  \****************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BREAK\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.BREAK; },\n/* harmony export */   \"BreakingChangeType\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.BreakingChangeType; },\n/* harmony export */   \"DEFAULT_DEPRECATION_REASON\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_DEPRECATION_REASON; },\n/* harmony export */   \"DangerousChangeType\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.DangerousChangeType; },\n/* harmony export */   \"DirectiveLocation\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.DirectiveLocation; },\n/* harmony export */   \"ExecutableDefinitionsRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.ExecutableDefinitionsRule; },\n/* harmony export */   \"FieldsOnCorrectTypeRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.FieldsOnCorrectTypeRule; },\n/* harmony export */   \"FragmentsOnCompositeTypesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.FragmentsOnCompositeTypesRule; },\n/* harmony export */   \"GRAPHQL_MAX_INT\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GRAPHQL_MAX_INT; },\n/* harmony export */   \"GRAPHQL_MIN_INT\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GRAPHQL_MIN_INT; },\n/* harmony export */   \"GraphQLBoolean\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLBoolean; },\n/* harmony export */   \"GraphQLDeprecatedDirective\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLDeprecatedDirective; },\n/* harmony export */   \"GraphQLDirective\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLDirective; },\n/* harmony export */   \"GraphQLEnumType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLEnumType; },\n/* harmony export */   \"GraphQLError\": function() { return /* reexport safe */ _error_index_mjs__WEBPACK_IMPORTED_MODULE_6__.GraphQLError; },\n/* harmony export */   \"GraphQLFloat\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLFloat; },\n/* harmony export */   \"GraphQLID\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLID; },\n/* harmony export */   \"GraphQLIncludeDirective\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLIncludeDirective; },\n/* harmony export */   \"GraphQLInputObjectType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLInputObjectType; },\n/* harmony export */   \"GraphQLInt\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLInt; },\n/* harmony export */   \"GraphQLInterfaceType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLInterfaceType; },\n/* harmony export */   \"GraphQLList\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLList; },\n/* harmony export */   \"GraphQLNonNull\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLNonNull; },\n/* harmony export */   \"GraphQLObjectType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLObjectType; },\n/* harmony export */   \"GraphQLScalarType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLScalarType; },\n/* harmony export */   \"GraphQLSchema\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLSchema; },\n/* harmony export */   \"GraphQLSkipDirective\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLSkipDirective; },\n/* harmony export */   \"GraphQLSpecifiedByDirective\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLSpecifiedByDirective; },\n/* harmony export */   \"GraphQLString\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLString; },\n/* harmony export */   \"GraphQLUnionType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLUnionType; },\n/* harmony export */   \"Kind\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind; },\n/* harmony export */   \"KnownArgumentNamesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.KnownArgumentNamesRule; },\n/* harmony export */   \"KnownDirectivesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.KnownDirectivesRule; },\n/* harmony export */   \"KnownFragmentNamesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.KnownFragmentNamesRule; },\n/* harmony export */   \"KnownTypeNamesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.KnownTypeNamesRule; },\n/* harmony export */   \"Lexer\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.Lexer; },\n/* harmony export */   \"Location\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.Location; },\n/* harmony export */   \"LoneAnonymousOperationRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.LoneAnonymousOperationRule; },\n/* harmony export */   \"LoneSchemaDefinitionRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.LoneSchemaDefinitionRule; },\n/* harmony export */   \"NoDeprecatedCustomRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.NoDeprecatedCustomRule; },\n/* harmony export */   \"NoFragmentCyclesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.NoFragmentCyclesRule; },\n/* harmony export */   \"NoSchemaIntrospectionCustomRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.NoSchemaIntrospectionCustomRule; },\n/* harmony export */   \"NoUndefinedVariablesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.NoUndefinedVariablesRule; },\n/* harmony export */   \"NoUnusedFragmentsRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.NoUnusedFragmentsRule; },\n/* harmony export */   \"NoUnusedVariablesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.NoUnusedVariablesRule; },\n/* harmony export */   \"OperationTypeNode\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.OperationTypeNode; },\n/* harmony export */   \"OverlappingFieldsCanBeMergedRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.OverlappingFieldsCanBeMergedRule; },\n/* harmony export */   \"PossibleFragmentSpreadsRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.PossibleFragmentSpreadsRule; },\n/* harmony export */   \"PossibleTypeExtensionsRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.PossibleTypeExtensionsRule; },\n/* harmony export */   \"ProvidedRequiredArgumentsRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.ProvidedRequiredArgumentsRule; },\n/* harmony export */   \"ScalarLeafsRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.ScalarLeafsRule; },\n/* harmony export */   \"SchemaMetaFieldDef\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.SchemaMetaFieldDef; },\n/* harmony export */   \"SingleFieldSubscriptionsRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.SingleFieldSubscriptionsRule; },\n/* harmony export */   \"Source\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.Source; },\n/* harmony export */   \"Token\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.Token; },\n/* harmony export */   \"TokenKind\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.TokenKind; },\n/* harmony export */   \"TypeInfo\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.TypeInfo; },\n/* harmony export */   \"TypeKind\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.TypeKind; },\n/* harmony export */   \"TypeMetaFieldDef\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.TypeMetaFieldDef; },\n/* harmony export */   \"TypeNameMetaFieldDef\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.TypeNameMetaFieldDef; },\n/* harmony export */   \"UniqueArgumentDefinitionNamesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.UniqueArgumentDefinitionNamesRule; },\n/* harmony export */   \"UniqueArgumentNamesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.UniqueArgumentNamesRule; },\n/* harmony export */   \"UniqueDirectiveNamesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.UniqueDirectiveNamesRule; },\n/* harmony export */   \"UniqueDirectivesPerLocationRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.UniqueDirectivesPerLocationRule; },\n/* harmony export */   \"UniqueEnumValueNamesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.UniqueEnumValueNamesRule; },\n/* harmony export */   \"UniqueFieldDefinitionNamesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.UniqueFieldDefinitionNamesRule; },\n/* harmony export */   \"UniqueFragmentNamesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.UniqueFragmentNamesRule; },\n/* harmony export */   \"UniqueInputFieldNamesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.UniqueInputFieldNamesRule; },\n/* harmony export */   \"UniqueOperationNamesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.UniqueOperationNamesRule; },\n/* harmony export */   \"UniqueOperationTypesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.UniqueOperationTypesRule; },\n/* harmony export */   \"UniqueTypeNamesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.UniqueTypeNamesRule; },\n/* harmony export */   \"UniqueVariableNamesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.UniqueVariableNamesRule; },\n/* harmony export */   \"ValidationContext\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.ValidationContext; },\n/* harmony export */   \"ValuesOfCorrectTypeRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.ValuesOfCorrectTypeRule; },\n/* harmony export */   \"VariablesAreInputTypesRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VariablesAreInputTypesRule; },\n/* harmony export */   \"VariablesInAllowedPositionRule\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.VariablesInAllowedPositionRule; },\n/* harmony export */   \"__Directive\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.__Directive; },\n/* harmony export */   \"__DirectiveLocation\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.__DirectiveLocation; },\n/* harmony export */   \"__EnumValue\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.__EnumValue; },\n/* harmony export */   \"__Field\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.__Field; },\n/* harmony export */   \"__InputValue\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.__InputValue; },\n/* harmony export */   \"__Schema\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.__Schema; },\n/* harmony export */   \"__Type\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.__Type; },\n/* harmony export */   \"__TypeKind\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.__TypeKind; },\n/* harmony export */   \"assertAbstractType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertAbstractType; },\n/* harmony export */   \"assertCompositeType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertCompositeType; },\n/* harmony export */   \"assertDirective\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertDirective; },\n/* harmony export */   \"assertEnumType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertEnumType; },\n/* harmony export */   \"assertEnumValueName\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertEnumValueName; },\n/* harmony export */   \"assertInputObjectType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertInputObjectType; },\n/* harmony export */   \"assertInputType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertInputType; },\n/* harmony export */   \"assertInterfaceType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertInterfaceType; },\n/* harmony export */   \"assertLeafType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertLeafType; },\n/* harmony export */   \"assertListType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertListType; },\n/* harmony export */   \"assertName\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertName; },\n/* harmony export */   \"assertNamedType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertNamedType; },\n/* harmony export */   \"assertNonNullType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertNonNullType; },\n/* harmony export */   \"assertNullableType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertNullableType; },\n/* harmony export */   \"assertObjectType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertObjectType; },\n/* harmony export */   \"assertOutputType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertOutputType; },\n/* harmony export */   \"assertScalarType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertScalarType; },\n/* harmony export */   \"assertSchema\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertSchema; },\n/* harmony export */   \"assertType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertType; },\n/* harmony export */   \"assertUnionType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertUnionType; },\n/* harmony export */   \"assertValidName\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.assertValidName; },\n/* harmony export */   \"assertValidSchema\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertValidSchema; },\n/* harmony export */   \"assertWrappingType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.assertWrappingType; },\n/* harmony export */   \"astFromValue\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.astFromValue; },\n/* harmony export */   \"buildASTSchema\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.buildASTSchema; },\n/* harmony export */   \"buildClientSchema\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.buildClientSchema; },\n/* harmony export */   \"buildSchema\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.buildSchema; },\n/* harmony export */   \"coerceInputValue\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.coerceInputValue; },\n/* harmony export */   \"concatAST\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.concatAST; },\n/* harmony export */   \"createSourceEventStream\": function() { return /* reexport safe */ _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__.createSourceEventStream; },\n/* harmony export */   \"defaultFieldResolver\": function() { return /* reexport safe */ _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__.defaultFieldResolver; },\n/* harmony export */   \"defaultTypeResolver\": function() { return /* reexport safe */ _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__.defaultTypeResolver; },\n/* harmony export */   \"doTypesOverlap\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.doTypesOverlap; },\n/* harmony export */   \"execute\": function() { return /* reexport safe */ _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__.execute; },\n/* harmony export */   \"executeSync\": function() { return /* reexport safe */ _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__.executeSync; },\n/* harmony export */   \"extendSchema\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.extendSchema; },\n/* harmony export */   \"findBreakingChanges\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.findBreakingChanges; },\n/* harmony export */   \"findDangerousChanges\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.findDangerousChanges; },\n/* harmony export */   \"formatError\": function() { return /* reexport safe */ _error_index_mjs__WEBPACK_IMPORTED_MODULE_6__.formatError; },\n/* harmony export */   \"getDirectiveValues\": function() { return /* reexport safe */ _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__.getDirectiveValues; },\n/* harmony export */   \"getEnterLeaveForKind\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.getEnterLeaveForKind; },\n/* harmony export */   \"getIntrospectionQuery\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.getIntrospectionQuery; },\n/* harmony export */   \"getLocation\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.getLocation; },\n/* harmony export */   \"getNamedType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.getNamedType; },\n/* harmony export */   \"getNullableType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.getNullableType; },\n/* harmony export */   \"getOperationAST\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.getOperationAST; },\n/* harmony export */   \"getOperationRootType\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.getOperationRootType; },\n/* harmony export */   \"getVariableValues\": function() { return /* reexport safe */ _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__.getVariableValues; },\n/* harmony export */   \"getVisitFn\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.getVisitFn; },\n/* harmony export */   \"graphql\": function() { return /* reexport safe */ _graphql_mjs__WEBPACK_IMPORTED_MODULE_1__.graphql; },\n/* harmony export */   \"graphqlSync\": function() { return /* reexport safe */ _graphql_mjs__WEBPACK_IMPORTED_MODULE_1__.graphqlSync; },\n/* harmony export */   \"introspectionFromSchema\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.introspectionFromSchema; },\n/* harmony export */   \"introspectionTypes\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.introspectionTypes; },\n/* harmony export */   \"isAbstractType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isAbstractType; },\n/* harmony export */   \"isCompositeType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isCompositeType; },\n/* harmony export */   \"isConstValueNode\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.isConstValueNode; },\n/* harmony export */   \"isDefinitionNode\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.isDefinitionNode; },\n/* harmony export */   \"isDirective\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isDirective; },\n/* harmony export */   \"isEnumType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isEnumType; },\n/* harmony export */   \"isEqualType\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.isEqualType; },\n/* harmony export */   \"isExecutableDefinitionNode\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.isExecutableDefinitionNode; },\n/* harmony export */   \"isInputObjectType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isInputObjectType; },\n/* harmony export */   \"isInputType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isInputType; },\n/* harmony export */   \"isInterfaceType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isInterfaceType; },\n/* harmony export */   \"isIntrospectionType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isIntrospectionType; },\n/* harmony export */   \"isLeafType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isLeafType; },\n/* harmony export */   \"isListType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isListType; },\n/* harmony export */   \"isNamedType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isNamedType; },\n/* harmony export */   \"isNonNullType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isNonNullType; },\n/* harmony export */   \"isNullableType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isNullableType; },\n/* harmony export */   \"isObjectType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isObjectType; },\n/* harmony export */   \"isOutputType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isOutputType; },\n/* harmony export */   \"isRequiredArgument\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isRequiredArgument; },\n/* harmony export */   \"isRequiredInputField\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isRequiredInputField; },\n/* harmony export */   \"isScalarType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isScalarType; },\n/* harmony export */   \"isSchema\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isSchema; },\n/* harmony export */   \"isSelectionNode\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.isSelectionNode; },\n/* harmony export */   \"isSpecifiedDirective\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isSpecifiedDirective; },\n/* harmony export */   \"isSpecifiedScalarType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isSpecifiedScalarType; },\n/* harmony export */   \"isType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isType; },\n/* harmony export */   \"isTypeDefinitionNode\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.isTypeDefinitionNode; },\n/* harmony export */   \"isTypeExtensionNode\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.isTypeExtensionNode; },\n/* harmony export */   \"isTypeNode\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.isTypeNode; },\n/* harmony export */   \"isTypeSubTypeOf\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.isTypeSubTypeOf; },\n/* harmony export */   \"isTypeSystemDefinitionNode\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.isTypeSystemDefinitionNode; },\n/* harmony export */   \"isTypeSystemExtensionNode\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.isTypeSystemExtensionNode; },\n/* harmony export */   \"isUnionType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isUnionType; },\n/* harmony export */   \"isValidNameError\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.isValidNameError; },\n/* harmony export */   \"isValueNode\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.isValueNode; },\n/* harmony export */   \"isWrappingType\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.isWrappingType; },\n/* harmony export */   \"lexicographicSortSchema\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.lexicographicSortSchema; },\n/* harmony export */   \"locatedError\": function() { return /* reexport safe */ _error_index_mjs__WEBPACK_IMPORTED_MODULE_6__.locatedError; },\n/* harmony export */   \"parse\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.parse; },\n/* harmony export */   \"parseConstValue\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.parseConstValue; },\n/* harmony export */   \"parseType\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.parseType; },\n/* harmony export */   \"parseValue\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.parseValue; },\n/* harmony export */   \"print\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.print; },\n/* harmony export */   \"printError\": function() { return /* reexport safe */ _error_index_mjs__WEBPACK_IMPORTED_MODULE_6__.printError; },\n/* harmony export */   \"printIntrospectionSchema\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.printIntrospectionSchema; },\n/* harmony export */   \"printLocation\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.printLocation; },\n/* harmony export */   \"printSchema\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.printSchema; },\n/* harmony export */   \"printSourceLocation\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.printSourceLocation; },\n/* harmony export */   \"printType\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.printType; },\n/* harmony export */   \"resolveObjMapThunk\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.resolveObjMapThunk; },\n/* harmony export */   \"resolveReadonlyArrayThunk\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.resolveReadonlyArrayThunk; },\n/* harmony export */   \"responsePathAsArray\": function() { return /* reexport safe */ _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__.responsePathAsArray; },\n/* harmony export */   \"separateOperations\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.separateOperations; },\n/* harmony export */   \"specifiedDirectives\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.specifiedDirectives; },\n/* harmony export */   \"specifiedRules\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.specifiedRules; },\n/* harmony export */   \"specifiedScalarTypes\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.specifiedScalarTypes; },\n/* harmony export */   \"stripIgnoredCharacters\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.stripIgnoredCharacters; },\n/* harmony export */   \"subscribe\": function() { return /* reexport safe */ _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__.subscribe; },\n/* harmony export */   \"syntaxError\": function() { return /* reexport safe */ _error_index_mjs__WEBPACK_IMPORTED_MODULE_6__.syntaxError; },\n/* harmony export */   \"typeFromAST\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.typeFromAST; },\n/* harmony export */   \"validate\": function() { return /* reexport safe */ _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__.validate; },\n/* harmony export */   \"validateSchema\": function() { return /* reexport safe */ _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__.validateSchema; },\n/* harmony export */   \"valueFromAST\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.valueFromAST; },\n/* harmony export */   \"valueFromASTUntyped\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.valueFromASTUntyped; },\n/* harmony export */   \"version\": function() { return /* reexport safe */ _version_mjs__WEBPACK_IMPORTED_MODULE_0__.version; },\n/* harmony export */   \"versionInfo\": function() { return /* reexport safe */ _version_mjs__WEBPACK_IMPORTED_MODULE_0__.versionInfo; },\n/* harmony export */   \"visit\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.visit; },\n/* harmony export */   \"visitInParallel\": function() { return /* reexport safe */ _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__.visitInParallel; },\n/* harmony export */   \"visitWithTypeInfo\": function() { return /* reexport safe */ _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__.visitWithTypeInfo; }\n/* harmony export */ });\n/* harmony import */ var _version_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./version.mjs */ \"./node_modules/graphql/version.mjs\");\n/* harmony import */ var _graphql_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./graphql.mjs */ \"./node_modules/graphql/graphql.mjs\");\n/* harmony import */ var _type_index_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./type/index.mjs */ \"./node_modules/graphql/type/index.mjs\");\n/* harmony import */ var _language_index_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./language/index.mjs */ \"./node_modules/graphql/language/index.mjs\");\n/* harmony import */ var _execution_index_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./execution/index.mjs */ \"./node_modules/graphql/execution/index.mjs\");\n/* harmony import */ var _validation_index_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./validation/index.mjs */ \"./node_modules/graphql/validation/index.mjs\");\n/* harmony import */ var _error_index_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./error/index.mjs */ \"./node_modules/graphql/error/index.mjs\");\n/* harmony import */ var _utilities_index_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utilities/index.mjs */ \"./node_modules/graphql/utilities/index.mjs\");\n/**\n * GraphQL.js provides a reference implementation for the GraphQL specification\n * but is also a useful utility for operating on GraphQL files and building\n * sophisticated tools.\n *\n * This primary module exports a general purpose function for fulfilling all\n * steps of the GraphQL specification in a single operation, but also includes\n * utilities for every part of the GraphQL specification:\n *\n *   - Parsing the GraphQL language.\n *   - Building a GraphQL type schema.\n *   - Validating a GraphQL request against a type schema.\n *   - Executing a GraphQL request against a type schema.\n *\n * This also includes utility functions for operating on GraphQL types and\n * GraphQL documents to facilitate building tools.\n *\n * You may also import from each sub-directory directly. For example, the\n * following two import statements are equivalent:\n *\n * ```ts\n * import { parse } from 'graphql';\n * import { parse } from 'graphql/language';\n * ```\n *\n * @packageDocumentation\n */\n// The GraphQL.js version info.\n // The primary entry point into fulfilling a GraphQL request.\n\n // Create and operate on GraphQL type definitions and schema.\n\n\n// Parse and operate on GraphQL language source files.\n\n// Execute GraphQL queries.\n\n// Validate GraphQL documents.\n\n// Create, format, and print GraphQL errors.\n\n// Utilities for operating on GraphQL type schema and parsed sources.\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9pbmRleC5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEIsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDcUQsQ0FBQzs7QUFFRCxDQUFDOztBQTJGNUI7QUFDMUI7QUFpQzhCO0FBQzlCO0FBVytCO0FBQy9CO0FBeUNnQztBQUNoQztBQU8yQjtBQUMzQjtBQW1DK0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvaW5kZXgubWpzPzA4NTciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHcmFwaFFMLmpzIHByb3ZpZGVzIGEgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGZvciB0aGUgR3JhcGhRTCBzcGVjaWZpY2F0aW9uXG4gKiBidXQgaXMgYWxzbyBhIHVzZWZ1bCB1dGlsaXR5IGZvciBvcGVyYXRpbmcgb24gR3JhcGhRTCBmaWxlcyBhbmQgYnVpbGRpbmdcbiAqIHNvcGhpc3RpY2F0ZWQgdG9vbHMuXG4gKlxuICogVGhpcyBwcmltYXJ5IG1vZHVsZSBleHBvcnRzIGEgZ2VuZXJhbCBwdXJwb3NlIGZ1bmN0aW9uIGZvciBmdWxmaWxsaW5nIGFsbFxuICogc3RlcHMgb2YgdGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbiBpbiBhIHNpbmdsZSBvcGVyYXRpb24sIGJ1dCBhbHNvIGluY2x1ZGVzXG4gKiB1dGlsaXRpZXMgZm9yIGV2ZXJ5IHBhcnQgb2YgdGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbjpcbiAqXG4gKiAgIC0gUGFyc2luZyB0aGUgR3JhcGhRTCBsYW5ndWFnZS5cbiAqICAgLSBCdWlsZGluZyBhIEdyYXBoUUwgdHlwZSBzY2hlbWEuXG4gKiAgIC0gVmFsaWRhdGluZyBhIEdyYXBoUUwgcmVxdWVzdCBhZ2FpbnN0IGEgdHlwZSBzY2hlbWEuXG4gKiAgIC0gRXhlY3V0aW5nIGEgR3JhcGhRTCByZXF1ZXN0IGFnYWluc3QgYSB0eXBlIHNjaGVtYS5cbiAqXG4gKiBUaGlzIGFsc28gaW5jbHVkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIG9wZXJhdGluZyBvbiBHcmFwaFFMIHR5cGVzIGFuZFxuICogR3JhcGhRTCBkb2N1bWVudHMgdG8gZmFjaWxpdGF0ZSBidWlsZGluZyB0b29scy5cbiAqXG4gKiBZb3UgbWF5IGFsc28gaW1wb3J0IGZyb20gZWFjaCBzdWItZGlyZWN0b3J5IGRpcmVjdGx5LiBGb3IgZXhhbXBsZSwgdGhlXG4gKiBmb2xsb3dpbmcgdHdvIGltcG9ydCBzdGF0ZW1lbnRzIGFyZSBlcXVpdmFsZW50OlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwYXJzZSB9IGZyb20gJ2dyYXBocWwnO1xuICogaW1wb3J0IHsgcGFyc2UgfSBmcm9tICdncmFwaHFsL2xhbmd1YWdlJztcbiAqIGBgYFxuICpcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICovXG4vLyBUaGUgR3JhcGhRTC5qcyB2ZXJzaW9uIGluZm8uXG5leHBvcnQgeyB2ZXJzaW9uLCB2ZXJzaW9uSW5mbyB9IGZyb20gJy4vdmVyc2lvbi5tanMnOyAvLyBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludCBpbnRvIGZ1bGZpbGxpbmcgYSBHcmFwaFFMIHJlcXVlc3QuXG5cbmV4cG9ydCB7IGdyYXBocWwsIGdyYXBocWxTeW5jIH0gZnJvbSAnLi9ncmFwaHFsLm1qcyc7IC8vIENyZWF0ZSBhbmQgb3BlcmF0ZSBvbiBHcmFwaFFMIHR5cGUgZGVmaW5pdGlvbnMgYW5kIHNjaGVtYS5cblxuZXhwb3J0IHtcbiAgcmVzb2x2ZU9iak1hcFRodW5rLFxuICByZXNvbHZlUmVhZG9ubHlBcnJheVRodW5rLCAvLyBEZWZpbml0aW9uc1xuICBHcmFwaFFMU2NoZW1hLFxuICBHcmFwaFFMRGlyZWN0aXZlLFxuICBHcmFwaFFMU2NhbGFyVHlwZSxcbiAgR3JhcGhRTE9iamVjdFR5cGUsXG4gIEdyYXBoUUxJbnRlcmZhY2VUeXBlLFxuICBHcmFwaFFMVW5pb25UeXBlLFxuICBHcmFwaFFMRW51bVR5cGUsXG4gIEdyYXBoUUxJbnB1dE9iamVjdFR5cGUsXG4gIEdyYXBoUUxMaXN0LFxuICBHcmFwaFFMTm9uTnVsbCwgLy8gU3RhbmRhcmQgR3JhcGhRTCBTY2FsYXJzXG4gIHNwZWNpZmllZFNjYWxhclR5cGVzLFxuICBHcmFwaFFMSW50LFxuICBHcmFwaFFMRmxvYXQsXG4gIEdyYXBoUUxTdHJpbmcsXG4gIEdyYXBoUUxCb29sZWFuLFxuICBHcmFwaFFMSUQsIC8vIEludCBib3VuZGFyaWVzIGNvbnN0YW50c1xuICBHUkFQSFFMX01BWF9JTlQsXG4gIEdSQVBIUUxfTUlOX0lOVCwgLy8gQnVpbHQtaW4gRGlyZWN0aXZlcyBkZWZpbmVkIGJ5IHRoZSBTcGVjXG4gIHNwZWNpZmllZERpcmVjdGl2ZXMsXG4gIEdyYXBoUUxJbmNsdWRlRGlyZWN0aXZlLFxuICBHcmFwaFFMU2tpcERpcmVjdGl2ZSxcbiAgR3JhcGhRTERlcHJlY2F0ZWREaXJlY3RpdmUsXG4gIEdyYXBoUUxTcGVjaWZpZWRCeURpcmVjdGl2ZSwgLy8gXCJFbnVtXCIgb2YgVHlwZSBLaW5kc1xuICBUeXBlS2luZCwgLy8gQ29uc3RhbnQgRGVwcmVjYXRpb24gUmVhc29uXG4gIERFRkFVTFRfREVQUkVDQVRJT05fUkVBU09OLCAvLyBHcmFwaFFMIFR5cGVzIGZvciBpbnRyb3NwZWN0aW9uLlxuICBpbnRyb3NwZWN0aW9uVHlwZXMsXG4gIF9fU2NoZW1hLFxuICBfX0RpcmVjdGl2ZSxcbiAgX19EaXJlY3RpdmVMb2NhdGlvbixcbiAgX19UeXBlLFxuICBfX0ZpZWxkLFxuICBfX0lucHV0VmFsdWUsXG4gIF9fRW51bVZhbHVlLFxuICBfX1R5cGVLaW5kLCAvLyBNZXRhLWZpZWxkIGRlZmluaXRpb25zLlxuICBTY2hlbWFNZXRhRmllbGREZWYsXG4gIFR5cGVNZXRhRmllbGREZWYsXG4gIFR5cGVOYW1lTWV0YUZpZWxkRGVmLCAvLyBQcmVkaWNhdGVzXG4gIGlzU2NoZW1hLFxuICBpc0RpcmVjdGl2ZSxcbiAgaXNUeXBlLFxuICBpc1NjYWxhclR5cGUsXG4gIGlzT2JqZWN0VHlwZSxcbiAgaXNJbnRlcmZhY2VUeXBlLFxuICBpc1VuaW9uVHlwZSxcbiAgaXNFbnVtVHlwZSxcbiAgaXNJbnB1dE9iamVjdFR5cGUsXG4gIGlzTGlzdFR5cGUsXG4gIGlzTm9uTnVsbFR5cGUsXG4gIGlzSW5wdXRUeXBlLFxuICBpc091dHB1dFR5cGUsXG4gIGlzTGVhZlR5cGUsXG4gIGlzQ29tcG9zaXRlVHlwZSxcbiAgaXNBYnN0cmFjdFR5cGUsXG4gIGlzV3JhcHBpbmdUeXBlLFxuICBpc051bGxhYmxlVHlwZSxcbiAgaXNOYW1lZFR5cGUsXG4gIGlzUmVxdWlyZWRBcmd1bWVudCxcbiAgaXNSZXF1aXJlZElucHV0RmllbGQsXG4gIGlzU3BlY2lmaWVkU2NhbGFyVHlwZSxcbiAgaXNJbnRyb3NwZWN0aW9uVHlwZSxcbiAgaXNTcGVjaWZpZWREaXJlY3RpdmUsIC8vIEFzc2VydGlvbnNcbiAgYXNzZXJ0U2NoZW1hLFxuICBhc3NlcnREaXJlY3RpdmUsXG4gIGFzc2VydFR5cGUsXG4gIGFzc2VydFNjYWxhclR5cGUsXG4gIGFzc2VydE9iamVjdFR5cGUsXG4gIGFzc2VydEludGVyZmFjZVR5cGUsXG4gIGFzc2VydFVuaW9uVHlwZSxcbiAgYXNzZXJ0RW51bVR5cGUsXG4gIGFzc2VydElucHV0T2JqZWN0VHlwZSxcbiAgYXNzZXJ0TGlzdFR5cGUsXG4gIGFzc2VydE5vbk51bGxUeXBlLFxuICBhc3NlcnRJbnB1dFR5cGUsXG4gIGFzc2VydE91dHB1dFR5cGUsXG4gIGFzc2VydExlYWZUeXBlLFxuICBhc3NlcnRDb21wb3NpdGVUeXBlLFxuICBhc3NlcnRBYnN0cmFjdFR5cGUsXG4gIGFzc2VydFdyYXBwaW5nVHlwZSxcbiAgYXNzZXJ0TnVsbGFibGVUeXBlLFxuICBhc3NlcnROYW1lZFR5cGUsIC8vIFVuLW1vZGlmaWVyc1xuICBnZXROdWxsYWJsZVR5cGUsXG4gIGdldE5hbWVkVHlwZSwgLy8gVmFsaWRhdGUgR3JhcGhRTCBzY2hlbWEuXG4gIHZhbGlkYXRlU2NoZW1hLFxuICBhc3NlcnRWYWxpZFNjaGVtYSwgLy8gVXBob2xkcyB0aGUgc3BlYyBydWxlcyBhYm91dCBuYW1pbmcuXG4gIGFzc2VydE5hbWUsXG4gIGFzc2VydEVudW1WYWx1ZU5hbWUsXG59IGZyb20gJy4vdHlwZS9pbmRleC5tanMnO1xuLy8gUGFyc2UgYW5kIG9wZXJhdGUgb24gR3JhcGhRTCBsYW5ndWFnZSBzb3VyY2UgZmlsZXMuXG5leHBvcnQge1xuICBUb2tlbixcbiAgU291cmNlLFxuICBMb2NhdGlvbixcbiAgT3BlcmF0aW9uVHlwZU5vZGUsXG4gIGdldExvY2F0aW9uLCAvLyBQcmludCBzb3VyY2UgbG9jYXRpb24uXG4gIHByaW50TG9jYXRpb24sXG4gIHByaW50U291cmNlTG9jYXRpb24sIC8vIExleFxuICBMZXhlcixcbiAgVG9rZW5LaW5kLCAvLyBQYXJzZVxuICBwYXJzZSxcbiAgcGFyc2VWYWx1ZSxcbiAgcGFyc2VDb25zdFZhbHVlLFxuICBwYXJzZVR5cGUsIC8vIFByaW50XG4gIHByaW50LCAvLyBWaXNpdFxuICB2aXNpdCxcbiAgdmlzaXRJblBhcmFsbGVsLFxuICBnZXRWaXNpdEZuLFxuICBnZXRFbnRlckxlYXZlRm9yS2luZCxcbiAgQlJFQUssXG4gIEtpbmQsXG4gIERpcmVjdGl2ZUxvY2F0aW9uLCAvLyBQcmVkaWNhdGVzXG4gIGlzRGVmaW5pdGlvbk5vZGUsXG4gIGlzRXhlY3V0YWJsZURlZmluaXRpb25Ob2RlLFxuICBpc1NlbGVjdGlvbk5vZGUsXG4gIGlzVmFsdWVOb2RlLFxuICBpc0NvbnN0VmFsdWVOb2RlLFxuICBpc1R5cGVOb2RlLFxuICBpc1R5cGVTeXN0ZW1EZWZpbml0aW9uTm9kZSxcbiAgaXNUeXBlRGVmaW5pdGlvbk5vZGUsXG4gIGlzVHlwZVN5c3RlbUV4dGVuc2lvbk5vZGUsXG4gIGlzVHlwZUV4dGVuc2lvbk5vZGUsXG59IGZyb20gJy4vbGFuZ3VhZ2UvaW5kZXgubWpzJztcbi8vIEV4ZWN1dGUgR3JhcGhRTCBxdWVyaWVzLlxuZXhwb3J0IHtcbiAgZXhlY3V0ZSxcbiAgZXhlY3V0ZVN5bmMsXG4gIGRlZmF1bHRGaWVsZFJlc29sdmVyLFxuICBkZWZhdWx0VHlwZVJlc29sdmVyLFxuICByZXNwb25zZVBhdGhBc0FycmF5LFxuICBnZXRWYXJpYWJsZVZhbHVlcyxcbiAgZ2V0RGlyZWN0aXZlVmFsdWVzLFxuICBzdWJzY3JpYmUsXG4gIGNyZWF0ZVNvdXJjZUV2ZW50U3RyZWFtLFxufSBmcm9tICcuL2V4ZWN1dGlvbi9pbmRleC5tanMnO1xuLy8gVmFsaWRhdGUgR3JhcGhRTCBkb2N1bWVudHMuXG5leHBvcnQge1xuICB2YWxpZGF0ZSxcbiAgVmFsaWRhdGlvbkNvbnRleHQsIC8vIEFsbCB2YWxpZGF0aW9uIHJ1bGVzIGluIHRoZSBHcmFwaFFMIFNwZWNpZmljYXRpb24uXG4gIHNwZWNpZmllZFJ1bGVzLCAvLyBJbmRpdmlkdWFsIHZhbGlkYXRpb24gcnVsZXMuXG4gIEV4ZWN1dGFibGVEZWZpbml0aW9uc1J1bGUsXG4gIEZpZWxkc09uQ29ycmVjdFR5cGVSdWxlLFxuICBGcmFnbWVudHNPbkNvbXBvc2l0ZVR5cGVzUnVsZSxcbiAgS25vd25Bcmd1bWVudE5hbWVzUnVsZSxcbiAgS25vd25EaXJlY3RpdmVzUnVsZSxcbiAgS25vd25GcmFnbWVudE5hbWVzUnVsZSxcbiAgS25vd25UeXBlTmFtZXNSdWxlLFxuICBMb25lQW5vbnltb3VzT3BlcmF0aW9uUnVsZSxcbiAgTm9GcmFnbWVudEN5Y2xlc1J1bGUsXG4gIE5vVW5kZWZpbmVkVmFyaWFibGVzUnVsZSxcbiAgTm9VbnVzZWRGcmFnbWVudHNSdWxlLFxuICBOb1VudXNlZFZhcmlhYmxlc1J1bGUsXG4gIE92ZXJsYXBwaW5nRmllbGRzQ2FuQmVNZXJnZWRSdWxlLFxuICBQb3NzaWJsZUZyYWdtZW50U3ByZWFkc1J1bGUsXG4gIFByb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNSdWxlLFxuICBTY2FsYXJMZWFmc1J1bGUsXG4gIFNpbmdsZUZpZWxkU3Vic2NyaXB0aW9uc1J1bGUsXG4gIFVuaXF1ZUFyZ3VtZW50TmFtZXNSdWxlLFxuICBVbmlxdWVEaXJlY3RpdmVzUGVyTG9jYXRpb25SdWxlLFxuICBVbmlxdWVGcmFnbWVudE5hbWVzUnVsZSxcbiAgVW5pcXVlSW5wdXRGaWVsZE5hbWVzUnVsZSxcbiAgVW5pcXVlT3BlcmF0aW9uTmFtZXNSdWxlLFxuICBVbmlxdWVWYXJpYWJsZU5hbWVzUnVsZSxcbiAgVmFsdWVzT2ZDb3JyZWN0VHlwZVJ1bGUsXG4gIFZhcmlhYmxlc0FyZUlucHV0VHlwZXNSdWxlLFxuICBWYXJpYWJsZXNJbkFsbG93ZWRQb3NpdGlvblJ1bGUsIC8vIFNETC1zcGVjaWZpYyB2YWxpZGF0aW9uIHJ1bGVzXG4gIExvbmVTY2hlbWFEZWZpbml0aW9uUnVsZSxcbiAgVW5pcXVlT3BlcmF0aW9uVHlwZXNSdWxlLFxuICBVbmlxdWVUeXBlTmFtZXNSdWxlLFxuICBVbmlxdWVFbnVtVmFsdWVOYW1lc1J1bGUsXG4gIFVuaXF1ZUZpZWxkRGVmaW5pdGlvbk5hbWVzUnVsZSxcbiAgVW5pcXVlQXJndW1lbnREZWZpbml0aW9uTmFtZXNSdWxlLFxuICBVbmlxdWVEaXJlY3RpdmVOYW1lc1J1bGUsXG4gIFBvc3NpYmxlVHlwZUV4dGVuc2lvbnNSdWxlLCAvLyBDdXN0b20gdmFsaWRhdGlvbiBydWxlc1xuICBOb0RlcHJlY2F0ZWRDdXN0b21SdWxlLFxuICBOb1NjaGVtYUludHJvc3BlY3Rpb25DdXN0b21SdWxlLFxufSBmcm9tICcuL3ZhbGlkYXRpb24vaW5kZXgubWpzJztcbi8vIENyZWF0ZSwgZm9ybWF0LCBhbmQgcHJpbnQgR3JhcGhRTCBlcnJvcnMuXG5leHBvcnQge1xuICBHcmFwaFFMRXJyb3IsXG4gIHN5bnRheEVycm9yLFxuICBsb2NhdGVkRXJyb3IsXG4gIHByaW50RXJyb3IsXG4gIGZvcm1hdEVycm9yLFxufSBmcm9tICcuL2Vycm9yL2luZGV4Lm1qcyc7XG4vLyBVdGlsaXRpZXMgZm9yIG9wZXJhdGluZyBvbiBHcmFwaFFMIHR5cGUgc2NoZW1hIGFuZCBwYXJzZWQgc291cmNlcy5cbmV4cG9ydCB7XG4gIC8vIFByb2R1Y2UgdGhlIEdyYXBoUUwgcXVlcnkgcmVjb21tZW5kZWQgZm9yIGEgZnVsbCBzY2hlbWEgaW50cm9zcGVjdGlvbi5cbiAgLy8gQWNjZXB0cyBvcHRpb25hbCBJbnRyb3NwZWN0aW9uT3B0aW9ucy5cbiAgZ2V0SW50cm9zcGVjdGlvblF1ZXJ5LCAvLyBHZXRzIHRoZSB0YXJnZXQgT3BlcmF0aW9uIGZyb20gYSBEb2N1bWVudC5cbiAgZ2V0T3BlcmF0aW9uQVNULCAvLyBHZXRzIHRoZSBUeXBlIGZvciB0aGUgdGFyZ2V0IE9wZXJhdGlvbiBBU1QuXG4gIGdldE9wZXJhdGlvblJvb3RUeXBlLCAvLyBDb252ZXJ0IGEgR3JhcGhRTFNjaGVtYSB0byBhbiBJbnRyb3NwZWN0aW9uUXVlcnkuXG4gIGludHJvc3BlY3Rpb25Gcm9tU2NoZW1hLCAvLyBCdWlsZCBhIEdyYXBoUUxTY2hlbWEgZnJvbSBhbiBpbnRyb3NwZWN0aW9uIHJlc3VsdC5cbiAgYnVpbGRDbGllbnRTY2hlbWEsIC8vIEJ1aWxkIGEgR3JhcGhRTFNjaGVtYSBmcm9tIGEgcGFyc2VkIEdyYXBoUUwgU2NoZW1hIGxhbmd1YWdlIEFTVC5cbiAgYnVpbGRBU1RTY2hlbWEsIC8vIEJ1aWxkIGEgR3JhcGhRTFNjaGVtYSBmcm9tIGEgR3JhcGhRTCBzY2hlbWEgbGFuZ3VhZ2UgZG9jdW1lbnQuXG4gIGJ1aWxkU2NoZW1hLCAvLyBFeHRlbmRzIGFuIGV4aXN0aW5nIEdyYXBoUUxTY2hlbWEgZnJvbSBhIHBhcnNlZCBHcmFwaFFMIFNjaGVtYSBsYW5ndWFnZSBBU1QuXG4gIGV4dGVuZFNjaGVtYSwgLy8gU29ydCBhIEdyYXBoUUxTY2hlbWEuXG4gIGxleGljb2dyYXBoaWNTb3J0U2NoZW1hLCAvLyBQcmludCBhIEdyYXBoUUxTY2hlbWEgdG8gR3JhcGhRTCBTY2hlbWEgbGFuZ3VhZ2UuXG4gIHByaW50U2NoZW1hLCAvLyBQcmludCBhIEdyYXBoUUxUeXBlIHRvIEdyYXBoUUwgU2NoZW1hIGxhbmd1YWdlLlxuICBwcmludFR5cGUsIC8vIFByaW50cyB0aGUgYnVpbHQtaW4gaW50cm9zcGVjdGlvbiBzY2hlbWEgaW4gdGhlIFNjaGVtYSBMYW5ndWFnZSBmb3JtYXQuXG4gIHByaW50SW50cm9zcGVjdGlvblNjaGVtYSwgLy8gQ3JlYXRlIGEgR3JhcGhRTFR5cGUgZnJvbSBhIEdyYXBoUUwgbGFuZ3VhZ2UgQVNULlxuICB0eXBlRnJvbUFTVCwgLy8gQ3JlYXRlIGEgSmF2YVNjcmlwdCB2YWx1ZSBmcm9tIGEgR3JhcGhRTCBsYW5ndWFnZSBBU1Qgd2l0aCBhIFR5cGUuXG4gIHZhbHVlRnJvbUFTVCwgLy8gQ3JlYXRlIGEgSmF2YVNjcmlwdCB2YWx1ZSBmcm9tIGEgR3JhcGhRTCBsYW5ndWFnZSBBU1Qgd2l0aG91dCBhIFR5cGUuXG4gIHZhbHVlRnJvbUFTVFVudHlwZWQsIC8vIENyZWF0ZSBhIEdyYXBoUUwgbGFuZ3VhZ2UgQVNUIGZyb20gYSBKYXZhU2NyaXB0IHZhbHVlLlxuICBhc3RGcm9tVmFsdWUsIC8vIEEgaGVscGVyIHRvIHVzZSB3aXRoaW4gcmVjdXJzaXZlLWRlc2NlbnQgdmlzaXRvcnMgd2hpY2ggbmVlZCB0byBiZSBhd2FyZSBvZiB0aGUgR3JhcGhRTCB0eXBlIHN5c3RlbS5cbiAgVHlwZUluZm8sXG4gIHZpc2l0V2l0aFR5cGVJbmZvLCAvLyBDb2VyY2VzIGEgSmF2YVNjcmlwdCB2YWx1ZSB0byBhIEdyYXBoUUwgdHlwZSwgb3IgcHJvZHVjZXMgZXJyb3JzLlxuICBjb2VyY2VJbnB1dFZhbHVlLCAvLyBDb25jYXRlbmF0ZXMgbXVsdGlwbGUgQVNUIHRvZ2V0aGVyLlxuICBjb25jYXRBU1QsIC8vIFNlcGFyYXRlcyBhbiBBU1QgaW50byBhbiBBU1QgcGVyIE9wZXJhdGlvbi5cbiAgc2VwYXJhdGVPcGVyYXRpb25zLCAvLyBTdHJpcHMgY2hhcmFjdGVycyB0aGF0IGFyZSBub3Qgc2lnbmlmaWNhbnQgdG8gdGhlIHZhbGlkaXR5IG9yIGV4ZWN1dGlvbiBvZiBhIEdyYXBoUUwgZG9jdW1lbnQuXG4gIHN0cmlwSWdub3JlZENoYXJhY3RlcnMsIC8vIENvbXBhcmF0b3JzIGZvciB0eXBlc1xuICBpc0VxdWFsVHlwZSxcbiAgaXNUeXBlU3ViVHlwZU9mLFxuICBkb1R5cGVzT3ZlcmxhcCwgLy8gQXNzZXJ0cyBhIHN0cmluZyBpcyBhIHZhbGlkIEdyYXBoUUwgbmFtZS5cbiAgYXNzZXJ0VmFsaWROYW1lLCAvLyBEZXRlcm1pbmUgaWYgYSBzdHJpbmcgaXMgYSB2YWxpZCBHcmFwaFFMIG5hbWUuXG4gIGlzVmFsaWROYW1lRXJyb3IsIC8vIENvbXBhcmVzIHR3byBHcmFwaFFMU2NoZW1hcyBhbmQgZGV0ZWN0cyBicmVha2luZyBjaGFuZ2VzLlxuICBCcmVha2luZ0NoYW5nZVR5cGUsXG4gIERhbmdlcm91c0NoYW5nZVR5cGUsXG4gIGZpbmRCcmVha2luZ0NoYW5nZXMsXG4gIGZpbmREYW5nZXJvdXNDaGFuZ2VzLFxufSBmcm9tICcuL3V0aWxpdGllcy9pbmRleC5tanMnO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/index.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/Path.mjs":
/*!***********************************************!*\
  !*** ./node_modules/graphql/jsutils/Path.mjs ***!
  \***********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"addPath\": function() { return /* binding */ addPath; },\n/* harmony export */   \"pathToArray\": function() { return /* binding */ pathToArray; }\n/* harmony export */ });\n/**\n * Given a Path and a key, return a new Path containing the new key.\n */\nfunction addPath(prev, key, typename) {\n  return {\n    prev,\n    key,\n    typename,\n  };\n}\n/**\n * Given a Path, return an Array of the path keys.\n */\n\nfunction pathToArray(path) {\n  const flattened = [];\n  let curr = path;\n\n  while (curr) {\n    flattened.push(curr.key);\n    curr = curr.prev;\n  }\n\n  return flattened.reverse();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL1BhdGgubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9QYXRoLm1qcz85ZWJkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2l2ZW4gYSBQYXRoIGFuZCBhIGtleSwgcmV0dXJuIGEgbmV3IFBhdGggY29udGFpbmluZyB0aGUgbmV3IGtleS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFBhdGgocHJldiwga2V5LCB0eXBlbmFtZSkge1xuICByZXR1cm4ge1xuICAgIHByZXYsXG4gICAga2V5LFxuICAgIHR5cGVuYW1lLFxuICB9O1xufVxuLyoqXG4gKiBHaXZlbiBhIFBhdGgsIHJldHVybiBhbiBBcnJheSBvZiB0aGUgcGF0aCBrZXlzLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoVG9BcnJheShwYXRoKSB7XG4gIGNvbnN0IGZsYXR0ZW5lZCA9IFtdO1xuICBsZXQgY3VyciA9IHBhdGg7XG5cbiAgd2hpbGUgKGN1cnIpIHtcbiAgICBmbGF0dGVuZWQucHVzaChjdXJyLmtleSk7XG4gICAgY3VyciA9IGN1cnIucHJldjtcbiAgfVxuXG4gIHJldHVybiBmbGF0dGVuZWQucmV2ZXJzZSgpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/Path.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/devAssert.mjs":
/*!****************************************************!*\
  !*** ./node_modules/graphql/jsutils/devAssert.mjs ***!
  \****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"devAssert\": function() { return /* binding */ devAssert; }\n/* harmony export */ });\nfunction devAssert(condition, message) {\n  const booleanCondition = Boolean(condition);\n\n  if (!booleanCondition) {\n    throw new Error(message);\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2RldkFzc2VydC5tanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9kZXZBc3NlcnQubWpzPzFkYTkiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGRldkFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgY29uc3QgYm9vbGVhbkNvbmRpdGlvbiA9IEJvb2xlYW4oY29uZGl0aW9uKTtcblxuICBpZiAoIWJvb2xlYW5Db25kaXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/devAssert.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/didYouMean.mjs":
/*!*****************************************************!*\
  !*** ./node_modules/graphql/jsutils/didYouMean.mjs ***!
  \*****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"didYouMean\": function() { return /* binding */ didYouMean; }\n/* harmony export */ });\nconst MAX_SUGGESTIONS = 5;\n/**\n * Given [ A, B, C ] return ' Did you mean A, B, or C?'.\n */\n\nfunction didYouMean(firstArg, secondArg) {\n  const [subMessage, suggestionsArg] = secondArg\n    ? [firstArg, secondArg]\n    : [undefined, firstArg];\n  let message = ' Did you mean ';\n\n  if (subMessage) {\n    message += subMessage + ' ';\n  }\n\n  const suggestions = suggestionsArg.map((x) => `\"${x}\"`);\n\n  switch (suggestions.length) {\n    case 0:\n      return '';\n\n    case 1:\n      return message + suggestions[0] + '?';\n\n    case 2:\n      return message + suggestions[0] + ' or ' + suggestions[1] + '?';\n  }\n\n  const selected = suggestions.slice(0, MAX_SUGGESTIONS);\n  const lastItem = selected.pop();\n  return message + selected.join(', ') + ', or ' + lastItem + '?';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2RpZFlvdU1lYW4ubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxvREFBb0QsRUFBRTs7QUFFdEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvZGlkWW91TWVhbi5tanM/Njc1NiJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBNQVhfU1VHR0VTVElPTlMgPSA1O1xuLyoqXG4gKiBHaXZlbiBbIEEsIEIsIEMgXSByZXR1cm4gJyBEaWQgeW91IG1lYW4gQSwgQiwgb3IgQz8nLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBkaWRZb3VNZWFuKGZpcnN0QXJnLCBzZWNvbmRBcmcpIHtcbiAgY29uc3QgW3N1Yk1lc3NhZ2UsIHN1Z2dlc3Rpb25zQXJnXSA9IHNlY29uZEFyZ1xuICAgID8gW2ZpcnN0QXJnLCBzZWNvbmRBcmddXG4gICAgOiBbdW5kZWZpbmVkLCBmaXJzdEFyZ107XG4gIGxldCBtZXNzYWdlID0gJyBEaWQgeW91IG1lYW4gJztcblxuICBpZiAoc3ViTWVzc2FnZSkge1xuICAgIG1lc3NhZ2UgKz0gc3ViTWVzc2FnZSArICcgJztcbiAgfVxuXG4gIGNvbnN0IHN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnNBcmcubWFwKCh4KSA9PiBgXCIke3h9XCJgKTtcblxuICBzd2l0Y2ggKHN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHJldHVybiAnJztcblxuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBtZXNzYWdlICsgc3VnZ2VzdGlvbnNbMF0gKyAnPyc7XG5cbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4gbWVzc2FnZSArIHN1Z2dlc3Rpb25zWzBdICsgJyBvciAnICsgc3VnZ2VzdGlvbnNbMV0gKyAnPyc7XG4gIH1cblxuICBjb25zdCBzZWxlY3RlZCA9IHN1Z2dlc3Rpb25zLnNsaWNlKDAsIE1BWF9TVUdHRVNUSU9OUyk7XG4gIGNvbnN0IGxhc3RJdGVtID0gc2VsZWN0ZWQucG9wKCk7XG4gIHJldHVybiBtZXNzYWdlICsgc2VsZWN0ZWQuam9pbignLCAnKSArICcsIG9yICcgKyBsYXN0SXRlbSArICc/Jztcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/didYouMean.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/groupBy.mjs":
/*!**************************************************!*\
  !*** ./node_modules/graphql/jsutils/groupBy.mjs ***!
  \**************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"groupBy\": function() { return /* binding */ groupBy; }\n/* harmony export */ });\n/**\n * Groups array items into a Map, given a function to produce grouping key.\n */\nfunction groupBy(list, keyFn) {\n  const result = new Map();\n\n  for (const item of list) {\n    const key = keyFn(item);\n    const group = result.get(key);\n\n    if (group === undefined) {\n      result.set(key, [item]);\n    } else {\n      group.push(item);\n    }\n  }\n\n  return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2dyb3VwQnkubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvZ3JvdXBCeS5tanM/ZWJjZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdyb3VwcyBhcnJheSBpdGVtcyBpbnRvIGEgTWFwLCBnaXZlbiBhIGZ1bmN0aW9uIHRvIHByb2R1Y2UgZ3JvdXBpbmcga2V5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBCeShsaXN0LCBrZXlGbikge1xuICBjb25zdCByZXN1bHQgPSBuZXcgTWFwKCk7XG5cbiAgZm9yIChjb25zdCBpdGVtIG9mIGxpc3QpIHtcbiAgICBjb25zdCBrZXkgPSBrZXlGbihpdGVtKTtcbiAgICBjb25zdCBncm91cCA9IHJlc3VsdC5nZXQoa2V5KTtcblxuICAgIGlmIChncm91cCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXN1bHQuc2V0KGtleSwgW2l0ZW1dKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXAucHVzaChpdGVtKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/groupBy.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/identityFunc.mjs":
/*!*******************************************************!*\
  !*** ./node_modules/graphql/jsutils/identityFunc.mjs ***!
  \*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"identityFunc\": function() { return /* binding */ identityFunc; }\n/* harmony export */ });\n/**\n * Returns the first argument it receives.\n */\nfunction identityFunc(x) {\n  return x;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2lkZW50aXR5RnVuYy5tanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2lkZW50aXR5RnVuYy5tanM/M2NjYSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IGl0IHJlY2VpdmVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpdHlGdW5jKHgpIHtcbiAgcmV0dXJuIHg7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/identityFunc.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/inspect.mjs":
/*!**************************************************!*\
  !*** ./node_modules/graphql/jsutils/inspect.mjs ***!
  \**************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"inspect\": function() { return /* binding */ inspect; }\n/* harmony export */ });\nconst MAX_ARRAY_LENGTH = 10;\nconst MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nfunction inspect(value) {\n  return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n  switch (typeof value) {\n    case 'string':\n      return JSON.stringify(value);\n\n    case 'function':\n      return value.name ? `[function ${value.name}]` : '[function]';\n\n    case 'object':\n      return formatObjectValue(value, seenValues);\n\n    default:\n      return String(value);\n  }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n  if (value === null) {\n    return 'null';\n  }\n\n  if (previouslySeenValues.includes(value)) {\n    return '[Circular]';\n  }\n\n  const seenValues = [...previouslySeenValues, value];\n\n  if (isJSONable(value)) {\n    const jsonValue = value.toJSON(); // check for infinite recursion\n\n    if (jsonValue !== value) {\n      return typeof jsonValue === 'string'\n        ? jsonValue\n        : formatValue(jsonValue, seenValues);\n    }\n  } else if (Array.isArray(value)) {\n    return formatArray(value, seenValues);\n  }\n\n  return formatObject(value, seenValues);\n}\n\nfunction isJSONable(value) {\n  return typeof value.toJSON === 'function';\n}\n\nfunction formatObject(object, seenValues) {\n  const entries = Object.entries(object);\n\n  if (entries.length === 0) {\n    return '{}';\n  }\n\n  if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n    return '[' + getObjectTag(object) + ']';\n  }\n\n  const properties = entries.map(\n    ([key, value]) => key + ': ' + formatValue(value, seenValues),\n  );\n  return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n  if (array.length === 0) {\n    return '[]';\n  }\n\n  if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n    return '[Array]';\n  }\n\n  const len = Math.min(MAX_ARRAY_LENGTH, array.length);\n  const remaining = array.length - len;\n  const items = [];\n\n  for (let i = 0; i < len; ++i) {\n    items.push(formatValue(array[i], seenValues));\n  }\n\n  if (remaining === 1) {\n    items.push('... 1 more item');\n  } else if (remaining > 1) {\n    items.push(`... ${remaining} more items`);\n  }\n\n  return '[' + items.join(', ') + ']';\n}\n\nfunction getObjectTag(object) {\n  const tag = Object.prototype.toString\n    .call(object)\n    .replace(/^\\[object /, '')\n    .replace(/]$/, '');\n\n  if (tag === 'Object' && typeof object.constructor === 'function') {\n    const name = object.constructor.name;\n\n    if (typeof name === 'string' && name !== '') {\n      return name;\n    }\n  }\n\n  return tag;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2luc3BlY3QubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVDQUF1QyxXQUFXOztBQUVsRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHNDQUFzQzs7QUFFdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxjQUFjO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVksK0JBQStCO0FBQzNDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLFNBQVM7QUFDM0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLHNCQUFzQixXQUFXO0FBQ2pDOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pbnNwZWN0Lm1qcz82MDgyIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IE1BWF9BUlJBWV9MRU5HVEggPSAxMDtcbmNvbnN0IE1BWF9SRUNVUlNJVkVfREVQVEggPSAyO1xuLyoqXG4gKiBVc2VkIHRvIHByaW50IHZhbHVlcyBpbiBlcnJvciBtZXNzYWdlcy5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdCh2YWx1ZSkge1xuICByZXR1cm4gZm9ybWF0VmFsdWUodmFsdWUsIFtdKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VmFsdWUodmFsdWUsIHNlZW5WYWx1ZXMpIHtcbiAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHtcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcblxuICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgIHJldHVybiB2YWx1ZS5uYW1lID8gYFtmdW5jdGlvbiAke3ZhbHVlLm5hbWV9XWAgOiAnW2Z1bmN0aW9uXSc7XG5cbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAgcmV0dXJuIGZvcm1hdE9iamVjdFZhbHVlKHZhbHVlLCBzZWVuVmFsdWVzKTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRPYmplY3RWYWx1ZSh2YWx1ZSwgcHJldmlvdXNseVNlZW5WYWx1ZXMpIHtcbiAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuICdudWxsJztcbiAgfVxuXG4gIGlmIChwcmV2aW91c2x5U2VlblZhbHVlcy5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJ1tDaXJjdWxhcl0nO1xuICB9XG5cbiAgY29uc3Qgc2VlblZhbHVlcyA9IFsuLi5wcmV2aW91c2x5U2VlblZhbHVlcywgdmFsdWVdO1xuXG4gIGlmIChpc0pTT05hYmxlKHZhbHVlKSkge1xuICAgIGNvbnN0IGpzb25WYWx1ZSA9IHZhbHVlLnRvSlNPTigpOyAvLyBjaGVjayBmb3IgaW5maW5pdGUgcmVjdXJzaW9uXG5cbiAgICBpZiAoanNvblZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHR5cGVvZiBqc29uVmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAgID8ganNvblZhbHVlXG4gICAgICAgIDogZm9ybWF0VmFsdWUoanNvblZhbHVlLCBzZWVuVmFsdWVzKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZm9ybWF0QXJyYXkodmFsdWUsIHNlZW5WYWx1ZXMpO1xuICB9XG5cbiAgcmV0dXJuIGZvcm1hdE9iamVjdCh2YWx1ZSwgc2VlblZhbHVlcyk7XG59XG5cbmZ1bmN0aW9uIGlzSlNPTmFibGUodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZS50b0pTT04gPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdE9iamVjdChvYmplY3QsIHNlZW5WYWx1ZXMpIHtcbiAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKG9iamVjdCk7XG5cbiAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICd7fSc7XG4gIH1cblxuICBpZiAoc2VlblZhbHVlcy5sZW5ndGggPiBNQVhfUkVDVVJTSVZFX0RFUFRIKSB7XG4gICAgcmV0dXJuICdbJyArIGdldE9iamVjdFRhZyhvYmplY3QpICsgJ10nO1xuICB9XG5cbiAgY29uc3QgcHJvcGVydGllcyA9IGVudHJpZXMubWFwKFxuICAgIChba2V5LCB2YWx1ZV0pID0+IGtleSArICc6ICcgKyBmb3JtYXRWYWx1ZSh2YWx1ZSwgc2VlblZhbHVlcyksXG4gICk7XG4gIHJldHVybiAneyAnICsgcHJvcGVydGllcy5qb2luKCcsICcpICsgJyB9Jztcbn1cblxuZnVuY3Rpb24gZm9ybWF0QXJyYXkoYXJyYXksIHNlZW5WYWx1ZXMpIHtcbiAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnW10nO1xuICB9XG5cbiAgaWYgKHNlZW5WYWx1ZXMubGVuZ3RoID4gTUFYX1JFQ1VSU0lWRV9ERVBUSCkge1xuICAgIHJldHVybiAnW0FycmF5XSc7XG4gIH1cblxuICBjb25zdCBsZW4gPSBNYXRoLm1pbihNQVhfQVJSQVlfTEVOR1RILCBhcnJheS5sZW5ndGgpO1xuICBjb25zdCByZW1haW5pbmcgPSBhcnJheS5sZW5ndGggLSBsZW47XG4gIGNvbnN0IGl0ZW1zID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIGl0ZW1zLnB1c2goZm9ybWF0VmFsdWUoYXJyYXlbaV0sIHNlZW5WYWx1ZXMpKTtcbiAgfVxuXG4gIGlmIChyZW1haW5pbmcgPT09IDEpIHtcbiAgICBpdGVtcy5wdXNoKCcuLi4gMSBtb3JlIGl0ZW0nKTtcbiAgfSBlbHNlIGlmIChyZW1haW5pbmcgPiAxKSB7XG4gICAgaXRlbXMucHVzaChgLi4uICR7cmVtYWluaW5nfSBtb3JlIGl0ZW1zYCk7XG4gIH1cblxuICByZXR1cm4gJ1snICsgaXRlbXMuam9pbignLCAnKSArICddJztcbn1cblxuZnVuY3Rpb24gZ2V0T2JqZWN0VGFnKG9iamVjdCkge1xuICBjb25zdCB0YWcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nXG4gICAgLmNhbGwob2JqZWN0KVxuICAgIC5yZXBsYWNlKC9eXFxbb2JqZWN0IC8sICcnKVxuICAgIC5yZXBsYWNlKC9dJC8sICcnKTtcblxuICBpZiAodGFnID09PSAnT2JqZWN0JyAmJiB0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3QgbmFtZSA9IG9iamVjdC5jb25zdHJ1Y3Rvci5uYW1lO1xuXG4gICAgaWYgKHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJyAmJiBuYW1lICE9PSAnJykge1xuICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhZztcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/inspect.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/instanceOf.mjs":
/*!*****************************************************!*\
  !*** ./node_modules/graphql/jsutils/instanceOf.mjs ***!
  \*****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"instanceOf\": function() { return /* binding */ instanceOf; }\n/* harmony export */ });\n/* harmony import */ var _inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n * See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n * See: https://webpack.js.org/guides/production/\n */\n\nconst instanceOf =\n  /* c8 ignore next 5 */\n  // FIXME: https://github.com/graphql/graphql-js/issues/2317\n   false\n    ? 0\n    : function instanceOf(value, constructor) {\n        if (value instanceof constructor) {\n          return true;\n        }\n\n        if (typeof value === 'object' && value !== null) {\n          var _value$constructor;\n\n          // Prefer Symbol.toStringTag since it is immune to minification.\n          const className = constructor.prototype[Symbol.toStringTag];\n          const valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n            Symbol.toStringTag in value // @ts-expect-error TS bug see, https://github.com/microsoft/TypeScript/issues/38009\n              ? value[Symbol.toStringTag]\n              : (_value$constructor = value.constructor) === null ||\n                _value$constructor === void 0\n              ? void 0\n              : _value$constructor.name;\n\n          if (className === valueClassName) {\n            const stringifiedValue = (0,_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(value);\n            throw new Error(`Cannot use ${className} \"${stringifiedValue}\" from another module or realm.\n\nEnsure that there is only one instance of \"graphql\" in the node_modules\ndirectory. If different versions of \"graphql\" are the dependencies of other\nrelied on modules, use \"resolutions\" to ensure only one version is installed.\n\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\n\nDuplicate \"graphql\" modules cannot be used at the same time since different\nversions may have different capabilities and behavior. The data from one\nversion used in the function from another could produce confusing and\nspurious results.`);\n          }\n        }\n\n        return false;\n      };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2luc3RhbmNlT2YubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSxFQUFFLE1BQXFDO0FBQ3ZDLE1BQU0sQ0FFQztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUNBQXFDLHFEQUFPO0FBQzVDLDBDQUEwQyxXQUFXLEdBQUcsaUJBQWlCOztBQUV6RTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pbnN0YW5jZU9mLm1qcz9kNjM4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuL2luc3BlY3QubWpzJztcbi8qKlxuICogQSByZXBsYWNlbWVudCBmb3IgaW5zdGFuY2VvZiB3aGljaCBpbmNsdWRlcyBhbiBlcnJvciB3YXJuaW5nIHdoZW4gbXVsdGktcmVhbG1cbiAqIGNvbnN0cnVjdG9ycyBhcmUgZGV0ZWN0ZWQuXG4gKiBTZWU6IGh0dHBzOi8vZXhwcmVzc2pzLmNvbS9lbi9hZHZhbmNlZC9iZXN0LXByYWN0aWNlLXBlcmZvcm1hbmNlLmh0bWwjc2V0LW5vZGVfZW52LXRvLXByb2R1Y3Rpb25cbiAqIFNlZTogaHR0cHM6Ly93ZWJwYWNrLmpzLm9yZy9ndWlkZXMvcHJvZHVjdGlvbi9cbiAqL1xuXG5leHBvcnQgY29uc3QgaW5zdGFuY2VPZiA9XG4gIC8qIGM4IGlnbm9yZSBuZXh0IDUgKi9cbiAgLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIzMTdcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJ1xuICAgID8gZnVuY3Rpb24gaW5zdGFuY2VPZih2YWx1ZSwgY29uc3RydWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgY29uc3RydWN0b3I7XG4gICAgICB9XG4gICAgOiBmdW5jdGlvbiBpbnN0YW5jZU9mKHZhbHVlLCBjb25zdHJ1Y3Rvcikge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBjb25zdHJ1Y3Rvcikge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICB2YXIgX3ZhbHVlJGNvbnN0cnVjdG9yO1xuXG4gICAgICAgICAgLy8gUHJlZmVyIFN5bWJvbC50b1N0cmluZ1RhZyBzaW5jZSBpdCBpcyBpbW11bmUgdG8gbWluaWZpY2F0aW9uLlxuICAgICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IGNvbnN0cnVjdG9yLnByb3RvdHlwZVtTeW1ib2wudG9TdHJpbmdUYWddO1xuICAgICAgICAgIGNvbnN0IHZhbHVlQ2xhc3NOYW1lID0gLy8gV2Ugc3RpbGwgbmVlZCB0byBzdXBwb3J0IGNvbnN0cnVjdG9yJ3MgbmFtZSB0byBkZXRlY3QgY29uZmxpY3RzIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgdGhpcyBsaWJyYXJ5LlxuICAgICAgICAgICAgU3ltYm9sLnRvU3RyaW5nVGFnIGluIHZhbHVlIC8vIEB0cy1leHBlY3QtZXJyb3IgVFMgYnVnIHNlZSwgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8zODAwOVxuICAgICAgICAgICAgICA/IHZhbHVlW1N5bWJvbC50b1N0cmluZ1RhZ11cbiAgICAgICAgICAgICAgOiAoX3ZhbHVlJGNvbnN0cnVjdG9yID0gdmFsdWUuY29uc3RydWN0b3IpID09PSBudWxsIHx8XG4gICAgICAgICAgICAgICAgX3ZhbHVlJGNvbnN0cnVjdG9yID09PSB2b2lkIDBcbiAgICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgICAgOiBfdmFsdWUkY29uc3RydWN0b3IubmFtZTtcblxuICAgICAgICAgIGlmIChjbGFzc05hbWUgPT09IHZhbHVlQ2xhc3NOYW1lKSB7XG4gICAgICAgICAgICBjb25zdCBzdHJpbmdpZmllZFZhbHVlID0gaW5zcGVjdCh2YWx1ZSk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCB1c2UgJHtjbGFzc05hbWV9IFwiJHtzdHJpbmdpZmllZFZhbHVlfVwiIGZyb20gYW5vdGhlciBtb2R1bGUgb3IgcmVhbG0uXG5cbkVuc3VyZSB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIGluc3RhbmNlIG9mIFwiZ3JhcGhxbFwiIGluIHRoZSBub2RlX21vZHVsZXNcbmRpcmVjdG9yeS4gSWYgZGlmZmVyZW50IHZlcnNpb25zIG9mIFwiZ3JhcGhxbFwiIGFyZSB0aGUgZGVwZW5kZW5jaWVzIG9mIG90aGVyXG5yZWxpZWQgb24gbW9kdWxlcywgdXNlIFwicmVzb2x1dGlvbnNcIiB0byBlbnN1cmUgb25seSBvbmUgdmVyc2lvbiBpcyBpbnN0YWxsZWQuXG5cbmh0dHBzOi8veWFybnBrZy5jb20vZW4vZG9jcy9zZWxlY3RpdmUtdmVyc2lvbi1yZXNvbHV0aW9uc1xuXG5EdXBsaWNhdGUgXCJncmFwaHFsXCIgbW9kdWxlcyBjYW5ub3QgYmUgdXNlZCBhdCB0aGUgc2FtZSB0aW1lIHNpbmNlIGRpZmZlcmVudFxudmVyc2lvbnMgbWF5IGhhdmUgZGlmZmVyZW50IGNhcGFiaWxpdGllcyBhbmQgYmVoYXZpb3IuIFRoZSBkYXRhIGZyb20gb25lXG52ZXJzaW9uIHVzZWQgaW4gdGhlIGZ1bmN0aW9uIGZyb20gYW5vdGhlciBjb3VsZCBwcm9kdWNlIGNvbmZ1c2luZyBhbmRcbnNwdXJpb3VzIHJlc3VsdHMuYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/instanceOf.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/invariant.mjs":
/*!****************************************************!*\
  !*** ./node_modules/graphql/jsutils/invariant.mjs ***!
  \****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"invariant\": function() { return /* binding */ invariant; }\n/* harmony export */ });\nfunction invariant(condition, message) {\n  const booleanCondition = Boolean(condition);\n\n  if (!booleanCondition) {\n    throw new Error(\n      message != null ? message : 'Unexpected invariant triggered.',\n    );\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2ludmFyaWFudC5tanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvaW52YXJpYW50Lm1qcz9lMGRmIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpbnZhcmlhbnQoY29uZGl0aW9uLCBtZXNzYWdlKSB7XG4gIGNvbnN0IGJvb2xlYW5Db25kaXRpb24gPSBCb29sZWFuKGNvbmRpdGlvbik7XG5cbiAgaWYgKCFib29sZWFuQ29uZGl0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgbWVzc2FnZSAhPSBudWxsID8gbWVzc2FnZSA6ICdVbmV4cGVjdGVkIGludmFyaWFudCB0cmlnZ2VyZWQuJyxcbiAgICApO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/invariant.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/isAsyncIterable.mjs":
/*!**********************************************************!*\
  !*** ./node_modules/graphql/jsutils/isAsyncIterable.mjs ***!
  \**********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isAsyncIterable\": function() { return /* binding */ isAsyncIterable; }\n/* harmony export */ });\n/**\n * Returns true if the provided object implements the AsyncIterator protocol via\n * implementing a `Symbol.asyncIterator` method.\n */\nfunction isAsyncIterable(maybeAsyncIterable) {\n  return (\n    typeof (maybeAsyncIterable === null || maybeAsyncIterable === void 0\n      ? void 0\n      : maybeAsyncIterable[Symbol.asyncIterator]) === 'function'\n  );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2lzQXN5bmNJdGVyYWJsZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc0FzeW5jSXRlcmFibGUubWpzPzgwNjciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3ZpZGVkIG9iamVjdCBpbXBsZW1lbnRzIHRoZSBBc3luY0l0ZXJhdG9yIHByb3RvY29sIHZpYVxuICogaW1wbGVtZW50aW5nIGEgYFN5bWJvbC5hc3luY0l0ZXJhdG9yYCBtZXRob2QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FzeW5jSXRlcmFibGUobWF5YmVBc3luY0l0ZXJhYmxlKSB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIChtYXliZUFzeW5jSXRlcmFibGUgPT09IG51bGwgfHwgbWF5YmVBc3luY0l0ZXJhYmxlID09PSB2b2lkIDBcbiAgICAgID8gdm9pZCAwXG4gICAgICA6IG1heWJlQXN5bmNJdGVyYWJsZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0pID09PSAnZnVuY3Rpb24nXG4gICk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/isAsyncIterable.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/isIterableObject.mjs":
/*!***********************************************************!*\
  !*** ./node_modules/graphql/jsutils/isIterableObject.mjs ***!
  \***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isIterableObject\": function() { return /* binding */ isIterableObject; }\n/* harmony export */ });\n/**\n * Returns true if the provided object is an Object (i.e. not a string literal)\n * and implements the Iterator protocol.\n *\n * This may be used in place of [Array.isArray()][isArray] to determine if\n * an object should be iterated-over e.g. Array, Map, Set, Int8Array,\n * TypedArray, etc. but excludes string literals.\n *\n * @example\n * ```ts\n * isIterableObject([ 1, 2, 3 ]) // true\n * isIterableObject(new Map()) // true\n * isIterableObject('ABC') // false\n * isIterableObject({ key: 'value' }) // false\n * isIterableObject({ length: 1, 0: 'Alpha' }) // false\n * ```\n */\nfunction isIterableObject(maybeIterable) {\n  return (\n    typeof maybeIterable === 'object' &&\n    typeof (maybeIterable === null || maybeIterable === void 0\n      ? void 0\n      : maybeIterable[Symbol.iterator]) === 'function'\n  );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2lzSXRlcmFibGVPYmplY3QubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixjQUFjO0FBQ3BDLHNCQUFzQix1QkFBdUI7QUFDN0M7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9pc0l0ZXJhYmxlT2JqZWN0Lm1qcz80ODBjIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlZCBvYmplY3QgaXMgYW4gT2JqZWN0IChpLmUuIG5vdCBhIHN0cmluZyBsaXRlcmFsKVxuICogYW5kIGltcGxlbWVudHMgdGhlIEl0ZXJhdG9yIHByb3RvY29sLlxuICpcbiAqIFRoaXMgbWF5IGJlIHVzZWQgaW4gcGxhY2Ugb2YgW0FycmF5LmlzQXJyYXkoKV1baXNBcnJheV0gdG8gZGV0ZXJtaW5lIGlmXG4gKiBhbiBvYmplY3Qgc2hvdWxkIGJlIGl0ZXJhdGVkLW92ZXIgZS5nLiBBcnJheSwgTWFwLCBTZXQsIEludDhBcnJheSxcbiAqIFR5cGVkQXJyYXksIGV0Yy4gYnV0IGV4Y2x1ZGVzIHN0cmluZyBsaXRlcmFscy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGlzSXRlcmFibGVPYmplY3QoWyAxLCAyLCAzIF0pIC8vIHRydWVcbiAqIGlzSXRlcmFibGVPYmplY3QobmV3IE1hcCgpKSAvLyB0cnVlXG4gKiBpc0l0ZXJhYmxlT2JqZWN0KCdBQkMnKSAvLyBmYWxzZVxuICogaXNJdGVyYWJsZU9iamVjdCh7IGtleTogJ3ZhbHVlJyB9KSAvLyBmYWxzZVxuICogaXNJdGVyYWJsZU9iamVjdCh7IGxlbmd0aDogMSwgMDogJ0FscGhhJyB9KSAvLyBmYWxzZVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0l0ZXJhYmxlT2JqZWN0KG1heWJlSXRlcmFibGUpIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgbWF5YmVJdGVyYWJsZSA9PT0gJ29iamVjdCcgJiZcbiAgICB0eXBlb2YgKG1heWJlSXRlcmFibGUgPT09IG51bGwgfHwgbWF5YmVJdGVyYWJsZSA9PT0gdm9pZCAwXG4gICAgICA/IHZvaWQgMFxuICAgICAgOiBtYXliZUl0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0pID09PSAnZnVuY3Rpb24nXG4gICk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/isIterableObject.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/isObjectLike.mjs":
/*!*******************************************************!*\
  !*** ./node_modules/graphql/jsutils/isObjectLike.mjs ***!
  \*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isObjectLike\": function() { return /* binding */ isObjectLike; }\n/* harmony export */ });\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nfunction isObjectLike(value) {\n  return typeof value == 'object' && value !== null;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2lzT2JqZWN0TGlrZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvaXNPYmplY3RMaWtlLm1qcz9lODZmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmV0dXJuIHRydWUgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdFxuICogYG51bGxgIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/isObjectLike.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/isPromise.mjs":
/*!****************************************************!*\
  !*** ./node_modules/graphql/jsutils/isPromise.mjs ***!
  \****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isPromise\": function() { return /* binding */ isPromise; }\n/* harmony export */ });\n/**\n * Returns true if the value acts like a Promise, i.e. has a \"then\" function,\n * otherwise returns false.\n */\nfunction isPromise(value) {\n  return (\n    typeof (value === null || value === void 0 ? void 0 : value.then) ===\n    'function'\n  );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2lzUHJvbWlzZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvaXNQcm9taXNlLm1qcz83ZjU2Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBhY3RzIGxpa2UgYSBQcm9taXNlLCBpLmUuIGhhcyBhIFwidGhlblwiIGZ1bmN0aW9uLFxuICogb3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2UodmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWx1ZS50aGVuKSA9PT1cbiAgICAnZnVuY3Rpb24nXG4gICk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/isPromise.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/keyMap.mjs":
/*!*************************************************!*\
  !*** ./node_modules/graphql/jsutils/keyMap.mjs ***!
  \*************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"keyMap\": function() { return /* binding */ keyMap; }\n/* harmony export */ });\n/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * for each value in the array.\n *\n * This provides a convenient lookup for the array items if the key function\n * produces unique results.\n * ```ts\n * const phoneBook = [\n *   { name: 'Jon', num: '555-1234' },\n *   { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * const entriesByName = keyMap(\n *   phoneBook,\n *   entry => entry.name\n * )\n *\n * // {\n * //   Jon: { name: 'Jon', num: '555-1234' },\n * //   Jenny: { name: 'Jenny', num: '867-5309' }\n * // }\n *\n * const jennyEntry = entriesByName['Jenny']\n *\n * // { name: 'Jenny', num: '857-6309' }\n * ```\n */\nfunction keyMap(list, keyFn) {\n  const result = Object.create(null);\n\n  for (const item of list) {\n    result[keyFn(item)] = item;\n  }\n\n  return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2tleU1hcC5tanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLDhCQUE4QjtBQUNyQyxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsOEJBQThCO0FBQzdDLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ087QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2tleU1hcC5tanM/YzQ1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENyZWF0ZXMgYSBrZXllZCBKUyBvYmplY3QgZnJvbSBhbiBhcnJheSwgZ2l2ZW4gYSBmdW5jdGlvbiB0byBwcm9kdWNlIHRoZSBrZXlzXG4gKiBmb3IgZWFjaCB2YWx1ZSBpbiB0aGUgYXJyYXkuXG4gKlxuICogVGhpcyBwcm92aWRlcyBhIGNvbnZlbmllbnQgbG9va3VwIGZvciB0aGUgYXJyYXkgaXRlbXMgaWYgdGhlIGtleSBmdW5jdGlvblxuICogcHJvZHVjZXMgdW5pcXVlIHJlc3VsdHMuXG4gKiBgYGB0c1xuICogY29uc3QgcGhvbmVCb29rID0gW1xuICogICB7IG5hbWU6ICdKb24nLCBudW06ICc1NTUtMTIzNCcgfSxcbiAqICAgeyBuYW1lOiAnSmVubnknLCBudW06ICc4NjctNTMwOScgfVxuICogXVxuICpcbiAqIGNvbnN0IGVudHJpZXNCeU5hbWUgPSBrZXlNYXAoXG4gKiAgIHBob25lQm9vayxcbiAqICAgZW50cnkgPT4gZW50cnkubmFtZVxuICogKVxuICpcbiAqIC8vIHtcbiAqIC8vICAgSm9uOiB7IG5hbWU6ICdKb24nLCBudW06ICc1NTUtMTIzNCcgfSxcbiAqIC8vICAgSmVubnk6IHsgbmFtZTogJ0plbm55JywgbnVtOiAnODY3LTUzMDknIH1cbiAqIC8vIH1cbiAqXG4gKiBjb25zdCBqZW5ueUVudHJ5ID0gZW50cmllc0J5TmFtZVsnSmVubnknXVxuICpcbiAqIC8vIHsgbmFtZTogJ0plbm55JywgbnVtOiAnODU3LTYzMDknIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24ga2V5TWFwKGxpc3QsIGtleUZuKSB7XG4gIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgZm9yIChjb25zdCBpdGVtIG9mIGxpc3QpIHtcbiAgICByZXN1bHRba2V5Rm4oaXRlbSldID0gaXRlbTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/keyMap.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/keyValMap.mjs":
/*!****************************************************!*\
  !*** ./node_modules/graphql/jsutils/keyValMap.mjs ***!
  \****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"keyValMap\": function() { return /* binding */ keyValMap; }\n/* harmony export */ });\n/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * and a function to produce the values from each item in the array.\n * ```ts\n * const phoneBook = [\n *   { name: 'Jon', num: '555-1234' },\n *   { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * // { Jon: '555-1234', Jenny: '867-5309' }\n * const phonesByName = keyValMap(\n *   phoneBook,\n *   entry => entry.name,\n *   entry => entry.num\n * )\n * ```\n */\nfunction keyValMap(list, keyFn, valFn) {\n  const result = Object.create(null);\n\n  for (const item of list) {\n    result[keyFn(item)] = valFn(item);\n  }\n\n  return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL2tleVZhbE1hcC5tanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLDhCQUE4QjtBQUNyQyxPQUFPO0FBQ1A7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9rZXlWYWxNYXAubWpzPzViNDciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVzIGEga2V5ZWQgSlMgb2JqZWN0IGZyb20gYW4gYXJyYXksIGdpdmVuIGEgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUga2V5c1xuICogYW5kIGEgZnVuY3Rpb24gdG8gcHJvZHVjZSB0aGUgdmFsdWVzIGZyb20gZWFjaCBpdGVtIGluIHRoZSBhcnJheS5cbiAqIGBgYHRzXG4gKiBjb25zdCBwaG9uZUJvb2sgPSBbXG4gKiAgIHsgbmFtZTogJ0pvbicsIG51bTogJzU1NS0xMjM0JyB9LFxuICogICB7IG5hbWU6ICdKZW5ueScsIG51bTogJzg2Ny01MzA5JyB9XG4gKiBdXG4gKlxuICogLy8geyBKb246ICc1NTUtMTIzNCcsIEplbm55OiAnODY3LTUzMDknIH1cbiAqIGNvbnN0IHBob25lc0J5TmFtZSA9IGtleVZhbE1hcChcbiAqICAgcGhvbmVCb29rLFxuICogICBlbnRyeSA9PiBlbnRyeS5uYW1lLFxuICogICBlbnRyeSA9PiBlbnRyeS5udW1cbiAqIClcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24ga2V5VmFsTWFwKGxpc3QsIGtleUZuLCB2YWxGbikge1xuICBjb25zdCByZXN1bHQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAoY29uc3QgaXRlbSBvZiBsaXN0KSB7XG4gICAgcmVzdWx0W2tleUZuKGl0ZW0pXSA9IHZhbEZuKGl0ZW0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/keyValMap.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/mapValue.mjs":
/*!***************************************************!*\
  !*** ./node_modules/graphql/jsutils/mapValue.mjs ***!
  \***************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"mapValue\": function() { return /* binding */ mapValue; }\n/* harmony export */ });\n/**\n * Creates an object map with the same keys as `map` and values generated by\n * running each value of `map` thru `fn`.\n */\nfunction mapValue(map, fn) {\n  const result = Object.create(null);\n\n  for (const key of Object.keys(map)) {\n    result[key] = fn(map[key], key);\n  }\n\n  return result;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL21hcFZhbHVlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvbWFwVmFsdWUubWpzPzI4NzciXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCBtYXAgd2l0aCB0aGUgc2FtZSBrZXlzIGFzIGBtYXBgIGFuZCB2YWx1ZXMgZ2VuZXJhdGVkIGJ5XG4gKiBydW5uaW5nIGVhY2ggdmFsdWUgb2YgYG1hcGAgdGhydSBgZm5gLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwVmFsdWUobWFwLCBmbikge1xuICBjb25zdCByZXN1bHQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1hcCkpIHtcbiAgICByZXN1bHRba2V5XSA9IGZuKG1hcFtrZXldLCBrZXkpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/mapValue.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/memoize3.mjs":
/*!***************************************************!*\
  !*** ./node_modules/graphql/jsutils/memoize3.mjs ***!
  \***************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"memoize3\": function() { return /* binding */ memoize3; }\n/* harmony export */ });\n/**\n * Memoizes the provided three-argument function.\n */\nfunction memoize3(fn) {\n  let cache0;\n  return function memoized(a1, a2, a3) {\n    if (cache0 === undefined) {\n      cache0 = new WeakMap();\n    }\n\n    let cache1 = cache0.get(a1);\n\n    if (cache1 === undefined) {\n      cache1 = new WeakMap();\n      cache0.set(a1, cache1);\n    }\n\n    let cache2 = cache1.get(a2);\n\n    if (cache2 === undefined) {\n      cache2 = new WeakMap();\n      cache1.set(a2, cache2);\n    }\n\n    let fnResult = cache2.get(a3);\n\n    if (fnResult === undefined) {\n      fnResult = fn(a1, a2, a3);\n      cache2.set(a3, fnResult);\n    }\n\n    return fnResult;\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL21lbW9pemUzLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL21lbW9pemUzLm1qcz80MGQ3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTWVtb2l6ZXMgdGhlIHByb3ZpZGVkIHRocmVlLWFyZ3VtZW50IGZ1bmN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVtb2l6ZTMoZm4pIHtcbiAgbGV0IGNhY2hlMDtcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lbW9pemVkKGExLCBhMiwgYTMpIHtcbiAgICBpZiAoY2FjaGUwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNhY2hlMCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgfVxuXG4gICAgbGV0IGNhY2hlMSA9IGNhY2hlMC5nZXQoYTEpO1xuXG4gICAgaWYgKGNhY2hlMSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjYWNoZTEgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgY2FjaGUwLnNldChhMSwgY2FjaGUxKTtcbiAgICB9XG5cbiAgICBsZXQgY2FjaGUyID0gY2FjaGUxLmdldChhMik7XG5cbiAgICBpZiAoY2FjaGUyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNhY2hlMiA9IG5ldyBXZWFrTWFwKCk7XG4gICAgICBjYWNoZTEuc2V0KGEyLCBjYWNoZTIpO1xuICAgIH1cblxuICAgIGxldCBmblJlc3VsdCA9IGNhY2hlMi5nZXQoYTMpO1xuXG4gICAgaWYgKGZuUmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGZuUmVzdWx0ID0gZm4oYTEsIGEyLCBhMyk7XG4gICAgICBjYWNoZTIuc2V0KGEzLCBmblJlc3VsdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZuUmVzdWx0O1xuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/memoize3.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/naturalCompare.mjs":
/*!*********************************************************!*\
  !*** ./node_modules/graphql/jsutils/naturalCompare.mjs ***!
  \*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"naturalCompare\": function() { return /* binding */ naturalCompare; }\n/* harmony export */ });\n/**\n * Returns a number indicating whether a reference string comes before, or after,\n * or is the same as the given string in natural sort order.\n *\n * See: https://en.wikipedia.org/wiki/Natural_sort_order\n *\n */\nfunction naturalCompare(aStr, bStr) {\n  let aIndex = 0;\n  let bIndex = 0;\n\n  while (aIndex < aStr.length && bIndex < bStr.length) {\n    let aChar = aStr.charCodeAt(aIndex);\n    let bChar = bStr.charCodeAt(bIndex);\n\n    if (isDigit(aChar) && isDigit(bChar)) {\n      let aNum = 0;\n\n      do {\n        ++aIndex;\n        aNum = aNum * 10 + aChar - DIGIT_0;\n        aChar = aStr.charCodeAt(aIndex);\n      } while (isDigit(aChar) && aNum > 0);\n\n      let bNum = 0;\n\n      do {\n        ++bIndex;\n        bNum = bNum * 10 + bChar - DIGIT_0;\n        bChar = bStr.charCodeAt(bIndex);\n      } while (isDigit(bChar) && bNum > 0);\n\n      if (aNum < bNum) {\n        return -1;\n      }\n\n      if (aNum > bNum) {\n        return 1;\n      }\n    } else {\n      if (aChar < bChar) {\n        return -1;\n      }\n\n      if (aChar > bChar) {\n        return 1;\n      }\n\n      ++aIndex;\n      ++bIndex;\n    }\n  }\n\n  return aStr.length - bStr.length;\n}\nconst DIGIT_0 = 48;\nconst DIGIT_9 = 57;\n\nfunction isDigit(code) {\n  return !isNaN(code) && DIGIT_0 <= code && code <= DIGIT_9;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL25hdHVyYWxDb21wYXJlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFROztBQUVSOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTs7QUFFUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvbmF0dXJhbENvbXBhcmUubWpzPzdhZmQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSZXR1cm5zIGEgbnVtYmVyIGluZGljYXRpbmcgd2hldGhlciBhIHJlZmVyZW5jZSBzdHJpbmcgY29tZXMgYmVmb3JlLCBvciBhZnRlcixcbiAqIG9yIGlzIHRoZSBzYW1lIGFzIHRoZSBnaXZlbiBzdHJpbmcgaW4gbmF0dXJhbCBzb3J0IG9yZGVyLlxuICpcbiAqIFNlZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTmF0dXJhbF9zb3J0X29yZGVyXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmF0dXJhbENvbXBhcmUoYVN0ciwgYlN0cikge1xuICBsZXQgYUluZGV4ID0gMDtcbiAgbGV0IGJJbmRleCA9IDA7XG5cbiAgd2hpbGUgKGFJbmRleCA8IGFTdHIubGVuZ3RoICYmIGJJbmRleCA8IGJTdHIubGVuZ3RoKSB7XG4gICAgbGV0IGFDaGFyID0gYVN0ci5jaGFyQ29kZUF0KGFJbmRleCk7XG4gICAgbGV0IGJDaGFyID0gYlN0ci5jaGFyQ29kZUF0KGJJbmRleCk7XG5cbiAgICBpZiAoaXNEaWdpdChhQ2hhcikgJiYgaXNEaWdpdChiQ2hhcikpIHtcbiAgICAgIGxldCBhTnVtID0gMDtcblxuICAgICAgZG8ge1xuICAgICAgICArK2FJbmRleDtcbiAgICAgICAgYU51bSA9IGFOdW0gKiAxMCArIGFDaGFyIC0gRElHSVRfMDtcbiAgICAgICAgYUNoYXIgPSBhU3RyLmNoYXJDb2RlQXQoYUluZGV4KTtcbiAgICAgIH0gd2hpbGUgKGlzRGlnaXQoYUNoYXIpICYmIGFOdW0gPiAwKTtcblxuICAgICAgbGV0IGJOdW0gPSAwO1xuXG4gICAgICBkbyB7XG4gICAgICAgICsrYkluZGV4O1xuICAgICAgICBiTnVtID0gYk51bSAqIDEwICsgYkNoYXIgLSBESUdJVF8wO1xuICAgICAgICBiQ2hhciA9IGJTdHIuY2hhckNvZGVBdChiSW5kZXgpO1xuICAgICAgfSB3aGlsZSAoaXNEaWdpdChiQ2hhcikgJiYgYk51bSA+IDApO1xuXG4gICAgICBpZiAoYU51bSA8IGJOdW0pIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuXG4gICAgICBpZiAoYU51bSA+IGJOdW0pIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChhQ2hhciA8IGJDaGFyKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFDaGFyID4gYkNoYXIpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG5cbiAgICAgICsrYUluZGV4O1xuICAgICAgKytiSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFTdHIubGVuZ3RoIC0gYlN0ci5sZW5ndGg7XG59XG5jb25zdCBESUdJVF8wID0gNDg7XG5jb25zdCBESUdJVF85ID0gNTc7XG5cbmZ1bmN0aW9uIGlzRGlnaXQoY29kZSkge1xuICByZXR1cm4gIWlzTmFOKGNvZGUpICYmIERJR0lUXzAgPD0gY29kZSAmJiBjb2RlIDw9IERJR0lUXzk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/naturalCompare.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/printPathArray.mjs":
/*!*********************************************************!*\
  !*** ./node_modules/graphql/jsutils/printPathArray.mjs ***!
  \*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"printPathArray\": function() { return /* binding */ printPathArray; }\n/* harmony export */ });\n/**\n * Build a string describing the path.\n */\nfunction printPathArray(path) {\n  return path\n    .map((key) =>\n      typeof key === 'number' ? '[' + key.toString() + ']' : '.' + key,\n    )\n    .join('');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL3ByaW50UGF0aEFycmF5Lm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9wcmludFBhdGhBcnJheS5tanM/Y2M1MCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJ1aWxkIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludFBhdGhBcnJheShwYXRoKSB7XG4gIHJldHVybiBwYXRoXG4gICAgLm1hcCgoa2V5KSA9PlxuICAgICAgdHlwZW9mIGtleSA9PT0gJ251bWJlcicgPyAnWycgKyBrZXkudG9TdHJpbmcoKSArICddJyA6ICcuJyArIGtleSxcbiAgICApXG4gICAgLmpvaW4oJycpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/printPathArray.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/promiseForObject.mjs":
/*!***********************************************************!*\
  !*** ./node_modules/graphql/jsutils/promiseForObject.mjs ***!
  \***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"promiseForObject\": function() { return /* binding */ promiseForObject; }\n/* harmony export */ });\n/**\n * This function transforms a JS object `ObjMap<Promise<T>>` into\n * a `Promise<ObjMap<T>>`\n *\n * This is akin to bluebird's `Promise.props`, but implemented only using\n * `Promise.all` so it will work with any implementation of ES6 promises.\n */\nfunction promiseForObject(object) {\n  return Promise.all(Object.values(object)).then((resolvedValues) => {\n    const resolvedObject = Object.create(null);\n\n    for (const [i, key] of Object.keys(object).entries()) {\n      resolvedObject[key] = resolvedValues[i];\n    }\n\n    return resolvedObject;\n  });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL3Byb21pc2VGb3JPYmplY3QubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9wcm9taXNlRm9yT2JqZWN0Lm1qcz9iNDAyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBmdW5jdGlvbiB0cmFuc2Zvcm1zIGEgSlMgb2JqZWN0IGBPYmpNYXA8UHJvbWlzZTxUPj5gIGludG9cbiAqIGEgYFByb21pc2U8T2JqTWFwPFQ+PmBcbiAqXG4gKiBUaGlzIGlzIGFraW4gdG8gYmx1ZWJpcmQncyBgUHJvbWlzZS5wcm9wc2AsIGJ1dCBpbXBsZW1lbnRlZCBvbmx5IHVzaW5nXG4gKiBgUHJvbWlzZS5hbGxgIHNvIGl0IHdpbGwgd29yayB3aXRoIGFueSBpbXBsZW1lbnRhdGlvbiBvZiBFUzYgcHJvbWlzZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9taXNlRm9yT2JqZWN0KG9iamVjdCkge1xuICByZXR1cm4gUHJvbWlzZS5hbGwoT2JqZWN0LnZhbHVlcyhvYmplY3QpKS50aGVuKChyZXNvbHZlZFZhbHVlcykgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVkT2JqZWN0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIGZvciAoY29uc3QgW2ksIGtleV0gb2YgT2JqZWN0LmtleXMob2JqZWN0KS5lbnRyaWVzKCkpIHtcbiAgICAgIHJlc29sdmVkT2JqZWN0W2tleV0gPSByZXNvbHZlZFZhbHVlc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZWRPYmplY3Q7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/promiseForObject.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/promiseReduce.mjs":
/*!********************************************************!*\
  !*** ./node_modules/graphql/jsutils/promiseReduce.mjs ***!
  \********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"promiseReduce\": function() { return /* binding */ promiseReduce; }\n/* harmony export */ });\n/* harmony import */ var _isPromise_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isPromise.mjs */ \"./node_modules/graphql/jsutils/isPromise.mjs\");\n\n\n/**\n * Similar to Array.prototype.reduce(), however the reducing callback may return\n * a Promise, in which case reduction will continue after each promise resolves.\n *\n * If the callback does not return a Promise, then this function will also not\n * return a Promise.\n */\nfunction promiseReduce(values, callbackFn, initialValue) {\n  let accumulator = initialValue;\n\n  for (const value of values) {\n    accumulator = (0,_isPromise_mjs__WEBPACK_IMPORTED_MODULE_0__.isPromise)(accumulator)\n      ? accumulator.then((resolved) => callbackFn(resolved, value))\n      : callbackFn(accumulator, value);\n  }\n\n  return accumulator;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL3Byb21pc2VSZWR1Y2UubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTRDOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7O0FBRUE7QUFDQSxrQkFBa0IseURBQVM7QUFDM0I7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9wcm9taXNlUmVkdWNlLm1qcz9jNWFiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUHJvbWlzZSB9IGZyb20gJy4vaXNQcm9taXNlLm1qcyc7XG5cbi8qKlxuICogU2ltaWxhciB0byBBcnJheS5wcm90b3R5cGUucmVkdWNlKCksIGhvd2V2ZXIgdGhlIHJlZHVjaW5nIGNhbGxiYWNrIG1heSByZXR1cm5cbiAqIGEgUHJvbWlzZSwgaW4gd2hpY2ggY2FzZSByZWR1Y3Rpb24gd2lsbCBjb250aW51ZSBhZnRlciBlYWNoIHByb21pc2UgcmVzb2x2ZXMuXG4gKlxuICogSWYgdGhlIGNhbGxiYWNrIGRvZXMgbm90IHJldHVybiBhIFByb21pc2UsIHRoZW4gdGhpcyBmdW5jdGlvbiB3aWxsIGFsc28gbm90XG4gKiByZXR1cm4gYSBQcm9taXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzZVJlZHVjZSh2YWx1ZXMsIGNhbGxiYWNrRm4sIGluaXRpYWxWYWx1ZSkge1xuICBsZXQgYWNjdW11bGF0b3IgPSBpbml0aWFsVmFsdWU7XG5cbiAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICBhY2N1bXVsYXRvciA9IGlzUHJvbWlzZShhY2N1bXVsYXRvcilcbiAgICAgID8gYWNjdW11bGF0b3IudGhlbigocmVzb2x2ZWQpID0+IGNhbGxiYWNrRm4ocmVzb2x2ZWQsIHZhbHVlKSlcbiAgICAgIDogY2FsbGJhY2tGbihhY2N1bXVsYXRvciwgdmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIGFjY3VtdWxhdG9yO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/promiseReduce.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/suggestionList.mjs":
/*!*********************************************************!*\
  !*** ./node_modules/graphql/jsutils/suggestionList.mjs ***!
  \*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"suggestionList\": function() { return /* binding */ suggestionList; }\n/* harmony export */ });\n/* harmony import */ var _naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./naturalCompare.mjs */ \"./node_modules/graphql/jsutils/naturalCompare.mjs\");\n\n/**\n * Given an invalid input string and a list of valid options, returns a filtered\n * list of valid options sorted based on their similarity with the input.\n */\n\nfunction suggestionList(input, options) {\n  const optionsByDistance = Object.create(null);\n  const lexicalDistance = new LexicalDistance(input);\n  const threshold = Math.floor(input.length * 0.4) + 1;\n\n  for (const option of options) {\n    const distance = lexicalDistance.measure(option, threshold);\n\n    if (distance !== undefined) {\n      optionsByDistance[option] = distance;\n    }\n  }\n\n  return Object.keys(optionsByDistance).sort((a, b) => {\n    const distanceDiff = optionsByDistance[a] - optionsByDistance[b];\n    return distanceDiff !== 0 ? distanceDiff : (0,_naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_0__.naturalCompare)(a, b);\n  });\n}\n/**\n * Computes the lexical distance between strings A and B.\n *\n * The \"distance\" between two strings is given by counting the minimum number\n * of edits needed to transform string A into string B. An edit can be an\n * insertion, deletion, or substitution of a single character, or a swap of two\n * adjacent characters.\n *\n * Includes a custom alteration from Damerau-Levenshtein to treat case changes\n * as a single edit which helps identify mis-cased values with an edit distance\n * of 1.\n *\n * This distance can be useful for detecting typos in input or sorting\n */\n\nclass LexicalDistance {\n  constructor(input) {\n    this._input = input;\n    this._inputLowerCase = input.toLowerCase();\n    this._inputArray = stringToArray(this._inputLowerCase);\n    this._rows = [\n      new Array(input.length + 1).fill(0),\n      new Array(input.length + 1).fill(0),\n      new Array(input.length + 1).fill(0),\n    ];\n  }\n\n  measure(option, threshold) {\n    if (this._input === option) {\n      return 0;\n    }\n\n    const optionLowerCase = option.toLowerCase(); // Any case change counts as a single edit\n\n    if (this._inputLowerCase === optionLowerCase) {\n      return 1;\n    }\n\n    let a = stringToArray(optionLowerCase);\n    let b = this._inputArray;\n\n    if (a.length < b.length) {\n      const tmp = a;\n      a = b;\n      b = tmp;\n    }\n\n    const aLength = a.length;\n    const bLength = b.length;\n\n    if (aLength - bLength > threshold) {\n      return undefined;\n    }\n\n    const rows = this._rows;\n\n    for (let j = 0; j <= bLength; j++) {\n      rows[0][j] = j;\n    }\n\n    for (let i = 1; i <= aLength; i++) {\n      const upRow = rows[(i - 1) % 3];\n      const currentRow = rows[i % 3];\n      let smallestCell = (currentRow[0] = i);\n\n      for (let j = 1; j <= bLength; j++) {\n        const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n        let currentCell = Math.min(\n          upRow[j] + 1, // delete\n          currentRow[j - 1] + 1, // insert\n          upRow[j - 1] + cost, // substitute\n        );\n\n        if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n          // transposition\n          const doubleDiagonalCell = rows[(i - 2) % 3][j - 2];\n          currentCell = Math.min(currentCell, doubleDiagonalCell + 1);\n        }\n\n        if (currentCell < smallestCell) {\n          smallestCell = currentCell;\n        }\n\n        currentRow[j] = currentCell;\n      } // Early exit, since distance can't go smaller than smallest element of the previous row.\n\n      if (smallestCell > threshold) {\n        return undefined;\n      }\n    }\n\n    const distance = rows[aLength % 3][bLength];\n    return distance <= threshold ? distance : undefined;\n  }\n}\n\nfunction stringToArray(str) {\n  const strLength = str.length;\n  const array = new Array(strLength);\n\n  for (let i = 0; i < strLength; ++i) {\n    array[i] = str.charCodeAt(i);\n  }\n\n  return array;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL3N1Z2dlc3Rpb25MaXN0Lm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFzRDtBQUN0RDtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwrQ0FBK0MsbUVBQWM7QUFDN0QsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtEQUFrRDs7QUFFbEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxvQkFBb0IsY0FBYztBQUNsQztBQUNBOztBQUVBLG9CQUFvQixjQUFjO0FBQ2xDO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsY0FBYztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxRQUFROztBQUVSO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0IsZUFBZTtBQUNqQztBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy9zdWdnZXN0aW9uTGlzdC5tanM/ZjY5MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBuYXR1cmFsQ29tcGFyZSB9IGZyb20gJy4vbmF0dXJhbENvbXBhcmUubWpzJztcbi8qKlxuICogR2l2ZW4gYW4gaW52YWxpZCBpbnB1dCBzdHJpbmcgYW5kIGEgbGlzdCBvZiB2YWxpZCBvcHRpb25zLCByZXR1cm5zIGEgZmlsdGVyZWRcbiAqIGxpc3Qgb2YgdmFsaWQgb3B0aW9ucyBzb3J0ZWQgYmFzZWQgb24gdGhlaXIgc2ltaWxhcml0eSB3aXRoIHRoZSBpbnB1dC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3VnZ2VzdGlvbkxpc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgY29uc3Qgb3B0aW9uc0J5RGlzdGFuY2UgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBjb25zdCBsZXhpY2FsRGlzdGFuY2UgPSBuZXcgTGV4aWNhbERpc3RhbmNlKGlucHV0KTtcbiAgY29uc3QgdGhyZXNob2xkID0gTWF0aC5mbG9vcihpbnB1dC5sZW5ndGggKiAwLjQpICsgMTtcblxuICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgY29uc3QgZGlzdGFuY2UgPSBsZXhpY2FsRGlzdGFuY2UubWVhc3VyZShvcHRpb24sIHRocmVzaG9sZCk7XG5cbiAgICBpZiAoZGlzdGFuY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3B0aW9uc0J5RGlzdGFuY2Vbb3B0aW9uXSA9IGRpc3RhbmNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBPYmplY3Qua2V5cyhvcHRpb25zQnlEaXN0YW5jZSkuc29ydCgoYSwgYikgPT4ge1xuICAgIGNvbnN0IGRpc3RhbmNlRGlmZiA9IG9wdGlvbnNCeURpc3RhbmNlW2FdIC0gb3B0aW9uc0J5RGlzdGFuY2VbYl07XG4gICAgcmV0dXJuIGRpc3RhbmNlRGlmZiAhPT0gMCA/IGRpc3RhbmNlRGlmZiA6IG5hdHVyYWxDb21wYXJlKGEsIGIpO1xuICB9KTtcbn1cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGxleGljYWwgZGlzdGFuY2UgYmV0d2VlbiBzdHJpbmdzIEEgYW5kIEIuXG4gKlxuICogVGhlIFwiZGlzdGFuY2VcIiBiZXR3ZWVuIHR3byBzdHJpbmdzIGlzIGdpdmVuIGJ5IGNvdW50aW5nIHRoZSBtaW5pbXVtIG51bWJlclxuICogb2YgZWRpdHMgbmVlZGVkIHRvIHRyYW5zZm9ybSBzdHJpbmcgQSBpbnRvIHN0cmluZyBCLiBBbiBlZGl0IGNhbiBiZSBhblxuICogaW5zZXJ0aW9uLCBkZWxldGlvbiwgb3Igc3Vic3RpdHV0aW9uIG9mIGEgc2luZ2xlIGNoYXJhY3Rlciwgb3IgYSBzd2FwIG9mIHR3b1xuICogYWRqYWNlbnQgY2hhcmFjdGVycy5cbiAqXG4gKiBJbmNsdWRlcyBhIGN1c3RvbSBhbHRlcmF0aW9uIGZyb20gRGFtZXJhdS1MZXZlbnNodGVpbiB0byB0cmVhdCBjYXNlIGNoYW5nZXNcbiAqIGFzIGEgc2luZ2xlIGVkaXQgd2hpY2ggaGVscHMgaWRlbnRpZnkgbWlzLWNhc2VkIHZhbHVlcyB3aXRoIGFuIGVkaXQgZGlzdGFuY2VcbiAqIG9mIDEuXG4gKlxuICogVGhpcyBkaXN0YW5jZSBjYW4gYmUgdXNlZnVsIGZvciBkZXRlY3RpbmcgdHlwb3MgaW4gaW5wdXQgb3Igc29ydGluZ1xuICovXG5cbmNsYXNzIExleGljYWxEaXN0YW5jZSB7XG4gIGNvbnN0cnVjdG9yKGlucHV0KSB7XG4gICAgdGhpcy5faW5wdXQgPSBpbnB1dDtcbiAgICB0aGlzLl9pbnB1dExvd2VyQ2FzZSA9IGlucHV0LnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5faW5wdXRBcnJheSA9IHN0cmluZ1RvQXJyYXkodGhpcy5faW5wdXRMb3dlckNhc2UpO1xuICAgIHRoaXMuX3Jvd3MgPSBbXG4gICAgICBuZXcgQXJyYXkoaW5wdXQubGVuZ3RoICsgMSkuZmlsbCgwKSxcbiAgICAgIG5ldyBBcnJheShpbnB1dC5sZW5ndGggKyAxKS5maWxsKDApLFxuICAgICAgbmV3IEFycmF5KGlucHV0Lmxlbmd0aCArIDEpLmZpbGwoMCksXG4gICAgXTtcbiAgfVxuXG4gIG1lYXN1cmUob3B0aW9uLCB0aHJlc2hvbGQpIHtcbiAgICBpZiAodGhpcy5faW5wdXQgPT09IG9wdGlvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9uTG93ZXJDYXNlID0gb3B0aW9uLnRvTG93ZXJDYXNlKCk7IC8vIEFueSBjYXNlIGNoYW5nZSBjb3VudHMgYXMgYSBzaW5nbGUgZWRpdFxuXG4gICAgaWYgKHRoaXMuX2lucHV0TG93ZXJDYXNlID09PSBvcHRpb25Mb3dlckNhc2UpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGxldCBhID0gc3RyaW5nVG9BcnJheShvcHRpb25Mb3dlckNhc2UpO1xuICAgIGxldCBiID0gdGhpcy5faW5wdXRBcnJheTtcblxuICAgIGlmIChhLmxlbmd0aCA8IGIubGVuZ3RoKSB7XG4gICAgICBjb25zdCB0bXAgPSBhO1xuICAgICAgYSA9IGI7XG4gICAgICBiID0gdG1wO1xuICAgIH1cblxuICAgIGNvbnN0IGFMZW5ndGggPSBhLmxlbmd0aDtcbiAgICBjb25zdCBiTGVuZ3RoID0gYi5sZW5ndGg7XG5cbiAgICBpZiAoYUxlbmd0aCAtIGJMZW5ndGggPiB0aHJlc2hvbGQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3Qgcm93cyA9IHRoaXMuX3Jvd3M7XG5cbiAgICBmb3IgKGxldCBqID0gMDsgaiA8PSBiTGVuZ3RoOyBqKyspIHtcbiAgICAgIHJvd3NbMF1bal0gPSBqO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGFMZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdXBSb3cgPSByb3dzWyhpIC0gMSkgJSAzXTtcbiAgICAgIGNvbnN0IGN1cnJlbnRSb3cgPSByb3dzW2kgJSAzXTtcbiAgICAgIGxldCBzbWFsbGVzdENlbGwgPSAoY3VycmVudFJvd1swXSA9IGkpO1xuXG4gICAgICBmb3IgKGxldCBqID0gMTsgaiA8PSBiTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgY29uc3QgY29zdCA9IGFbaSAtIDFdID09PSBiW2ogLSAxXSA/IDAgOiAxO1xuICAgICAgICBsZXQgY3VycmVudENlbGwgPSBNYXRoLm1pbihcbiAgICAgICAgICB1cFJvd1tqXSArIDEsIC8vIGRlbGV0ZVxuICAgICAgICAgIGN1cnJlbnRSb3dbaiAtIDFdICsgMSwgLy8gaW5zZXJ0XG4gICAgICAgICAgdXBSb3dbaiAtIDFdICsgY29zdCwgLy8gc3Vic3RpdHV0ZVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpID4gMSAmJiBqID4gMSAmJiBhW2kgLSAxXSA9PT0gYltqIC0gMl0gJiYgYVtpIC0gMl0gPT09IGJbaiAtIDFdKSB7XG4gICAgICAgICAgLy8gdHJhbnNwb3NpdGlvblxuICAgICAgICAgIGNvbnN0IGRvdWJsZURpYWdvbmFsQ2VsbCA9IHJvd3NbKGkgLSAyKSAlIDNdW2ogLSAyXTtcbiAgICAgICAgICBjdXJyZW50Q2VsbCA9IE1hdGgubWluKGN1cnJlbnRDZWxsLCBkb3VibGVEaWFnb25hbENlbGwgKyAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjdXJyZW50Q2VsbCA8IHNtYWxsZXN0Q2VsbCkge1xuICAgICAgICAgIHNtYWxsZXN0Q2VsbCA9IGN1cnJlbnRDZWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudFJvd1tqXSA9IGN1cnJlbnRDZWxsO1xuICAgICAgfSAvLyBFYXJseSBleGl0LCBzaW5jZSBkaXN0YW5jZSBjYW4ndCBnbyBzbWFsbGVyIHRoYW4gc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgcHJldmlvdXMgcm93LlxuXG4gICAgICBpZiAoc21hbGxlc3RDZWxsID4gdGhyZXNob2xkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZGlzdGFuY2UgPSByb3dzW2FMZW5ndGggJSAzXVtiTGVuZ3RoXTtcbiAgICByZXR1cm4gZGlzdGFuY2UgPD0gdGhyZXNob2xkID8gZGlzdGFuY2UgOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RyaW5nVG9BcnJheShzdHIpIHtcbiAgY29uc3Qgc3RyTGVuZ3RoID0gc3RyLmxlbmd0aDtcbiAgY29uc3QgYXJyYXkgPSBuZXcgQXJyYXkoc3RyTGVuZ3RoKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ckxlbmd0aDsgKytpKSB7XG4gICAgYXJyYXlbaV0gPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgfVxuXG4gIHJldHVybiBhcnJheTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/suggestionList.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/toError.mjs":
/*!**************************************************!*\
  !*** ./node_modules/graphql/jsutils/toError.mjs ***!
  \**************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"toError\": function() { return /* binding */ toError; }\n/* harmony export */ });\n/* harmony import */ var _inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n\n/**\n * Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface.\n */\n\nfunction toError(thrownValue) {\n  return thrownValue instanceof Error\n    ? thrownValue\n    : new NonErrorThrown(thrownValue);\n}\n\nclass NonErrorThrown extends Error {\n  constructor(thrownValue) {\n    super('Unexpected error value: ' + (0,_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(thrownValue));\n    this.name = 'NonErrorThrown';\n    this.thrownValue = thrownValue;\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL3RvRXJyb3IubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXdDO0FBQ3hDO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1Q0FBdUMscURBQU87QUFDOUM7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvanN1dGlscy90b0Vycm9yLm1qcz9hYmE3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuL2luc3BlY3QubWpzJztcbi8qKlxuICogU29tZXRpbWVzIGEgbm9uLWVycm9yIGlzIHRocm93biwgd3JhcCBpdCBhcyBhbiBFcnJvciBpbnN0YW5jZSB0byBlbnN1cmUgYSBjb25zaXN0ZW50IEVycm9yIGludGVyZmFjZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdG9FcnJvcih0aHJvd25WYWx1ZSkge1xuICByZXR1cm4gdGhyb3duVmFsdWUgaW5zdGFuY2VvZiBFcnJvclxuICAgID8gdGhyb3duVmFsdWVcbiAgICA6IG5ldyBOb25FcnJvclRocm93bih0aHJvd25WYWx1ZSk7XG59XG5cbmNsYXNzIE5vbkVycm9yVGhyb3duIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcih0aHJvd25WYWx1ZSkge1xuICAgIHN1cGVyKCdVbmV4cGVjdGVkIGVycm9yIHZhbHVlOiAnICsgaW5zcGVjdCh0aHJvd25WYWx1ZSkpO1xuICAgIHRoaXMubmFtZSA9ICdOb25FcnJvclRocm93bic7XG4gICAgdGhpcy50aHJvd25WYWx1ZSA9IHRocm93blZhbHVlO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/toError.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/jsutils/toObjMap.mjs":
/*!***************************************************!*\
  !*** ./node_modules/graphql/jsutils/toObjMap.mjs ***!
  \***************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"toObjMap\": function() { return /* binding */ toObjMap; }\n/* harmony export */ });\nfunction toObjMap(obj) {\n  if (obj == null) {\n    return Object.create(null);\n  }\n\n  if (Object.getPrototypeOf(obj) === null) {\n    return obj;\n  }\n\n  const map = Object.create(null);\n\n  for (const [key, value] of Object.entries(obj)) {\n    map[key] = value;\n  }\n\n  return map;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9qc3V0aWxzL3RvT2JqTWFwLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2pzdXRpbHMvdG9PYmpNYXAubWpzP2FhNzUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHRvT2JqTWFwKG9iaikge1xuICBpZiAob2JqID09IG51bGwpIHtcbiAgICByZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgfVxuXG4gIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBjb25zdCBtYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICBtYXBba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG1hcDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/jsutils/toObjMap.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/language/ast.mjs":
/*!***********************************************!*\
  !*** ./node_modules/graphql/language/ast.mjs ***!
  \***********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Location\": function() { return /* binding */ Location; },\n/* harmony export */   \"OperationTypeNode\": function() { return /* binding */ OperationTypeNode; },\n/* harmony export */   \"QueryDocumentKeys\": function() { return /* binding */ QueryDocumentKeys; },\n/* harmony export */   \"Token\": function() { return /* binding */ Token; },\n/* harmony export */   \"isNode\": function() { return /* binding */ isNode; }\n/* harmony export */ });\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nclass Location {\n  /**\n   * The character offset at which this Node begins.\n   */\n\n  /**\n   * The character offset at which this Node ends.\n   */\n\n  /**\n   * The Token at which this Node begins.\n   */\n\n  /**\n   * The Token at which this Node ends.\n   */\n\n  /**\n   * The Source document the AST represents.\n   */\n  constructor(startToken, endToken, source) {\n    this.start = startToken.start;\n    this.end = endToken.end;\n    this.startToken = startToken;\n    this.endToken = endToken;\n    this.source = source;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'Location';\n  }\n\n  toJSON() {\n    return {\n      start: this.start,\n      end: this.end,\n    };\n  }\n}\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nclass Token {\n  /**\n   * The kind of Token.\n   */\n\n  /**\n   * The character offset at which this Node begins.\n   */\n\n  /**\n   * The character offset at which this Node ends.\n   */\n\n  /**\n   * The 1-indexed line number on which this Token appears.\n   */\n\n  /**\n   * The 1-indexed column number at which this Token begins.\n   */\n\n  /**\n   * For non-punctuation tokens, represents the interpreted value of the token.\n   *\n   * Note: is undefined for punctuation tokens, but typed as string for\n   * convenience in the parser.\n   */\n\n  /**\n   * Tokens exist as nodes in a double-linked-list amongst all tokens\n   * including ignored tokens. <SOF> is always the first node and <EOF>\n   * the last.\n   */\n  constructor(kind, start, end, line, column, value) {\n    this.kind = kind;\n    this.start = start;\n    this.end = end;\n    this.line = line;\n    this.column = column; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\n    this.value = value;\n    this.prev = null;\n    this.next = null;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'Token';\n  }\n\n  toJSON() {\n    return {\n      kind: this.kind,\n      value: this.value,\n      line: this.line,\n      column: this.column,\n    };\n  }\n}\n/**\n * The list of all possible AST node types.\n */\n\n/**\n * @internal\n */\nconst QueryDocumentKeys = {\n  Name: [],\n  Document: ['definitions'],\n  OperationDefinition: [\n    'name',\n    'variableDefinitions',\n    'directives',\n    'selectionSet',\n  ],\n  VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n  Variable: ['name'],\n  SelectionSet: ['selections'],\n  Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n  Argument: ['name', 'value'],\n  FragmentSpread: ['name', 'directives'],\n  InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n  FragmentDefinition: [\n    'name', // Note: fragment variable definitions are deprecated and will removed in v17.0.0\n    'variableDefinitions',\n    'typeCondition',\n    'directives',\n    'selectionSet',\n  ],\n  IntValue: [],\n  FloatValue: [],\n  StringValue: [],\n  BooleanValue: [],\n  NullValue: [],\n  EnumValue: [],\n  ListValue: ['values'],\n  ObjectValue: ['fields'],\n  ObjectField: ['name', 'value'],\n  Directive: ['name', 'arguments'],\n  NamedType: ['name'],\n  ListType: ['type'],\n  NonNullType: ['type'],\n  SchemaDefinition: ['description', 'directives', 'operationTypes'],\n  OperationTypeDefinition: ['type'],\n  ScalarTypeDefinition: ['description', 'name', 'directives'],\n  ObjectTypeDefinition: [\n    'description',\n    'name',\n    'interfaces',\n    'directives',\n    'fields',\n  ],\n  FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n  InputValueDefinition: [\n    'description',\n    'name',\n    'type',\n    'defaultValue',\n    'directives',\n  ],\n  InterfaceTypeDefinition: [\n    'description',\n    'name',\n    'interfaces',\n    'directives',\n    'fields',\n  ],\n  UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n  EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n  EnumValueDefinition: ['description', 'name', 'directives'],\n  InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n  DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n  SchemaExtension: ['directives', 'operationTypes'],\n  ScalarTypeExtension: ['name', 'directives'],\n  ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n  InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n  UnionTypeExtension: ['name', 'directives', 'types'],\n  EnumTypeExtension: ['name', 'directives', 'values'],\n  InputObjectTypeExtension: ['name', 'directives', 'fields'],\n};\nconst kindValues = new Set(Object.keys(QueryDocumentKeys));\n/**\n * @internal\n */\n\nfunction isNode(maybeNode) {\n  const maybeKind =\n    maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind;\n  return typeof maybeKind === 'string' && kindValues.has(maybeKind);\n}\n/** Name */\n\nlet OperationTypeNode;\n\n(function (OperationTypeNode) {\n  OperationTypeNode['QUERY'] = 'query';\n  OperationTypeNode['MUTATION'] = 'mutation';\n  OperationTypeNode['SUBSCRIPTION'] = 'subscription';\n})(OperationTypeNode || (OperationTypeNode = {}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9hc3QubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDhDQUE4QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9hc3QubWpzPzJhNzYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb250YWlucyBhIHJhbmdlIG9mIFVURi04IGNoYXJhY3RlciBvZmZzZXRzIGFuZCB0b2tlbiByZWZlcmVuY2VzIHRoYXRcbiAqIGlkZW50aWZ5IHRoZSByZWdpb24gb2YgdGhlIHNvdXJjZSBmcm9tIHdoaWNoIHRoZSBBU1QgZGVyaXZlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIExvY2F0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGF0IHdoaWNoIHRoaXMgTm9kZSBiZWdpbnMuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGUgY2hhcmFjdGVyIG9mZnNldCBhdCB3aGljaCB0aGlzIE5vZGUgZW5kcy5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRoZSBUb2tlbiBhdCB3aGljaCB0aGlzIE5vZGUgYmVnaW5zLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlIFRva2VuIGF0IHdoaWNoIHRoaXMgTm9kZSBlbmRzLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlIFNvdXJjZSBkb2N1bWVudCB0aGUgQVNUIHJlcHJlc2VudHMuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzdGFydFRva2VuLCBlbmRUb2tlbiwgc291cmNlKSB7XG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0VG9rZW4uc3RhcnQ7XG4gICAgdGhpcy5lbmQgPSBlbmRUb2tlbi5lbmQ7XG4gICAgdGhpcy5zdGFydFRva2VuID0gc3RhcnRUb2tlbjtcbiAgICB0aGlzLmVuZFRva2VuID0gZW5kVG9rZW47XG4gICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdMb2NhdGlvbic7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0OiB0aGlzLnN0YXJ0LFxuICAgICAgZW5kOiB0aGlzLmVuZCxcbiAgICB9O1xuICB9XG59XG4vKipcbiAqIFJlcHJlc2VudHMgYSByYW5nZSBvZiBjaGFyYWN0ZXJzIHJlcHJlc2VudGVkIGJ5IGEgbGV4aWNhbCB0b2tlblxuICogd2l0aGluIGEgU291cmNlLlxuICovXG5cbmV4cG9ydCBjbGFzcyBUb2tlbiB7XG4gIC8qKlxuICAgKiBUaGUga2luZCBvZiBUb2tlbi5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGF0IHdoaWNoIHRoaXMgTm9kZSBiZWdpbnMuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUaGUgY2hhcmFjdGVyIG9mZnNldCBhdCB3aGljaCB0aGlzIE5vZGUgZW5kcy5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRoZSAxLWluZGV4ZWQgbGluZSBudW1iZXIgb24gd2hpY2ggdGhpcyBUb2tlbiBhcHBlYXJzLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlIDEtaW5kZXhlZCBjb2x1bW4gbnVtYmVyIGF0IHdoaWNoIHRoaXMgVG9rZW4gYmVnaW5zLlxuICAgKi9cblxuICAvKipcbiAgICogRm9yIG5vbi1wdW5jdHVhdGlvbiB0b2tlbnMsIHJlcHJlc2VudHMgdGhlIGludGVycHJldGVkIHZhbHVlIG9mIHRoZSB0b2tlbi5cbiAgICpcbiAgICogTm90ZTogaXMgdW5kZWZpbmVkIGZvciBwdW5jdHVhdGlvbiB0b2tlbnMsIGJ1dCB0eXBlZCBhcyBzdHJpbmcgZm9yXG4gICAqIGNvbnZlbmllbmNlIGluIHRoZSBwYXJzZXIuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBUb2tlbnMgZXhpc3QgYXMgbm9kZXMgaW4gYSBkb3VibGUtbGlua2VkLWxpc3QgYW1vbmdzdCBhbGwgdG9rZW5zXG4gICAqIGluY2x1ZGluZyBpZ25vcmVkIHRva2Vucy4gPFNPRj4gaXMgYWx3YXlzIHRoZSBmaXJzdCBub2RlIGFuZCA8RU9GPlxuICAgKiB0aGUgbGFzdC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGtpbmQsIHN0YXJ0LCBlbmQsIGxpbmUsIGNvbHVtbiwgdmFsdWUpIHtcbiAgICB0aGlzLmtpbmQgPSBraW5kO1xuICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICB0aGlzLmVuZCA9IGVuZDtcbiAgICB0aGlzLmxpbmUgPSBsaW5lO1xuICAgIHRoaXMuY29sdW1uID0gY29sdW1uOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMucHJldiA9IG51bGw7XG4gICAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gJ1Rva2VuJztcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogdGhpcy5raW5kLFxuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICBsaW5lOiB0aGlzLmxpbmUsXG4gICAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgIH07XG4gIH1cbn1cbi8qKlxuICogVGhlIGxpc3Qgb2YgYWxsIHBvc3NpYmxlIEFTVCBub2RlIHR5cGVzLlxuICovXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBRdWVyeURvY3VtZW50S2V5cyA9IHtcbiAgTmFtZTogW10sXG4gIERvY3VtZW50OiBbJ2RlZmluaXRpb25zJ10sXG4gIE9wZXJhdGlvbkRlZmluaXRpb246IFtcbiAgICAnbmFtZScsXG4gICAgJ3ZhcmlhYmxlRGVmaW5pdGlvbnMnLFxuICAgICdkaXJlY3RpdmVzJyxcbiAgICAnc2VsZWN0aW9uU2V0JyxcbiAgXSxcbiAgVmFyaWFibGVEZWZpbml0aW9uOiBbJ3ZhcmlhYmxlJywgJ3R5cGUnLCAnZGVmYXVsdFZhbHVlJywgJ2RpcmVjdGl2ZXMnXSxcbiAgVmFyaWFibGU6IFsnbmFtZSddLFxuICBTZWxlY3Rpb25TZXQ6IFsnc2VsZWN0aW9ucyddLFxuICBGaWVsZDogWydhbGlhcycsICduYW1lJywgJ2FyZ3VtZW50cycsICdkaXJlY3RpdmVzJywgJ3NlbGVjdGlvblNldCddLFxuICBBcmd1bWVudDogWyduYW1lJywgJ3ZhbHVlJ10sXG4gIEZyYWdtZW50U3ByZWFkOiBbJ25hbWUnLCAnZGlyZWN0aXZlcyddLFxuICBJbmxpbmVGcmFnbWVudDogWyd0eXBlQ29uZGl0aW9uJywgJ2RpcmVjdGl2ZXMnLCAnc2VsZWN0aW9uU2V0J10sXG4gIEZyYWdtZW50RGVmaW5pdGlvbjogW1xuICAgICduYW1lJywgLy8gTm90ZTogZnJhZ21lbnQgdmFyaWFibGUgZGVmaW5pdGlvbnMgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgcmVtb3ZlZCBpbiB2MTcuMC4wXG4gICAgJ3ZhcmlhYmxlRGVmaW5pdGlvbnMnLFxuICAgICd0eXBlQ29uZGl0aW9uJyxcbiAgICAnZGlyZWN0aXZlcycsXG4gICAgJ3NlbGVjdGlvblNldCcsXG4gIF0sXG4gIEludFZhbHVlOiBbXSxcbiAgRmxvYXRWYWx1ZTogW10sXG4gIFN0cmluZ1ZhbHVlOiBbXSxcbiAgQm9vbGVhblZhbHVlOiBbXSxcbiAgTnVsbFZhbHVlOiBbXSxcbiAgRW51bVZhbHVlOiBbXSxcbiAgTGlzdFZhbHVlOiBbJ3ZhbHVlcyddLFxuICBPYmplY3RWYWx1ZTogWydmaWVsZHMnXSxcbiAgT2JqZWN0RmllbGQ6IFsnbmFtZScsICd2YWx1ZSddLFxuICBEaXJlY3RpdmU6IFsnbmFtZScsICdhcmd1bWVudHMnXSxcbiAgTmFtZWRUeXBlOiBbJ25hbWUnXSxcbiAgTGlzdFR5cGU6IFsndHlwZSddLFxuICBOb25OdWxsVHlwZTogWyd0eXBlJ10sXG4gIFNjaGVtYURlZmluaXRpb246IFsnZGVzY3JpcHRpb24nLCAnZGlyZWN0aXZlcycsICdvcGVyYXRpb25UeXBlcyddLFxuICBPcGVyYXRpb25UeXBlRGVmaW5pdGlvbjogWyd0eXBlJ10sXG4gIFNjYWxhclR5cGVEZWZpbml0aW9uOiBbJ2Rlc2NyaXB0aW9uJywgJ25hbWUnLCAnZGlyZWN0aXZlcyddLFxuICBPYmplY3RUeXBlRGVmaW5pdGlvbjogW1xuICAgICdkZXNjcmlwdGlvbicsXG4gICAgJ25hbWUnLFxuICAgICdpbnRlcmZhY2VzJyxcbiAgICAnZGlyZWN0aXZlcycsXG4gICAgJ2ZpZWxkcycsXG4gIF0sXG4gIEZpZWxkRGVmaW5pdGlvbjogWydkZXNjcmlwdGlvbicsICduYW1lJywgJ2FyZ3VtZW50cycsICd0eXBlJywgJ2RpcmVjdGl2ZXMnXSxcbiAgSW5wdXRWYWx1ZURlZmluaXRpb246IFtcbiAgICAnZGVzY3JpcHRpb24nLFxuICAgICduYW1lJyxcbiAgICAndHlwZScsXG4gICAgJ2RlZmF1bHRWYWx1ZScsXG4gICAgJ2RpcmVjdGl2ZXMnLFxuICBdLFxuICBJbnRlcmZhY2VUeXBlRGVmaW5pdGlvbjogW1xuICAgICdkZXNjcmlwdGlvbicsXG4gICAgJ25hbWUnLFxuICAgICdpbnRlcmZhY2VzJyxcbiAgICAnZGlyZWN0aXZlcycsXG4gICAgJ2ZpZWxkcycsXG4gIF0sXG4gIFVuaW9uVHlwZURlZmluaXRpb246IFsnZGVzY3JpcHRpb24nLCAnbmFtZScsICdkaXJlY3RpdmVzJywgJ3R5cGVzJ10sXG4gIEVudW1UeXBlRGVmaW5pdGlvbjogWydkZXNjcmlwdGlvbicsICduYW1lJywgJ2RpcmVjdGl2ZXMnLCAndmFsdWVzJ10sXG4gIEVudW1WYWx1ZURlZmluaXRpb246IFsnZGVzY3JpcHRpb24nLCAnbmFtZScsICdkaXJlY3RpdmVzJ10sXG4gIElucHV0T2JqZWN0VHlwZURlZmluaXRpb246IFsnZGVzY3JpcHRpb24nLCAnbmFtZScsICdkaXJlY3RpdmVzJywgJ2ZpZWxkcyddLFxuICBEaXJlY3RpdmVEZWZpbml0aW9uOiBbJ2Rlc2NyaXB0aW9uJywgJ25hbWUnLCAnYXJndW1lbnRzJywgJ2xvY2F0aW9ucyddLFxuICBTY2hlbWFFeHRlbnNpb246IFsnZGlyZWN0aXZlcycsICdvcGVyYXRpb25UeXBlcyddLFxuICBTY2FsYXJUeXBlRXh0ZW5zaW9uOiBbJ25hbWUnLCAnZGlyZWN0aXZlcyddLFxuICBPYmplY3RUeXBlRXh0ZW5zaW9uOiBbJ25hbWUnLCAnaW50ZXJmYWNlcycsICdkaXJlY3RpdmVzJywgJ2ZpZWxkcyddLFxuICBJbnRlcmZhY2VUeXBlRXh0ZW5zaW9uOiBbJ25hbWUnLCAnaW50ZXJmYWNlcycsICdkaXJlY3RpdmVzJywgJ2ZpZWxkcyddLFxuICBVbmlvblR5cGVFeHRlbnNpb246IFsnbmFtZScsICdkaXJlY3RpdmVzJywgJ3R5cGVzJ10sXG4gIEVudW1UeXBlRXh0ZW5zaW9uOiBbJ25hbWUnLCAnZGlyZWN0aXZlcycsICd2YWx1ZXMnXSxcbiAgSW5wdXRPYmplY3RUeXBlRXh0ZW5zaW9uOiBbJ25hbWUnLCAnZGlyZWN0aXZlcycsICdmaWVsZHMnXSxcbn07XG5jb25zdCBraW5kVmFsdWVzID0gbmV3IFNldChPYmplY3Qua2V5cyhRdWVyeURvY3VtZW50S2V5cykpO1xuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlKG1heWJlTm9kZSkge1xuICBjb25zdCBtYXliZUtpbmQgPVxuICAgIG1heWJlTm9kZSA9PT0gbnVsbCB8fCBtYXliZU5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG1heWJlTm9kZS5raW5kO1xuICByZXR1cm4gdHlwZW9mIG1heWJlS2luZCA9PT0gJ3N0cmluZycgJiYga2luZFZhbHVlcy5oYXMobWF5YmVLaW5kKTtcbn1cbi8qKiBOYW1lICovXG5cbmV4cG9ydCBsZXQgT3BlcmF0aW9uVHlwZU5vZGU7XG5cbihmdW5jdGlvbiAoT3BlcmF0aW9uVHlwZU5vZGUpIHtcbiAgT3BlcmF0aW9uVHlwZU5vZGVbJ1FVRVJZJ10gPSAncXVlcnknO1xuICBPcGVyYXRpb25UeXBlTm9kZVsnTVVUQVRJT04nXSA9ICdtdXRhdGlvbic7XG4gIE9wZXJhdGlvblR5cGVOb2RlWydTVUJTQ1JJUFRJT04nXSA9ICdzdWJzY3JpcHRpb24nO1xufSkoT3BlcmF0aW9uVHlwZU5vZGUgfHwgKE9wZXJhdGlvblR5cGVOb2RlID0ge30pKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/language/ast.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/language/blockString.mjs":
/*!*******************************************************!*\
  !*** ./node_modules/graphql/language/blockString.mjs ***!
  \*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"dedentBlockStringLines\": function() { return /* binding */ dedentBlockStringLines; },\n/* harmony export */   \"isPrintableAsBlockString\": function() { return /* binding */ isPrintableAsBlockString; },\n/* harmony export */   \"printBlockString\": function() { return /* binding */ printBlockString; }\n/* harmony export */ });\n/* harmony import */ var _characterClasses_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./characterClasses.mjs */ \"./node_modules/graphql/language/characterClasses.mjs\");\n\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\n\nfunction dedentBlockStringLines(lines) {\n  var _firstNonEmptyLine2;\n\n  let commonIndent = Number.MAX_SAFE_INTEGER;\n  let firstNonEmptyLine = null;\n  let lastNonEmptyLine = -1;\n\n  for (let i = 0; i < lines.length; ++i) {\n    var _firstNonEmptyLine;\n\n    const line = lines[i];\n    const indent = leadingWhitespace(line);\n\n    if (indent === line.length) {\n      continue; // skip empty lines\n    }\n\n    firstNonEmptyLine =\n      (_firstNonEmptyLine = firstNonEmptyLine) !== null &&\n      _firstNonEmptyLine !== void 0\n        ? _firstNonEmptyLine\n        : i;\n    lastNonEmptyLine = i;\n\n    if (i !== 0 && indent < commonIndent) {\n      commonIndent = indent;\n    }\n  }\n\n  return lines // Remove common indentation from all lines but first.\n    .map((line, i) => (i === 0 ? line : line.slice(commonIndent))) // Remove leading and trailing blank lines.\n    .slice(\n      (_firstNonEmptyLine2 = firstNonEmptyLine) !== null &&\n        _firstNonEmptyLine2 !== void 0\n        ? _firstNonEmptyLine2\n        : 0,\n      lastNonEmptyLine + 1,\n    );\n}\n\nfunction leadingWhitespace(str) {\n  let i = 0;\n\n  while (i < str.length && (0,_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_0__.isWhiteSpace)(str.charCodeAt(i))) {\n    ++i;\n  }\n\n  return i;\n}\n/**\n * @internal\n */\n\nfunction isPrintableAsBlockString(value) {\n  if (value === '') {\n    return true; // empty string is printable\n  }\n\n  let isEmptyLine = true;\n  let hasIndent = false;\n  let hasCommonIndent = true;\n  let seenNonEmptyLine = false;\n\n  for (let i = 0; i < value.length; ++i) {\n    switch (value.codePointAt(i)) {\n      case 0x0000:\n      case 0x0001:\n      case 0x0002:\n      case 0x0003:\n      case 0x0004:\n      case 0x0005:\n      case 0x0006:\n      case 0x0007:\n      case 0x0008:\n      case 0x000b:\n      case 0x000c:\n      case 0x000e:\n      case 0x000f:\n        return false;\n      // Has non-printable characters\n\n      case 0x000d:\n        //  \\r\n        return false;\n      // Has \\r or \\r\\n which will be replaced as \\n\n\n      case 10:\n        //  \\n\n        if (isEmptyLine && !seenNonEmptyLine) {\n          return false; // Has leading new line\n        }\n\n        seenNonEmptyLine = true;\n        isEmptyLine = true;\n        hasIndent = false;\n        break;\n\n      case 9: //   \\t\n\n      case 32:\n        //  <space>\n        hasIndent || (hasIndent = isEmptyLine);\n        break;\n\n      default:\n        hasCommonIndent && (hasCommonIndent = hasIndent);\n        isEmptyLine = false;\n    }\n  }\n\n  if (isEmptyLine) {\n    return false; // Has trailing empty lines\n  }\n\n  if (hasCommonIndent && seenNonEmptyLine) {\n    return false; // Has internal indent\n  }\n\n  return true;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nfunction printBlockString(value, options) {\n  const escapedValue = value.replace(/\"\"\"/g, '\\\\\"\"\"'); // Expand a block string's raw value into independent lines.\n\n  const lines = escapedValue.split(/\\r\\n|[\\n\\r]/g);\n  const isSingleLine = lines.length === 1; // If common indentation is found we can fix some of those cases by adding leading new line\n\n  const forceLeadingNewLine =\n    lines.length > 1 &&\n    lines\n      .slice(1)\n      .every((line) => line.length === 0 || (0,_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_0__.isWhiteSpace)(line.charCodeAt(0))); // Trailing triple quotes just looks confusing but doesn't force trailing new line\n\n  const hasTrailingTripleQuotes = escapedValue.endsWith('\\\\\"\"\"'); // Trailing quote (single or double) or slash forces trailing new line\n\n  const hasTrailingQuote = value.endsWith('\"') && !hasTrailingTripleQuotes;\n  const hasTrailingSlash = value.endsWith('\\\\');\n  const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash;\n  const printAsMultipleLines =\n    !(options !== null && options !== void 0 && options.minimize) && // add leading and trailing new lines only if it improves readability\n    (!isSingleLine ||\n      value.length > 70 ||\n      forceTrailingNewline ||\n      forceLeadingNewLine ||\n      hasTrailingTripleQuotes);\n  let result = ''; // Format a multi-line block quote to account for leading space.\n\n  const skipLeadingNewLine = isSingleLine && (0,_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_0__.isWhiteSpace)(value.charCodeAt(0));\n\n  if ((printAsMultipleLines && !skipLeadingNewLine) || forceLeadingNewLine) {\n    result += '\\n';\n  }\n\n  result += escapedValue;\n\n  if (printAsMultipleLines || forceTrailingNewline) {\n    result += '\\n';\n  }\n\n  return '\"\"\"' + result + '\"\"\"';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9ibG9ja1N0cmluZy5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFzRDtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGtCQUFrQixrQkFBa0I7QUFDcEM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSwyQkFBMkIsbUVBQVk7QUFDdkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQSxpQkFBaUI7QUFDakI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCLGtCQUFrQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjs7QUFFQTtBQUNBLGtCQUFrQjtBQUNsQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCx1REFBdUQ7O0FBRXZEO0FBQ0EsMkNBQTJDOztBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxtRUFBWSx1QkFBdUI7O0FBRS9FLGtFQUFrRTs7QUFFbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7O0FBRW5CLDZDQUE2QyxtRUFBWTs7QUFFekQ7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL2Jsb2NrU3RyaW5nLm1qcz8zYmIyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzV2hpdGVTcGFjZSB9IGZyb20gJy4vY2hhcmFjdGVyQ2xhc3Nlcy5tanMnO1xuLyoqXG4gKiBQcm9kdWNlcyB0aGUgdmFsdWUgb2YgYSBibG9jayBzdHJpbmcgZnJvbSBpdHMgcGFyc2VkIHJhdyB2YWx1ZSwgc2ltaWxhciB0b1xuICogQ29mZmVlU2NyaXB0J3MgYmxvY2sgc3RyaW5nLCBQeXRob24ncyBkb2NzdHJpbmcgdHJpbSBvciBSdWJ5J3Mgc3RyaXBfaGVyZWRvYy5cbiAqXG4gKiBUaGlzIGltcGxlbWVudHMgdGhlIEdyYXBoUUwgc3BlYydzIEJsb2NrU3RyaW5nVmFsdWUoKSBzdGF0aWMgYWxnb3JpdGhtLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBkZWRlbnRCbG9ja1N0cmluZ0xpbmVzKGxpbmVzKSB7XG4gIHZhciBfZmlyc3ROb25FbXB0eUxpbmUyO1xuXG4gIGxldCBjb21tb25JbmRlbnQgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjtcbiAgbGV0IGZpcnN0Tm9uRW1wdHlMaW5lID0gbnVsbDtcbiAgbGV0IGxhc3ROb25FbXB0eUxpbmUgPSAtMTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgKytpKSB7XG4gICAgdmFyIF9maXJzdE5vbkVtcHR5TGluZTtcblxuICAgIGNvbnN0IGxpbmUgPSBsaW5lc1tpXTtcbiAgICBjb25zdCBpbmRlbnQgPSBsZWFkaW5nV2hpdGVzcGFjZShsaW5lKTtcblxuICAgIGlmIChpbmRlbnQgPT09IGxpbmUubGVuZ3RoKSB7XG4gICAgICBjb250aW51ZTsgLy8gc2tpcCBlbXB0eSBsaW5lc1xuICAgIH1cblxuICAgIGZpcnN0Tm9uRW1wdHlMaW5lID1cbiAgICAgIChfZmlyc3ROb25FbXB0eUxpbmUgPSBmaXJzdE5vbkVtcHR5TGluZSkgIT09IG51bGwgJiZcbiAgICAgIF9maXJzdE5vbkVtcHR5TGluZSAhPT0gdm9pZCAwXG4gICAgICAgID8gX2ZpcnN0Tm9uRW1wdHlMaW5lXG4gICAgICAgIDogaTtcbiAgICBsYXN0Tm9uRW1wdHlMaW5lID0gaTtcblxuICAgIGlmIChpICE9PSAwICYmIGluZGVudCA8IGNvbW1vbkluZGVudCkge1xuICAgICAgY29tbW9uSW5kZW50ID0gaW5kZW50O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsaW5lcyAvLyBSZW1vdmUgY29tbW9uIGluZGVudGF0aW9uIGZyb20gYWxsIGxpbmVzIGJ1dCBmaXJzdC5cbiAgICAubWFwKChsaW5lLCBpKSA9PiAoaSA9PT0gMCA/IGxpbmUgOiBsaW5lLnNsaWNlKGNvbW1vbkluZGVudCkpKSAvLyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgYmxhbmsgbGluZXMuXG4gICAgLnNsaWNlKFxuICAgICAgKF9maXJzdE5vbkVtcHR5TGluZTIgPSBmaXJzdE5vbkVtcHR5TGluZSkgIT09IG51bGwgJiZcbiAgICAgICAgX2ZpcnN0Tm9uRW1wdHlMaW5lMiAhPT0gdm9pZCAwXG4gICAgICAgID8gX2ZpcnN0Tm9uRW1wdHlMaW5lMlxuICAgICAgICA6IDAsXG4gICAgICBsYXN0Tm9uRW1wdHlMaW5lICsgMSxcbiAgICApO1xufVxuXG5mdW5jdGlvbiBsZWFkaW5nV2hpdGVzcGFjZShzdHIpIHtcbiAgbGV0IGkgPSAwO1xuXG4gIHdoaWxlIChpIDwgc3RyLmxlbmd0aCAmJiBpc1doaXRlU3BhY2Uoc3RyLmNoYXJDb2RlQXQoaSkpKSB7XG4gICAgKytpO1xuICB9XG5cbiAgcmV0dXJuIGk7XG59XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ByaW50YWJsZUFzQmxvY2tTdHJpbmcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSAnJykge1xuICAgIHJldHVybiB0cnVlOyAvLyBlbXB0eSBzdHJpbmcgaXMgcHJpbnRhYmxlXG4gIH1cblxuICBsZXQgaXNFbXB0eUxpbmUgPSB0cnVlO1xuICBsZXQgaGFzSW5kZW50ID0gZmFsc2U7XG4gIGxldCBoYXNDb21tb25JbmRlbnQgPSB0cnVlO1xuICBsZXQgc2Vlbk5vbkVtcHR5TGluZSA9IGZhbHNlO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyArK2kpIHtcbiAgICBzd2l0Y2ggKHZhbHVlLmNvZGVQb2ludEF0KGkpKSB7XG4gICAgICBjYXNlIDB4MDAwMDpcbiAgICAgIGNhc2UgMHgwMDAxOlxuICAgICAgY2FzZSAweDAwMDI6XG4gICAgICBjYXNlIDB4MDAwMzpcbiAgICAgIGNhc2UgMHgwMDA0OlxuICAgICAgY2FzZSAweDAwMDU6XG4gICAgICBjYXNlIDB4MDAwNjpcbiAgICAgIGNhc2UgMHgwMDA3OlxuICAgICAgY2FzZSAweDAwMDg6XG4gICAgICBjYXNlIDB4MDAwYjpcbiAgICAgIGNhc2UgMHgwMDBjOlxuICAgICAgY2FzZSAweDAwMGU6XG4gICAgICBjYXNlIDB4MDAwZjpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgLy8gSGFzIG5vbi1wcmludGFibGUgY2hhcmFjdGVyc1xuXG4gICAgICBjYXNlIDB4MDAwZDpcbiAgICAgICAgLy8gIFxcclxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAvLyBIYXMgXFxyIG9yIFxcclxcbiB3aGljaCB3aWxsIGJlIHJlcGxhY2VkIGFzIFxcblxuXG4gICAgICBjYXNlIDEwOlxuICAgICAgICAvLyAgXFxuXG4gICAgICAgIGlmIChpc0VtcHR5TGluZSAmJiAhc2Vlbk5vbkVtcHR5TGluZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gSGFzIGxlYWRpbmcgbmV3IGxpbmVcbiAgICAgICAgfVxuXG4gICAgICAgIHNlZW5Ob25FbXB0eUxpbmUgPSB0cnVlO1xuICAgICAgICBpc0VtcHR5TGluZSA9IHRydWU7XG4gICAgICAgIGhhc0luZGVudCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSA5OiAvLyAgIFxcdFxuXG4gICAgICBjYXNlIDMyOlxuICAgICAgICAvLyAgPHNwYWNlPlxuICAgICAgICBoYXNJbmRlbnQgfHwgKGhhc0luZGVudCA9IGlzRW1wdHlMaW5lKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGhhc0NvbW1vbkluZGVudCAmJiAoaGFzQ29tbW9uSW5kZW50ID0gaGFzSW5kZW50KTtcbiAgICAgICAgaXNFbXB0eUxpbmUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpZiAoaXNFbXB0eUxpbmUpIHtcbiAgICByZXR1cm4gZmFsc2U7IC8vIEhhcyB0cmFpbGluZyBlbXB0eSBsaW5lc1xuICB9XG5cbiAgaWYgKGhhc0NvbW1vbkluZGVudCAmJiBzZWVuTm9uRW1wdHlMaW5lKSB7XG4gICAgcmV0dXJuIGZhbHNlOyAvLyBIYXMgaW50ZXJuYWwgaW5kZW50XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cbi8qKlxuICogUHJpbnQgYSBibG9jayBzdHJpbmcgaW4gdGhlIGluZGVudGVkIGJsb2NrIGZvcm0gYnkgYWRkaW5nIGEgbGVhZGluZyBhbmRcbiAqIHRyYWlsaW5nIGJsYW5rIGxpbmUuIEhvd2V2ZXIsIGlmIGEgYmxvY2sgc3RyaW5nIHN0YXJ0cyB3aXRoIHdoaXRlc3BhY2UgYW5kIGlzXG4gKiBhIHNpbmdsZS1saW5lLCBhZGRpbmcgYSBsZWFkaW5nIGJsYW5rIGxpbmUgd291bGQgc3RyaXAgdGhhdCB3aGl0ZXNwYWNlLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludEJsb2NrU3RyaW5nKHZhbHVlLCBvcHRpb25zKSB7XG4gIGNvbnN0IGVzY2FwZWRWYWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1wiXCJcIi9nLCAnXFxcXFwiXCJcIicpOyAvLyBFeHBhbmQgYSBibG9jayBzdHJpbmcncyByYXcgdmFsdWUgaW50byBpbmRlcGVuZGVudCBsaW5lcy5cblxuICBjb25zdCBsaW5lcyA9IGVzY2FwZWRWYWx1ZS5zcGxpdCgvXFxyXFxufFtcXG5cXHJdL2cpO1xuICBjb25zdCBpc1NpbmdsZUxpbmUgPSBsaW5lcy5sZW5ndGggPT09IDE7IC8vIElmIGNvbW1vbiBpbmRlbnRhdGlvbiBpcyBmb3VuZCB3ZSBjYW4gZml4IHNvbWUgb2YgdGhvc2UgY2FzZXMgYnkgYWRkaW5nIGxlYWRpbmcgbmV3IGxpbmVcblxuICBjb25zdCBmb3JjZUxlYWRpbmdOZXdMaW5lID1cbiAgICBsaW5lcy5sZW5ndGggPiAxICYmXG4gICAgbGluZXNcbiAgICAgIC5zbGljZSgxKVxuICAgICAgLmV2ZXJ5KChsaW5lKSA9PiBsaW5lLmxlbmd0aCA9PT0gMCB8fCBpc1doaXRlU3BhY2UobGluZS5jaGFyQ29kZUF0KDApKSk7IC8vIFRyYWlsaW5nIHRyaXBsZSBxdW90ZXMganVzdCBsb29rcyBjb25mdXNpbmcgYnV0IGRvZXNuJ3QgZm9yY2UgdHJhaWxpbmcgbmV3IGxpbmVcblxuICBjb25zdCBoYXNUcmFpbGluZ1RyaXBsZVF1b3RlcyA9IGVzY2FwZWRWYWx1ZS5lbmRzV2l0aCgnXFxcXFwiXCJcIicpOyAvLyBUcmFpbGluZyBxdW90ZSAoc2luZ2xlIG9yIGRvdWJsZSkgb3Igc2xhc2ggZm9yY2VzIHRyYWlsaW5nIG5ldyBsaW5lXG5cbiAgY29uc3QgaGFzVHJhaWxpbmdRdW90ZSA9IHZhbHVlLmVuZHNXaXRoKCdcIicpICYmICFoYXNUcmFpbGluZ1RyaXBsZVF1b3RlcztcbiAgY29uc3QgaGFzVHJhaWxpbmdTbGFzaCA9IHZhbHVlLmVuZHNXaXRoKCdcXFxcJyk7XG4gIGNvbnN0IGZvcmNlVHJhaWxpbmdOZXdsaW5lID0gaGFzVHJhaWxpbmdRdW90ZSB8fCBoYXNUcmFpbGluZ1NsYXNoO1xuICBjb25zdCBwcmludEFzTXVsdGlwbGVMaW5lcyA9XG4gICAgIShvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLm1pbmltaXplKSAmJiAvLyBhZGQgbGVhZGluZyBhbmQgdHJhaWxpbmcgbmV3IGxpbmVzIG9ubHkgaWYgaXQgaW1wcm92ZXMgcmVhZGFiaWxpdHlcbiAgICAoIWlzU2luZ2xlTGluZSB8fFxuICAgICAgdmFsdWUubGVuZ3RoID4gNzAgfHxcbiAgICAgIGZvcmNlVHJhaWxpbmdOZXdsaW5lIHx8XG4gICAgICBmb3JjZUxlYWRpbmdOZXdMaW5lIHx8XG4gICAgICBoYXNUcmFpbGluZ1RyaXBsZVF1b3Rlcyk7XG4gIGxldCByZXN1bHQgPSAnJzsgLy8gRm9ybWF0IGEgbXVsdGktbGluZSBibG9jayBxdW90ZSB0byBhY2NvdW50IGZvciBsZWFkaW5nIHNwYWNlLlxuXG4gIGNvbnN0IHNraXBMZWFkaW5nTmV3TGluZSA9IGlzU2luZ2xlTGluZSAmJiBpc1doaXRlU3BhY2UodmFsdWUuY2hhckNvZGVBdCgwKSk7XG5cbiAgaWYgKChwcmludEFzTXVsdGlwbGVMaW5lcyAmJiAhc2tpcExlYWRpbmdOZXdMaW5lKSB8fCBmb3JjZUxlYWRpbmdOZXdMaW5lKSB7XG4gICAgcmVzdWx0ICs9ICdcXG4nO1xuICB9XG5cbiAgcmVzdWx0ICs9IGVzY2FwZWRWYWx1ZTtcblxuICBpZiAocHJpbnRBc011bHRpcGxlTGluZXMgfHwgZm9yY2VUcmFpbGluZ05ld2xpbmUpIHtcbiAgICByZXN1bHQgKz0gJ1xcbic7XG4gIH1cblxuICByZXR1cm4gJ1wiXCJcIicgKyByZXN1bHQgKyAnXCJcIlwiJztcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/language/blockString.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/language/characterClasses.mjs":
/*!************************************************************!*\
  !*** ./node_modules/graphql/language/characterClasses.mjs ***!
  \************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isDigit\": function() { return /* binding */ isDigit; },\n/* harmony export */   \"isLetter\": function() { return /* binding */ isLetter; },\n/* harmony export */   \"isNameContinue\": function() { return /* binding */ isNameContinue; },\n/* harmony export */   \"isNameStart\": function() { return /* binding */ isNameStart; },\n/* harmony export */   \"isWhiteSpace\": function() { return /* binding */ isWhiteSpace; }\n/* harmony export */ });\n/**\n * ```\n * WhiteSpace ::\n *   - \"Horizontal Tab (U+0009)\"\n *   - \"Space (U+0020)\"\n * ```\n * @internal\n */\nfunction isWhiteSpace(code) {\n  return code === 0x0009 || code === 0x0020;\n}\n/**\n * ```\n * Digit :: one of\n *   - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * ```\n * @internal\n */\n\nfunction isDigit(code) {\n  return code >= 0x0030 && code <= 0x0039;\n}\n/**\n * ```\n * Letter :: one of\n *   - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M`\n *   - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z`\n *   - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m`\n *   - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z`\n * ```\n * @internal\n */\n\nfunction isLetter(code) {\n  return (\n    (code >= 0x0061 && code <= 0x007a) || // A-Z\n    (code >= 0x0041 && code <= 0x005a) // a-z\n  );\n}\n/**\n * ```\n * NameStart ::\n *   - Letter\n *   - `_`\n * ```\n * @internal\n */\n\nfunction isNameStart(code) {\n  return isLetter(code) || code === 0x005f;\n}\n/**\n * ```\n * NameContinue ::\n *   - Letter\n *   - Digit\n *   - `_`\n * ```\n * @internal\n */\n\nfunction isNameContinue(code) {\n  return isLetter(code) || isDigit(code) || code === 0x005f;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9jaGFyYWN0ZXJDbGFzc2VzLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvY2hhcmFjdGVyQ2xhc3Nlcy5tanM/ODU3ZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGBgYFxuICogV2hpdGVTcGFjZSA6OlxuICogICAtIFwiSG9yaXpvbnRhbCBUYWIgKFUrMDAwOSlcIlxuICogICAtIFwiU3BhY2UgKFUrMDAyMClcIlxuICogYGBgXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzV2hpdGVTcGFjZShjb2RlKSB7XG4gIHJldHVybiBjb2RlID09PSAweDAwMDkgfHwgY29kZSA9PT0gMHgwMDIwO1xufVxuLyoqXG4gKiBgYGBcbiAqIERpZ2l0IDo6IG9uZSBvZlxuICogICAtIGAwYCBgMWAgYDJgIGAzYCBgNGAgYDVgIGA2YCBgN2AgYDhgIGA5YFxuICogYGBgXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNEaWdpdChjb2RlKSB7XG4gIHJldHVybiBjb2RlID49IDB4MDAzMCAmJiBjb2RlIDw9IDB4MDAzOTtcbn1cbi8qKlxuICogYGBgXG4gKiBMZXR0ZXIgOjogb25lIG9mXG4gKiAgIC0gYEFgIGBCYCBgQ2AgYERgIGBFYCBgRmAgYEdgIGBIYCBgSWAgYEpgIGBLYCBgTGAgYE1gXG4gKiAgIC0gYE5gIGBPYCBgUGAgYFFgIGBSYCBgU2AgYFRgIGBVYCBgVmAgYFdgIGBYYCBgWWAgYFpgXG4gKiAgIC0gYGFgIGBiYCBgY2AgYGRgIGBlYCBgZmAgYGdgIGBoYCBgaWAgYGpgIGBrYCBgbGAgYG1gXG4gKiAgIC0gYG5gIGBvYCBgcGAgYHFgIGByYCBgc2AgYHRgIGB1YCBgdmAgYHdgIGB4YCBgeWAgYHpgXG4gKiBgYGBcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xldHRlcihjb2RlKSB7XG4gIHJldHVybiAoXG4gICAgKGNvZGUgPj0gMHgwMDYxICYmIGNvZGUgPD0gMHgwMDdhKSB8fCAvLyBBLVpcbiAgICAoY29kZSA+PSAweDAwNDEgJiYgY29kZSA8PSAweDAwNWEpIC8vIGEtelxuICApO1xufVxuLyoqXG4gKiBgYGBcbiAqIE5hbWVTdGFydCA6OlxuICogICAtIExldHRlclxuICogICAtIGBfYFxuICogYGBgXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNOYW1lU3RhcnQoY29kZSkge1xuICByZXR1cm4gaXNMZXR0ZXIoY29kZSkgfHwgY29kZSA9PT0gMHgwMDVmO1xufVxuLyoqXG4gKiBgYGBcbiAqIE5hbWVDb250aW51ZSA6OlxuICogICAtIExldHRlclxuICogICAtIERpZ2l0XG4gKiAgIC0gYF9gXG4gKiBgYGBcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc05hbWVDb250aW51ZShjb2RlKSB7XG4gIHJldHVybiBpc0xldHRlcihjb2RlKSB8fCBpc0RpZ2l0KGNvZGUpIHx8IGNvZGUgPT09IDB4MDA1Zjtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/language/characterClasses.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/language/directiveLocation.mjs":
/*!*************************************************************!*\
  !*** ./node_modules/graphql/language/directiveLocation.mjs ***!
  \*************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DirectiveLocation\": function() { return /* binding */ DirectiveLocation; }\n/* harmony export */ });\n/**\n * The set of allowed directive location values.\n */\nlet DirectiveLocation;\n/**\n * The enum type representing the directive location values.\n *\n * @deprecated Please use `DirectiveLocation`. Will be remove in v17.\n */\n\n(function (DirectiveLocation) {\n  DirectiveLocation['QUERY'] = 'QUERY';\n  DirectiveLocation['MUTATION'] = 'MUTATION';\n  DirectiveLocation['SUBSCRIPTION'] = 'SUBSCRIPTION';\n  DirectiveLocation['FIELD'] = 'FIELD';\n  DirectiveLocation['FRAGMENT_DEFINITION'] = 'FRAGMENT_DEFINITION';\n  DirectiveLocation['FRAGMENT_SPREAD'] = 'FRAGMENT_SPREAD';\n  DirectiveLocation['INLINE_FRAGMENT'] = 'INLINE_FRAGMENT';\n  DirectiveLocation['VARIABLE_DEFINITION'] = 'VARIABLE_DEFINITION';\n  DirectiveLocation['SCHEMA'] = 'SCHEMA';\n  DirectiveLocation['SCALAR'] = 'SCALAR';\n  DirectiveLocation['OBJECT'] = 'OBJECT';\n  DirectiveLocation['FIELD_DEFINITION'] = 'FIELD_DEFINITION';\n  DirectiveLocation['ARGUMENT_DEFINITION'] = 'ARGUMENT_DEFINITION';\n  DirectiveLocation['INTERFACE'] = 'INTERFACE';\n  DirectiveLocation['UNION'] = 'UNION';\n  DirectiveLocation['ENUM'] = 'ENUM';\n  DirectiveLocation['ENUM_VALUE'] = 'ENUM_VALUE';\n  DirectiveLocation['INPUT_OBJECT'] = 'INPUT_OBJECT';\n  DirectiveLocation['INPUT_FIELD_DEFINITION'] = 'INPUT_FIELD_DEFINITION';\n})(DirectiveLocation || (DirectiveLocation = {}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9kaXJlY3RpdmVMb2NhdGlvbi5tanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyw4Q0FBOEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2UvZGlyZWN0aXZlTG9jYXRpb24ubWpzPzVlMGQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgc2V0IG9mIGFsbG93ZWQgZGlyZWN0aXZlIGxvY2F0aW9uIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGxldCBEaXJlY3RpdmVMb2NhdGlvbjtcbi8qKlxuICogVGhlIGVudW0gdHlwZSByZXByZXNlbnRpbmcgdGhlIGRpcmVjdGl2ZSBsb2NhdGlvbiB2YWx1ZXMuXG4gKlxuICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgRGlyZWN0aXZlTG9jYXRpb25gLiBXaWxsIGJlIHJlbW92ZSBpbiB2MTcuXG4gKi9cblxuKGZ1bmN0aW9uIChEaXJlY3RpdmVMb2NhdGlvbikge1xuICBEaXJlY3RpdmVMb2NhdGlvblsnUVVFUlknXSA9ICdRVUVSWSc7XG4gIERpcmVjdGl2ZUxvY2F0aW9uWydNVVRBVElPTiddID0gJ01VVEFUSU9OJztcbiAgRGlyZWN0aXZlTG9jYXRpb25bJ1NVQlNDUklQVElPTiddID0gJ1NVQlNDUklQVElPTic7XG4gIERpcmVjdGl2ZUxvY2F0aW9uWydGSUVMRCddID0gJ0ZJRUxEJztcbiAgRGlyZWN0aXZlTG9jYXRpb25bJ0ZSQUdNRU5UX0RFRklOSVRJT04nXSA9ICdGUkFHTUVOVF9ERUZJTklUSU9OJztcbiAgRGlyZWN0aXZlTG9jYXRpb25bJ0ZSQUdNRU5UX1NQUkVBRCddID0gJ0ZSQUdNRU5UX1NQUkVBRCc7XG4gIERpcmVjdGl2ZUxvY2F0aW9uWydJTkxJTkVfRlJBR01FTlQnXSA9ICdJTkxJTkVfRlJBR01FTlQnO1xuICBEaXJlY3RpdmVMb2NhdGlvblsnVkFSSUFCTEVfREVGSU5JVElPTiddID0gJ1ZBUklBQkxFX0RFRklOSVRJT04nO1xuICBEaXJlY3RpdmVMb2NhdGlvblsnU0NIRU1BJ10gPSAnU0NIRU1BJztcbiAgRGlyZWN0aXZlTG9jYXRpb25bJ1NDQUxBUiddID0gJ1NDQUxBUic7XG4gIERpcmVjdGl2ZUxvY2F0aW9uWydPQkpFQ1QnXSA9ICdPQkpFQ1QnO1xuICBEaXJlY3RpdmVMb2NhdGlvblsnRklFTERfREVGSU5JVElPTiddID0gJ0ZJRUxEX0RFRklOSVRJT04nO1xuICBEaXJlY3RpdmVMb2NhdGlvblsnQVJHVU1FTlRfREVGSU5JVElPTiddID0gJ0FSR1VNRU5UX0RFRklOSVRJT04nO1xuICBEaXJlY3RpdmVMb2NhdGlvblsnSU5URVJGQUNFJ10gPSAnSU5URVJGQUNFJztcbiAgRGlyZWN0aXZlTG9jYXRpb25bJ1VOSU9OJ10gPSAnVU5JT04nO1xuICBEaXJlY3RpdmVMb2NhdGlvblsnRU5VTSddID0gJ0VOVU0nO1xuICBEaXJlY3RpdmVMb2NhdGlvblsnRU5VTV9WQUxVRSddID0gJ0VOVU1fVkFMVUUnO1xuICBEaXJlY3RpdmVMb2NhdGlvblsnSU5QVVRfT0JKRUNUJ10gPSAnSU5QVVRfT0JKRUNUJztcbiAgRGlyZWN0aXZlTG9jYXRpb25bJ0lOUFVUX0ZJRUxEX0RFRklOSVRJT04nXSA9ICdJTlBVVF9GSUVMRF9ERUZJTklUSU9OJztcbn0pKERpcmVjdGl2ZUxvY2F0aW9uIHx8IChEaXJlY3RpdmVMb2NhdGlvbiA9IHt9KSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/language/directiveLocation.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/language/index.mjs":
/*!*************************************************!*\
  !*** ./node_modules/graphql/language/index.mjs ***!
  \*************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BREAK\": function() { return /* reexport safe */ _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__.BREAK; },\n/* harmony export */   \"DirectiveLocation\": function() { return /* reexport safe */ _directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_11__.DirectiveLocation; },\n/* harmony export */   \"Kind\": function() { return /* reexport safe */ _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind; },\n/* harmony export */   \"Lexer\": function() { return /* reexport safe */ _lexer_mjs__WEBPACK_IMPORTED_MODULE_5__.Lexer; },\n/* harmony export */   \"Location\": function() { return /* reexport safe */ _ast_mjs__WEBPACK_IMPORTED_MODULE_9__.Location; },\n/* harmony export */   \"OperationTypeNode\": function() { return /* reexport safe */ _ast_mjs__WEBPACK_IMPORTED_MODULE_9__.OperationTypeNode; },\n/* harmony export */   \"Source\": function() { return /* reexport safe */ _source_mjs__WEBPACK_IMPORTED_MODULE_0__.Source; },\n/* harmony export */   \"Token\": function() { return /* reexport safe */ _ast_mjs__WEBPACK_IMPORTED_MODULE_9__.Token; },\n/* harmony export */   \"TokenKind\": function() { return /* reexport safe */ _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__.TokenKind; },\n/* harmony export */   \"getEnterLeaveForKind\": function() { return /* reexport safe */ _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__.getEnterLeaveForKind; },\n/* harmony export */   \"getLocation\": function() { return /* reexport safe */ _location_mjs__WEBPACK_IMPORTED_MODULE_1__.getLocation; },\n/* harmony export */   \"getVisitFn\": function() { return /* reexport safe */ _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__.getVisitFn; },\n/* harmony export */   \"isConstValueNode\": function() { return /* reexport safe */ _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__.isConstValueNode; },\n/* harmony export */   \"isDefinitionNode\": function() { return /* reexport safe */ _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__.isDefinitionNode; },\n/* harmony export */   \"isExecutableDefinitionNode\": function() { return /* reexport safe */ _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__.isExecutableDefinitionNode; },\n/* harmony export */   \"isSelectionNode\": function() { return /* reexport safe */ _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__.isSelectionNode; },\n/* harmony export */   \"isTypeDefinitionNode\": function() { return /* reexport safe */ _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__.isTypeDefinitionNode; },\n/* harmony export */   \"isTypeExtensionNode\": function() { return /* reexport safe */ _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__.isTypeExtensionNode; },\n/* harmony export */   \"isTypeNode\": function() { return /* reexport safe */ _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__.isTypeNode; },\n/* harmony export */   \"isTypeSystemDefinitionNode\": function() { return /* reexport safe */ _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__.isTypeSystemDefinitionNode; },\n/* harmony export */   \"isTypeSystemExtensionNode\": function() { return /* reexport safe */ _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__.isTypeSystemExtensionNode; },\n/* harmony export */   \"isValueNode\": function() { return /* reexport safe */ _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__.isValueNode; },\n/* harmony export */   \"parse\": function() { return /* reexport safe */ _parser_mjs__WEBPACK_IMPORTED_MODULE_6__.parse; },\n/* harmony export */   \"parseConstValue\": function() { return /* reexport safe */ _parser_mjs__WEBPACK_IMPORTED_MODULE_6__.parseConstValue; },\n/* harmony export */   \"parseType\": function() { return /* reexport safe */ _parser_mjs__WEBPACK_IMPORTED_MODULE_6__.parseType; },\n/* harmony export */   \"parseValue\": function() { return /* reexport safe */ _parser_mjs__WEBPACK_IMPORTED_MODULE_6__.parseValue; },\n/* harmony export */   \"print\": function() { return /* reexport safe */ _printer_mjs__WEBPACK_IMPORTED_MODULE_7__.print; },\n/* harmony export */   \"printLocation\": function() { return /* reexport safe */ _printLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.printLocation; },\n/* harmony export */   \"printSourceLocation\": function() { return /* reexport safe */ _printLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.printSourceLocation; },\n/* harmony export */   \"visit\": function() { return /* reexport safe */ _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__.visit; },\n/* harmony export */   \"visitInParallel\": function() { return /* reexport safe */ _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__.visitInParallel; }\n/* harmony export */ });\n/* harmony import */ var _source_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./source.mjs */ \"./node_modules/graphql/language/source.mjs\");\n/* harmony import */ var _location_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./location.mjs */ \"./node_modules/graphql/language/location.mjs\");\n/* harmony import */ var _printLocation_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./printLocation.mjs */ \"./node_modules/graphql/language/printLocation.mjs\");\n/* harmony import */ var _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tokenKind.mjs */ \"./node_modules/graphql/language/tokenKind.mjs\");\n/* harmony import */ var _lexer_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lexer.mjs */ \"./node_modules/graphql/language/lexer.mjs\");\n/* harmony import */ var _parser_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./parser.mjs */ \"./node_modules/graphql/language/parser.mjs\");\n/* harmony import */ var _printer_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./printer.mjs */ \"./node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _visitor_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./visitor.mjs */ \"./node_modules/graphql/language/visitor.mjs\");\n/* harmony import */ var _ast_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ast.mjs */ \"./node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _predicates_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./predicates.mjs */ \"./node_modules/graphql/language/predicates.mjs\");\n/* harmony import */ var _directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./directiveLocation.mjs */ \"./node_modules/graphql/language/directiveLocation.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9pbmRleC5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFzQztBQUNPO0FBQzRCO0FBQ3RDO0FBQ1M7QUFDUjtBQUN5QztBQUN2QztBQU9mO0FBQ3dDO0FBWXJDO0FBQ2tDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL2luZGV4Lm1qcz9kOTUwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFNvdXJjZSB9IGZyb20gJy4vc291cmNlLm1qcyc7XG5leHBvcnQgeyBnZXRMb2NhdGlvbiB9IGZyb20gJy4vbG9jYXRpb24ubWpzJztcbmV4cG9ydCB7IHByaW50TG9jYXRpb24sIHByaW50U291cmNlTG9jYXRpb24gfSBmcm9tICcuL3ByaW50TG9jYXRpb24ubWpzJztcbmV4cG9ydCB7IEtpbmQgfSBmcm9tICcuL2tpbmRzLm1qcyc7XG5leHBvcnQgeyBUb2tlbktpbmQgfSBmcm9tICcuL3Rva2VuS2luZC5tanMnO1xuZXhwb3J0IHsgTGV4ZXIgfSBmcm9tICcuL2xleGVyLm1qcyc7XG5leHBvcnQgeyBwYXJzZSwgcGFyc2VWYWx1ZSwgcGFyc2VDb25zdFZhbHVlLCBwYXJzZVR5cGUgfSBmcm9tICcuL3BhcnNlci5tanMnO1xuZXhwb3J0IHsgcHJpbnQgfSBmcm9tICcuL3ByaW50ZXIubWpzJztcbmV4cG9ydCB7XG4gIHZpc2l0LFxuICB2aXNpdEluUGFyYWxsZWwsXG4gIGdldFZpc2l0Rm4sXG4gIGdldEVudGVyTGVhdmVGb3JLaW5kLFxuICBCUkVBSyxcbn0gZnJvbSAnLi92aXNpdG9yLm1qcyc7XG5leHBvcnQgeyBMb2NhdGlvbiwgVG9rZW4sIE9wZXJhdGlvblR5cGVOb2RlIH0gZnJvbSAnLi9hc3QubWpzJztcbmV4cG9ydCB7XG4gIGlzRGVmaW5pdGlvbk5vZGUsXG4gIGlzRXhlY3V0YWJsZURlZmluaXRpb25Ob2RlLFxuICBpc1NlbGVjdGlvbk5vZGUsXG4gIGlzVmFsdWVOb2RlLFxuICBpc0NvbnN0VmFsdWVOb2RlLFxuICBpc1R5cGVOb2RlLFxuICBpc1R5cGVTeXN0ZW1EZWZpbml0aW9uTm9kZSxcbiAgaXNUeXBlRGVmaW5pdGlvbk5vZGUsXG4gIGlzVHlwZVN5c3RlbUV4dGVuc2lvbk5vZGUsXG4gIGlzVHlwZUV4dGVuc2lvbk5vZGUsXG59IGZyb20gJy4vcHJlZGljYXRlcy5tanMnO1xuZXhwb3J0IHsgRGlyZWN0aXZlTG9jYXRpb24gfSBmcm9tICcuL2RpcmVjdGl2ZUxvY2F0aW9uLm1qcyc7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/language/index.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/language/kinds.mjs":
/*!*************************************************!*\
  !*** ./node_modules/graphql/language/kinds.mjs ***!
  \*************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Kind\": function() { return /* binding */ Kind; }\n/* harmony export */ });\n/**\n * The set of allowed kind values for AST nodes.\n */\nlet Kind;\n/**\n * The enum type representing the possible kind values of AST nodes.\n *\n * @deprecated Please use `Kind`. Will be remove in v17.\n */\n\n(function (Kind) {\n  Kind['NAME'] = 'Name';\n  Kind['DOCUMENT'] = 'Document';\n  Kind['OPERATION_DEFINITION'] = 'OperationDefinition';\n  Kind['VARIABLE_DEFINITION'] = 'VariableDefinition';\n  Kind['SELECTION_SET'] = 'SelectionSet';\n  Kind['FIELD'] = 'Field';\n  Kind['ARGUMENT'] = 'Argument';\n  Kind['FRAGMENT_SPREAD'] = 'FragmentSpread';\n  Kind['INLINE_FRAGMENT'] = 'InlineFragment';\n  Kind['FRAGMENT_DEFINITION'] = 'FragmentDefinition';\n  Kind['VARIABLE'] = 'Variable';\n  Kind['INT'] = 'IntValue';\n  Kind['FLOAT'] = 'FloatValue';\n  Kind['STRING'] = 'StringValue';\n  Kind['BOOLEAN'] = 'BooleanValue';\n  Kind['NULL'] = 'NullValue';\n  Kind['ENUM'] = 'EnumValue';\n  Kind['LIST'] = 'ListValue';\n  Kind['OBJECT'] = 'ObjectValue';\n  Kind['OBJECT_FIELD'] = 'ObjectField';\n  Kind['DIRECTIVE'] = 'Directive';\n  Kind['NAMED_TYPE'] = 'NamedType';\n  Kind['LIST_TYPE'] = 'ListType';\n  Kind['NON_NULL_TYPE'] = 'NonNullType';\n  Kind['SCHEMA_DEFINITION'] = 'SchemaDefinition';\n  Kind['OPERATION_TYPE_DEFINITION'] = 'OperationTypeDefinition';\n  Kind['SCALAR_TYPE_DEFINITION'] = 'ScalarTypeDefinition';\n  Kind['OBJECT_TYPE_DEFINITION'] = 'ObjectTypeDefinition';\n  Kind['FIELD_DEFINITION'] = 'FieldDefinition';\n  Kind['INPUT_VALUE_DEFINITION'] = 'InputValueDefinition';\n  Kind['INTERFACE_TYPE_DEFINITION'] = 'InterfaceTypeDefinition';\n  Kind['UNION_TYPE_DEFINITION'] = 'UnionTypeDefinition';\n  Kind['ENUM_TYPE_DEFINITION'] = 'EnumTypeDefinition';\n  Kind['ENUM_VALUE_DEFINITION'] = 'EnumValueDefinition';\n  Kind['INPUT_OBJECT_TYPE_DEFINITION'] = 'InputObjectTypeDefinition';\n  Kind['DIRECTIVE_DEFINITION'] = 'DirectiveDefinition';\n  Kind['SCHEMA_EXTENSION'] = 'SchemaExtension';\n  Kind['SCALAR_TYPE_EXTENSION'] = 'ScalarTypeExtension';\n  Kind['OBJECT_TYPE_EXTENSION'] = 'ObjectTypeExtension';\n  Kind['INTERFACE_TYPE_EXTENSION'] = 'InterfaceTypeExtension';\n  Kind['UNION_TYPE_EXTENSION'] = 'UnionTypeExtension';\n  Kind['ENUM_TYPE_EXTENSION'] = 'EnumTypeExtension';\n  Kind['INPUT_OBJECT_TYPE_EXTENSION'] = 'InputObjectTypeExtension';\n})(Kind || (Kind = {}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9raW5kcy5tanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxvQkFBb0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvbGFuZ3VhZ2Uva2luZHMubWpzPzEyYjYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgc2V0IG9mIGFsbG93ZWQga2luZCB2YWx1ZXMgZm9yIEFTVCBub2Rlcy5cbiAqL1xuZXhwb3J0IGxldCBLaW5kO1xuLyoqXG4gKiBUaGUgZW51bSB0eXBlIHJlcHJlc2VudGluZyB0aGUgcG9zc2libGUga2luZCB2YWx1ZXMgb2YgQVNUIG5vZGVzLlxuICpcbiAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYEtpbmRgLiBXaWxsIGJlIHJlbW92ZSBpbiB2MTcuXG4gKi9cblxuKGZ1bmN0aW9uIChLaW5kKSB7XG4gIEtpbmRbJ05BTUUnXSA9ICdOYW1lJztcbiAgS2luZFsnRE9DVU1FTlQnXSA9ICdEb2N1bWVudCc7XG4gIEtpbmRbJ09QRVJBVElPTl9ERUZJTklUSU9OJ10gPSAnT3BlcmF0aW9uRGVmaW5pdGlvbic7XG4gIEtpbmRbJ1ZBUklBQkxFX0RFRklOSVRJT04nXSA9ICdWYXJpYWJsZURlZmluaXRpb24nO1xuICBLaW5kWydTRUxFQ1RJT05fU0VUJ10gPSAnU2VsZWN0aW9uU2V0JztcbiAgS2luZFsnRklFTEQnXSA9ICdGaWVsZCc7XG4gIEtpbmRbJ0FSR1VNRU5UJ10gPSAnQXJndW1lbnQnO1xuICBLaW5kWydGUkFHTUVOVF9TUFJFQUQnXSA9ICdGcmFnbWVudFNwcmVhZCc7XG4gIEtpbmRbJ0lOTElORV9GUkFHTUVOVCddID0gJ0lubGluZUZyYWdtZW50JztcbiAgS2luZFsnRlJBR01FTlRfREVGSU5JVElPTiddID0gJ0ZyYWdtZW50RGVmaW5pdGlvbic7XG4gIEtpbmRbJ1ZBUklBQkxFJ10gPSAnVmFyaWFibGUnO1xuICBLaW5kWydJTlQnXSA9ICdJbnRWYWx1ZSc7XG4gIEtpbmRbJ0ZMT0FUJ10gPSAnRmxvYXRWYWx1ZSc7XG4gIEtpbmRbJ1NUUklORyddID0gJ1N0cmluZ1ZhbHVlJztcbiAgS2luZFsnQk9PTEVBTiddID0gJ0Jvb2xlYW5WYWx1ZSc7XG4gIEtpbmRbJ05VTEwnXSA9ICdOdWxsVmFsdWUnO1xuICBLaW5kWydFTlVNJ10gPSAnRW51bVZhbHVlJztcbiAgS2luZFsnTElTVCddID0gJ0xpc3RWYWx1ZSc7XG4gIEtpbmRbJ09CSkVDVCddID0gJ09iamVjdFZhbHVlJztcbiAgS2luZFsnT0JKRUNUX0ZJRUxEJ10gPSAnT2JqZWN0RmllbGQnO1xuICBLaW5kWydESVJFQ1RJVkUnXSA9ICdEaXJlY3RpdmUnO1xuICBLaW5kWydOQU1FRF9UWVBFJ10gPSAnTmFtZWRUeXBlJztcbiAgS2luZFsnTElTVF9UWVBFJ10gPSAnTGlzdFR5cGUnO1xuICBLaW5kWydOT05fTlVMTF9UWVBFJ10gPSAnTm9uTnVsbFR5cGUnO1xuICBLaW5kWydTQ0hFTUFfREVGSU5JVElPTiddID0gJ1NjaGVtYURlZmluaXRpb24nO1xuICBLaW5kWydPUEVSQVRJT05fVFlQRV9ERUZJTklUSU9OJ10gPSAnT3BlcmF0aW9uVHlwZURlZmluaXRpb24nO1xuICBLaW5kWydTQ0FMQVJfVFlQRV9ERUZJTklUSU9OJ10gPSAnU2NhbGFyVHlwZURlZmluaXRpb24nO1xuICBLaW5kWydPQkpFQ1RfVFlQRV9ERUZJTklUSU9OJ10gPSAnT2JqZWN0VHlwZURlZmluaXRpb24nO1xuICBLaW5kWydGSUVMRF9ERUZJTklUSU9OJ10gPSAnRmllbGREZWZpbml0aW9uJztcbiAgS2luZFsnSU5QVVRfVkFMVUVfREVGSU5JVElPTiddID0gJ0lucHV0VmFsdWVEZWZpbml0aW9uJztcbiAgS2luZFsnSU5URVJGQUNFX1RZUEVfREVGSU5JVElPTiddID0gJ0ludGVyZmFjZVR5cGVEZWZpbml0aW9uJztcbiAgS2luZFsnVU5JT05fVFlQRV9ERUZJTklUSU9OJ10gPSAnVW5pb25UeXBlRGVmaW5pdGlvbic7XG4gIEtpbmRbJ0VOVU1fVFlQRV9ERUZJTklUSU9OJ10gPSAnRW51bVR5cGVEZWZpbml0aW9uJztcbiAgS2luZFsnRU5VTV9WQUxVRV9ERUZJTklUSU9OJ10gPSAnRW51bVZhbHVlRGVmaW5pdGlvbic7XG4gIEtpbmRbJ0lOUFVUX09CSkVDVF9UWVBFX0RFRklOSVRJT04nXSA9ICdJbnB1dE9iamVjdFR5cGVEZWZpbml0aW9uJztcbiAgS2luZFsnRElSRUNUSVZFX0RFRklOSVRJT04nXSA9ICdEaXJlY3RpdmVEZWZpbml0aW9uJztcbiAgS2luZFsnU0NIRU1BX0VYVEVOU0lPTiddID0gJ1NjaGVtYUV4dGVuc2lvbic7XG4gIEtpbmRbJ1NDQUxBUl9UWVBFX0VYVEVOU0lPTiddID0gJ1NjYWxhclR5cGVFeHRlbnNpb24nO1xuICBLaW5kWydPQkpFQ1RfVFlQRV9FWFRFTlNJT04nXSA9ICdPYmplY3RUeXBlRXh0ZW5zaW9uJztcbiAgS2luZFsnSU5URVJGQUNFX1RZUEVfRVhURU5TSU9OJ10gPSAnSW50ZXJmYWNlVHlwZUV4dGVuc2lvbic7XG4gIEtpbmRbJ1VOSU9OX1RZUEVfRVhURU5TSU9OJ10gPSAnVW5pb25UeXBlRXh0ZW5zaW9uJztcbiAgS2luZFsnRU5VTV9UWVBFX0VYVEVOU0lPTiddID0gJ0VudW1UeXBlRXh0ZW5zaW9uJztcbiAgS2luZFsnSU5QVVRfT0JKRUNUX1RZUEVfRVhURU5TSU9OJ10gPSAnSW5wdXRPYmplY3RUeXBlRXh0ZW5zaW9uJztcbn0pKEtpbmQgfHwgKEtpbmQgPSB7fSkpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/language/kinds.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/language/lexer.mjs":
/*!*************************************************!*\
  !*** ./node_modules/graphql/language/lexer.mjs ***!
  \*************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Lexer\": function() { return /* binding */ Lexer; },\n/* harmony export */   \"isPunctuatorTokenKind\": function() { return /* binding */ isPunctuatorTokenKind; }\n/* harmony export */ });\n/* harmony import */ var _error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../error/syntaxError.mjs */ \"./node_modules/graphql/error/syntaxError.mjs\");\n/* harmony import */ var _ast_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ast.mjs */ \"./node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _blockString_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./blockString.mjs */ \"./node_modules/graphql/language/blockString.mjs\");\n/* harmony import */ var _characterClasses_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./characterClasses.mjs */ \"./node_modules/graphql/language/characterClasses.mjs\");\n/* harmony import */ var _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tokenKind.mjs */ \"./node_modules/graphql/language/tokenKind.mjs\");\n\n\n\n\n\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nclass Lexer {\n  /**\n   * The previously focused non-ignored token.\n   */\n\n  /**\n   * The currently focused non-ignored token.\n   */\n\n  /**\n   * The (1-indexed) line containing the current token.\n   */\n\n  /**\n   * The character offset at which the current line begins.\n   */\n  constructor(source) {\n    const startOfFileToken = new _ast_mjs__WEBPACK_IMPORTED_MODULE_0__.Token(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.SOF, 0, 0, 0, 0);\n    this.source = source;\n    this.lastToken = startOfFileToken;\n    this.token = startOfFileToken;\n    this.line = 1;\n    this.lineStart = 0;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'Lexer';\n  }\n  /**\n   * Advances the token stream to the next non-ignored token.\n   */\n\n  advance() {\n    this.lastToken = this.token;\n    const token = (this.token = this.lookahead());\n    return token;\n  }\n  /**\n   * Looks ahead and returns the next non-ignored token, but does not change\n   * the state of Lexer.\n   */\n\n  lookahead() {\n    let token = this.token;\n\n    if (token.kind !== _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.EOF) {\n      do {\n        if (token.next) {\n          token = token.next;\n        } else {\n          // Read the next token and form a link in the token linked-list.\n          const nextToken = readNextToken(this, token.end); // @ts-expect-error next is only mutable during parsing.\n\n          token.next = nextToken; // @ts-expect-error prev is only mutable during parsing.\n\n          nextToken.prev = token;\n          token = nextToken;\n        }\n      } while (token.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.COMMENT);\n    }\n\n    return token;\n  }\n}\n/**\n * @internal\n */\n\nfunction isPunctuatorTokenKind(kind) {\n  return (\n    kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.BANG ||\n    kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.DOLLAR ||\n    kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.AMP ||\n    kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.PAREN_L ||\n    kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.PAREN_R ||\n    kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.SPREAD ||\n    kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.COLON ||\n    kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.EQUALS ||\n    kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.AT ||\n    kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.BRACKET_L ||\n    kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.BRACKET_R ||\n    kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.BRACE_L ||\n    kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.PIPE ||\n    kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.BRACE_R\n  );\n}\n/**\n * A Unicode scalar value is any Unicode code point except surrogate code\n * points. In other words, the inclusive ranges of values 0x0000 to 0xD7FF and\n * 0xE000 to 0x10FFFF.\n *\n * SourceCharacter ::\n *   - \"Any Unicode scalar value\"\n */\n\nfunction isUnicodeScalarValue(code) {\n  return (\n    (code >= 0x0000 && code <= 0xd7ff) || (code >= 0xe000 && code <= 0x10ffff)\n  );\n}\n/**\n * The GraphQL specification defines source text as a sequence of unicode scalar\n * values (which Unicode defines to exclude surrogate code points). However\n * JavaScript defines strings as a sequence of UTF-16 code units which may\n * include surrogates. A surrogate pair is a valid source character as it\n * encodes a supplementary code point (above U+FFFF), but unpaired surrogate\n * code points are not valid source characters.\n */\n\nfunction isSupplementaryCodePoint(body, location) {\n  return (\n    isLeadingSurrogate(body.charCodeAt(location)) &&\n    isTrailingSurrogate(body.charCodeAt(location + 1))\n  );\n}\n\nfunction isLeadingSurrogate(code) {\n  return code >= 0xd800 && code <= 0xdbff;\n}\n\nfunction isTrailingSurrogate(code) {\n  return code >= 0xdc00 && code <= 0xdfff;\n}\n/**\n * Prints the code point (or end of file reference) at a given location in a\n * source for use in error messages.\n *\n * Printable ASCII is printed quoted, while other points are printed in Unicode\n * code point form (ie. U+1234).\n */\n\nfunction printCodePointAt(lexer, location) {\n  const code = lexer.source.body.codePointAt(location);\n\n  if (code === undefined) {\n    return _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.EOF;\n  } else if (code >= 0x0020 && code <= 0x007e) {\n    // Printable ASCII\n    const char = String.fromCodePoint(code);\n    return char === '\"' ? \"'\\\"'\" : `\"${char}\"`;\n  } // Unicode code point\n\n  return 'U+' + code.toString(16).toUpperCase().padStart(4, '0');\n}\n/**\n * Create a token with line and column location information.\n */\n\nfunction createToken(lexer, kind, start, end, value) {\n  const line = lexer.line;\n  const col = 1 + start - lexer.lineStart;\n  return new _ast_mjs__WEBPACK_IMPORTED_MODULE_0__.Token(kind, start, end, line, col, value);\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\nfunction readNextToken(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let position = start;\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position); // SourceCharacter\n\n    switch (code) {\n      // Ignored ::\n      //   - UnicodeBOM\n      //   - WhiteSpace\n      //   - LineTerminator\n      //   - Comment\n      //   - Comma\n      //\n      // UnicodeBOM :: \"Byte Order Mark (U+FEFF)\"\n      //\n      // WhiteSpace ::\n      //   - \"Horizontal Tab (U+0009)\"\n      //   - \"Space (U+0020)\"\n      //\n      // Comma :: ,\n      case 0xfeff: // <BOM>\n\n      case 0x0009: // \\t\n\n      case 0x0020: // <space>\n\n      case 0x002c:\n        // ,\n        ++position;\n        continue;\n      // LineTerminator ::\n      //   - \"New Line (U+000A)\"\n      //   - \"Carriage Return (U+000D)\" [lookahead != \"New Line (U+000A)\"]\n      //   - \"Carriage Return (U+000D)\" \"New Line (U+000A)\"\n\n      case 0x000a:\n        // \\n\n        ++position;\n        ++lexer.line;\n        lexer.lineStart = position;\n        continue;\n\n      case 0x000d:\n        // \\r\n        if (body.charCodeAt(position + 1) === 0x000a) {\n          position += 2;\n        } else {\n          ++position;\n        }\n\n        ++lexer.line;\n        lexer.lineStart = position;\n        continue;\n      // Comment\n\n      case 0x0023:\n        // #\n        return readComment(lexer, position);\n      // Token ::\n      //   - Punctuator\n      //   - Name\n      //   - IntValue\n      //   - FloatValue\n      //   - StringValue\n      //\n      // Punctuator :: one of ! $ & ( ) ... : = @ [ ] { | }\n\n      case 0x0021:\n        // !\n        return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.BANG, position, position + 1);\n\n      case 0x0024:\n        // $\n        return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.DOLLAR, position, position + 1);\n\n      case 0x0026:\n        // &\n        return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.AMP, position, position + 1);\n\n      case 0x0028:\n        // (\n        return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.PAREN_L, position, position + 1);\n\n      case 0x0029:\n        // )\n        return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.PAREN_R, position, position + 1);\n\n      case 0x002e:\n        // .\n        if (\n          body.charCodeAt(position + 1) === 0x002e &&\n          body.charCodeAt(position + 2) === 0x002e\n        ) {\n          return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.SPREAD, position, position + 3);\n        }\n\n        break;\n\n      case 0x003a:\n        // :\n        return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.COLON, position, position + 1);\n\n      case 0x003d:\n        // =\n        return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.EQUALS, position, position + 1);\n\n      case 0x0040:\n        // @\n        return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.AT, position, position + 1);\n\n      case 0x005b:\n        // [\n        return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.BRACKET_L, position, position + 1);\n\n      case 0x005d:\n        // ]\n        return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.BRACKET_R, position, position + 1);\n\n      case 0x007b:\n        // {\n        return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.BRACE_L, position, position + 1);\n\n      case 0x007c:\n        // |\n        return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.PIPE, position, position + 1);\n\n      case 0x007d:\n        // }\n        return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.BRACE_R, position, position + 1);\n      // StringValue\n\n      case 0x0022:\n        // \"\n        if (\n          body.charCodeAt(position + 1) === 0x0022 &&\n          body.charCodeAt(position + 2) === 0x0022\n        ) {\n          return readBlockString(lexer, position);\n        }\n\n        return readString(lexer, position);\n    } // IntValue | FloatValue (Digit | -)\n\n    if ((0,_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_2__.isDigit)(code) || code === 0x002d) {\n      return readNumber(lexer, position, code);\n    } // Name\n\n    if ((0,_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_2__.isNameStart)(code)) {\n      return readName(lexer, position);\n    }\n\n    throw (0,_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_3__.syntaxError)(\n      lexer.source,\n      position,\n      code === 0x0027\n        ? 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?'\n        : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position)\n        ? `Unexpected character: ${printCodePointAt(lexer, position)}.`\n        : `Invalid character: ${printCodePointAt(lexer, position)}.`,\n    );\n  }\n\n  return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.EOF, bodyLength, bodyLength);\n}\n/**\n * Reads a comment token from the source file.\n *\n * ```\n * Comment :: # CommentChar* [lookahead != CommentChar]\n *\n * CommentChar :: SourceCharacter but not LineTerminator\n * ```\n */\n\nfunction readComment(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let position = start + 1;\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position); // LineTerminator (\\n | \\r)\n\n    if (code === 0x000a || code === 0x000d) {\n      break;\n    } // SourceCharacter\n\n    if (isUnicodeScalarValue(code)) {\n      ++position;\n    } else if (isSupplementaryCodePoint(body, position)) {\n      position += 2;\n    } else {\n      break;\n    }\n  }\n\n  return createToken(\n    lexer,\n    _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.COMMENT,\n    start,\n    position,\n    body.slice(start + 1, position),\n  );\n}\n/**\n * Reads a number token from the source file, either a FloatValue or an IntValue\n * depending on whether a FractionalPart or ExponentPart is encountered.\n *\n * ```\n * IntValue :: IntegerPart [lookahead != {Digit, `.`, NameStart}]\n *\n * IntegerPart ::\n *   - NegativeSign? 0\n *   - NegativeSign? NonZeroDigit Digit*\n *\n * NegativeSign :: -\n *\n * NonZeroDigit :: Digit but not `0`\n *\n * FloatValue ::\n *   - IntegerPart FractionalPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n *   - IntegerPart FractionalPart [lookahead != {Digit, `.`, NameStart}]\n *   - IntegerPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n *\n * FractionalPart :: . Digit+\n *\n * ExponentPart :: ExponentIndicator Sign? Digit+\n *\n * ExponentIndicator :: one of `e` `E`\n *\n * Sign :: one of + -\n * ```\n */\n\nfunction readNumber(lexer, start, firstCode) {\n  const body = lexer.source.body;\n  let position = start;\n  let code = firstCode;\n  let isFloat = false; // NegativeSign (-)\n\n  if (code === 0x002d) {\n    code = body.charCodeAt(++position);\n  } // Zero (0)\n\n  if (code === 0x0030) {\n    code = body.charCodeAt(++position);\n\n    if ((0,_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_2__.isDigit)(code)) {\n      throw (0,_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_3__.syntaxError)(\n        lexer.source,\n        position,\n        `Invalid number, unexpected digit after 0: ${printCodePointAt(\n          lexer,\n          position,\n        )}.`,\n      );\n    }\n  } else {\n    position = readDigits(lexer, position, code);\n    code = body.charCodeAt(position);\n  } // Full stop (.)\n\n  if (code === 0x002e) {\n    isFloat = true;\n    code = body.charCodeAt(++position);\n    position = readDigits(lexer, position, code);\n    code = body.charCodeAt(position);\n  } // E e\n\n  if (code === 0x0045 || code === 0x0065) {\n    isFloat = true;\n    code = body.charCodeAt(++position); // + -\n\n    if (code === 0x002b || code === 0x002d) {\n      code = body.charCodeAt(++position);\n    }\n\n    position = readDigits(lexer, position, code);\n    code = body.charCodeAt(position);\n  } // Numbers cannot be followed by . or NameStart\n\n  if (code === 0x002e || (0,_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_2__.isNameStart)(code)) {\n    throw (0,_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_3__.syntaxError)(\n      lexer.source,\n      position,\n      `Invalid number, expected digit but got: ${printCodePointAt(\n        lexer,\n        position,\n      )}.`,\n    );\n  }\n\n  return createToken(\n    lexer,\n    isFloat ? _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.FLOAT : _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.INT,\n    start,\n    position,\n    body.slice(start, position),\n  );\n}\n/**\n * Returns the new position in the source after reading one or more digits.\n */\n\nfunction readDigits(lexer, start, firstCode) {\n  if (!(0,_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_2__.isDigit)(firstCode)) {\n    throw (0,_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_3__.syntaxError)(\n      lexer.source,\n      start,\n      `Invalid number, expected digit but got: ${printCodePointAt(\n        lexer,\n        start,\n      )}.`,\n    );\n  }\n\n  const body = lexer.source.body;\n  let position = start + 1; // +1 to skip first firstCode\n\n  while ((0,_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_2__.isDigit)(body.charCodeAt(position))) {\n    ++position;\n  }\n\n  return position;\n}\n/**\n * Reads a single-quote string token from the source file.\n *\n * ```\n * StringValue ::\n *   - `\"\"` [lookahead != `\"`]\n *   - `\"` StringCharacter+ `\"`\n *\n * StringCharacter ::\n *   - SourceCharacter but not `\"` or `\\` or LineTerminator\n *   - `\\u` EscapedUnicode\n *   - `\\` EscapedCharacter\n *\n * EscapedUnicode ::\n *   - `{` HexDigit+ `}`\n *   - HexDigit HexDigit HexDigit HexDigit\n *\n * EscapedCharacter :: one of `\"` `\\` `/` `b` `f` `n` `r` `t`\n * ```\n */\n\nfunction readString(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let position = start + 1;\n  let chunkStart = position;\n  let value = '';\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position); // Closing Quote (\")\n\n    if (code === 0x0022) {\n      value += body.slice(chunkStart, position);\n      return createToken(lexer, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.STRING, start, position + 1, value);\n    } // Escape Sequence (\\)\n\n    if (code === 0x005c) {\n      value += body.slice(chunkStart, position);\n      const escape =\n        body.charCodeAt(position + 1) === 0x0075 // u\n          ? body.charCodeAt(position + 2) === 0x007b // {\n            ? readEscapedUnicodeVariableWidth(lexer, position)\n            : readEscapedUnicodeFixedWidth(lexer, position)\n          : readEscapedCharacter(lexer, position);\n      value += escape.value;\n      position += escape.size;\n      chunkStart = position;\n      continue;\n    } // LineTerminator (\\n | \\r)\n\n    if (code === 0x000a || code === 0x000d) {\n      break;\n    } // SourceCharacter\n\n    if (isUnicodeScalarValue(code)) {\n      ++position;\n    } else if (isSupplementaryCodePoint(body, position)) {\n      position += 2;\n    } else {\n      throw (0,_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_3__.syntaxError)(\n        lexer.source,\n        position,\n        `Invalid character within String: ${printCodePointAt(\n          lexer,\n          position,\n        )}.`,\n      );\n    }\n  }\n\n  throw (0,_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_3__.syntaxError)(lexer.source, position, 'Unterminated string.');\n} // The string value and lexed size of an escape sequence.\n\nfunction readEscapedUnicodeVariableWidth(lexer, position) {\n  const body = lexer.source.body;\n  let point = 0;\n  let size = 3; // Cannot be larger than 12 chars (\\u{00000000}).\n\n  while (size < 12) {\n    const code = body.charCodeAt(position + size++); // Closing Brace (})\n\n    if (code === 0x007d) {\n      // Must be at least 5 chars (\\u{0}) and encode a Unicode scalar value.\n      if (size < 5 || !isUnicodeScalarValue(point)) {\n        break;\n      }\n\n      return {\n        value: String.fromCodePoint(point),\n        size,\n      };\n    } // Append this hex digit to the code point.\n\n    point = (point << 4) | readHexDigit(code);\n\n    if (point < 0) {\n      break;\n    }\n  }\n\n  throw (0,_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_3__.syntaxError)(\n    lexer.source,\n    position,\n    `Invalid Unicode escape sequence: \"${body.slice(\n      position,\n      position + size,\n    )}\".`,\n  );\n}\n\nfunction readEscapedUnicodeFixedWidth(lexer, position) {\n  const body = lexer.source.body;\n  const code = read16BitHexCode(body, position + 2);\n\n  if (isUnicodeScalarValue(code)) {\n    return {\n      value: String.fromCodePoint(code),\n      size: 6,\n    };\n  } // GraphQL allows JSON-style surrogate pair escape sequences, but only when\n  // a valid pair is formed.\n\n  if (isLeadingSurrogate(code)) {\n    // \\u\n    if (\n      body.charCodeAt(position + 6) === 0x005c &&\n      body.charCodeAt(position + 7) === 0x0075\n    ) {\n      const trailingCode = read16BitHexCode(body, position + 8);\n\n      if (isTrailingSurrogate(trailingCode)) {\n        // JavaScript defines strings as a sequence of UTF-16 code units and\n        // encodes Unicode code points above U+FFFF using a surrogate pair of\n        // code units. Since this is a surrogate pair escape sequence, just\n        // include both codes into the JavaScript string value. Had JavaScript\n        // not been internally based on UTF-16, then this surrogate pair would\n        // be decoded to retrieve the supplementary code point.\n        return {\n          value: String.fromCodePoint(code, trailingCode),\n          size: 12,\n        };\n      }\n    }\n  }\n\n  throw (0,_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_3__.syntaxError)(\n    lexer.source,\n    position,\n    `Invalid Unicode escape sequence: \"${body.slice(position, position + 6)}\".`,\n  );\n}\n/**\n * Reads four hexadecimal characters and returns the positive integer that 16bit\n * hexadecimal string represents. For example, \"000f\" will return 15, and \"dead\"\n * will return 57005.\n *\n * Returns a negative number if any char was not a valid hexadecimal digit.\n */\n\nfunction read16BitHexCode(body, position) {\n  // readHexDigit() returns -1 on error. ORing a negative value with any other\n  // value always produces a negative value.\n  return (\n    (readHexDigit(body.charCodeAt(position)) << 12) |\n    (readHexDigit(body.charCodeAt(position + 1)) << 8) |\n    (readHexDigit(body.charCodeAt(position + 2)) << 4) |\n    readHexDigit(body.charCodeAt(position + 3))\n  );\n}\n/**\n * Reads a hexadecimal character and returns its positive integer value (0-15).\n *\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 if the provided character code was not a valid hexadecimal digit.\n *\n * HexDigit :: one of\n *   - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n *   - `A` `B` `C` `D` `E` `F`\n *   - `a` `b` `c` `d` `e` `f`\n */\n\nfunction readHexDigit(code) {\n  return code >= 0x0030 && code <= 0x0039 // 0-9\n    ? code - 0x0030\n    : code >= 0x0041 && code <= 0x0046 // A-F\n    ? code - 0x0037\n    : code >= 0x0061 && code <= 0x0066 // a-f\n    ? code - 0x0057\n    : -1;\n}\n/**\n * | Escaped Character | Code Point | Character Name               |\n * | ----------------- | ---------- | ---------------------------- |\n * | `\"`               | U+0022     | double quote                 |\n * | `\\`               | U+005C     | reverse solidus (back slash) |\n * | `/`               | U+002F     | solidus (forward slash)      |\n * | `b`               | U+0008     | backspace                    |\n * | `f`               | U+000C     | form feed                    |\n * | `n`               | U+000A     | line feed (new line)         |\n * | `r`               | U+000D     | carriage return              |\n * | `t`               | U+0009     | horizontal tab               |\n */\n\nfunction readEscapedCharacter(lexer, position) {\n  const body = lexer.source.body;\n  const code = body.charCodeAt(position + 1);\n\n  switch (code) {\n    case 0x0022:\n      // \"\n      return {\n        value: '\\u0022',\n        size: 2,\n      };\n\n    case 0x005c:\n      // \\\n      return {\n        value: '\\u005c',\n        size: 2,\n      };\n\n    case 0x002f:\n      // /\n      return {\n        value: '\\u002f',\n        size: 2,\n      };\n\n    case 0x0062:\n      // b\n      return {\n        value: '\\u0008',\n        size: 2,\n      };\n\n    case 0x0066:\n      // f\n      return {\n        value: '\\u000c',\n        size: 2,\n      };\n\n    case 0x006e:\n      // n\n      return {\n        value: '\\u000a',\n        size: 2,\n      };\n\n    case 0x0072:\n      // r\n      return {\n        value: '\\u000d',\n        size: 2,\n      };\n\n    case 0x0074:\n      // t\n      return {\n        value: '\\u0009',\n        size: 2,\n      };\n  }\n\n  throw (0,_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_3__.syntaxError)(\n    lexer.source,\n    position,\n    `Invalid character escape sequence: \"${body.slice(\n      position,\n      position + 2,\n    )}\".`,\n  );\n}\n/**\n * Reads a block string token from the source file.\n *\n * ```\n * StringValue ::\n *   - `\"\"\"` BlockStringCharacter* `\"\"\"`\n *\n * BlockStringCharacter ::\n *   - SourceCharacter but not `\"\"\"` or `\\\"\"\"`\n *   - `\\\"\"\"`\n * ```\n */\n\nfunction readBlockString(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let lineStart = lexer.lineStart;\n  let position = start + 3;\n  let chunkStart = position;\n  let currentLine = '';\n  const blockLines = [];\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position); // Closing Triple-Quote (\"\"\")\n\n    if (\n      code === 0x0022 &&\n      body.charCodeAt(position + 1) === 0x0022 &&\n      body.charCodeAt(position + 2) === 0x0022\n    ) {\n      currentLine += body.slice(chunkStart, position);\n      blockLines.push(currentLine);\n      const token = createToken(\n        lexer,\n        _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.BLOCK_STRING,\n        start,\n        position + 3, // Return a string of the lines joined with U+000A.\n        (0,_blockString_mjs__WEBPACK_IMPORTED_MODULE_4__.dedentBlockStringLines)(blockLines).join('\\n'),\n      );\n      lexer.line += blockLines.length - 1;\n      lexer.lineStart = lineStart;\n      return token;\n    } // Escaped Triple-Quote (\\\"\"\")\n\n    if (\n      code === 0x005c &&\n      body.charCodeAt(position + 1) === 0x0022 &&\n      body.charCodeAt(position + 2) === 0x0022 &&\n      body.charCodeAt(position + 3) === 0x0022\n    ) {\n      currentLine += body.slice(chunkStart, position);\n      chunkStart = position + 1; // skip only slash\n\n      position += 4;\n      continue;\n    } // LineTerminator\n\n    if (code === 0x000a || code === 0x000d) {\n      currentLine += body.slice(chunkStart, position);\n      blockLines.push(currentLine);\n\n      if (code === 0x000d && body.charCodeAt(position + 1) === 0x000a) {\n        position += 2;\n      } else {\n        ++position;\n      }\n\n      currentLine = '';\n      chunkStart = position;\n      lineStart = position;\n      continue;\n    } // SourceCharacter\n\n    if (isUnicodeScalarValue(code)) {\n      ++position;\n    } else if (isSupplementaryCodePoint(body, position)) {\n      position += 2;\n    } else {\n      throw (0,_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_3__.syntaxError)(\n        lexer.source,\n        position,\n        `Invalid character within String: ${printCodePointAt(\n          lexer,\n          position,\n        )}.`,\n      );\n    }\n  }\n\n  throw (0,_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_3__.syntaxError)(lexer.source, position, 'Unterminated string.');\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * ```\n * Name ::\n *   - NameStart NameContinue* [lookahead != NameContinue]\n * ```\n */\n\nfunction readName(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let position = start + 1;\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position);\n\n    if ((0,_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_2__.isNameContinue)(code)) {\n      ++position;\n    } else {\n      break;\n    }\n  }\n\n  return createToken(\n    lexer,\n    _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_1__.TokenKind.NAME,\n    start,\n    position,\n    body.slice(start, position),\n  );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9sZXhlci5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUF1RDtBQUNyQjtBQUN5QjtBQUNtQjtBQUNsQztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsMkNBQUssQ0FBQyx5REFBYTtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHVCQUF1Qix5REFBYTtBQUNwQztBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQSw0REFBNEQ7O0FBRTVELGtDQUFrQzs7QUFFbEM7QUFDQTtBQUNBO0FBQ0EsUUFBUSxzQkFBc0IsNkRBQWlCO0FBQy9DOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0EsYUFBYSwwREFBYztBQUMzQixhQUFhLDREQUFnQjtBQUM3QixhQUFhLHlEQUFhO0FBQzFCLGFBQWEsNkRBQWlCO0FBQzlCLGFBQWEsNkRBQWlCO0FBQzlCLGFBQWEsNERBQWdCO0FBQzdCLGFBQWEsMkRBQWU7QUFDNUIsYUFBYSw0REFBZ0I7QUFDN0IsYUFBYSx3REFBWTtBQUN6QixhQUFhLCtEQUFtQjtBQUNoQyxhQUFhLCtEQUFtQjtBQUNoQyxhQUFhLDZEQUFpQjtBQUM5QixhQUFhLDBEQUFjO0FBQzNCLGFBQWEsNkRBQWlCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFdBQVcseURBQWE7QUFDeEIsSUFBSTtBQUNKO0FBQ0E7QUFDQSx1Q0FBdUMsS0FBSztBQUM1QyxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYSwyQ0FBSztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0RBQXdEOztBQUV4RDtBQUNBO0FBQ0Esa0NBQWtDLDBEQUFjOztBQUVoRDtBQUNBO0FBQ0Esa0NBQWtDLDREQUFnQjs7QUFFbEQ7QUFDQTtBQUNBLGtDQUFrQyx5REFBYTs7QUFFL0M7QUFDQTtBQUNBLGtDQUFrQyw2REFBaUI7O0FBRW5EO0FBQ0E7QUFDQSxrQ0FBa0MsNkRBQWlCOztBQUVuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsNERBQWdCO0FBQ3BEOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxrQ0FBa0MsMkRBQWU7O0FBRWpEO0FBQ0E7QUFDQSxrQ0FBa0MsNERBQWdCOztBQUVsRDtBQUNBO0FBQ0Esa0NBQWtDLHdEQUFZOztBQUU5QztBQUNBO0FBQ0Esa0NBQWtDLCtEQUFtQjs7QUFFckQ7QUFDQTtBQUNBLGtDQUFrQywrREFBbUI7O0FBRXJEO0FBQ0E7QUFDQSxrQ0FBa0MsNkRBQWlCOztBQUVuRDtBQUNBO0FBQ0Esa0NBQWtDLDBEQUFjOztBQUVoRDtBQUNBO0FBQ0Esa0NBQWtDLDZEQUFpQjtBQUNuRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTTs7QUFFTixRQUFRLDhEQUFPO0FBQ2Y7QUFDQSxNQUFNOztBQUVOLFFBQVEsa0VBQVc7QUFDbkI7QUFDQTs7QUFFQSxVQUFVLG1FQUFXO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsa0NBQWtDO0FBQ3JFLGdDQUFnQyxrQ0FBa0M7QUFDbEU7QUFDQTs7QUFFQSw0QkFBNEIseURBQWE7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEM7O0FBRTVDO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJLDZEQUFpQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyxzQkFBc0I7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4REFBOEQsc0JBQXNCO0FBQ3BGLGlEQUFpRCxzQkFBc0I7QUFDdkUsK0NBQStDLHNCQUFzQjtBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qjs7QUFFdkI7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTs7QUFFQSxRQUFRLDhEQUFPO0FBQ2YsWUFBWSxtRUFBVztBQUN2QjtBQUNBO0FBQ0EscURBQXFEO0FBQ3JEO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0Esd0NBQXdDOztBQUV4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7O0FBRUoseUJBQXlCLGtFQUFXO0FBQ3BDLFVBQVUsbUVBQVc7QUFDckI7QUFDQTtBQUNBLGlEQUFpRDtBQUNqRDtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGNBQWMsMkRBQWUsR0FBRyx5REFBYTtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTyw4REFBTztBQUNkLFVBQVUsbUVBQVc7QUFDckI7QUFDQTtBQUNBLGlEQUFpRDtBQUNqRDtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQSw0QkFBNEI7O0FBRTVCLFNBQVMsOERBQU87QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsY0FBYztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRDQUE0Qzs7QUFFNUM7QUFDQTtBQUNBLGdDQUFnQyw0REFBZ0I7QUFDaEQsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ04sWUFBWSxtRUFBVztBQUN2QjtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBLFFBQVEsbUVBQVc7QUFDbkIsRUFBRTs7QUFFRjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isc0NBQXNDLFNBQVM7O0FBRS9EO0FBQ0EscURBQXFELG1CQUFtQjs7QUFFeEU7QUFDQSxzQ0FBc0MsRUFBRTtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFFBQVEsbUVBQVc7QUFDbkI7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLG1FQUFXO0FBQ25CO0FBQ0E7QUFDQSx5Q0FBeUMsbUNBQW1DO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLG1FQUFXO0FBQ25CO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEM7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsa0VBQXNCO0FBQzlCO0FBQ0E7QUFDQSxRQUFRLHdFQUFzQjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ04sWUFBWSxtRUFBVztBQUN2QjtBQUNBO0FBQ0EsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBLFFBQVEsbUVBQVc7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsUUFBUSxxRUFBYztBQUN0QjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUksMERBQWM7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9sZXhlci5tanM/N2JjMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzeW50YXhFcnJvciB9IGZyb20gJy4uL2Vycm9yL3N5bnRheEVycm9yLm1qcyc7XG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gJy4vYXN0Lm1qcyc7XG5pbXBvcnQgeyBkZWRlbnRCbG9ja1N0cmluZ0xpbmVzIH0gZnJvbSAnLi9ibG9ja1N0cmluZy5tanMnO1xuaW1wb3J0IHsgaXNEaWdpdCwgaXNOYW1lQ29udGludWUsIGlzTmFtZVN0YXJ0IH0gZnJvbSAnLi9jaGFyYWN0ZXJDbGFzc2VzLm1qcyc7XG5pbXBvcnQgeyBUb2tlbktpbmQgfSBmcm9tICcuL3Rva2VuS2luZC5tanMnO1xuLyoqXG4gKiBHaXZlbiBhIFNvdXJjZSBvYmplY3QsIGNyZWF0ZXMgYSBMZXhlciBmb3IgdGhhdCBzb3VyY2UuXG4gKiBBIExleGVyIGlzIGEgc3RhdGVmdWwgc3RyZWFtIGdlbmVyYXRvciBpbiB0aGF0IGV2ZXJ5IHRpbWVcbiAqIGl0IGlzIGFkdmFuY2VkLCBpdCByZXR1cm5zIHRoZSBuZXh0IHRva2VuIGluIHRoZSBTb3VyY2UuIEFzc3VtaW5nIHRoZVxuICogc291cmNlIGxleGVzLCB0aGUgZmluYWwgVG9rZW4gZW1pdHRlZCBieSB0aGUgbGV4ZXIgd2lsbCBiZSBvZiBraW5kXG4gKiBFT0YsIGFmdGVyIHdoaWNoIHRoZSBsZXhlciB3aWxsIHJlcGVhdGVkbHkgcmV0dXJuIHRoZSBzYW1lIEVPRiB0b2tlblxuICogd2hlbmV2ZXIgY2FsbGVkLlxuICovXG5cbmV4cG9ydCBjbGFzcyBMZXhlciB7XG4gIC8qKlxuICAgKiBUaGUgcHJldmlvdXNseSBmb2N1c2VkIG5vbi1pZ25vcmVkIHRva2VuLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlIGN1cnJlbnRseSBmb2N1c2VkIG5vbi1pZ25vcmVkIHRva2VuLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlICgxLWluZGV4ZWQpIGxpbmUgY29udGFpbmluZyB0aGUgY3VycmVudCB0b2tlbi5cbiAgICovXG5cbiAgLyoqXG4gICAqIFRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGF0IHdoaWNoIHRoZSBjdXJyZW50IGxpbmUgYmVnaW5zLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc291cmNlKSB7XG4gICAgY29uc3Qgc3RhcnRPZkZpbGVUb2tlbiA9IG5ldyBUb2tlbihUb2tlbktpbmQuU09GLCAwLCAwLCAwLCAwKTtcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgICB0aGlzLmxhc3RUb2tlbiA9IHN0YXJ0T2ZGaWxlVG9rZW47XG4gICAgdGhpcy50b2tlbiA9IHN0YXJ0T2ZGaWxlVG9rZW47XG4gICAgdGhpcy5saW5lID0gMTtcbiAgICB0aGlzLmxpbmVTdGFydCA9IDA7XG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdMZXhlcic7XG4gIH1cbiAgLyoqXG4gICAqIEFkdmFuY2VzIHRoZSB0b2tlbiBzdHJlYW0gdG8gdGhlIG5leHQgbm9uLWlnbm9yZWQgdG9rZW4uXG4gICAqL1xuXG4gIGFkdmFuY2UoKSB7XG4gICAgdGhpcy5sYXN0VG9rZW4gPSB0aGlzLnRva2VuO1xuICAgIGNvbnN0IHRva2VuID0gKHRoaXMudG9rZW4gPSB0aGlzLmxvb2thaGVhZCgpKTtcbiAgICByZXR1cm4gdG9rZW47XG4gIH1cbiAgLyoqXG4gICAqIExvb2tzIGFoZWFkIGFuZCByZXR1cm5zIHRoZSBuZXh0IG5vbi1pZ25vcmVkIHRva2VuLCBidXQgZG9lcyBub3QgY2hhbmdlXG4gICAqIHRoZSBzdGF0ZSBvZiBMZXhlci5cbiAgICovXG5cbiAgbG9va2FoZWFkKCkge1xuICAgIGxldCB0b2tlbiA9IHRoaXMudG9rZW47XG5cbiAgICBpZiAodG9rZW4ua2luZCAhPT0gVG9rZW5LaW5kLkVPRikge1xuICAgICAgZG8ge1xuICAgICAgICBpZiAodG9rZW4ubmV4dCkge1xuICAgICAgICAgIHRva2VuID0gdG9rZW4ubmV4dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBSZWFkIHRoZSBuZXh0IHRva2VuIGFuZCBmb3JtIGEgbGluayBpbiB0aGUgdG9rZW4gbGlua2VkLWxpc3QuXG4gICAgICAgICAgY29uc3QgbmV4dFRva2VuID0gcmVhZE5leHRUb2tlbih0aGlzLCB0b2tlbi5lbmQpOyAvLyBAdHMtZXhwZWN0LWVycm9yIG5leHQgaXMgb25seSBtdXRhYmxlIGR1cmluZyBwYXJzaW5nLlxuXG4gICAgICAgICAgdG9rZW4ubmV4dCA9IG5leHRUb2tlbjsgLy8gQHRzLWV4cGVjdC1lcnJvciBwcmV2IGlzIG9ubHkgbXV0YWJsZSBkdXJpbmcgcGFyc2luZy5cblxuICAgICAgICAgIG5leHRUb2tlbi5wcmV2ID0gdG9rZW47XG4gICAgICAgICAgdG9rZW4gPSBuZXh0VG9rZW47XG4gICAgICAgIH1cbiAgICAgIH0gd2hpbGUgKHRva2VuLmtpbmQgPT09IFRva2VuS2luZC5DT01NRU5UKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9rZW47XG4gIH1cbn1cbi8qKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHVuY3R1YXRvclRva2VuS2luZChraW5kKSB7XG4gIHJldHVybiAoXG4gICAga2luZCA9PT0gVG9rZW5LaW5kLkJBTkcgfHxcbiAgICBraW5kID09PSBUb2tlbktpbmQuRE9MTEFSIHx8XG4gICAga2luZCA9PT0gVG9rZW5LaW5kLkFNUCB8fFxuICAgIGtpbmQgPT09IFRva2VuS2luZC5QQVJFTl9MIHx8XG4gICAga2luZCA9PT0gVG9rZW5LaW5kLlBBUkVOX1IgfHxcbiAgICBraW5kID09PSBUb2tlbktpbmQuU1BSRUFEIHx8XG4gICAga2luZCA9PT0gVG9rZW5LaW5kLkNPTE9OIHx8XG4gICAga2luZCA9PT0gVG9rZW5LaW5kLkVRVUFMUyB8fFxuICAgIGtpbmQgPT09IFRva2VuS2luZC5BVCB8fFxuICAgIGtpbmQgPT09IFRva2VuS2luZC5CUkFDS0VUX0wgfHxcbiAgICBraW5kID09PSBUb2tlbktpbmQuQlJBQ0tFVF9SIHx8XG4gICAga2luZCA9PT0gVG9rZW5LaW5kLkJSQUNFX0wgfHxcbiAgICBraW5kID09PSBUb2tlbktpbmQuUElQRSB8fFxuICAgIGtpbmQgPT09IFRva2VuS2luZC5CUkFDRV9SXG4gICk7XG59XG4vKipcbiAqIEEgVW5pY29kZSBzY2FsYXIgdmFsdWUgaXMgYW55IFVuaWNvZGUgY29kZSBwb2ludCBleGNlcHQgc3Vycm9nYXRlIGNvZGVcbiAqIHBvaW50cy4gSW4gb3RoZXIgd29yZHMsIHRoZSBpbmNsdXNpdmUgcmFuZ2VzIG9mIHZhbHVlcyAweDAwMDAgdG8gMHhEN0ZGIGFuZFxuICogMHhFMDAwIHRvIDB4MTBGRkZGLlxuICpcbiAqIFNvdXJjZUNoYXJhY3RlciA6OlxuICogICAtIFwiQW55IFVuaWNvZGUgc2NhbGFyIHZhbHVlXCJcbiAqL1xuXG5mdW5jdGlvbiBpc1VuaWNvZGVTY2FsYXJWYWx1ZShjb2RlKSB7XG4gIHJldHVybiAoXG4gICAgKGNvZGUgPj0gMHgwMDAwICYmIGNvZGUgPD0gMHhkN2ZmKSB8fCAoY29kZSA+PSAweGUwMDAgJiYgY29kZSA8PSAweDEwZmZmZilcbiAgKTtcbn1cbi8qKlxuICogVGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIHNvdXJjZSB0ZXh0IGFzIGEgc2VxdWVuY2Ugb2YgdW5pY29kZSBzY2FsYXJcbiAqIHZhbHVlcyAod2hpY2ggVW5pY29kZSBkZWZpbmVzIHRvIGV4Y2x1ZGUgc3Vycm9nYXRlIGNvZGUgcG9pbnRzKS4gSG93ZXZlclxuICogSmF2YVNjcmlwdCBkZWZpbmVzIHN0cmluZ3MgYXMgYSBzZXF1ZW5jZSBvZiBVVEYtMTYgY29kZSB1bml0cyB3aGljaCBtYXlcbiAqIGluY2x1ZGUgc3Vycm9nYXRlcy4gQSBzdXJyb2dhdGUgcGFpciBpcyBhIHZhbGlkIHNvdXJjZSBjaGFyYWN0ZXIgYXMgaXRcbiAqIGVuY29kZXMgYSBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnQgKGFib3ZlIFUrRkZGRiksIGJ1dCB1bnBhaXJlZCBzdXJyb2dhdGVcbiAqIGNvZGUgcG9pbnRzIGFyZSBub3QgdmFsaWQgc291cmNlIGNoYXJhY3RlcnMuXG4gKi9cblxuZnVuY3Rpb24gaXNTdXBwbGVtZW50YXJ5Q29kZVBvaW50KGJvZHksIGxvY2F0aW9uKSB7XG4gIHJldHVybiAoXG4gICAgaXNMZWFkaW5nU3Vycm9nYXRlKGJvZHkuY2hhckNvZGVBdChsb2NhdGlvbikpICYmXG4gICAgaXNUcmFpbGluZ1N1cnJvZ2F0ZShib2R5LmNoYXJDb2RlQXQobG9jYXRpb24gKyAxKSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gaXNMZWFkaW5nU3Vycm9nYXRlKGNvZGUpIHtcbiAgcmV0dXJuIGNvZGUgPj0gMHhkODAwICYmIGNvZGUgPD0gMHhkYmZmO1xufVxuXG5mdW5jdGlvbiBpc1RyYWlsaW5nU3Vycm9nYXRlKGNvZGUpIHtcbiAgcmV0dXJuIGNvZGUgPj0gMHhkYzAwICYmIGNvZGUgPD0gMHhkZmZmO1xufVxuLyoqXG4gKiBQcmludHMgdGhlIGNvZGUgcG9pbnQgKG9yIGVuZCBvZiBmaWxlIHJlZmVyZW5jZSkgYXQgYSBnaXZlbiBsb2NhdGlvbiBpbiBhXG4gKiBzb3VyY2UgZm9yIHVzZSBpbiBlcnJvciBtZXNzYWdlcy5cbiAqXG4gKiBQcmludGFibGUgQVNDSUkgaXMgcHJpbnRlZCBxdW90ZWQsIHdoaWxlIG90aGVyIHBvaW50cyBhcmUgcHJpbnRlZCBpbiBVbmljb2RlXG4gKiBjb2RlIHBvaW50IGZvcm0gKGllLiBVKzEyMzQpLlxuICovXG5cbmZ1bmN0aW9uIHByaW50Q29kZVBvaW50QXQobGV4ZXIsIGxvY2F0aW9uKSB7XG4gIGNvbnN0IGNvZGUgPSBsZXhlci5zb3VyY2UuYm9keS5jb2RlUG9pbnRBdChsb2NhdGlvbik7XG5cbiAgaWYgKGNvZGUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBUb2tlbktpbmQuRU9GO1xuICB9IGVsc2UgaWYgKGNvZGUgPj0gMHgwMDIwICYmIGNvZGUgPD0gMHgwMDdlKSB7XG4gICAgLy8gUHJpbnRhYmxlIEFTQ0lJXG4gICAgY29uc3QgY2hhciA9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNvZGUpO1xuICAgIHJldHVybiBjaGFyID09PSAnXCInID8gXCInXFxcIidcIiA6IGBcIiR7Y2hhcn1cImA7XG4gIH0gLy8gVW5pY29kZSBjb2RlIHBvaW50XG5cbiAgcmV0dXJuICdVKycgKyBjb2RlLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpLnBhZFN0YXJ0KDQsICcwJyk7XG59XG4vKipcbiAqIENyZWF0ZSBhIHRva2VuIHdpdGggbGluZSBhbmQgY29sdW1uIGxvY2F0aW9uIGluZm9ybWF0aW9uLlxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZVRva2VuKGxleGVyLCBraW5kLCBzdGFydCwgZW5kLCB2YWx1ZSkge1xuICBjb25zdCBsaW5lID0gbGV4ZXIubGluZTtcbiAgY29uc3QgY29sID0gMSArIHN0YXJ0IC0gbGV4ZXIubGluZVN0YXJ0O1xuICByZXR1cm4gbmV3IFRva2VuKGtpbmQsIHN0YXJ0LCBlbmQsIGxpbmUsIGNvbCwgdmFsdWUpO1xufVxuLyoqXG4gKiBHZXRzIHRoZSBuZXh0IHRva2VuIGZyb20gdGhlIHNvdXJjZSBzdGFydGluZyBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uXG4gKlxuICogVGhpcyBza2lwcyBvdmVyIHdoaXRlc3BhY2UgdW50aWwgaXQgZmluZHMgdGhlIG5leHQgbGV4YWJsZSB0b2tlbiwgdGhlbiBsZXhlc1xuICogcHVuY3R1YXRvcnMgaW1tZWRpYXRlbHkgb3IgY2FsbHMgdGhlIGFwcHJvcHJpYXRlIGhlbHBlciBmdW5jdGlvbiBmb3IgbW9yZVxuICogY29tcGxpY2F0ZWQgdG9rZW5zLlxuICovXG5cbmZ1bmN0aW9uIHJlYWROZXh0VG9rZW4obGV4ZXIsIHN0YXJ0KSB7XG4gIGNvbnN0IGJvZHkgPSBsZXhlci5zb3VyY2UuYm9keTtcbiAgY29uc3QgYm9keUxlbmd0aCA9IGJvZHkubGVuZ3RoO1xuICBsZXQgcG9zaXRpb24gPSBzdGFydDtcblxuICB3aGlsZSAocG9zaXRpb24gPCBib2R5TGVuZ3RoKSB7XG4gICAgY29uc3QgY29kZSA9IGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbik7IC8vIFNvdXJjZUNoYXJhY3RlclxuXG4gICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAvLyBJZ25vcmVkIDo6XG4gICAgICAvLyAgIC0gVW5pY29kZUJPTVxuICAgICAgLy8gICAtIFdoaXRlU3BhY2VcbiAgICAgIC8vICAgLSBMaW5lVGVybWluYXRvclxuICAgICAgLy8gICAtIENvbW1lbnRcbiAgICAgIC8vICAgLSBDb21tYVxuICAgICAgLy9cbiAgICAgIC8vIFVuaWNvZGVCT00gOjogXCJCeXRlIE9yZGVyIE1hcmsgKFUrRkVGRilcIlxuICAgICAgLy9cbiAgICAgIC8vIFdoaXRlU3BhY2UgOjpcbiAgICAgIC8vICAgLSBcIkhvcml6b250YWwgVGFiIChVKzAwMDkpXCJcbiAgICAgIC8vICAgLSBcIlNwYWNlIChVKzAwMjApXCJcbiAgICAgIC8vXG4gICAgICAvLyBDb21tYSA6OiAsXG4gICAgICBjYXNlIDB4ZmVmZjogLy8gPEJPTT5cblxuICAgICAgY2FzZSAweDAwMDk6IC8vIFxcdFxuXG4gICAgICBjYXNlIDB4MDAyMDogLy8gPHNwYWNlPlxuXG4gICAgICBjYXNlIDB4MDAyYzpcbiAgICAgICAgLy8gLFxuICAgICAgICArK3Bvc2l0aW9uO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIC8vIExpbmVUZXJtaW5hdG9yIDo6XG4gICAgICAvLyAgIC0gXCJOZXcgTGluZSAoVSswMDBBKVwiXG4gICAgICAvLyAgIC0gXCJDYXJyaWFnZSBSZXR1cm4gKFUrMDAwRClcIiBbbG9va2FoZWFkICE9IFwiTmV3IExpbmUgKFUrMDAwQSlcIl1cbiAgICAgIC8vICAgLSBcIkNhcnJpYWdlIFJldHVybiAoVSswMDBEKVwiIFwiTmV3IExpbmUgKFUrMDAwQSlcIlxuXG4gICAgICBjYXNlIDB4MDAwYTpcbiAgICAgICAgLy8gXFxuXG4gICAgICAgICsrcG9zaXRpb247XG4gICAgICAgICsrbGV4ZXIubGluZTtcbiAgICAgICAgbGV4ZXIubGluZVN0YXJ0ID0gcG9zaXRpb247XG4gICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICBjYXNlIDB4MDAwZDpcbiAgICAgICAgLy8gXFxyXG4gICAgICAgIGlmIChib2R5LmNoYXJDb2RlQXQocG9zaXRpb24gKyAxKSA9PT0gMHgwMDBhKSB7XG4gICAgICAgICAgcG9zaXRpb24gKz0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICArK3Bvc2l0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgKytsZXhlci5saW5lO1xuICAgICAgICBsZXhlci5saW5lU3RhcnQgPSBwb3NpdGlvbjtcbiAgICAgICAgY29udGludWU7XG4gICAgICAvLyBDb21tZW50XG5cbiAgICAgIGNhc2UgMHgwMDIzOlxuICAgICAgICAvLyAjXG4gICAgICAgIHJldHVybiByZWFkQ29tbWVudChsZXhlciwgcG9zaXRpb24pO1xuICAgICAgLy8gVG9rZW4gOjpcbiAgICAgIC8vICAgLSBQdW5jdHVhdG9yXG4gICAgICAvLyAgIC0gTmFtZVxuICAgICAgLy8gICAtIEludFZhbHVlXG4gICAgICAvLyAgIC0gRmxvYXRWYWx1ZVxuICAgICAgLy8gICAtIFN0cmluZ1ZhbHVlXG4gICAgICAvL1xuICAgICAgLy8gUHVuY3R1YXRvciA6OiBvbmUgb2YgISAkICYgKCApIC4uLiA6ID0gQCBbIF0geyB8IH1cblxuICAgICAgY2FzZSAweDAwMjE6XG4gICAgICAgIC8vICFcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVRva2VuKGxleGVyLCBUb2tlbktpbmQuQkFORywgcG9zaXRpb24sIHBvc2l0aW9uICsgMSk7XG5cbiAgICAgIGNhc2UgMHgwMDI0OlxuICAgICAgICAvLyAkXG4gICAgICAgIHJldHVybiBjcmVhdGVUb2tlbihsZXhlciwgVG9rZW5LaW5kLkRPTExBUiwgcG9zaXRpb24sIHBvc2l0aW9uICsgMSk7XG5cbiAgICAgIGNhc2UgMHgwMDI2OlxuICAgICAgICAvLyAmXG4gICAgICAgIHJldHVybiBjcmVhdGVUb2tlbihsZXhlciwgVG9rZW5LaW5kLkFNUCwgcG9zaXRpb24sIHBvc2l0aW9uICsgMSk7XG5cbiAgICAgIGNhc2UgMHgwMDI4OlxuICAgICAgICAvLyAoXG4gICAgICAgIHJldHVybiBjcmVhdGVUb2tlbihsZXhlciwgVG9rZW5LaW5kLlBBUkVOX0wsIHBvc2l0aW9uLCBwb3NpdGlvbiArIDEpO1xuXG4gICAgICBjYXNlIDB4MDAyOTpcbiAgICAgICAgLy8gKVxuICAgICAgICByZXR1cm4gY3JlYXRlVG9rZW4obGV4ZXIsIFRva2VuS2luZC5QQVJFTl9SLCBwb3NpdGlvbiwgcG9zaXRpb24gKyAxKTtcblxuICAgICAgY2FzZSAweDAwMmU6XG4gICAgICAgIC8vIC5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDEpID09PSAweDAwMmUgJiZcbiAgICAgICAgICBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24gKyAyKSA9PT0gMHgwMDJlXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVUb2tlbihsZXhlciwgVG9rZW5LaW5kLlNQUkVBRCwgcG9zaXRpb24sIHBvc2l0aW9uICsgMyk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAweDAwM2E6XG4gICAgICAgIC8vIDpcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVRva2VuKGxleGVyLCBUb2tlbktpbmQuQ09MT04sIHBvc2l0aW9uLCBwb3NpdGlvbiArIDEpO1xuXG4gICAgICBjYXNlIDB4MDAzZDpcbiAgICAgICAgLy8gPVxuICAgICAgICByZXR1cm4gY3JlYXRlVG9rZW4obGV4ZXIsIFRva2VuS2luZC5FUVVBTFMsIHBvc2l0aW9uLCBwb3NpdGlvbiArIDEpO1xuXG4gICAgICBjYXNlIDB4MDA0MDpcbiAgICAgICAgLy8gQFxuICAgICAgICByZXR1cm4gY3JlYXRlVG9rZW4obGV4ZXIsIFRva2VuS2luZC5BVCwgcG9zaXRpb24sIHBvc2l0aW9uICsgMSk7XG5cbiAgICAgIGNhc2UgMHgwMDViOlxuICAgICAgICAvLyBbXG4gICAgICAgIHJldHVybiBjcmVhdGVUb2tlbihsZXhlciwgVG9rZW5LaW5kLkJSQUNLRVRfTCwgcG9zaXRpb24sIHBvc2l0aW9uICsgMSk7XG5cbiAgICAgIGNhc2UgMHgwMDVkOlxuICAgICAgICAvLyBdXG4gICAgICAgIHJldHVybiBjcmVhdGVUb2tlbihsZXhlciwgVG9rZW5LaW5kLkJSQUNLRVRfUiwgcG9zaXRpb24sIHBvc2l0aW9uICsgMSk7XG5cbiAgICAgIGNhc2UgMHgwMDdiOlxuICAgICAgICAvLyB7XG4gICAgICAgIHJldHVybiBjcmVhdGVUb2tlbihsZXhlciwgVG9rZW5LaW5kLkJSQUNFX0wsIHBvc2l0aW9uLCBwb3NpdGlvbiArIDEpO1xuXG4gICAgICBjYXNlIDB4MDA3YzpcbiAgICAgICAgLy8gfFxuICAgICAgICByZXR1cm4gY3JlYXRlVG9rZW4obGV4ZXIsIFRva2VuS2luZC5QSVBFLCBwb3NpdGlvbiwgcG9zaXRpb24gKyAxKTtcblxuICAgICAgY2FzZSAweDAwN2Q6XG4gICAgICAgIC8vIH1cbiAgICAgICAgcmV0dXJuIGNyZWF0ZVRva2VuKGxleGVyLCBUb2tlbktpbmQuQlJBQ0VfUiwgcG9zaXRpb24sIHBvc2l0aW9uICsgMSk7XG4gICAgICAvLyBTdHJpbmdWYWx1ZVxuXG4gICAgICBjYXNlIDB4MDAyMjpcbiAgICAgICAgLy8gXCJcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDEpID09PSAweDAwMjIgJiZcbiAgICAgICAgICBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24gKyAyKSA9PT0gMHgwMDIyXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiByZWFkQmxvY2tTdHJpbmcobGV4ZXIsIHBvc2l0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZWFkU3RyaW5nKGxleGVyLCBwb3NpdGlvbik7XG4gICAgfSAvLyBJbnRWYWx1ZSB8IEZsb2F0VmFsdWUgKERpZ2l0IHwgLSlcblxuICAgIGlmIChpc0RpZ2l0KGNvZGUpIHx8IGNvZGUgPT09IDB4MDAyZCkge1xuICAgICAgcmV0dXJuIHJlYWROdW1iZXIobGV4ZXIsIHBvc2l0aW9uLCBjb2RlKTtcbiAgICB9IC8vIE5hbWVcblxuICAgIGlmIChpc05hbWVTdGFydChjb2RlKSkge1xuICAgICAgcmV0dXJuIHJlYWROYW1lKGxleGVyLCBwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgdGhyb3cgc3ludGF4RXJyb3IoXG4gICAgICBsZXhlci5zb3VyY2UsXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGNvZGUgPT09IDB4MDAyN1xuICAgICAgICA/ICdVbmV4cGVjdGVkIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXIgKFxcJyksIGRpZCB5b3UgbWVhbiB0byB1c2UgYSBkb3VibGUgcXVvdGUgKFwiKT8nXG4gICAgICAgIDogaXNVbmljb2RlU2NhbGFyVmFsdWUoY29kZSkgfHwgaXNTdXBwbGVtZW50YXJ5Q29kZVBvaW50KGJvZHksIHBvc2l0aW9uKVxuICAgICAgICA/IGBVbmV4cGVjdGVkIGNoYXJhY3RlcjogJHtwcmludENvZGVQb2ludEF0KGxleGVyLCBwb3NpdGlvbil9LmBcbiAgICAgICAgOiBgSW52YWxpZCBjaGFyYWN0ZXI6ICR7cHJpbnRDb2RlUG9pbnRBdChsZXhlciwgcG9zaXRpb24pfS5gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlVG9rZW4obGV4ZXIsIFRva2VuS2luZC5FT0YsIGJvZHlMZW5ndGgsIGJvZHlMZW5ndGgpO1xufVxuLyoqXG4gKiBSZWFkcyBhIGNvbW1lbnQgdG9rZW4gZnJvbSB0aGUgc291cmNlIGZpbGUuXG4gKlxuICogYGBgXG4gKiBDb21tZW50IDo6ICMgQ29tbWVudENoYXIqIFtsb29rYWhlYWQgIT0gQ29tbWVudENoYXJdXG4gKlxuICogQ29tbWVudENoYXIgOjogU291cmNlQ2hhcmFjdGVyIGJ1dCBub3QgTGluZVRlcm1pbmF0b3JcbiAqIGBgYFxuICovXG5cbmZ1bmN0aW9uIHJlYWRDb21tZW50KGxleGVyLCBzdGFydCkge1xuICBjb25zdCBib2R5ID0gbGV4ZXIuc291cmNlLmJvZHk7XG4gIGNvbnN0IGJvZHlMZW5ndGggPSBib2R5Lmxlbmd0aDtcbiAgbGV0IHBvc2l0aW9uID0gc3RhcnQgKyAxO1xuXG4gIHdoaWxlIChwb3NpdGlvbiA8IGJvZHlMZW5ndGgpIHtcbiAgICBjb25zdCBjb2RlID0gYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uKTsgLy8gTGluZVRlcm1pbmF0b3IgKFxcbiB8IFxccilcblxuICAgIGlmIChjb2RlID09PSAweDAwMGEgfHwgY29kZSA9PT0gMHgwMDBkKSB7XG4gICAgICBicmVhaztcbiAgICB9IC8vIFNvdXJjZUNoYXJhY3RlclxuXG4gICAgaWYgKGlzVW5pY29kZVNjYWxhclZhbHVlKGNvZGUpKSB7XG4gICAgICArK3Bvc2l0aW9uO1xuICAgIH0gZWxzZSBpZiAoaXNTdXBwbGVtZW50YXJ5Q29kZVBvaW50KGJvZHksIHBvc2l0aW9uKSkge1xuICAgICAgcG9zaXRpb24gKz0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZVRva2VuKFxuICAgIGxleGVyLFxuICAgIFRva2VuS2luZC5DT01NRU5ULFxuICAgIHN0YXJ0LFxuICAgIHBvc2l0aW9uLFxuICAgIGJvZHkuc2xpY2Uoc3RhcnQgKyAxLCBwb3NpdGlvbiksXG4gICk7XG59XG4vKipcbiAqIFJlYWRzIGEgbnVtYmVyIHRva2VuIGZyb20gdGhlIHNvdXJjZSBmaWxlLCBlaXRoZXIgYSBGbG9hdFZhbHVlIG9yIGFuIEludFZhbHVlXG4gKiBkZXBlbmRpbmcgb24gd2hldGhlciBhIEZyYWN0aW9uYWxQYXJ0IG9yIEV4cG9uZW50UGFydCBpcyBlbmNvdW50ZXJlZC5cbiAqXG4gKiBgYGBcbiAqIEludFZhbHVlIDo6IEludGVnZXJQYXJ0IFtsb29rYWhlYWQgIT0ge0RpZ2l0LCBgLmAsIE5hbWVTdGFydH1dXG4gKlxuICogSW50ZWdlclBhcnQgOjpcbiAqICAgLSBOZWdhdGl2ZVNpZ24/IDBcbiAqICAgLSBOZWdhdGl2ZVNpZ24/IE5vblplcm9EaWdpdCBEaWdpdCpcbiAqXG4gKiBOZWdhdGl2ZVNpZ24gOjogLVxuICpcbiAqIE5vblplcm9EaWdpdCA6OiBEaWdpdCBidXQgbm90IGAwYFxuICpcbiAqIEZsb2F0VmFsdWUgOjpcbiAqICAgLSBJbnRlZ2VyUGFydCBGcmFjdGlvbmFsUGFydCBFeHBvbmVudFBhcnQgW2xvb2thaGVhZCAhPSB7RGlnaXQsIGAuYCwgTmFtZVN0YXJ0fV1cbiAqICAgLSBJbnRlZ2VyUGFydCBGcmFjdGlvbmFsUGFydCBbbG9va2FoZWFkICE9IHtEaWdpdCwgYC5gLCBOYW1lU3RhcnR9XVxuICogICAtIEludGVnZXJQYXJ0IEV4cG9uZW50UGFydCBbbG9va2FoZWFkICE9IHtEaWdpdCwgYC5gLCBOYW1lU3RhcnR9XVxuICpcbiAqIEZyYWN0aW9uYWxQYXJ0IDo6IC4gRGlnaXQrXG4gKlxuICogRXhwb25lbnRQYXJ0IDo6IEV4cG9uZW50SW5kaWNhdG9yIFNpZ24/IERpZ2l0K1xuICpcbiAqIEV4cG9uZW50SW5kaWNhdG9yIDo6IG9uZSBvZiBgZWAgYEVgXG4gKlxuICogU2lnbiA6OiBvbmUgb2YgKyAtXG4gKiBgYGBcbiAqL1xuXG5mdW5jdGlvbiByZWFkTnVtYmVyKGxleGVyLCBzdGFydCwgZmlyc3RDb2RlKSB7XG4gIGNvbnN0IGJvZHkgPSBsZXhlci5zb3VyY2UuYm9keTtcbiAgbGV0IHBvc2l0aW9uID0gc3RhcnQ7XG4gIGxldCBjb2RlID0gZmlyc3RDb2RlO1xuICBsZXQgaXNGbG9hdCA9IGZhbHNlOyAvLyBOZWdhdGl2ZVNpZ24gKC0pXG5cbiAgaWYgKGNvZGUgPT09IDB4MDAyZCkge1xuICAgIGNvZGUgPSBib2R5LmNoYXJDb2RlQXQoKytwb3NpdGlvbik7XG4gIH0gLy8gWmVybyAoMClcblxuICBpZiAoY29kZSA9PT0gMHgwMDMwKSB7XG4gICAgY29kZSA9IGJvZHkuY2hhckNvZGVBdCgrK3Bvc2l0aW9uKTtcblxuICAgIGlmIChpc0RpZ2l0KGNvZGUpKSB7XG4gICAgICB0aHJvdyBzeW50YXhFcnJvcihcbiAgICAgICAgbGV4ZXIuc291cmNlLFxuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgYEludmFsaWQgbnVtYmVyLCB1bmV4cGVjdGVkIGRpZ2l0IGFmdGVyIDA6ICR7cHJpbnRDb2RlUG9pbnRBdChcbiAgICAgICAgICBsZXhlcixcbiAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgKX0uYCxcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHBvc2l0aW9uID0gcmVhZERpZ2l0cyhsZXhlciwgcG9zaXRpb24sIGNvZGUpO1xuICAgIGNvZGUgPSBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24pO1xuICB9IC8vIEZ1bGwgc3RvcCAoLilcblxuICBpZiAoY29kZSA9PT0gMHgwMDJlKSB7XG4gICAgaXNGbG9hdCA9IHRydWU7XG4gICAgY29kZSA9IGJvZHkuY2hhckNvZGVBdCgrK3Bvc2l0aW9uKTtcbiAgICBwb3NpdGlvbiA9IHJlYWREaWdpdHMobGV4ZXIsIHBvc2l0aW9uLCBjb2RlKTtcbiAgICBjb2RlID0gYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uKTtcbiAgfSAvLyBFIGVcblxuICBpZiAoY29kZSA9PT0gMHgwMDQ1IHx8IGNvZGUgPT09IDB4MDA2NSkge1xuICAgIGlzRmxvYXQgPSB0cnVlO1xuICAgIGNvZGUgPSBib2R5LmNoYXJDb2RlQXQoKytwb3NpdGlvbik7IC8vICsgLVxuXG4gICAgaWYgKGNvZGUgPT09IDB4MDAyYiB8fCBjb2RlID09PSAweDAwMmQpIHtcbiAgICAgIGNvZGUgPSBib2R5LmNoYXJDb2RlQXQoKytwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgcG9zaXRpb24gPSByZWFkRGlnaXRzKGxleGVyLCBwb3NpdGlvbiwgY29kZSk7XG4gICAgY29kZSA9IGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbik7XG4gIH0gLy8gTnVtYmVycyBjYW5ub3QgYmUgZm9sbG93ZWQgYnkgLiBvciBOYW1lU3RhcnRcblxuICBpZiAoY29kZSA9PT0gMHgwMDJlIHx8IGlzTmFtZVN0YXJ0KGNvZGUpKSB7XG4gICAgdGhyb3cgc3ludGF4RXJyb3IoXG4gICAgICBsZXhlci5zb3VyY2UsXG4gICAgICBwb3NpdGlvbixcbiAgICAgIGBJbnZhbGlkIG51bWJlciwgZXhwZWN0ZWQgZGlnaXQgYnV0IGdvdDogJHtwcmludENvZGVQb2ludEF0KFxuICAgICAgICBsZXhlcixcbiAgICAgICAgcG9zaXRpb24sXG4gICAgICApfS5gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gY3JlYXRlVG9rZW4oXG4gICAgbGV4ZXIsXG4gICAgaXNGbG9hdCA/IFRva2VuS2luZC5GTE9BVCA6IFRva2VuS2luZC5JTlQsXG4gICAgc3RhcnQsXG4gICAgcG9zaXRpb24sXG4gICAgYm9keS5zbGljZShzdGFydCwgcG9zaXRpb24pLFxuICApO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBuZXcgcG9zaXRpb24gaW4gdGhlIHNvdXJjZSBhZnRlciByZWFkaW5nIG9uZSBvciBtb3JlIGRpZ2l0cy5cbiAqL1xuXG5mdW5jdGlvbiByZWFkRGlnaXRzKGxleGVyLCBzdGFydCwgZmlyc3RDb2RlKSB7XG4gIGlmICghaXNEaWdpdChmaXJzdENvZGUpKSB7XG4gICAgdGhyb3cgc3ludGF4RXJyb3IoXG4gICAgICBsZXhlci5zb3VyY2UsXG4gICAgICBzdGFydCxcbiAgICAgIGBJbnZhbGlkIG51bWJlciwgZXhwZWN0ZWQgZGlnaXQgYnV0IGdvdDogJHtwcmludENvZGVQb2ludEF0KFxuICAgICAgICBsZXhlcixcbiAgICAgICAgc3RhcnQsXG4gICAgICApfS5gLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBib2R5ID0gbGV4ZXIuc291cmNlLmJvZHk7XG4gIGxldCBwb3NpdGlvbiA9IHN0YXJ0ICsgMTsgLy8gKzEgdG8gc2tpcCBmaXJzdCBmaXJzdENvZGVcblxuICB3aGlsZSAoaXNEaWdpdChib2R5LmNoYXJDb2RlQXQocG9zaXRpb24pKSkge1xuICAgICsrcG9zaXRpb247XG4gIH1cblxuICByZXR1cm4gcG9zaXRpb247XG59XG4vKipcbiAqIFJlYWRzIGEgc2luZ2xlLXF1b3RlIHN0cmluZyB0b2tlbiBmcm9tIHRoZSBzb3VyY2UgZmlsZS5cbiAqXG4gKiBgYGBcbiAqIFN0cmluZ1ZhbHVlIDo6XG4gKiAgIC0gYFwiXCJgIFtsb29rYWhlYWQgIT0gYFwiYF1cbiAqICAgLSBgXCJgIFN0cmluZ0NoYXJhY3RlcisgYFwiYFxuICpcbiAqIFN0cmluZ0NoYXJhY3RlciA6OlxuICogICAtIFNvdXJjZUNoYXJhY3RlciBidXQgbm90IGBcImAgb3IgYFxcYCBvciBMaW5lVGVybWluYXRvclxuICogICAtIGBcXHVgIEVzY2FwZWRVbmljb2RlXG4gKiAgIC0gYFxcYCBFc2NhcGVkQ2hhcmFjdGVyXG4gKlxuICogRXNjYXBlZFVuaWNvZGUgOjpcbiAqICAgLSBge2AgSGV4RGlnaXQrIGB9YFxuICogICAtIEhleERpZ2l0IEhleERpZ2l0IEhleERpZ2l0IEhleERpZ2l0XG4gKlxuICogRXNjYXBlZENoYXJhY3RlciA6OiBvbmUgb2YgYFwiYCBgXFxgIGAvYCBgYmAgYGZgIGBuYCBgcmAgYHRgXG4gKiBgYGBcbiAqL1xuXG5mdW5jdGlvbiByZWFkU3RyaW5nKGxleGVyLCBzdGFydCkge1xuICBjb25zdCBib2R5ID0gbGV4ZXIuc291cmNlLmJvZHk7XG4gIGNvbnN0IGJvZHlMZW5ndGggPSBib2R5Lmxlbmd0aDtcbiAgbGV0IHBvc2l0aW9uID0gc3RhcnQgKyAxO1xuICBsZXQgY2h1bmtTdGFydCA9IHBvc2l0aW9uO1xuICBsZXQgdmFsdWUgPSAnJztcblxuICB3aGlsZSAocG9zaXRpb24gPCBib2R5TGVuZ3RoKSB7XG4gICAgY29uc3QgY29kZSA9IGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbik7IC8vIENsb3NpbmcgUXVvdGUgKFwiKVxuXG4gICAgaWYgKGNvZGUgPT09IDB4MDAyMikge1xuICAgICAgdmFsdWUgKz0gYm9keS5zbGljZShjaHVua1N0YXJ0LCBwb3NpdGlvbik7XG4gICAgICByZXR1cm4gY3JlYXRlVG9rZW4obGV4ZXIsIFRva2VuS2luZC5TVFJJTkcsIHN0YXJ0LCBwb3NpdGlvbiArIDEsIHZhbHVlKTtcbiAgICB9IC8vIEVzY2FwZSBTZXF1ZW5jZSAoXFwpXG5cbiAgICBpZiAoY29kZSA9PT0gMHgwMDVjKSB7XG4gICAgICB2YWx1ZSArPSBib2R5LnNsaWNlKGNodW5rU3RhcnQsIHBvc2l0aW9uKTtcbiAgICAgIGNvbnN0IGVzY2FwZSA9XG4gICAgICAgIGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDEpID09PSAweDAwNzUgLy8gdVxuICAgICAgICAgID8gYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMikgPT09IDB4MDA3YiAvLyB7XG4gICAgICAgICAgICA/IHJlYWRFc2NhcGVkVW5pY29kZVZhcmlhYmxlV2lkdGgobGV4ZXIsIHBvc2l0aW9uKVxuICAgICAgICAgICAgOiByZWFkRXNjYXBlZFVuaWNvZGVGaXhlZFdpZHRoKGxleGVyLCBwb3NpdGlvbilcbiAgICAgICAgICA6IHJlYWRFc2NhcGVkQ2hhcmFjdGVyKGxleGVyLCBwb3NpdGlvbik7XG4gICAgICB2YWx1ZSArPSBlc2NhcGUudmFsdWU7XG4gICAgICBwb3NpdGlvbiArPSBlc2NhcGUuc2l6ZTtcbiAgICAgIGNodW5rU3RhcnQgPSBwb3NpdGlvbjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8gTGluZVRlcm1pbmF0b3IgKFxcbiB8IFxccilcblxuICAgIGlmIChjb2RlID09PSAweDAwMGEgfHwgY29kZSA9PT0gMHgwMDBkKSB7XG4gICAgICBicmVhaztcbiAgICB9IC8vIFNvdXJjZUNoYXJhY3RlclxuXG4gICAgaWYgKGlzVW5pY29kZVNjYWxhclZhbHVlKGNvZGUpKSB7XG4gICAgICArK3Bvc2l0aW9uO1xuICAgIH0gZWxzZSBpZiAoaXNTdXBwbGVtZW50YXJ5Q29kZVBvaW50KGJvZHksIHBvc2l0aW9uKSkge1xuICAgICAgcG9zaXRpb24gKz0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgc3ludGF4RXJyb3IoXG4gICAgICAgIGxleGVyLnNvdXJjZSxcbiAgICAgICAgcG9zaXRpb24sXG4gICAgICAgIGBJbnZhbGlkIGNoYXJhY3RlciB3aXRoaW4gU3RyaW5nOiAke3ByaW50Q29kZVBvaW50QXQoXG4gICAgICAgICAgbGV4ZXIsXG4gICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICl9LmAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHRocm93IHN5bnRheEVycm9yKGxleGVyLnNvdXJjZSwgcG9zaXRpb24sICdVbnRlcm1pbmF0ZWQgc3RyaW5nLicpO1xufSAvLyBUaGUgc3RyaW5nIHZhbHVlIGFuZCBsZXhlZCBzaXplIG9mIGFuIGVzY2FwZSBzZXF1ZW5jZS5cblxuZnVuY3Rpb24gcmVhZEVzY2FwZWRVbmljb2RlVmFyaWFibGVXaWR0aChsZXhlciwgcG9zaXRpb24pIHtcbiAgY29uc3QgYm9keSA9IGxleGVyLnNvdXJjZS5ib2R5O1xuICBsZXQgcG9pbnQgPSAwO1xuICBsZXQgc2l6ZSA9IDM7IC8vIENhbm5vdCBiZSBsYXJnZXIgdGhhbiAxMiBjaGFycyAoXFx1ezAwMDAwMDAwfSkuXG5cbiAgd2hpbGUgKHNpemUgPCAxMikge1xuICAgIGNvbnN0IGNvZGUgPSBib2R5LmNoYXJDb2RlQXQocG9zaXRpb24gKyBzaXplKyspOyAvLyBDbG9zaW5nIEJyYWNlICh9KVxuXG4gICAgaWYgKGNvZGUgPT09IDB4MDA3ZCkge1xuICAgICAgLy8gTXVzdCBiZSBhdCBsZWFzdCA1IGNoYXJzIChcXHV7MH0pIGFuZCBlbmNvZGUgYSBVbmljb2RlIHNjYWxhciB2YWx1ZS5cbiAgICAgIGlmIChzaXplIDwgNSB8fCAhaXNVbmljb2RlU2NhbGFyVmFsdWUocG9pbnQpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogU3RyaW5nLmZyb21Db2RlUG9pbnQocG9pbnQpLFxuICAgICAgICBzaXplLFxuICAgICAgfTtcbiAgICB9IC8vIEFwcGVuZCB0aGlzIGhleCBkaWdpdCB0byB0aGUgY29kZSBwb2ludC5cblxuICAgIHBvaW50ID0gKHBvaW50IDw8IDQpIHwgcmVhZEhleERpZ2l0KGNvZGUpO1xuXG4gICAgaWYgKHBvaW50IDwgMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdGhyb3cgc3ludGF4RXJyb3IoXG4gICAgbGV4ZXIuc291cmNlLFxuICAgIHBvc2l0aW9uLFxuICAgIGBJbnZhbGlkIFVuaWNvZGUgZXNjYXBlIHNlcXVlbmNlOiBcIiR7Ym9keS5zbGljZShcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24gKyBzaXplLFxuICAgICl9XCIuYCxcbiAgKTtcbn1cblxuZnVuY3Rpb24gcmVhZEVzY2FwZWRVbmljb2RlRml4ZWRXaWR0aChsZXhlciwgcG9zaXRpb24pIHtcbiAgY29uc3QgYm9keSA9IGxleGVyLnNvdXJjZS5ib2R5O1xuICBjb25zdCBjb2RlID0gcmVhZDE2Qml0SGV4Q29kZShib2R5LCBwb3NpdGlvbiArIDIpO1xuXG4gIGlmIChpc1VuaWNvZGVTY2FsYXJWYWx1ZShjb2RlKSkge1xuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogU3RyaW5nLmZyb21Db2RlUG9pbnQoY29kZSksXG4gICAgICBzaXplOiA2LFxuICAgIH07XG4gIH0gLy8gR3JhcGhRTCBhbGxvd3MgSlNPTi1zdHlsZSBzdXJyb2dhdGUgcGFpciBlc2NhcGUgc2VxdWVuY2VzLCBidXQgb25seSB3aGVuXG4gIC8vIGEgdmFsaWQgcGFpciBpcyBmb3JtZWQuXG5cbiAgaWYgKGlzTGVhZGluZ1N1cnJvZ2F0ZShjb2RlKSkge1xuICAgIC8vIFxcdVxuICAgIGlmIChcbiAgICAgIGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDYpID09PSAweDAwNWMgJiZcbiAgICAgIGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDcpID09PSAweDAwNzVcbiAgICApIHtcbiAgICAgIGNvbnN0IHRyYWlsaW5nQ29kZSA9IHJlYWQxNkJpdEhleENvZGUoYm9keSwgcG9zaXRpb24gKyA4KTtcblxuICAgICAgaWYgKGlzVHJhaWxpbmdTdXJyb2dhdGUodHJhaWxpbmdDb2RlKSkge1xuICAgICAgICAvLyBKYXZhU2NyaXB0IGRlZmluZXMgc3RyaW5ncyBhcyBhIHNlcXVlbmNlIG9mIFVURi0xNiBjb2RlIHVuaXRzIGFuZFxuICAgICAgICAvLyBlbmNvZGVzIFVuaWNvZGUgY29kZSBwb2ludHMgYWJvdmUgVStGRkZGIHVzaW5nIGEgc3Vycm9nYXRlIHBhaXIgb2ZcbiAgICAgICAgLy8gY29kZSB1bml0cy4gU2luY2UgdGhpcyBpcyBhIHN1cnJvZ2F0ZSBwYWlyIGVzY2FwZSBzZXF1ZW5jZSwganVzdFxuICAgICAgICAvLyBpbmNsdWRlIGJvdGggY29kZXMgaW50byB0aGUgSmF2YVNjcmlwdCBzdHJpbmcgdmFsdWUuIEhhZCBKYXZhU2NyaXB0XG4gICAgICAgIC8vIG5vdCBiZWVuIGludGVybmFsbHkgYmFzZWQgb24gVVRGLTE2LCB0aGVuIHRoaXMgc3Vycm9nYXRlIHBhaXIgd291bGRcbiAgICAgICAgLy8gYmUgZGVjb2RlZCB0byByZXRyaWV2ZSB0aGUgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50LlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZhbHVlOiBTdHJpbmcuZnJvbUNvZGVQb2ludChjb2RlLCB0cmFpbGluZ0NvZGUpLFxuICAgICAgICAgIHNpemU6IDEyLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRocm93IHN5bnRheEVycm9yKFxuICAgIGxleGVyLnNvdXJjZSxcbiAgICBwb3NpdGlvbixcbiAgICBgSW52YWxpZCBVbmljb2RlIGVzY2FwZSBzZXF1ZW5jZTogXCIke2JvZHkuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgNil9XCIuYCxcbiAgKTtcbn1cbi8qKlxuICogUmVhZHMgZm91ciBoZXhhZGVjaW1hbCBjaGFyYWN0ZXJzIGFuZCByZXR1cm5zIHRoZSBwb3NpdGl2ZSBpbnRlZ2VyIHRoYXQgMTZiaXRcbiAqIGhleGFkZWNpbWFsIHN0cmluZyByZXByZXNlbnRzLiBGb3IgZXhhbXBsZSwgXCIwMDBmXCIgd2lsbCByZXR1cm4gMTUsIGFuZCBcImRlYWRcIlxuICogd2lsbCByZXR1cm4gNTcwMDUuXG4gKlxuICogUmV0dXJucyBhIG5lZ2F0aXZlIG51bWJlciBpZiBhbnkgY2hhciB3YXMgbm90IGEgdmFsaWQgaGV4YWRlY2ltYWwgZGlnaXQuXG4gKi9cblxuZnVuY3Rpb24gcmVhZDE2Qml0SGV4Q29kZShib2R5LCBwb3NpdGlvbikge1xuICAvLyByZWFkSGV4RGlnaXQoKSByZXR1cm5zIC0xIG9uIGVycm9yLiBPUmluZyBhIG5lZ2F0aXZlIHZhbHVlIHdpdGggYW55IG90aGVyXG4gIC8vIHZhbHVlIGFsd2F5cyBwcm9kdWNlcyBhIG5lZ2F0aXZlIHZhbHVlLlxuICByZXR1cm4gKFxuICAgIChyZWFkSGV4RGlnaXQoYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uKSkgPDwgMTIpIHxcbiAgICAocmVhZEhleERpZ2l0KGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDEpKSA8PCA4KSB8XG4gICAgKHJlYWRIZXhEaWdpdChib2R5LmNoYXJDb2RlQXQocG9zaXRpb24gKyAyKSkgPDwgNCkgfFxuICAgIHJlYWRIZXhEaWdpdChib2R5LmNoYXJDb2RlQXQocG9zaXRpb24gKyAzKSlcbiAgKTtcbn1cbi8qKlxuICogUmVhZHMgYSBoZXhhZGVjaW1hbCBjaGFyYWN0ZXIgYW5kIHJldHVybnMgaXRzIHBvc2l0aXZlIGludGVnZXIgdmFsdWUgKDAtMTUpLlxuICpcbiAqICcwJyBiZWNvbWVzIDAsICc5JyBiZWNvbWVzIDlcbiAqICdBJyBiZWNvbWVzIDEwLCAnRicgYmVjb21lcyAxNVxuICogJ2EnIGJlY29tZXMgMTAsICdmJyBiZWNvbWVzIDE1XG4gKlxuICogUmV0dXJucyAtMSBpZiB0aGUgcHJvdmlkZWQgY2hhcmFjdGVyIGNvZGUgd2FzIG5vdCBhIHZhbGlkIGhleGFkZWNpbWFsIGRpZ2l0LlxuICpcbiAqIEhleERpZ2l0IDo6IG9uZSBvZlxuICogICAtIGAwYCBgMWAgYDJgIGAzYCBgNGAgYDVgIGA2YCBgN2AgYDhgIGA5YFxuICogICAtIGBBYCBgQmAgYENgIGBEYCBgRWAgYEZgXG4gKiAgIC0gYGFgIGBiYCBgY2AgYGRgIGBlYCBgZmBcbiAqL1xuXG5mdW5jdGlvbiByZWFkSGV4RGlnaXQoY29kZSkge1xuICByZXR1cm4gY29kZSA+PSAweDAwMzAgJiYgY29kZSA8PSAweDAwMzkgLy8gMC05XG4gICAgPyBjb2RlIC0gMHgwMDMwXG4gICAgOiBjb2RlID49IDB4MDA0MSAmJiBjb2RlIDw9IDB4MDA0NiAvLyBBLUZcbiAgICA/IGNvZGUgLSAweDAwMzdcbiAgICA6IGNvZGUgPj0gMHgwMDYxICYmIGNvZGUgPD0gMHgwMDY2IC8vIGEtZlxuICAgID8gY29kZSAtIDB4MDA1N1xuICAgIDogLTE7XG59XG4vKipcbiAqIHwgRXNjYXBlZCBDaGFyYWN0ZXIgfCBDb2RlIFBvaW50IHwgQ2hhcmFjdGVyIE5hbWUgICAgICAgICAgICAgICB8XG4gKiB8IC0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfFxuICogfCBgXCJgICAgICAgICAgICAgICAgfCBVKzAwMjIgICAgIHwgZG91YmxlIHF1b3RlICAgICAgICAgICAgICAgICB8XG4gKiB8IGBcXGAgICAgICAgICAgICAgICB8IFUrMDA1QyAgICAgfCByZXZlcnNlIHNvbGlkdXMgKGJhY2sgc2xhc2gpIHxcbiAqIHwgYC9gICAgICAgICAgICAgICAgfCBVKzAwMkYgICAgIHwgc29saWR1cyAoZm9yd2FyZCBzbGFzaCkgICAgICB8XG4gKiB8IGBiYCAgICAgICAgICAgICAgIHwgVSswMDA4ICAgICB8IGJhY2tzcGFjZSAgICAgICAgICAgICAgICAgICAgfFxuICogfCBgZmAgICAgICAgICAgICAgICB8IFUrMDAwQyAgICAgfCBmb3JtIGZlZWQgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYG5gICAgICAgICAgICAgICAgfCBVKzAwMEEgICAgIHwgbGluZSBmZWVkIChuZXcgbGluZSkgICAgICAgICB8XG4gKiB8IGByYCAgICAgICAgICAgICAgIHwgVSswMDBEICAgICB8IGNhcnJpYWdlIHJldHVybiAgICAgICAgICAgICAgfFxuICogfCBgdGAgICAgICAgICAgICAgICB8IFUrMDAwOSAgICAgfCBob3Jpem9udGFsIHRhYiAgICAgICAgICAgICAgIHxcbiAqL1xuXG5mdW5jdGlvbiByZWFkRXNjYXBlZENoYXJhY3RlcihsZXhlciwgcG9zaXRpb24pIHtcbiAgY29uc3QgYm9keSA9IGxleGVyLnNvdXJjZS5ib2R5O1xuICBjb25zdCBjb2RlID0gYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMSk7XG5cbiAgc3dpdGNoIChjb2RlKSB7XG4gICAgY2FzZSAweDAwMjI6XG4gICAgICAvLyBcIlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6ICdcXHUwMDIyJyxcbiAgICAgICAgc2l6ZTogMixcbiAgICAgIH07XG5cbiAgICBjYXNlIDB4MDA1YzpcbiAgICAgIC8vIFxcXG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogJ1xcdTAwNWMnLFxuICAgICAgICBzaXplOiAyLFxuICAgICAgfTtcblxuICAgIGNhc2UgMHgwMDJmOlxuICAgICAgLy8gL1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6ICdcXHUwMDJmJyxcbiAgICAgICAgc2l6ZTogMixcbiAgICAgIH07XG5cbiAgICBjYXNlIDB4MDA2MjpcbiAgICAgIC8vIGJcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiAnXFx1MDAwOCcsXG4gICAgICAgIHNpemU6IDIsXG4gICAgICB9O1xuXG4gICAgY2FzZSAweDAwNjY6XG4gICAgICAvLyBmXG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogJ1xcdTAwMGMnLFxuICAgICAgICBzaXplOiAyLFxuICAgICAgfTtcblxuICAgIGNhc2UgMHgwMDZlOlxuICAgICAgLy8gblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6ICdcXHUwMDBhJyxcbiAgICAgICAgc2l6ZTogMixcbiAgICAgIH07XG5cbiAgICBjYXNlIDB4MDA3MjpcbiAgICAgIC8vIHJcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiAnXFx1MDAwZCcsXG4gICAgICAgIHNpemU6IDIsXG4gICAgICB9O1xuXG4gICAgY2FzZSAweDAwNzQ6XG4gICAgICAvLyB0XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogJ1xcdTAwMDknLFxuICAgICAgICBzaXplOiAyLFxuICAgICAgfTtcbiAgfVxuXG4gIHRocm93IHN5bnRheEVycm9yKFxuICAgIGxleGVyLnNvdXJjZSxcbiAgICBwb3NpdGlvbixcbiAgICBgSW52YWxpZCBjaGFyYWN0ZXIgZXNjYXBlIHNlcXVlbmNlOiBcIiR7Ym9keS5zbGljZShcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24gKyAyLFxuICAgICl9XCIuYCxcbiAgKTtcbn1cbi8qKlxuICogUmVhZHMgYSBibG9jayBzdHJpbmcgdG9rZW4gZnJvbSB0aGUgc291cmNlIGZpbGUuXG4gKlxuICogYGBgXG4gKiBTdHJpbmdWYWx1ZSA6OlxuICogICAtIGBcIlwiXCJgIEJsb2NrU3RyaW5nQ2hhcmFjdGVyKiBgXCJcIlwiYFxuICpcbiAqIEJsb2NrU3RyaW5nQ2hhcmFjdGVyIDo6XG4gKiAgIC0gU291cmNlQ2hhcmFjdGVyIGJ1dCBub3QgYFwiXCJcImAgb3IgYFxcXCJcIlwiYFxuICogICAtIGBcXFwiXCJcImBcbiAqIGBgYFxuICovXG5cbmZ1bmN0aW9uIHJlYWRCbG9ja1N0cmluZyhsZXhlciwgc3RhcnQpIHtcbiAgY29uc3QgYm9keSA9IGxleGVyLnNvdXJjZS5ib2R5O1xuICBjb25zdCBib2R5TGVuZ3RoID0gYm9keS5sZW5ndGg7XG4gIGxldCBsaW5lU3RhcnQgPSBsZXhlci5saW5lU3RhcnQ7XG4gIGxldCBwb3NpdGlvbiA9IHN0YXJ0ICsgMztcbiAgbGV0IGNodW5rU3RhcnQgPSBwb3NpdGlvbjtcbiAgbGV0IGN1cnJlbnRMaW5lID0gJyc7XG4gIGNvbnN0IGJsb2NrTGluZXMgPSBbXTtcblxuICB3aGlsZSAocG9zaXRpb24gPCBib2R5TGVuZ3RoKSB7XG4gICAgY29uc3QgY29kZSA9IGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbik7IC8vIENsb3NpbmcgVHJpcGxlLVF1b3RlIChcIlwiXCIpXG5cbiAgICBpZiAoXG4gICAgICBjb2RlID09PSAweDAwMjIgJiZcbiAgICAgIGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDEpID09PSAweDAwMjIgJiZcbiAgICAgIGJvZHkuY2hhckNvZGVBdChwb3NpdGlvbiArIDIpID09PSAweDAwMjJcbiAgICApIHtcbiAgICAgIGN1cnJlbnRMaW5lICs9IGJvZHkuc2xpY2UoY2h1bmtTdGFydCwgcG9zaXRpb24pO1xuICAgICAgYmxvY2tMaW5lcy5wdXNoKGN1cnJlbnRMaW5lKTtcbiAgICAgIGNvbnN0IHRva2VuID0gY3JlYXRlVG9rZW4oXG4gICAgICAgIGxleGVyLFxuICAgICAgICBUb2tlbktpbmQuQkxPQ0tfU1RSSU5HLFxuICAgICAgICBzdGFydCxcbiAgICAgICAgcG9zaXRpb24gKyAzLCAvLyBSZXR1cm4gYSBzdHJpbmcgb2YgdGhlIGxpbmVzIGpvaW5lZCB3aXRoIFUrMDAwQS5cbiAgICAgICAgZGVkZW50QmxvY2tTdHJpbmdMaW5lcyhibG9ja0xpbmVzKS5qb2luKCdcXG4nKSxcbiAgICAgICk7XG4gICAgICBsZXhlci5saW5lICs9IGJsb2NrTGluZXMubGVuZ3RoIC0gMTtcbiAgICAgIGxleGVyLmxpbmVTdGFydCA9IGxpbmVTdGFydDtcbiAgICAgIHJldHVybiB0b2tlbjtcbiAgICB9IC8vIEVzY2FwZWQgVHJpcGxlLVF1b3RlIChcXFwiXCJcIilcblxuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IDB4MDA1YyAmJlxuICAgICAgYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMSkgPT09IDB4MDAyMiAmJlxuICAgICAgYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMikgPT09IDB4MDAyMiAmJlxuICAgICAgYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMykgPT09IDB4MDAyMlxuICAgICkge1xuICAgICAgY3VycmVudExpbmUgKz0gYm9keS5zbGljZShjaHVua1N0YXJ0LCBwb3NpdGlvbik7XG4gICAgICBjaHVua1N0YXJ0ID0gcG9zaXRpb24gKyAxOyAvLyBza2lwIG9ubHkgc2xhc2hcblxuICAgICAgcG9zaXRpb24gKz0gNDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8gTGluZVRlcm1pbmF0b3JcblxuICAgIGlmIChjb2RlID09PSAweDAwMGEgfHwgY29kZSA9PT0gMHgwMDBkKSB7XG4gICAgICBjdXJyZW50TGluZSArPSBib2R5LnNsaWNlKGNodW5rU3RhcnQsIHBvc2l0aW9uKTtcbiAgICAgIGJsb2NrTGluZXMucHVzaChjdXJyZW50TGluZSk7XG5cbiAgICAgIGlmIChjb2RlID09PSAweDAwMGQgJiYgYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMSkgPT09IDB4MDAwYSkge1xuICAgICAgICBwb3NpdGlvbiArPSAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgKytwb3NpdGlvbjtcbiAgICAgIH1cblxuICAgICAgY3VycmVudExpbmUgPSAnJztcbiAgICAgIGNodW5rU3RhcnQgPSBwb3NpdGlvbjtcbiAgICAgIGxpbmVTdGFydCA9IHBvc2l0aW9uO1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyBTb3VyY2VDaGFyYWN0ZXJcblxuICAgIGlmIChpc1VuaWNvZGVTY2FsYXJWYWx1ZShjb2RlKSkge1xuICAgICAgKytwb3NpdGlvbjtcbiAgICB9IGVsc2UgaWYgKGlzU3VwcGxlbWVudGFyeUNvZGVQb2ludChib2R5LCBwb3NpdGlvbikpIHtcbiAgICAgIHBvc2l0aW9uICs9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IHN5bnRheEVycm9yKFxuICAgICAgICBsZXhlci5zb3VyY2UsXG4gICAgICAgIHBvc2l0aW9uLFxuICAgICAgICBgSW52YWxpZCBjaGFyYWN0ZXIgd2l0aGluIFN0cmluZzogJHtwcmludENvZGVQb2ludEF0KFxuICAgICAgICAgIGxleGVyLFxuICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICApfS5gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBzeW50YXhFcnJvcihsZXhlci5zb3VyY2UsIHBvc2l0aW9uLCAnVW50ZXJtaW5hdGVkIHN0cmluZy4nKTtcbn1cbi8qKlxuICogUmVhZHMgYW4gYWxwaGFudW1lcmljICsgdW5kZXJzY29yZSBuYW1lIGZyb20gdGhlIHNvdXJjZS5cbiAqXG4gKiBgYGBcbiAqIE5hbWUgOjpcbiAqICAgLSBOYW1lU3RhcnQgTmFtZUNvbnRpbnVlKiBbbG9va2FoZWFkICE9IE5hbWVDb250aW51ZV1cbiAqIGBgYFxuICovXG5cbmZ1bmN0aW9uIHJlYWROYW1lKGxleGVyLCBzdGFydCkge1xuICBjb25zdCBib2R5ID0gbGV4ZXIuc291cmNlLmJvZHk7XG4gIGNvbnN0IGJvZHlMZW5ndGggPSBib2R5Lmxlbmd0aDtcbiAgbGV0IHBvc2l0aW9uID0gc3RhcnQgKyAxO1xuXG4gIHdoaWxlIChwb3NpdGlvbiA8IGJvZHlMZW5ndGgpIHtcbiAgICBjb25zdCBjb2RlID0gYm9keS5jaGFyQ29kZUF0KHBvc2l0aW9uKTtcblxuICAgIGlmIChpc05hbWVDb250aW51ZShjb2RlKSkge1xuICAgICAgKytwb3NpdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZVRva2VuKFxuICAgIGxleGVyLFxuICAgIFRva2VuS2luZC5OQU1FLFxuICAgIHN0YXJ0LFxuICAgIHBvc2l0aW9uLFxuICAgIGJvZHkuc2xpY2Uoc3RhcnQsIHBvc2l0aW9uKSxcbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/language/lexer.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/language/location.mjs":
/*!****************************************************!*\
  !*** ./node_modules/graphql/language/location.mjs ***!
  \****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getLocation\": function() { return /* binding */ getLocation; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"./node_modules/graphql/jsutils/invariant.mjs\");\n\nconst LineRegExp = /\\r\\n|[\\n\\r]/g;\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nfunction getLocation(source, position) {\n  let lastLineStart = 0;\n  let line = 1;\n\n  for (const match of source.body.matchAll(LineRegExp)) {\n    typeof match.index === 'number' || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__.invariant)(false);\n\n    if (match.index >= position) {\n      break;\n    }\n\n    lastLineStart = match.index + match[0].length;\n    line += 1;\n  }\n\n  return {\n    line,\n    column: position + 1 - lastLineStart,\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9sb2NhdGlvbi5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBcUQ7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSx1Q0FBdUMsaUVBQVM7O0FBRWhEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9sb2NhdGlvbi5tanM/MmE4OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tICcuLi9qc3V0aWxzL2ludmFyaWFudC5tanMnO1xuY29uc3QgTGluZVJlZ0V4cCA9IC9cXHJcXG58W1xcblxccl0vZztcbi8qKlxuICogUmVwcmVzZW50cyBhIGxvY2F0aW9uIGluIGEgU291cmNlLlxuICovXG5cbi8qKlxuICogVGFrZXMgYSBTb3VyY2UgYW5kIGEgVVRGLTggY2hhcmFjdGVyIG9mZnNldCwgYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmdcbiAqIGxpbmUgYW5kIGNvbHVtbiBhcyBhIFNvdXJjZUxvY2F0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9jYXRpb24oc291cmNlLCBwb3NpdGlvbikge1xuICBsZXQgbGFzdExpbmVTdGFydCA9IDA7XG4gIGxldCBsaW5lID0gMTtcblxuICBmb3IgKGNvbnN0IG1hdGNoIG9mIHNvdXJjZS5ib2R5Lm1hdGNoQWxsKExpbmVSZWdFeHApKSB7XG4gICAgdHlwZW9mIG1hdGNoLmluZGV4ID09PSAnbnVtYmVyJyB8fCBpbnZhcmlhbnQoZmFsc2UpO1xuXG4gICAgaWYgKG1hdGNoLmluZGV4ID49IHBvc2l0aW9uKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBsYXN0TGluZVN0YXJ0ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gICAgbGluZSArPSAxO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsaW5lLFxuICAgIGNvbHVtbjogcG9zaXRpb24gKyAxIC0gbGFzdExpbmVTdGFydCxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/language/location.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/language/parser.mjs":
/*!**************************************************!*\
  !*** ./node_modules/graphql/language/parser.mjs ***!
  \**************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Parser\": function() { return /* binding */ Parser; },\n/* harmony export */   \"parse\": function() { return /* binding */ parse; },\n/* harmony export */   \"parseConstValue\": function() { return /* binding */ parseConstValue; },\n/* harmony export */   \"parseType\": function() { return /* binding */ parseType; },\n/* harmony export */   \"parseValue\": function() { return /* binding */ parseValue; }\n/* harmony export */ });\n/* harmony import */ var _error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../error/syntaxError.mjs */ \"./node_modules/graphql/error/syntaxError.mjs\");\n/* harmony import */ var _ast_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ast.mjs */ \"./node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./directiveLocation.mjs */ \"./node_modules/graphql/language/directiveLocation.mjs\");\n/* harmony import */ var _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _lexer_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lexer.mjs */ \"./node_modules/graphql/language/lexer.mjs\");\n/* harmony import */ var _source_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./source.mjs */ \"./node_modules/graphql/language/source.mjs\");\n/* harmony import */ var _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tokenKind.mjs */ \"./node_modules/graphql/language/tokenKind.mjs\");\n\n\n\n\n\n\n\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nfunction parse(source, options) {\n  const parser = new Parser(source, options);\n  return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nfunction parseValue(source, options) {\n  const parser = new Parser(source, options);\n  parser.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.SOF);\n  const value = parser.parseValueLiteral(false);\n  parser.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.EOF);\n  return value;\n}\n/**\n * Similar to parseValue(), but raises a parse error if it encounters a\n * variable. The return type will be a constant value.\n */\n\nfunction parseConstValue(source, options) {\n  const parser = new Parser(source, options);\n  parser.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.SOF);\n  const value = parser.parseConstValueLiteral();\n  parser.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.EOF);\n  return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nfunction parseType(source, options) {\n  const parser = new Parser(source, options);\n  parser.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.SOF);\n  const type = parser.parseTypeReference();\n  parser.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.EOF);\n  return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nclass Parser {\n  constructor(source, options) {\n    const sourceObj = (0,_source_mjs__WEBPACK_IMPORTED_MODULE_1__.isSource)(source) ? source : new _source_mjs__WEBPACK_IMPORTED_MODULE_1__.Source(source);\n    this._lexer = new _lexer_mjs__WEBPACK_IMPORTED_MODULE_2__.Lexer(sourceObj);\n    this._options = options;\n  }\n  /**\n   * Converts a name lex token into a name parse node.\n   */\n\n  parseName() {\n    const token = this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.NAME);\n    return this.node(token, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.NAME,\n      value: token.value,\n    });\n  } // Implements the parsing rules in the Document section.\n\n  /**\n   * Document : Definition+\n   */\n\n  parseDocument() {\n    return this.node(this._lexer.token, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.DOCUMENT,\n      definitions: this.many(\n        _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.SOF,\n        this.parseDefinition,\n        _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.EOF,\n      ),\n    });\n  }\n  /**\n   * Definition :\n   *   - ExecutableDefinition\n   *   - TypeSystemDefinition\n   *   - TypeSystemExtension\n   *\n   * ExecutableDefinition :\n   *   - OperationDefinition\n   *   - FragmentDefinition\n   *\n   * TypeSystemDefinition :\n   *   - SchemaDefinition\n   *   - TypeDefinition\n   *   - DirectiveDefinition\n   *\n   * TypeDefinition :\n   *   - ScalarTypeDefinition\n   *   - ObjectTypeDefinition\n   *   - InterfaceTypeDefinition\n   *   - UnionTypeDefinition\n   *   - EnumTypeDefinition\n   *   - InputObjectTypeDefinition\n   */\n\n  parseDefinition() {\n    if (this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_L)) {\n      return this.parseOperationDefinition();\n    } // Many definitions begin with a description and require a lookahead.\n\n    const hasDescription = this.peekDescription();\n    const keywordToken = hasDescription\n      ? this._lexer.lookahead()\n      : this._lexer.token;\n\n    if (keywordToken.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.NAME) {\n      switch (keywordToken.value) {\n        case 'schema':\n          return this.parseSchemaDefinition();\n\n        case 'scalar':\n          return this.parseScalarTypeDefinition();\n\n        case 'type':\n          return this.parseObjectTypeDefinition();\n\n        case 'interface':\n          return this.parseInterfaceTypeDefinition();\n\n        case 'union':\n          return this.parseUnionTypeDefinition();\n\n        case 'enum':\n          return this.parseEnumTypeDefinition();\n\n        case 'input':\n          return this.parseInputObjectTypeDefinition();\n\n        case 'directive':\n          return this.parseDirectiveDefinition();\n      }\n\n      if (hasDescription) {\n        throw (0,_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_4__.syntaxError)(\n          this._lexer.source,\n          this._lexer.token.start,\n          'Unexpected description, descriptions are supported only on type definitions.',\n        );\n      }\n\n      switch (keywordToken.value) {\n        case 'query':\n        case 'mutation':\n        case 'subscription':\n          return this.parseOperationDefinition();\n\n        case 'fragment':\n          return this.parseFragmentDefinition();\n\n        case 'extend':\n          return this.parseTypeSystemExtension();\n      }\n    }\n\n    throw this.unexpected(keywordToken);\n  } // Implements the parsing rules in the Operations section.\n\n  /**\n   * OperationDefinition :\n   *  - SelectionSet\n   *  - OperationType Name? VariableDefinitions? Directives? SelectionSet\n   */\n\n  parseOperationDefinition() {\n    const start = this._lexer.token;\n\n    if (this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_L)) {\n      return this.node(start, {\n        kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.OPERATION_DEFINITION,\n        operation: _ast_mjs__WEBPACK_IMPORTED_MODULE_5__.OperationTypeNode.QUERY,\n        name: undefined,\n        variableDefinitions: [],\n        directives: [],\n        selectionSet: this.parseSelectionSet(),\n      });\n    }\n\n    const operation = this.parseOperationType();\n    let name;\n\n    if (this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.NAME)) {\n      name = this.parseName();\n    }\n\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.OPERATION_DEFINITION,\n      operation,\n      name,\n      variableDefinitions: this.parseVariableDefinitions(),\n      directives: this.parseDirectives(false),\n      selectionSet: this.parseSelectionSet(),\n    });\n  }\n  /**\n   * OperationType : one of query mutation subscription\n   */\n\n  parseOperationType() {\n    const operationToken = this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.NAME);\n\n    switch (operationToken.value) {\n      case 'query':\n        return _ast_mjs__WEBPACK_IMPORTED_MODULE_5__.OperationTypeNode.QUERY;\n\n      case 'mutation':\n        return _ast_mjs__WEBPACK_IMPORTED_MODULE_5__.OperationTypeNode.MUTATION;\n\n      case 'subscription':\n        return _ast_mjs__WEBPACK_IMPORTED_MODULE_5__.OperationTypeNode.SUBSCRIPTION;\n    }\n\n    throw this.unexpected(operationToken);\n  }\n  /**\n   * VariableDefinitions : ( VariableDefinition+ )\n   */\n\n  parseVariableDefinitions() {\n    return this.optionalMany(\n      _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.PAREN_L,\n      this.parseVariableDefinition,\n      _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.PAREN_R,\n    );\n  }\n  /**\n   * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n   */\n\n  parseVariableDefinition() {\n    return this.node(this._lexer.token, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.VARIABLE_DEFINITION,\n      variable: this.parseVariable(),\n      type: (this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.COLON), this.parseTypeReference()),\n      defaultValue: this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.EQUALS)\n        ? this.parseConstValueLiteral()\n        : undefined,\n      directives: this.parseConstDirectives(),\n    });\n  }\n  /**\n   * Variable : $ Name\n   */\n\n  parseVariable() {\n    const start = this._lexer.token;\n    this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.DOLLAR);\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.VARIABLE,\n      name: this.parseName(),\n    });\n  }\n  /**\n   * ```\n   * SelectionSet : { Selection+ }\n   * ```\n   */\n\n  parseSelectionSet() {\n    return this.node(this._lexer.token, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.SELECTION_SET,\n      selections: this.many(\n        _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_L,\n        this.parseSelection,\n        _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_R,\n      ),\n    });\n  }\n  /**\n   * Selection :\n   *   - Field\n   *   - FragmentSpread\n   *   - InlineFragment\n   */\n\n  parseSelection() {\n    return this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.SPREAD)\n      ? this.parseFragment()\n      : this.parseField();\n  }\n  /**\n   * Field : Alias? Name Arguments? Directives? SelectionSet?\n   *\n   * Alias : Name :\n   */\n\n  parseField() {\n    const start = this._lexer.token;\n    const nameOrAlias = this.parseName();\n    let alias;\n    let name;\n\n    if (this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.COLON)) {\n      alias = nameOrAlias;\n      name = this.parseName();\n    } else {\n      name = nameOrAlias;\n    }\n\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.FIELD,\n      alias,\n      name,\n      arguments: this.parseArguments(false),\n      directives: this.parseDirectives(false),\n      selectionSet: this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_L)\n        ? this.parseSelectionSet()\n        : undefined,\n    });\n  }\n  /**\n   * Arguments[Const] : ( Argument[?Const]+ )\n   */\n\n  parseArguments(isConst) {\n    const item = isConst ? this.parseConstArgument : this.parseArgument;\n    return this.optionalMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.PAREN_L, item, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.PAREN_R);\n  }\n  /**\n   * Argument[Const] : Name : Value[?Const]\n   */\n\n  parseArgument(isConst = false) {\n    const start = this._lexer.token;\n    const name = this.parseName();\n    this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.COLON);\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.ARGUMENT,\n      name,\n      value: this.parseValueLiteral(isConst),\n    });\n  }\n\n  parseConstArgument() {\n    return this.parseArgument(true);\n  } // Implements the parsing rules in the Fragments section.\n\n  /**\n   * Corresponds to both FragmentSpread and InlineFragment in the spec.\n   *\n   * FragmentSpread : ... FragmentName Directives?\n   *\n   * InlineFragment : ... TypeCondition? Directives? SelectionSet\n   */\n\n  parseFragment() {\n    const start = this._lexer.token;\n    this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.SPREAD);\n    const hasTypeCondition = this.expectOptionalKeyword('on');\n\n    if (!hasTypeCondition && this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.NAME)) {\n      return this.node(start, {\n        kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.FRAGMENT_SPREAD,\n        name: this.parseFragmentName(),\n        directives: this.parseDirectives(false),\n      });\n    }\n\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.INLINE_FRAGMENT,\n      typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n      directives: this.parseDirectives(false),\n      selectionSet: this.parseSelectionSet(),\n    });\n  }\n  /**\n   * FragmentDefinition :\n   *   - fragment FragmentName on TypeCondition Directives? SelectionSet\n   *\n   * TypeCondition : NamedType\n   */\n\n  parseFragmentDefinition() {\n    var _this$_options;\n\n    const start = this._lexer.token;\n    this.expectKeyword('fragment'); // Legacy support for defining variables within fragments changes\n    // the grammar of FragmentDefinition:\n    //   - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n    if (\n      ((_this$_options = this._options) === null || _this$_options === void 0\n        ? void 0\n        : _this$_options.allowLegacyFragmentVariables) === true\n    ) {\n      return this.node(start, {\n        kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.FRAGMENT_DEFINITION,\n        name: this.parseFragmentName(),\n        variableDefinitions: this.parseVariableDefinitions(),\n        typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n        directives: this.parseDirectives(false),\n        selectionSet: this.parseSelectionSet(),\n      });\n    }\n\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.FRAGMENT_DEFINITION,\n      name: this.parseFragmentName(),\n      typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n      directives: this.parseDirectives(false),\n      selectionSet: this.parseSelectionSet(),\n    });\n  }\n  /**\n   * FragmentName : Name but not `on`\n   */\n\n  parseFragmentName() {\n    if (this._lexer.token.value === 'on') {\n      throw this.unexpected();\n    }\n\n    return this.parseName();\n  } // Implements the parsing rules in the Values section.\n\n  /**\n   * Value[Const] :\n   *   - [~Const] Variable\n   *   - IntValue\n   *   - FloatValue\n   *   - StringValue\n   *   - BooleanValue\n   *   - NullValue\n   *   - EnumValue\n   *   - ListValue[?Const]\n   *   - ObjectValue[?Const]\n   *\n   * BooleanValue : one of `true` `false`\n   *\n   * NullValue : `null`\n   *\n   * EnumValue : Name but not `true`, `false` or `null`\n   */\n\n  parseValueLiteral(isConst) {\n    const token = this._lexer.token;\n\n    switch (token.kind) {\n      case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACKET_L:\n        return this.parseList(isConst);\n\n      case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_L:\n        return this.parseObject(isConst);\n\n      case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.INT:\n        this._lexer.advance();\n\n        return this.node(token, {\n          kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.INT,\n          value: token.value,\n        });\n\n      case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.FLOAT:\n        this._lexer.advance();\n\n        return this.node(token, {\n          kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.FLOAT,\n          value: token.value,\n        });\n\n      case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.STRING:\n      case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BLOCK_STRING:\n        return this.parseStringLiteral();\n\n      case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.NAME:\n        this._lexer.advance();\n\n        switch (token.value) {\n          case 'true':\n            return this.node(token, {\n              kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.BOOLEAN,\n              value: true,\n            });\n\n          case 'false':\n            return this.node(token, {\n              kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.BOOLEAN,\n              value: false,\n            });\n\n          case 'null':\n            return this.node(token, {\n              kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.NULL,\n            });\n\n          default:\n            return this.node(token, {\n              kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.ENUM,\n              value: token.value,\n            });\n        }\n\n      case _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.DOLLAR:\n        if (isConst) {\n          this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.DOLLAR);\n\n          if (this._lexer.token.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.NAME) {\n            const varName = this._lexer.token.value;\n            throw (0,_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_4__.syntaxError)(\n              this._lexer.source,\n              token.start,\n              `Unexpected variable \"$${varName}\" in constant value.`,\n            );\n          } else {\n            throw this.unexpected(token);\n          }\n        }\n\n        return this.parseVariable();\n\n      default:\n        throw this.unexpected();\n    }\n  }\n\n  parseConstValueLiteral() {\n    return this.parseValueLiteral(true);\n  }\n\n  parseStringLiteral() {\n    const token = this._lexer.token;\n\n    this._lexer.advance();\n\n    return this.node(token, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.STRING,\n      value: token.value,\n      block: token.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BLOCK_STRING,\n    });\n  }\n  /**\n   * ListValue[Const] :\n   *   - [ ]\n   *   - [ Value[?Const]+ ]\n   */\n\n  parseList(isConst) {\n    const item = () => this.parseValueLiteral(isConst);\n\n    return this.node(this._lexer.token, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.LIST,\n      values: this.any(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACKET_L, item, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACKET_R),\n    });\n  }\n  /**\n   * ```\n   * ObjectValue[Const] :\n   *   - { }\n   *   - { ObjectField[?Const]+ }\n   * ```\n   */\n\n  parseObject(isConst) {\n    const item = () => this.parseObjectField(isConst);\n\n    return this.node(this._lexer.token, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.OBJECT,\n      fields: this.any(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_L, item, _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_R),\n    });\n  }\n  /**\n   * ObjectField[Const] : Name : Value[?Const]\n   */\n\n  parseObjectField(isConst) {\n    const start = this._lexer.token;\n    const name = this.parseName();\n    this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.COLON);\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.OBJECT_FIELD,\n      name,\n      value: this.parseValueLiteral(isConst),\n    });\n  } // Implements the parsing rules in the Directives section.\n\n  /**\n   * Directives[Const] : Directive[?Const]+\n   */\n\n  parseDirectives(isConst) {\n    const directives = [];\n\n    while (this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.AT)) {\n      directives.push(this.parseDirective(isConst));\n    }\n\n    return directives;\n  }\n\n  parseConstDirectives() {\n    return this.parseDirectives(true);\n  }\n  /**\n   * ```\n   * Directive[Const] : @ Name Arguments[?Const]?\n   * ```\n   */\n\n  parseDirective(isConst) {\n    const start = this._lexer.token;\n    this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.AT);\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.DIRECTIVE,\n      name: this.parseName(),\n      arguments: this.parseArguments(isConst),\n    });\n  } // Implements the parsing rules in the Types section.\n\n  /**\n   * Type :\n   *   - NamedType\n   *   - ListType\n   *   - NonNullType\n   */\n\n  parseTypeReference() {\n    const start = this._lexer.token;\n    let type;\n\n    if (this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACKET_L)) {\n      const innerType = this.parseTypeReference();\n      this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACKET_R);\n      type = this.node(start, {\n        kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.LIST_TYPE,\n        type: innerType,\n      });\n    } else {\n      type = this.parseNamedType();\n    }\n\n    if (this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BANG)) {\n      return this.node(start, {\n        kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.NON_NULL_TYPE,\n        type,\n      });\n    }\n\n    return type;\n  }\n  /**\n   * NamedType : Name\n   */\n\n  parseNamedType() {\n    return this.node(this._lexer.token, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.NAMED_TYPE,\n      name: this.parseName(),\n    });\n  } // Implements the parsing rules in the Type Definition section.\n\n  peekDescription() {\n    return this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.STRING) || this.peek(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BLOCK_STRING);\n  }\n  /**\n   * Description : StringValue\n   */\n\n  parseDescription() {\n    if (this.peekDescription()) {\n      return this.parseStringLiteral();\n    }\n  }\n  /**\n   * ```\n   * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n   * ```\n   */\n\n  parseSchemaDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('schema');\n    const directives = this.parseConstDirectives();\n    const operationTypes = this.many(\n      _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_L,\n      this.parseOperationTypeDefinition,\n      _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_R,\n    );\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.SCHEMA_DEFINITION,\n      description,\n      directives,\n      operationTypes,\n    });\n  }\n  /**\n   * OperationTypeDefinition : OperationType : NamedType\n   */\n\n  parseOperationTypeDefinition() {\n    const start = this._lexer.token;\n    const operation = this.parseOperationType();\n    this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.COLON);\n    const type = this.parseNamedType();\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.OPERATION_TYPE_DEFINITION,\n      operation,\n      type,\n    });\n  }\n  /**\n   * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n   */\n\n  parseScalarTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('scalar');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.SCALAR_TYPE_DEFINITION,\n      description,\n      name,\n      directives,\n    });\n  }\n  /**\n   * ObjectTypeDefinition :\n   *   Description?\n   *   type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n   */\n\n  parseObjectTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('type');\n    const name = this.parseName();\n    const interfaces = this.parseImplementsInterfaces();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseFieldsDefinition();\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.OBJECT_TYPE_DEFINITION,\n      description,\n      name,\n      interfaces,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * ImplementsInterfaces :\n   *   - implements `&`? NamedType\n   *   - ImplementsInterfaces & NamedType\n   */\n\n  parseImplementsInterfaces() {\n    return this.expectOptionalKeyword('implements')\n      ? this.delimitedMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.AMP, this.parseNamedType)\n      : [];\n  }\n  /**\n   * ```\n   * FieldsDefinition : { FieldDefinition+ }\n   * ```\n   */\n\n  parseFieldsDefinition() {\n    return this.optionalMany(\n      _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_L,\n      this.parseFieldDefinition,\n      _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_R,\n    );\n  }\n  /**\n   * FieldDefinition :\n   *   - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n   */\n\n  parseFieldDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    const name = this.parseName();\n    const args = this.parseArgumentDefs();\n    this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.COLON);\n    const type = this.parseTypeReference();\n    const directives = this.parseConstDirectives();\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.FIELD_DEFINITION,\n      description,\n      name,\n      arguments: args,\n      type,\n      directives,\n    });\n  }\n  /**\n   * ArgumentsDefinition : ( InputValueDefinition+ )\n   */\n\n  parseArgumentDefs() {\n    return this.optionalMany(\n      _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.PAREN_L,\n      this.parseInputValueDef,\n      _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.PAREN_R,\n    );\n  }\n  /**\n   * InputValueDefinition :\n   *   - Description? Name : Type DefaultValue? Directives[Const]?\n   */\n\n  parseInputValueDef() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    const name = this.parseName();\n    this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.COLON);\n    const type = this.parseTypeReference();\n    let defaultValue;\n\n    if (this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.EQUALS)) {\n      defaultValue = this.parseConstValueLiteral();\n    }\n\n    const directives = this.parseConstDirectives();\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.INPUT_VALUE_DEFINITION,\n      description,\n      name,\n      type,\n      defaultValue,\n      directives,\n    });\n  }\n  /**\n   * InterfaceTypeDefinition :\n   *   - Description? interface Name Directives[Const]? FieldsDefinition?\n   */\n\n  parseInterfaceTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('interface');\n    const name = this.parseName();\n    const interfaces = this.parseImplementsInterfaces();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseFieldsDefinition();\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.INTERFACE_TYPE_DEFINITION,\n      description,\n      name,\n      interfaces,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * UnionTypeDefinition :\n   *   - Description? union Name Directives[Const]? UnionMemberTypes?\n   */\n\n  parseUnionTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('union');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const types = this.parseUnionMemberTypes();\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.UNION_TYPE_DEFINITION,\n      description,\n      name,\n      directives,\n      types,\n    });\n  }\n  /**\n   * UnionMemberTypes :\n   *   - = `|`? NamedType\n   *   - UnionMemberTypes | NamedType\n   */\n\n  parseUnionMemberTypes() {\n    return this.expectOptionalToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.EQUALS)\n      ? this.delimitedMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.PIPE, this.parseNamedType)\n      : [];\n  }\n  /**\n   * EnumTypeDefinition :\n   *   - Description? enum Name Directives[Const]? EnumValuesDefinition?\n   */\n\n  parseEnumTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('enum');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const values = this.parseEnumValuesDefinition();\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.ENUM_TYPE_DEFINITION,\n      description,\n      name,\n      directives,\n      values,\n    });\n  }\n  /**\n   * ```\n   * EnumValuesDefinition : { EnumValueDefinition+ }\n   * ```\n   */\n\n  parseEnumValuesDefinition() {\n    return this.optionalMany(\n      _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_L,\n      this.parseEnumValueDefinition,\n      _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_R,\n    );\n  }\n  /**\n   * EnumValueDefinition : Description? EnumValue Directives[Const]?\n   */\n\n  parseEnumValueDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    const name = this.parseEnumValueName();\n    const directives = this.parseConstDirectives();\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.ENUM_VALUE_DEFINITION,\n      description,\n      name,\n      directives,\n    });\n  }\n  /**\n   * EnumValue : Name but not `true`, `false` or `null`\n   */\n\n  parseEnumValueName() {\n    if (\n      this._lexer.token.value === 'true' ||\n      this._lexer.token.value === 'false' ||\n      this._lexer.token.value === 'null'\n    ) {\n      throw (0,_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_4__.syntaxError)(\n        this._lexer.source,\n        this._lexer.token.start,\n        `${getTokenDesc(\n          this._lexer.token,\n        )} is reserved and cannot be used for an enum value.`,\n      );\n    }\n\n    return this.parseName();\n  }\n  /**\n   * InputObjectTypeDefinition :\n   *   - Description? input Name Directives[Const]? InputFieldsDefinition?\n   */\n\n  parseInputObjectTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('input');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseInputFieldsDefinition();\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.INPUT_OBJECT_TYPE_DEFINITION,\n      description,\n      name,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * ```\n   * InputFieldsDefinition : { InputValueDefinition+ }\n   * ```\n   */\n\n  parseInputFieldsDefinition() {\n    return this.optionalMany(\n      _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_L,\n      this.parseInputValueDef,\n      _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_R,\n    );\n  }\n  /**\n   * TypeSystemExtension :\n   *   - SchemaExtension\n   *   - TypeExtension\n   *\n   * TypeExtension :\n   *   - ScalarTypeExtension\n   *   - ObjectTypeExtension\n   *   - InterfaceTypeExtension\n   *   - UnionTypeExtension\n   *   - EnumTypeExtension\n   *   - InputObjectTypeDefinition\n   */\n\n  parseTypeSystemExtension() {\n    const keywordToken = this._lexer.lookahead();\n\n    if (keywordToken.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.NAME) {\n      switch (keywordToken.value) {\n        case 'schema':\n          return this.parseSchemaExtension();\n\n        case 'scalar':\n          return this.parseScalarTypeExtension();\n\n        case 'type':\n          return this.parseObjectTypeExtension();\n\n        case 'interface':\n          return this.parseInterfaceTypeExtension();\n\n        case 'union':\n          return this.parseUnionTypeExtension();\n\n        case 'enum':\n          return this.parseEnumTypeExtension();\n\n        case 'input':\n          return this.parseInputObjectTypeExtension();\n      }\n    }\n\n    throw this.unexpected(keywordToken);\n  }\n  /**\n   * ```\n   * SchemaExtension :\n   *  - extend schema Directives[Const]? { OperationTypeDefinition+ }\n   *  - extend schema Directives[Const]\n   * ```\n   */\n\n  parseSchemaExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('schema');\n    const directives = this.parseConstDirectives();\n    const operationTypes = this.optionalMany(\n      _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_L,\n      this.parseOperationTypeDefinition,\n      _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.BRACE_R,\n    );\n\n    if (directives.length === 0 && operationTypes.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.SCHEMA_EXTENSION,\n      directives,\n      operationTypes,\n    });\n  }\n  /**\n   * ScalarTypeExtension :\n   *   - extend scalar Name Directives[Const]\n   */\n\n  parseScalarTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('scalar');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n\n    if (directives.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.SCALAR_TYPE_EXTENSION,\n      name,\n      directives,\n    });\n  }\n  /**\n   * ObjectTypeExtension :\n   *  - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n   *  - extend type Name ImplementsInterfaces? Directives[Const]\n   *  - extend type Name ImplementsInterfaces\n   */\n\n  parseObjectTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('type');\n    const name = this.parseName();\n    const interfaces = this.parseImplementsInterfaces();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseFieldsDefinition();\n\n    if (\n      interfaces.length === 0 &&\n      directives.length === 0 &&\n      fields.length === 0\n    ) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.OBJECT_TYPE_EXTENSION,\n      name,\n      interfaces,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * InterfaceTypeExtension :\n   *  - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n   *  - extend interface Name ImplementsInterfaces? Directives[Const]\n   *  - extend interface Name ImplementsInterfaces\n   */\n\n  parseInterfaceTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('interface');\n    const name = this.parseName();\n    const interfaces = this.parseImplementsInterfaces();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseFieldsDefinition();\n\n    if (\n      interfaces.length === 0 &&\n      directives.length === 0 &&\n      fields.length === 0\n    ) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.INTERFACE_TYPE_EXTENSION,\n      name,\n      interfaces,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * UnionTypeExtension :\n   *   - extend union Name Directives[Const]? UnionMemberTypes\n   *   - extend union Name Directives[Const]\n   */\n\n  parseUnionTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('union');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const types = this.parseUnionMemberTypes();\n\n    if (directives.length === 0 && types.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.UNION_TYPE_EXTENSION,\n      name,\n      directives,\n      types,\n    });\n  }\n  /**\n   * EnumTypeExtension :\n   *   - extend enum Name Directives[Const]? EnumValuesDefinition\n   *   - extend enum Name Directives[Const]\n   */\n\n  parseEnumTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('enum');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const values = this.parseEnumValuesDefinition();\n\n    if (directives.length === 0 && values.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.ENUM_TYPE_EXTENSION,\n      name,\n      directives,\n      values,\n    });\n  }\n  /**\n   * InputObjectTypeExtension :\n   *   - extend input Name Directives[Const]? InputFieldsDefinition\n   *   - extend input Name Directives[Const]\n   */\n\n  parseInputObjectTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('input');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseInputFieldsDefinition();\n\n    if (directives.length === 0 && fields.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.INPUT_OBJECT_TYPE_EXTENSION,\n      name,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * ```\n   * DirectiveDefinition :\n   *   - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n   * ```\n   */\n\n  parseDirectiveDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('directive');\n    this.expectToken(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.AT);\n    const name = this.parseName();\n    const args = this.parseArgumentDefs();\n    const repeatable = this.expectOptionalKeyword('repeatable');\n    this.expectKeyword('on');\n    const locations = this.parseDirectiveLocations();\n    return this.node(start, {\n      kind: _kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.DIRECTIVE_DEFINITION,\n      description,\n      name,\n      arguments: args,\n      repeatable,\n      locations,\n    });\n  }\n  /**\n   * DirectiveLocations :\n   *   - `|`? DirectiveLocation\n   *   - DirectiveLocations | DirectiveLocation\n   */\n\n  parseDirectiveLocations() {\n    return this.delimitedMany(_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.PIPE, this.parseDirectiveLocation);\n  }\n  /*\n   * DirectiveLocation :\n   *   - ExecutableDirectiveLocation\n   *   - TypeSystemDirectiveLocation\n   *\n   * ExecutableDirectiveLocation : one of\n   *   `QUERY`\n   *   `MUTATION`\n   *   `SUBSCRIPTION`\n   *   `FIELD`\n   *   `FRAGMENT_DEFINITION`\n   *   `FRAGMENT_SPREAD`\n   *   `INLINE_FRAGMENT`\n   *\n   * TypeSystemDirectiveLocation : one of\n   *   `SCHEMA`\n   *   `SCALAR`\n   *   `OBJECT`\n   *   `FIELD_DEFINITION`\n   *   `ARGUMENT_DEFINITION`\n   *   `INTERFACE`\n   *   `UNION`\n   *   `ENUM`\n   *   `ENUM_VALUE`\n   *   `INPUT_OBJECT`\n   *   `INPUT_FIELD_DEFINITION`\n   */\n\n  parseDirectiveLocation() {\n    const start = this._lexer.token;\n    const name = this.parseName();\n\n    if (Object.prototype.hasOwnProperty.call(_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_6__.DirectiveLocation, name.value)) {\n      return name;\n    }\n\n    throw this.unexpected(start);\n  } // Core parsing utility functions\n\n  /**\n   * Returns a node that, if configured to do so, sets a \"loc\" field as a\n   * location object, used to identify the place in the source that created a\n   * given parsed object.\n   */\n\n  node(startToken, node) {\n    var _this$_options2;\n\n    if (\n      ((_this$_options2 = this._options) === null || _this$_options2 === void 0\n        ? void 0\n        : _this$_options2.noLocation) !== true\n    ) {\n      node.loc = new _ast_mjs__WEBPACK_IMPORTED_MODULE_5__.Location(\n        startToken,\n        this._lexer.lastToken,\n        this._lexer.source,\n      );\n    }\n\n    return node;\n  }\n  /**\n   * Determines if the next token is of a given kind\n   */\n\n  peek(kind) {\n    return this._lexer.token.kind === kind;\n  }\n  /**\n   * If the next token is of the given kind, return that token after advancing the lexer.\n   * Otherwise, do not change the parser state and throw an error.\n   */\n\n  expectToken(kind) {\n    const token = this._lexer.token;\n\n    if (token.kind === kind) {\n      this._lexer.advance();\n\n      return token;\n    }\n\n    throw (0,_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_4__.syntaxError)(\n      this._lexer.source,\n      token.start,\n      `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`,\n    );\n  }\n  /**\n   * If the next token is of the given kind, return \"true\" after advancing the lexer.\n   * Otherwise, do not change the parser state and return \"false\".\n   */\n\n  expectOptionalToken(kind) {\n    const token = this._lexer.token;\n\n    if (token.kind === kind) {\n      this._lexer.advance();\n\n      return true;\n    }\n\n    return false;\n  }\n  /**\n   * If the next token is a given keyword, advance the lexer.\n   * Otherwise, do not change the parser state and throw an error.\n   */\n\n  expectKeyword(value) {\n    const token = this._lexer.token;\n\n    if (token.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.NAME && token.value === value) {\n      this._lexer.advance();\n    } else {\n      throw (0,_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_4__.syntaxError)(\n        this._lexer.source,\n        token.start,\n        `Expected \"${value}\", found ${getTokenDesc(token)}.`,\n      );\n    }\n  }\n  /**\n   * If the next token is a given keyword, return \"true\" after advancing the lexer.\n   * Otherwise, do not change the parser state and return \"false\".\n   */\n\n  expectOptionalKeyword(value) {\n    const token = this._lexer.token;\n\n    if (token.kind === _tokenKind_mjs__WEBPACK_IMPORTED_MODULE_0__.TokenKind.NAME && token.value === value) {\n      this._lexer.advance();\n\n      return true;\n    }\n\n    return false;\n  }\n  /**\n   * Helper function for creating an error when an unexpected lexed token is encountered.\n   */\n\n  unexpected(atToken) {\n    const token =\n      atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n    return (0,_error_syntaxError_mjs__WEBPACK_IMPORTED_MODULE_4__.syntaxError)(\n      this._lexer.source,\n      token.start,\n      `Unexpected ${getTokenDesc(token)}.`,\n    );\n  }\n  /**\n   * Returns a possibly empty list of parse nodes, determined by the parseFn.\n   * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n   * Advances the parser to the next lex token after the closing token.\n   */\n\n  any(openKind, parseFn, closeKind) {\n    this.expectToken(openKind);\n    const nodes = [];\n\n    while (!this.expectOptionalToken(closeKind)) {\n      nodes.push(parseFn.call(this));\n    }\n\n    return nodes;\n  }\n  /**\n   * Returns a list of parse nodes, determined by the parseFn.\n   * It can be empty only if open token is missing otherwise it will always return non-empty list\n   * that begins with a lex token of openKind and ends with a lex token of closeKind.\n   * Advances the parser to the next lex token after the closing token.\n   */\n\n  optionalMany(openKind, parseFn, closeKind) {\n    if (this.expectOptionalToken(openKind)) {\n      const nodes = [];\n\n      do {\n        nodes.push(parseFn.call(this));\n      } while (!this.expectOptionalToken(closeKind));\n\n      return nodes;\n    }\n\n    return [];\n  }\n  /**\n   * Returns a non-empty list of parse nodes, determined by the parseFn.\n   * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n   * Advances the parser to the next lex token after the closing token.\n   */\n\n  many(openKind, parseFn, closeKind) {\n    this.expectToken(openKind);\n    const nodes = [];\n\n    do {\n      nodes.push(parseFn.call(this));\n    } while (!this.expectOptionalToken(closeKind));\n\n    return nodes;\n  }\n  /**\n   * Returns a non-empty list of parse nodes, determined by the parseFn.\n   * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n   * Advances the parser to the next lex token after last item in the list.\n   */\n\n  delimitedMany(delimiterKind, parseFn) {\n    this.expectOptionalToken(delimiterKind);\n    const nodes = [];\n\n    do {\n      nodes.push(parseFn.call(this));\n    } while (this.expectOptionalToken(delimiterKind));\n\n    return nodes;\n  }\n}\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n  const value = token.value;\n  return getTokenKindDesc(token.kind) + (value != null ? ` \"${value}\"` : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\nfunction getTokenKindDesc(kind) {\n  return (0,_lexer_mjs__WEBPACK_IMPORTED_MODULE_2__.isPunctuatorTokenKind)(kind) ? `\"${kind}\"` : kind;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9wYXJzZXIubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUF1RDtBQUNDO0FBQ0k7QUFDekI7QUFDd0I7QUFDWDtBQUNKO0FBQzVDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLHFCQUFxQix5REFBYTtBQUNsQztBQUNBLHFCQUFxQix5REFBYTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLHFCQUFxQix5REFBYTtBQUNsQztBQUNBLHFCQUFxQix5REFBYTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLHFCQUFxQix5REFBYTtBQUNsQztBQUNBLHFCQUFxQix5REFBYTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0Esc0JBQXNCLHFEQUFRLHdCQUF3QiwrQ0FBTTtBQUM1RCxzQkFBc0IsNkNBQUs7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1DQUFtQywwREFBYztBQUNqRDtBQUNBLFlBQVksaURBQVM7QUFDckI7QUFDQSxLQUFLO0FBQ0wsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFlBQVkscURBQWE7QUFDekI7QUFDQSxRQUFRLHlEQUFhO0FBQ3JCO0FBQ0EsUUFBUSx5REFBYTtBQUNyQjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsNkRBQWlCO0FBQ25DO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4QkFBOEIsMERBQWM7QUFDNUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGNBQWMsbUVBQVc7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxrQkFBa0IsNkRBQWlCO0FBQ25DO0FBQ0EsY0FBYyxpRUFBeUI7QUFDdkMsbUJBQW1CLDZEQUF1QjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBLGtCQUFrQiwwREFBYztBQUNoQztBQUNBOztBQUVBO0FBQ0EsWUFBWSxpRUFBeUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRDQUE0QywwREFBYzs7QUFFMUQ7QUFDQTtBQUNBLGVBQWUsNkRBQXVCOztBQUV0QztBQUNBLGVBQWUsZ0VBQTBCOztBQUV6QztBQUNBLGVBQWUsb0VBQThCO0FBQzdDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0sNkRBQWlCO0FBQ3ZCO0FBQ0EsTUFBTSw2REFBaUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWSxnRUFBd0I7QUFDcEM7QUFDQSw4QkFBOEIsMkRBQWU7QUFDN0MsNkNBQTZDLDREQUFnQjtBQUM3RDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQiw0REFBZ0I7QUFDckM7QUFDQSxZQUFZLHFEQUFhO0FBQ3pCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZLDBEQUFrQjtBQUM5QjtBQUNBLFFBQVEsNkRBQWlCO0FBQ3pCO0FBQ0EsUUFBUSw2REFBaUI7QUFDekI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsNERBQWdCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUMsMkRBQWU7QUFDaEQ7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0EsWUFBWSxrREFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qiw2REFBaUI7QUFDL0M7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNkJBQTZCLDZEQUFpQixRQUFRLDZEQUFpQjtBQUN2RTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsMkRBQWU7QUFDcEM7QUFDQSxZQUFZLHFEQUFhO0FBQ3pCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQiw0REFBZ0I7QUFDckM7O0FBRUEsdUNBQXVDLDBEQUFjO0FBQ3JEO0FBQ0EsY0FBYyw0REFBb0I7QUFDbEM7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBLFlBQVksNERBQW9CO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxnRUFBd0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBLFlBQVksZ0VBQXdCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFdBQVcsK0RBQW1CO0FBQzlCOztBQUVBLFdBQVcsNkRBQWlCO0FBQzVCOztBQUVBLFdBQVcseURBQWE7QUFDeEI7O0FBRUE7QUFDQSxnQkFBZ0IsZ0RBQVE7QUFDeEI7QUFDQSxTQUFTOztBQUVULFdBQVcsMkRBQWU7QUFDMUI7O0FBRUE7QUFDQSxnQkFBZ0Isa0RBQVU7QUFDMUI7QUFDQSxTQUFTOztBQUVULFdBQVcsNERBQWdCO0FBQzNCLFdBQVcsa0VBQXNCO0FBQ2pDOztBQUVBLFdBQVcsMERBQWM7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFZO0FBQ2hDO0FBQ0EsYUFBYTs7QUFFYjtBQUNBO0FBQ0Esb0JBQW9CLG9EQUFZO0FBQ2hDO0FBQ0EsYUFBYTs7QUFFYjtBQUNBO0FBQ0Esb0JBQW9CLGlEQUFTO0FBQzdCLGFBQWE7O0FBRWI7QUFDQTtBQUNBLG9CQUFvQixpREFBUztBQUM3QjtBQUNBLGFBQWE7QUFDYjs7QUFFQSxXQUFXLDREQUFnQjtBQUMzQjtBQUNBLDJCQUEyQiw0REFBZ0I7O0FBRTNDLHlDQUF5QywwREFBYztBQUN2RDtBQUNBLGtCQUFrQixtRUFBVztBQUM3QjtBQUNBO0FBQ0EsdUNBQXVDLFFBQVE7QUFDL0M7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsWUFBWSxtREFBVztBQUN2QjtBQUNBLDRCQUE0QixrRUFBc0I7QUFDbEQsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsWUFBWSxpREFBUztBQUNyQix1QkFBdUIsK0RBQW1CLFFBQVEsK0RBQW1CO0FBQ3JFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFlBQVksbURBQVc7QUFDdkIsdUJBQXVCLDZEQUFpQixRQUFRLDZEQUFpQjtBQUNqRSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDJEQUFlO0FBQ3BDO0FBQ0EsWUFBWSx5REFBaUI7QUFDN0I7QUFDQTtBQUNBLEtBQUs7QUFDTCxJQUFJOztBQUVKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHFCQUFxQix3REFBWTtBQUNqQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLHdEQUFZO0FBQ2pDO0FBQ0EsWUFBWSxzREFBYztBQUMxQjtBQUNBO0FBQ0EsS0FBSztBQUNMLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUMsK0RBQW1CO0FBQ3BEO0FBQ0EsdUJBQXVCLCtEQUFtQjtBQUMxQztBQUNBLGNBQWMsc0RBQWM7QUFDNUI7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOO0FBQ0E7O0FBRUEsaUNBQWlDLDBEQUFjO0FBQy9DO0FBQ0EsY0FBYywwREFBa0I7QUFDaEM7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWSx1REFBZTtBQUMzQjtBQUNBLEtBQUs7QUFDTCxJQUFJOztBQUVKO0FBQ0EscUJBQXFCLDREQUFnQixlQUFlLGtFQUFzQjtBQUMxRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRTtBQUNqRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sNkRBQWlCO0FBQ3ZCO0FBQ0EsTUFBTSw2REFBaUI7QUFDdkI7QUFDQTtBQUNBLFlBQVksOERBQXNCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsMkRBQWU7QUFDcEM7QUFDQTtBQUNBLFlBQVksc0VBQThCO0FBQzFDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG1FQUEyQjtBQUN2QztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksbUVBQTJCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwyQkFBMkIseURBQWE7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSw2REFBaUI7QUFDdkI7QUFDQSxNQUFNLDZEQUFpQjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiwyREFBZTtBQUNwQztBQUNBO0FBQ0E7QUFDQSxZQUFZLDZEQUFxQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNLDZEQUFpQjtBQUN2QjtBQUNBLE1BQU0sNkRBQWlCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiwyREFBZTtBQUNwQztBQUNBOztBQUVBLGlDQUFpQyw0REFBZ0I7QUFDakQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsWUFBWSxtRUFBMkI7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksc0VBQThCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxrRUFBMEI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0NBQW9DLDREQUFnQjtBQUNwRCwyQkFBMkIsMERBQWM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLGlFQUF5QjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSw2REFBaUI7QUFDdkI7QUFDQSxNQUFNLDZEQUFpQjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksa0VBQTBCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLG1FQUFXO0FBQ3ZCO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseUVBQWlDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNLDZEQUFpQjtBQUN2QjtBQUNBLE1BQU0sNkRBQWlCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDhCQUE4QiwwREFBYztBQUM1QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sNkRBQWlCO0FBQ3ZCO0FBQ0EsTUFBTSw2REFBaUI7QUFDdkI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWSw2REFBcUI7QUFDakM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZLGtFQUEwQjtBQUN0QztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZLGtFQUEwQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWSxxRUFBNkI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFlBQVksaUVBQXlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWSxnRUFBd0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZLHdFQUFnQztBQUM1QztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsd0RBQVk7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxpRUFBeUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw4QkFBOEIsMERBQWM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDZDQUE2QyxxRUFBaUI7QUFDOUQ7QUFDQTs7QUFFQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsOENBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLFVBQVUsbUVBQVc7QUFDckI7QUFDQTtBQUNBLGtCQUFrQix1QkFBdUIsVUFBVSxvQkFBb0I7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHVCQUF1QiwwREFBYztBQUNyQztBQUNBLE1BQU07QUFDTixZQUFZLG1FQUFXO0FBQ3ZCO0FBQ0E7QUFDQSxxQkFBcUIsTUFBTSxXQUFXLG9CQUFvQjtBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHVCQUF1QiwwREFBYztBQUNyQzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxtRUFBVztBQUN0QjtBQUNBO0FBQ0Esb0JBQW9CLG9CQUFvQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFROztBQUVSO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDhEQUE4RCxNQUFNO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUyxpRUFBcUIsYUFBYSxLQUFLO0FBQ2hEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL3BhcnNlci5tanM/NzY1YyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzeW50YXhFcnJvciB9IGZyb20gJy4uL2Vycm9yL3N5bnRheEVycm9yLm1qcyc7XG5pbXBvcnQgeyBMb2NhdGlvbiwgT3BlcmF0aW9uVHlwZU5vZGUgfSBmcm9tICcuL2FzdC5tanMnO1xuaW1wb3J0IHsgRGlyZWN0aXZlTG9jYXRpb24gfSBmcm9tICcuL2RpcmVjdGl2ZUxvY2F0aW9uLm1qcyc7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi9raW5kcy5tanMnO1xuaW1wb3J0IHsgaXNQdW5jdHVhdG9yVG9rZW5LaW5kLCBMZXhlciB9IGZyb20gJy4vbGV4ZXIubWpzJztcbmltcG9ydCB7IGlzU291cmNlLCBTb3VyY2UgfSBmcm9tICcuL3NvdXJjZS5tanMnO1xuaW1wb3J0IHsgVG9rZW5LaW5kIH0gZnJvbSAnLi90b2tlbktpbmQubWpzJztcbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGNvbnRyb2wgcGFyc2VyIGJlaGF2aW9yXG4gKi9cblxuLyoqXG4gKiBHaXZlbiBhIEdyYXBoUUwgc291cmNlLCBwYXJzZXMgaXQgaW50byBhIERvY3VtZW50LlxuICogVGhyb3dzIEdyYXBoUUxFcnJvciBpZiBhIHN5bnRheCBlcnJvciBpcyBlbmNvdW50ZXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKHNvdXJjZSwgb3B0aW9ucykge1xuICBjb25zdCBwYXJzZXIgPSBuZXcgUGFyc2VyKHNvdXJjZSwgb3B0aW9ucyk7XG4gIHJldHVybiBwYXJzZXIucGFyc2VEb2N1bWVudCgpO1xufVxuLyoqXG4gKiBHaXZlbiBhIHN0cmluZyBjb250YWluaW5nIGEgR3JhcGhRTCB2YWx1ZSAoZXguIGBbNDJdYCksIHBhcnNlIHRoZSBBU1QgZm9yXG4gKiB0aGF0IHZhbHVlLlxuICogVGhyb3dzIEdyYXBoUUxFcnJvciBpZiBhIHN5bnRheCBlcnJvciBpcyBlbmNvdW50ZXJlZC5cbiAqXG4gKiBUaGlzIGlzIHVzZWZ1bCB3aXRoaW4gdG9vbHMgdGhhdCBvcGVyYXRlIHVwb24gR3JhcGhRTCBWYWx1ZXMgZGlyZWN0bHkgYW5kXG4gKiBpbiBpc29sYXRpb24gb2YgY29tcGxldGUgR3JhcGhRTCBkb2N1bWVudHMuXG4gKlxuICogQ29uc2lkZXIgcHJvdmlkaW5nIHRoZSByZXN1bHRzIHRvIHRoZSB1dGlsaXR5IGZ1bmN0aW9uOiB2YWx1ZUZyb21BU1QoKS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VWYWx1ZShzb3VyY2UsIG9wdGlvbnMpIHtcbiAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcihzb3VyY2UsIG9wdGlvbnMpO1xuICBwYXJzZXIuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLlNPRik7XG4gIGNvbnN0IHZhbHVlID0gcGFyc2VyLnBhcnNlVmFsdWVMaXRlcmFsKGZhbHNlKTtcbiAgcGFyc2VyLmV4cGVjdFRva2VuKFRva2VuS2luZC5FT0YpO1xuICByZXR1cm4gdmFsdWU7XG59XG4vKipcbiAqIFNpbWlsYXIgdG8gcGFyc2VWYWx1ZSgpLCBidXQgcmFpc2VzIGEgcGFyc2UgZXJyb3IgaWYgaXQgZW5jb3VudGVycyBhXG4gKiB2YXJpYWJsZS4gVGhlIHJldHVybiB0eXBlIHdpbGwgYmUgYSBjb25zdGFudCB2YWx1ZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb25zdFZhbHVlKHNvdXJjZSwgb3B0aW9ucykge1xuICBjb25zdCBwYXJzZXIgPSBuZXcgUGFyc2VyKHNvdXJjZSwgb3B0aW9ucyk7XG4gIHBhcnNlci5leHBlY3RUb2tlbihUb2tlbktpbmQuU09GKTtcbiAgY29uc3QgdmFsdWUgPSBwYXJzZXIucGFyc2VDb25zdFZhbHVlTGl0ZXJhbCgpO1xuICBwYXJzZXIuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkVPRik7XG4gIHJldHVybiB2YWx1ZTtcbn1cbi8qKlxuICogR2l2ZW4gYSBzdHJpbmcgY29udGFpbmluZyBhIEdyYXBoUUwgVHlwZSAoZXguIGBbSW50IV1gKSwgcGFyc2UgdGhlIEFTVCBmb3JcbiAqIHRoYXQgdHlwZS5cbiAqIFRocm93cyBHcmFwaFFMRXJyb3IgaWYgYSBzeW50YXggZXJyb3IgaXMgZW5jb3VudGVyZWQuXG4gKlxuICogVGhpcyBpcyB1c2VmdWwgd2l0aGluIHRvb2xzIHRoYXQgb3BlcmF0ZSB1cG9uIEdyYXBoUUwgVHlwZXMgZGlyZWN0bHkgYW5kXG4gKiBpbiBpc29sYXRpb24gb2YgY29tcGxldGUgR3JhcGhRTCBkb2N1bWVudHMuXG4gKlxuICogQ29uc2lkZXIgcHJvdmlkaW5nIHRoZSByZXN1bHRzIHRvIHRoZSB1dGlsaXR5IGZ1bmN0aW9uOiB0eXBlRnJvbUFTVCgpLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVR5cGUoc291cmNlLCBvcHRpb25zKSB7XG4gIGNvbnN0IHBhcnNlciA9IG5ldyBQYXJzZXIoc291cmNlLCBvcHRpb25zKTtcbiAgcGFyc2VyLmV4cGVjdFRva2VuKFRva2VuS2luZC5TT0YpO1xuICBjb25zdCB0eXBlID0gcGFyc2VyLnBhcnNlVHlwZVJlZmVyZW5jZSgpO1xuICBwYXJzZXIuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkVPRik7XG4gIHJldHVybiB0eXBlO1xufVxuLyoqXG4gKiBUaGlzIGNsYXNzIGlzIGV4cG9ydGVkIG9ubHkgdG8gYXNzaXN0IHBlb3BsZSBpbiBpbXBsZW1lbnRpbmcgdGhlaXIgb3duIHBhcnNlcnNcbiAqIHdpdGhvdXQgZHVwbGljYXRpbmcgdG9vIG11Y2ggY29kZSBhbmQgc2hvdWxkIGJlIHVzZWQgb25seSBhcyBsYXN0IHJlc29ydCBmb3IgY2FzZXNcbiAqIHN1Y2ggYXMgZXhwZXJpbWVudGFsIHN5bnRheCBvciBpZiBjZXJ0YWluIGZlYXR1cmVzIGNvdWxkIG5vdCBiZSBjb250cmlidXRlZCB1cHN0cmVhbS5cbiAqXG4gKiBJdCBpcyBzdGlsbCBwYXJ0IG9mIHRoZSBpbnRlcm5hbCBBUEkgYW5kIGlzIHZlcnNpb25lZCwgc28gYW55IGNoYW5nZXMgdG8gaXQgYXJlIG5ldmVyXG4gKiBjb25zaWRlcmVkIGJyZWFraW5nIGNoYW5nZXMuIElmIHlvdSBzdGlsbCBuZWVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlXG4gKiBsaWJyYXJ5LCBwbGVhc2UgdXNlIHRoZSBgdmVyc2lvbkluZm9gIHZhcmlhYmxlIGZvciB2ZXJzaW9uIGRldGVjdGlvbi5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgY2xhc3MgUGFyc2VyIHtcbiAgY29uc3RydWN0b3Ioc291cmNlLCBvcHRpb25zKSB7XG4gICAgY29uc3Qgc291cmNlT2JqID0gaXNTb3VyY2Uoc291cmNlKSA/IHNvdXJjZSA6IG5ldyBTb3VyY2Uoc291cmNlKTtcbiAgICB0aGlzLl9sZXhlciA9IG5ldyBMZXhlcihzb3VyY2VPYmopO1xuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICB9XG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIG5hbWUgbGV4IHRva2VuIGludG8gYSBuYW1lIHBhcnNlIG5vZGUuXG4gICAqL1xuXG4gIHBhcnNlTmFtZSgpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLk5BTUUpO1xuICAgIHJldHVybiB0aGlzLm5vZGUodG9rZW4sIHtcbiAgICAgIGtpbmQ6IEtpbmQuTkFNRSxcbiAgICAgIHZhbHVlOiB0b2tlbi52YWx1ZSxcbiAgICB9KTtcbiAgfSAvLyBJbXBsZW1lbnRzIHRoZSBwYXJzaW5nIHJ1bGVzIGluIHRoZSBEb2N1bWVudCBzZWN0aW9uLlxuXG4gIC8qKlxuICAgKiBEb2N1bWVudCA6IERlZmluaXRpb24rXG4gICAqL1xuXG4gIHBhcnNlRG9jdW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZSh0aGlzLl9sZXhlci50b2tlbiwge1xuICAgICAga2luZDogS2luZC5ET0NVTUVOVCxcbiAgICAgIGRlZmluaXRpb25zOiB0aGlzLm1hbnkoXG4gICAgICAgIFRva2VuS2luZC5TT0YsXG4gICAgICAgIHRoaXMucGFyc2VEZWZpbml0aW9uLFxuICAgICAgICBUb2tlbktpbmQuRU9GLFxuICAgICAgKSxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogRGVmaW5pdGlvbiA6XG4gICAqICAgLSBFeGVjdXRhYmxlRGVmaW5pdGlvblxuICAgKiAgIC0gVHlwZVN5c3RlbURlZmluaXRpb25cbiAgICogICAtIFR5cGVTeXN0ZW1FeHRlbnNpb25cbiAgICpcbiAgICogRXhlY3V0YWJsZURlZmluaXRpb24gOlxuICAgKiAgIC0gT3BlcmF0aW9uRGVmaW5pdGlvblxuICAgKiAgIC0gRnJhZ21lbnREZWZpbml0aW9uXG4gICAqXG4gICAqIFR5cGVTeXN0ZW1EZWZpbml0aW9uIDpcbiAgICogICAtIFNjaGVtYURlZmluaXRpb25cbiAgICogICAtIFR5cGVEZWZpbml0aW9uXG4gICAqICAgLSBEaXJlY3RpdmVEZWZpbml0aW9uXG4gICAqXG4gICAqIFR5cGVEZWZpbml0aW9uIDpcbiAgICogICAtIFNjYWxhclR5cGVEZWZpbml0aW9uXG4gICAqICAgLSBPYmplY3RUeXBlRGVmaW5pdGlvblxuICAgKiAgIC0gSW50ZXJmYWNlVHlwZURlZmluaXRpb25cbiAgICogICAtIFVuaW9uVHlwZURlZmluaXRpb25cbiAgICogICAtIEVudW1UeXBlRGVmaW5pdGlvblxuICAgKiAgIC0gSW5wdXRPYmplY3RUeXBlRGVmaW5pdGlvblxuICAgKi9cblxuICBwYXJzZURlZmluaXRpb24oKSB7XG4gICAgaWYgKHRoaXMucGVlayhUb2tlbktpbmQuQlJBQ0VfTCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlT3BlcmF0aW9uRGVmaW5pdGlvbigpO1xuICAgIH0gLy8gTWFueSBkZWZpbml0aW9ucyBiZWdpbiB3aXRoIGEgZGVzY3JpcHRpb24gYW5kIHJlcXVpcmUgYSBsb29rYWhlYWQuXG5cbiAgICBjb25zdCBoYXNEZXNjcmlwdGlvbiA9IHRoaXMucGVla0Rlc2NyaXB0aW9uKCk7XG4gICAgY29uc3Qga2V5d29yZFRva2VuID0gaGFzRGVzY3JpcHRpb25cbiAgICAgID8gdGhpcy5fbGV4ZXIubG9va2FoZWFkKClcbiAgICAgIDogdGhpcy5fbGV4ZXIudG9rZW47XG5cbiAgICBpZiAoa2V5d29yZFRva2VuLmtpbmQgPT09IFRva2VuS2luZC5OQU1FKSB7XG4gICAgICBzd2l0Y2ggKGtleXdvcmRUb2tlbi52YWx1ZSkge1xuICAgICAgICBjYXNlICdzY2hlbWEnOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlU2NoZW1hRGVmaW5pdGlvbigpO1xuXG4gICAgICAgIGNhc2UgJ3NjYWxhcic6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VTY2FsYXJUeXBlRGVmaW5pdGlvbigpO1xuXG4gICAgICAgIGNhc2UgJ3R5cGUnOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlT2JqZWN0VHlwZURlZmluaXRpb24oKTtcblxuICAgICAgICBjYXNlICdpbnRlcmZhY2UnOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlSW50ZXJmYWNlVHlwZURlZmluaXRpb24oKTtcblxuICAgICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VVbmlvblR5cGVEZWZpbml0aW9uKCk7XG5cbiAgICAgICAgY2FzZSAnZW51bSc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VFbnVtVHlwZURlZmluaXRpb24oKTtcblxuICAgICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VJbnB1dE9iamVjdFR5cGVEZWZpbml0aW9uKCk7XG5cbiAgICAgICAgY2FzZSAnZGlyZWN0aXZlJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZURpcmVjdGl2ZURlZmluaXRpb24oKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc0Rlc2NyaXB0aW9uKSB7XG4gICAgICAgIHRocm93IHN5bnRheEVycm9yKFxuICAgICAgICAgIHRoaXMuX2xleGVyLnNvdXJjZSxcbiAgICAgICAgICB0aGlzLl9sZXhlci50b2tlbi5zdGFydCxcbiAgICAgICAgICAnVW5leHBlY3RlZCBkZXNjcmlwdGlvbiwgZGVzY3JpcHRpb25zIGFyZSBzdXBwb3J0ZWQgb25seSBvbiB0eXBlIGRlZmluaXRpb25zLicsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoa2V5d29yZFRva2VuLnZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ3F1ZXJ5JzpcbiAgICAgICAgY2FzZSAnbXV0YXRpb24nOlxuICAgICAgICBjYXNlICdzdWJzY3JpcHRpb24nOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlT3BlcmF0aW9uRGVmaW5pdGlvbigpO1xuXG4gICAgICAgIGNhc2UgJ2ZyYWdtZW50JzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUZyYWdtZW50RGVmaW5pdGlvbigpO1xuXG4gICAgICAgIGNhc2UgJ2V4dGVuZCc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VUeXBlU3lzdGVtRXh0ZW5zaW9uKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKGtleXdvcmRUb2tlbik7XG4gIH0gLy8gSW1wbGVtZW50cyB0aGUgcGFyc2luZyBydWxlcyBpbiB0aGUgT3BlcmF0aW9ucyBzZWN0aW9uLlxuXG4gIC8qKlxuICAgKiBPcGVyYXRpb25EZWZpbml0aW9uIDpcbiAgICogIC0gU2VsZWN0aW9uU2V0XG4gICAqICAtIE9wZXJhdGlvblR5cGUgTmFtZT8gVmFyaWFibGVEZWZpbml0aW9ucz8gRGlyZWN0aXZlcz8gU2VsZWN0aW9uU2V0XG4gICAqL1xuXG4gIHBhcnNlT3BlcmF0aW9uRGVmaW5pdGlvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuXG4gICAgaWYgKHRoaXMucGVlayhUb2tlbktpbmQuQlJBQ0VfTCkpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgICAga2luZDogS2luZC5PUEVSQVRJT05fREVGSU5JVElPTixcbiAgICAgICAgb3BlcmF0aW9uOiBPcGVyYXRpb25UeXBlTm9kZS5RVUVSWSxcbiAgICAgICAgbmFtZTogdW5kZWZpbmVkLFxuICAgICAgICB2YXJpYWJsZURlZmluaXRpb25zOiBbXSxcbiAgICAgICAgZGlyZWN0aXZlczogW10sXG4gICAgICAgIHNlbGVjdGlvblNldDogdGhpcy5wYXJzZVNlbGVjdGlvblNldCgpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy5wYXJzZU9wZXJhdGlvblR5cGUoKTtcbiAgICBsZXQgbmFtZTtcblxuICAgIGlmICh0aGlzLnBlZWsoVG9rZW5LaW5kLk5BTUUpKSB7XG4gICAgICBuYW1lID0gdGhpcy5wYXJzZU5hbWUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLk9QRVJBVElPTl9ERUZJTklUSU9OLFxuICAgICAgb3BlcmF0aW9uLFxuICAgICAgbmFtZSxcbiAgICAgIHZhcmlhYmxlRGVmaW5pdGlvbnM6IHRoaXMucGFyc2VWYXJpYWJsZURlZmluaXRpb25zKCksXG4gICAgICBkaXJlY3RpdmVzOiB0aGlzLnBhcnNlRGlyZWN0aXZlcyhmYWxzZSksXG4gICAgICBzZWxlY3Rpb25TZXQ6IHRoaXMucGFyc2VTZWxlY3Rpb25TZXQoKSxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogT3BlcmF0aW9uVHlwZSA6IG9uZSBvZiBxdWVyeSBtdXRhdGlvbiBzdWJzY3JpcHRpb25cbiAgICovXG5cbiAgcGFyc2VPcGVyYXRpb25UeXBlKCkge1xuICAgIGNvbnN0IG9wZXJhdGlvblRva2VuID0gdGhpcy5leHBlY3RUb2tlbihUb2tlbktpbmQuTkFNRSk7XG5cbiAgICBzd2l0Y2ggKG9wZXJhdGlvblRva2VuLnZhbHVlKSB7XG4gICAgICBjYXNlICdxdWVyeSc6XG4gICAgICAgIHJldHVybiBPcGVyYXRpb25UeXBlTm9kZS5RVUVSWTtcblxuICAgICAgY2FzZSAnbXV0YXRpb24nOlxuICAgICAgICByZXR1cm4gT3BlcmF0aW9uVHlwZU5vZGUuTVVUQVRJT047XG5cbiAgICAgIGNhc2UgJ3N1YnNjcmlwdGlvbic6XG4gICAgICAgIHJldHVybiBPcGVyYXRpb25UeXBlTm9kZS5TVUJTQ1JJUFRJT047XG4gICAgfVxuXG4gICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKG9wZXJhdGlvblRva2VuKTtcbiAgfVxuICAvKipcbiAgICogVmFyaWFibGVEZWZpbml0aW9ucyA6ICggVmFyaWFibGVEZWZpbml0aW9uKyApXG4gICAqL1xuXG4gIHBhcnNlVmFyaWFibGVEZWZpbml0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25hbE1hbnkoXG4gICAgICBUb2tlbktpbmQuUEFSRU5fTCxcbiAgICAgIHRoaXMucGFyc2VWYXJpYWJsZURlZmluaXRpb24sXG4gICAgICBUb2tlbktpbmQuUEFSRU5fUixcbiAgICApO1xuICB9XG4gIC8qKlxuICAgKiBWYXJpYWJsZURlZmluaXRpb24gOiBWYXJpYWJsZSA6IFR5cGUgRGVmYXVsdFZhbHVlPyBEaXJlY3RpdmVzW0NvbnN0XT9cbiAgICovXG5cbiAgcGFyc2VWYXJpYWJsZURlZmluaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZSh0aGlzLl9sZXhlci50b2tlbiwge1xuICAgICAga2luZDogS2luZC5WQVJJQUJMRV9ERUZJTklUSU9OLFxuICAgICAgdmFyaWFibGU6IHRoaXMucGFyc2VWYXJpYWJsZSgpLFxuICAgICAgdHlwZTogKHRoaXMuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkNPTE9OKSwgdGhpcy5wYXJzZVR5cGVSZWZlcmVuY2UoKSksXG4gICAgICBkZWZhdWx0VmFsdWU6IHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihUb2tlbktpbmQuRVFVQUxTKVxuICAgICAgICA/IHRoaXMucGFyc2VDb25zdFZhbHVlTGl0ZXJhbCgpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZGlyZWN0aXZlczogdGhpcy5wYXJzZUNvbnN0RGlyZWN0aXZlcygpLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBWYXJpYWJsZSA6ICQgTmFtZVxuICAgKi9cblxuICBwYXJzZVZhcmlhYmxlKCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgdGhpcy5leHBlY3RUb2tlbihUb2tlbktpbmQuRE9MTEFSKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLlZBUklBQkxFLFxuICAgICAgbmFtZTogdGhpcy5wYXJzZU5hbWUoKSxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogYGBgXG4gICAqIFNlbGVjdGlvblNldCA6IHsgU2VsZWN0aW9uKyB9XG4gICAqIGBgYFxuICAgKi9cblxuICBwYXJzZVNlbGVjdGlvblNldCgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHRoaXMuX2xleGVyLnRva2VuLCB7XG4gICAgICBraW5kOiBLaW5kLlNFTEVDVElPTl9TRVQsXG4gICAgICBzZWxlY3Rpb25zOiB0aGlzLm1hbnkoXG4gICAgICAgIFRva2VuS2luZC5CUkFDRV9MLFxuICAgICAgICB0aGlzLnBhcnNlU2VsZWN0aW9uLFxuICAgICAgICBUb2tlbktpbmQuQlJBQ0VfUixcbiAgICAgICksXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIFNlbGVjdGlvbiA6XG4gICAqICAgLSBGaWVsZFxuICAgKiAgIC0gRnJhZ21lbnRTcHJlYWRcbiAgICogICAtIElubGluZUZyYWdtZW50XG4gICAqL1xuXG4gIHBhcnNlU2VsZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnBlZWsoVG9rZW5LaW5kLlNQUkVBRClcbiAgICAgID8gdGhpcy5wYXJzZUZyYWdtZW50KClcbiAgICAgIDogdGhpcy5wYXJzZUZpZWxkKCk7XG4gIH1cbiAgLyoqXG4gICAqIEZpZWxkIDogQWxpYXM/IE5hbWUgQXJndW1lbnRzPyBEaXJlY3RpdmVzPyBTZWxlY3Rpb25TZXQ/XG4gICAqXG4gICAqIEFsaWFzIDogTmFtZSA6XG4gICAqL1xuXG4gIHBhcnNlRmllbGQoKSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICBjb25zdCBuYW1lT3JBbGlhcyA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgbGV0IGFsaWFzO1xuICAgIGxldCBuYW1lO1xuXG4gICAgaWYgKHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihUb2tlbktpbmQuQ09MT04pKSB7XG4gICAgICBhbGlhcyA9IG5hbWVPckFsaWFzO1xuICAgICAgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5hbWUgPSBuYW1lT3JBbGlhcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLkZJRUxELFxuICAgICAgYWxpYXMsXG4gICAgICBuYW1lLFxuICAgICAgYXJndW1lbnRzOiB0aGlzLnBhcnNlQXJndW1lbnRzKGZhbHNlKSxcbiAgICAgIGRpcmVjdGl2ZXM6IHRoaXMucGFyc2VEaXJlY3RpdmVzKGZhbHNlKSxcbiAgICAgIHNlbGVjdGlvblNldDogdGhpcy5wZWVrKFRva2VuS2luZC5CUkFDRV9MKVxuICAgICAgICA/IHRoaXMucGFyc2VTZWxlY3Rpb25TZXQoKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQXJndW1lbnRzW0NvbnN0XSA6ICggQXJndW1lbnRbP0NvbnN0XSsgKVxuICAgKi9cblxuICBwYXJzZUFyZ3VtZW50cyhpc0NvbnN0KSB7XG4gICAgY29uc3QgaXRlbSA9IGlzQ29uc3QgPyB0aGlzLnBhcnNlQ29uc3RBcmd1bWVudCA6IHRoaXMucGFyc2VBcmd1bWVudDtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25hbE1hbnkoVG9rZW5LaW5kLlBBUkVOX0wsIGl0ZW0sIFRva2VuS2luZC5QQVJFTl9SKTtcbiAgfVxuICAvKipcbiAgICogQXJndW1lbnRbQ29uc3RdIDogTmFtZSA6IFZhbHVlWz9Db25zdF1cbiAgICovXG5cbiAgcGFyc2VBcmd1bWVudChpc0NvbnN0ID0gZmFsc2UpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIHRoaXMuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkNPTE9OKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLkFSR1VNRU5ULFxuICAgICAgbmFtZSxcbiAgICAgIHZhbHVlOiB0aGlzLnBhcnNlVmFsdWVMaXRlcmFsKGlzQ29uc3QpLFxuICAgIH0pO1xuICB9XG5cbiAgcGFyc2VDb25zdEFyZ3VtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlQXJndW1lbnQodHJ1ZSk7XG4gIH0gLy8gSW1wbGVtZW50cyB0aGUgcGFyc2luZyBydWxlcyBpbiB0aGUgRnJhZ21lbnRzIHNlY3Rpb24uXG5cbiAgLyoqXG4gICAqIENvcnJlc3BvbmRzIHRvIGJvdGggRnJhZ21lbnRTcHJlYWQgYW5kIElubGluZUZyYWdtZW50IGluIHRoZSBzcGVjLlxuICAgKlxuICAgKiBGcmFnbWVudFNwcmVhZCA6IC4uLiBGcmFnbWVudE5hbWUgRGlyZWN0aXZlcz9cbiAgICpcbiAgICogSW5saW5lRnJhZ21lbnQgOiAuLi4gVHlwZUNvbmRpdGlvbj8gRGlyZWN0aXZlcz8gU2VsZWN0aW9uU2V0XG4gICAqL1xuXG4gIHBhcnNlRnJhZ21lbnQoKSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB0aGlzLmV4cGVjdFRva2VuKFRva2VuS2luZC5TUFJFQUQpO1xuICAgIGNvbnN0IGhhc1R5cGVDb25kaXRpb24gPSB0aGlzLmV4cGVjdE9wdGlvbmFsS2V5d29yZCgnb24nKTtcblxuICAgIGlmICghaGFzVHlwZUNvbmRpdGlvbiAmJiB0aGlzLnBlZWsoVG9rZW5LaW5kLk5BTUUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICAgIGtpbmQ6IEtpbmQuRlJBR01FTlRfU1BSRUFELFxuICAgICAgICBuYW1lOiB0aGlzLnBhcnNlRnJhZ21lbnROYW1lKCksXG4gICAgICAgIGRpcmVjdGl2ZXM6IHRoaXMucGFyc2VEaXJlY3RpdmVzKGZhbHNlKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgIGtpbmQ6IEtpbmQuSU5MSU5FX0ZSQUdNRU5ULFxuICAgICAgdHlwZUNvbmRpdGlvbjogaGFzVHlwZUNvbmRpdGlvbiA/IHRoaXMucGFyc2VOYW1lZFR5cGUoKSA6IHVuZGVmaW5lZCxcbiAgICAgIGRpcmVjdGl2ZXM6IHRoaXMucGFyc2VEaXJlY3RpdmVzKGZhbHNlKSxcbiAgICAgIHNlbGVjdGlvblNldDogdGhpcy5wYXJzZVNlbGVjdGlvblNldCgpLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBGcmFnbWVudERlZmluaXRpb24gOlxuICAgKiAgIC0gZnJhZ21lbnQgRnJhZ21lbnROYW1lIG9uIFR5cGVDb25kaXRpb24gRGlyZWN0aXZlcz8gU2VsZWN0aW9uU2V0XG4gICAqXG4gICAqIFR5cGVDb25kaXRpb24gOiBOYW1lZFR5cGVcbiAgICovXG5cbiAgcGFyc2VGcmFnbWVudERlZmluaXRpb24oKSB7XG4gICAgdmFyIF90aGlzJF9vcHRpb25zO1xuXG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2ZyYWdtZW50Jyk7IC8vIExlZ2FjeSBzdXBwb3J0IGZvciBkZWZpbmluZyB2YXJpYWJsZXMgd2l0aGluIGZyYWdtZW50cyBjaGFuZ2VzXG4gICAgLy8gdGhlIGdyYW1tYXIgb2YgRnJhZ21lbnREZWZpbml0aW9uOlxuICAgIC8vICAgLSBmcmFnbWVudCBGcmFnbWVudE5hbWUgVmFyaWFibGVEZWZpbml0aW9ucz8gb24gVHlwZUNvbmRpdGlvbiBEaXJlY3RpdmVzPyBTZWxlY3Rpb25TZXRcblxuICAgIGlmIChcbiAgICAgICgoX3RoaXMkX29wdGlvbnMgPSB0aGlzLl9vcHRpb25zKSA9PT0gbnVsbCB8fCBfdGhpcyRfb3B0aW9ucyA9PT0gdm9pZCAwXG4gICAgICAgID8gdm9pZCAwXG4gICAgICAgIDogX3RoaXMkX29wdGlvbnMuYWxsb3dMZWdhY3lGcmFnbWVudFZhcmlhYmxlcykgPT09IHRydWVcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgICAga2luZDogS2luZC5GUkFHTUVOVF9ERUZJTklUSU9OLFxuICAgICAgICBuYW1lOiB0aGlzLnBhcnNlRnJhZ21lbnROYW1lKCksXG4gICAgICAgIHZhcmlhYmxlRGVmaW5pdGlvbnM6IHRoaXMucGFyc2VWYXJpYWJsZURlZmluaXRpb25zKCksXG4gICAgICAgIHR5cGVDb25kaXRpb246ICh0aGlzLmV4cGVjdEtleXdvcmQoJ29uJyksIHRoaXMucGFyc2VOYW1lZFR5cGUoKSksXG4gICAgICAgIGRpcmVjdGl2ZXM6IHRoaXMucGFyc2VEaXJlY3RpdmVzKGZhbHNlKSxcbiAgICAgICAgc2VsZWN0aW9uU2V0OiB0aGlzLnBhcnNlU2VsZWN0aW9uU2V0KCksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLkZSQUdNRU5UX0RFRklOSVRJT04sXG4gICAgICBuYW1lOiB0aGlzLnBhcnNlRnJhZ21lbnROYW1lKCksXG4gICAgICB0eXBlQ29uZGl0aW9uOiAodGhpcy5leHBlY3RLZXl3b3JkKCdvbicpLCB0aGlzLnBhcnNlTmFtZWRUeXBlKCkpLFxuICAgICAgZGlyZWN0aXZlczogdGhpcy5wYXJzZURpcmVjdGl2ZXMoZmFsc2UpLFxuICAgICAgc2VsZWN0aW9uU2V0OiB0aGlzLnBhcnNlU2VsZWN0aW9uU2V0KCksXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEZyYWdtZW50TmFtZSA6IE5hbWUgYnV0IG5vdCBgb25gXG4gICAqL1xuXG4gIHBhcnNlRnJhZ21lbnROYW1lKCkge1xuICAgIGlmICh0aGlzLl9sZXhlci50b2tlbi52YWx1ZSA9PT0gJ29uJykge1xuICAgICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucGFyc2VOYW1lKCk7XG4gIH0gLy8gSW1wbGVtZW50cyB0aGUgcGFyc2luZyBydWxlcyBpbiB0aGUgVmFsdWVzIHNlY3Rpb24uXG5cbiAgLyoqXG4gICAqIFZhbHVlW0NvbnN0XSA6XG4gICAqICAgLSBbfkNvbnN0XSBWYXJpYWJsZVxuICAgKiAgIC0gSW50VmFsdWVcbiAgICogICAtIEZsb2F0VmFsdWVcbiAgICogICAtIFN0cmluZ1ZhbHVlXG4gICAqICAgLSBCb29sZWFuVmFsdWVcbiAgICogICAtIE51bGxWYWx1ZVxuICAgKiAgIC0gRW51bVZhbHVlXG4gICAqICAgLSBMaXN0VmFsdWVbP0NvbnN0XVxuICAgKiAgIC0gT2JqZWN0VmFsdWVbP0NvbnN0XVxuICAgKlxuICAgKiBCb29sZWFuVmFsdWUgOiBvbmUgb2YgYHRydWVgIGBmYWxzZWBcbiAgICpcbiAgICogTnVsbFZhbHVlIDogYG51bGxgXG4gICAqXG4gICAqIEVudW1WYWx1ZSA6IE5hbWUgYnV0IG5vdCBgdHJ1ZWAsIGBmYWxzZWAgb3IgYG51bGxgXG4gICAqL1xuXG4gIHBhcnNlVmFsdWVMaXRlcmFsKGlzQ29uc3QpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuX2xleGVyLnRva2VuO1xuXG4gICAgc3dpdGNoICh0b2tlbi5raW5kKSB7XG4gICAgICBjYXNlIFRva2VuS2luZC5CUkFDS0VUX0w6XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlTGlzdChpc0NvbnN0KTtcblxuICAgICAgY2FzZSBUb2tlbktpbmQuQlJBQ0VfTDpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VPYmplY3QoaXNDb25zdCk7XG5cbiAgICAgIGNhc2UgVG9rZW5LaW5kLklOVDpcbiAgICAgICAgdGhpcy5fbGV4ZXIuYWR2YW5jZSgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm5vZGUodG9rZW4sIHtcbiAgICAgICAgICBraW5kOiBLaW5kLklOVCxcbiAgICAgICAgICB2YWx1ZTogdG9rZW4udmFsdWUsXG4gICAgICAgIH0pO1xuXG4gICAgICBjYXNlIFRva2VuS2luZC5GTE9BVDpcbiAgICAgICAgdGhpcy5fbGV4ZXIuYWR2YW5jZSgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm5vZGUodG9rZW4sIHtcbiAgICAgICAgICBraW5kOiBLaW5kLkZMT0FULFxuICAgICAgICAgIHZhbHVlOiB0b2tlbi52YWx1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgIGNhc2UgVG9rZW5LaW5kLlNUUklORzpcbiAgICAgIGNhc2UgVG9rZW5LaW5kLkJMT0NLX1NUUklORzpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VTdHJpbmdMaXRlcmFsKCk7XG5cbiAgICAgIGNhc2UgVG9rZW5LaW5kLk5BTUU6XG4gICAgICAgIHRoaXMuX2xleGVyLmFkdmFuY2UoKTtcblxuICAgICAgICBzd2l0Y2ggKHRva2VuLnZhbHVlKSB7XG4gICAgICAgICAgY2FzZSAndHJ1ZSc6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlKHRva2VuLCB7XG4gICAgICAgICAgICAgIGtpbmQ6IEtpbmQuQk9PTEVBTixcbiAgICAgICAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNhc2UgJ2ZhbHNlJzpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5vZGUodG9rZW4sIHtcbiAgICAgICAgICAgICAga2luZDogS2luZC5CT09MRUFOLFxuICAgICAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZSh0b2tlbiwge1xuICAgICAgICAgICAgICBraW5kOiBLaW5kLk5VTEwsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ub2RlKHRva2VuLCB7XG4gICAgICAgICAgICAgIGtpbmQ6IEtpbmQuRU5VTSxcbiAgICAgICAgICAgICAgdmFsdWU6IHRva2VuLnZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUb2tlbktpbmQuRE9MTEFSOlxuICAgICAgICBpZiAoaXNDb25zdCkge1xuICAgICAgICAgIHRoaXMuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkRPTExBUik7XG5cbiAgICAgICAgICBpZiAodGhpcy5fbGV4ZXIudG9rZW4ua2luZCA9PT0gVG9rZW5LaW5kLk5BTUUpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhck5hbWUgPSB0aGlzLl9sZXhlci50b2tlbi52YWx1ZTtcbiAgICAgICAgICAgIHRocm93IHN5bnRheEVycm9yKFxuICAgICAgICAgICAgICB0aGlzLl9sZXhlci5zb3VyY2UsXG4gICAgICAgICAgICAgIHRva2VuLnN0YXJ0LFxuICAgICAgICAgICAgICBgVW5leHBlY3RlZCB2YXJpYWJsZSBcIiQke3Zhck5hbWV9XCIgaW4gY29uc3RhbnQgdmFsdWUuYCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IHRoaXMudW5leHBlY3RlZCh0b2tlbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VWYXJpYWJsZSgpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZUNvbnN0VmFsdWVMaXRlcmFsKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlVmFsdWVMaXRlcmFsKHRydWUpO1xuICB9XG5cbiAgcGFyc2VTdHJpbmdMaXRlcmFsKCkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5fbGV4ZXIudG9rZW47XG5cbiAgICB0aGlzLl9sZXhlci5hZHZhbmNlKCk7XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlKHRva2VuLCB7XG4gICAgICBraW5kOiBLaW5kLlNUUklORyxcbiAgICAgIHZhbHVlOiB0b2tlbi52YWx1ZSxcbiAgICAgIGJsb2NrOiB0b2tlbi5raW5kID09PSBUb2tlbktpbmQuQkxPQ0tfU1RSSU5HLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBMaXN0VmFsdWVbQ29uc3RdIDpcbiAgICogICAtIFsgXVxuICAgKiAgIC0gWyBWYWx1ZVs/Q29uc3RdKyBdXG4gICAqL1xuXG4gIHBhcnNlTGlzdChpc0NvbnN0KSB7XG4gICAgY29uc3QgaXRlbSA9ICgpID0+IHRoaXMucGFyc2VWYWx1ZUxpdGVyYWwoaXNDb25zdCk7XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlKHRoaXMuX2xleGVyLnRva2VuLCB7XG4gICAgICBraW5kOiBLaW5kLkxJU1QsXG4gICAgICB2YWx1ZXM6IHRoaXMuYW55KFRva2VuS2luZC5CUkFDS0VUX0wsIGl0ZW0sIFRva2VuS2luZC5CUkFDS0VUX1IpLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBgYGBcbiAgICogT2JqZWN0VmFsdWVbQ29uc3RdIDpcbiAgICogICAtIHsgfVxuICAgKiAgIC0geyBPYmplY3RGaWVsZFs/Q29uc3RdKyB9XG4gICAqIGBgYFxuICAgKi9cblxuICBwYXJzZU9iamVjdChpc0NvbnN0KSB7XG4gICAgY29uc3QgaXRlbSA9ICgpID0+IHRoaXMucGFyc2VPYmplY3RGaWVsZChpc0NvbnN0KTtcblxuICAgIHJldHVybiB0aGlzLm5vZGUodGhpcy5fbGV4ZXIudG9rZW4sIHtcbiAgICAgIGtpbmQ6IEtpbmQuT0JKRUNULFxuICAgICAgZmllbGRzOiB0aGlzLmFueShUb2tlbktpbmQuQlJBQ0VfTCwgaXRlbSwgVG9rZW5LaW5kLkJSQUNFX1IpLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBPYmplY3RGaWVsZFtDb25zdF0gOiBOYW1lIDogVmFsdWVbP0NvbnN0XVxuICAgKi9cblxuICBwYXJzZU9iamVjdEZpZWxkKGlzQ29uc3QpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIHRoaXMuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkNPTE9OKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLk9CSkVDVF9GSUVMRCxcbiAgICAgIG5hbWUsXG4gICAgICB2YWx1ZTogdGhpcy5wYXJzZVZhbHVlTGl0ZXJhbChpc0NvbnN0KSxcbiAgICB9KTtcbiAgfSAvLyBJbXBsZW1lbnRzIHRoZSBwYXJzaW5nIHJ1bGVzIGluIHRoZSBEaXJlY3RpdmVzIHNlY3Rpb24uXG5cbiAgLyoqXG4gICAqIERpcmVjdGl2ZXNbQ29uc3RdIDogRGlyZWN0aXZlWz9Db25zdF0rXG4gICAqL1xuXG4gIHBhcnNlRGlyZWN0aXZlcyhpc0NvbnN0KSB7XG4gICAgY29uc3QgZGlyZWN0aXZlcyA9IFtdO1xuXG4gICAgd2hpbGUgKHRoaXMucGVlayhUb2tlbktpbmQuQVQpKSB7XG4gICAgICBkaXJlY3RpdmVzLnB1c2godGhpcy5wYXJzZURpcmVjdGl2ZShpc0NvbnN0KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpcmVjdGl2ZXM7XG4gIH1cblxuICBwYXJzZUNvbnN0RGlyZWN0aXZlcygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZURpcmVjdGl2ZXModHJ1ZSk7XG4gIH1cbiAgLyoqXG4gICAqIGBgYFxuICAgKiBEaXJlY3RpdmVbQ29uc3RdIDogQCBOYW1lIEFyZ3VtZW50c1s/Q29uc3RdP1xuICAgKiBgYGBcbiAgICovXG5cbiAgcGFyc2VEaXJlY3RpdmUoaXNDb25zdCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgdGhpcy5leHBlY3RUb2tlbihUb2tlbktpbmQuQVQpO1xuICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgIGtpbmQ6IEtpbmQuRElSRUNUSVZFLFxuICAgICAgbmFtZTogdGhpcy5wYXJzZU5hbWUoKSxcbiAgICAgIGFyZ3VtZW50czogdGhpcy5wYXJzZUFyZ3VtZW50cyhpc0NvbnN0KSxcbiAgICB9KTtcbiAgfSAvLyBJbXBsZW1lbnRzIHRoZSBwYXJzaW5nIHJ1bGVzIGluIHRoZSBUeXBlcyBzZWN0aW9uLlxuXG4gIC8qKlxuICAgKiBUeXBlIDpcbiAgICogICAtIE5hbWVkVHlwZVxuICAgKiAgIC0gTGlzdFR5cGVcbiAgICogICAtIE5vbk51bGxUeXBlXG4gICAqL1xuXG4gIHBhcnNlVHlwZVJlZmVyZW5jZSgpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIGxldCB0eXBlO1xuXG4gICAgaWYgKHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihUb2tlbktpbmQuQlJBQ0tFVF9MKSkge1xuICAgICAgY29uc3QgaW5uZXJUeXBlID0gdGhpcy5wYXJzZVR5cGVSZWZlcmVuY2UoKTtcbiAgICAgIHRoaXMuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkJSQUNLRVRfUik7XG4gICAgICB0eXBlID0gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICAgIGtpbmQ6IEtpbmQuTElTVF9UWVBFLFxuICAgICAgICB0eXBlOiBpbm5lclR5cGUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHlwZSA9IHRoaXMucGFyc2VOYW1lZFR5cGUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5leHBlY3RPcHRpb25hbFRva2VuKFRva2VuS2luZC5CQU5HKSkge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZShzdGFydCwge1xuICAgICAgICBraW5kOiBLaW5kLk5PTl9OVUxMX1RZUEUsXG4gICAgICAgIHR5cGUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuICAvKipcbiAgICogTmFtZWRUeXBlIDogTmFtZVxuICAgKi9cblxuICBwYXJzZU5hbWVkVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHRoaXMuX2xleGVyLnRva2VuLCB7XG4gICAgICBraW5kOiBLaW5kLk5BTUVEX1RZUEUsXG4gICAgICBuYW1lOiB0aGlzLnBhcnNlTmFtZSgpLFxuICAgIH0pO1xuICB9IC8vIEltcGxlbWVudHMgdGhlIHBhcnNpbmcgcnVsZXMgaW4gdGhlIFR5cGUgRGVmaW5pdGlvbiBzZWN0aW9uLlxuXG4gIHBlZWtEZXNjcmlwdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5wZWVrKFRva2VuS2luZC5TVFJJTkcpIHx8IHRoaXMucGVlayhUb2tlbktpbmQuQkxPQ0tfU1RSSU5HKTtcbiAgfVxuICAvKipcbiAgICogRGVzY3JpcHRpb24gOiBTdHJpbmdWYWx1ZVxuICAgKi9cblxuICBwYXJzZURlc2NyaXB0aW9uKCkge1xuICAgIGlmICh0aGlzLnBlZWtEZXNjcmlwdGlvbigpKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZVN0cmluZ0xpdGVyYWwoKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIGBgYFxuICAgKiBTY2hlbWFEZWZpbml0aW9uIDogRGVzY3JpcHRpb24/IHNjaGVtYSBEaXJlY3RpdmVzW0NvbnN0XT8geyBPcGVyYXRpb25UeXBlRGVmaW5pdGlvbisgfVxuICAgKiBgYGBcbiAgICovXG5cbiAgcGFyc2VTY2hlbWFEZWZpbml0aW9uKCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLnBhcnNlRGVzY3JpcHRpb24oKTtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ3NjaGVtYScpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG4gICAgY29uc3Qgb3BlcmF0aW9uVHlwZXMgPSB0aGlzLm1hbnkoXG4gICAgICBUb2tlbktpbmQuQlJBQ0VfTCxcbiAgICAgIHRoaXMucGFyc2VPcGVyYXRpb25UeXBlRGVmaW5pdGlvbixcbiAgICAgIFRva2VuS2luZC5CUkFDRV9SLFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMubm9kZShzdGFydCwge1xuICAgICAga2luZDogS2luZC5TQ0hFTUFfREVGSU5JVElPTixcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICAgIG9wZXJhdGlvblR5cGVzLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBPcGVyYXRpb25UeXBlRGVmaW5pdGlvbiA6IE9wZXJhdGlvblR5cGUgOiBOYW1lZFR5cGVcbiAgICovXG5cbiAgcGFyc2VPcGVyYXRpb25UeXBlRGVmaW5pdGlvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIGNvbnN0IG9wZXJhdGlvbiA9IHRoaXMucGFyc2VPcGVyYXRpb25UeXBlKCk7XG4gICAgdGhpcy5leHBlY3RUb2tlbihUb2tlbktpbmQuQ09MT04pO1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnBhcnNlTmFtZWRUeXBlKCk7XG4gICAgcmV0dXJuIHRoaXMubm9kZShzdGFydCwge1xuICAgICAga2luZDogS2luZC5PUEVSQVRJT05fVFlQRV9ERUZJTklUSU9OLFxuICAgICAgb3BlcmF0aW9uLFxuICAgICAgdHlwZSxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogU2NhbGFyVHlwZURlZmluaXRpb24gOiBEZXNjcmlwdGlvbj8gc2NhbGFyIE5hbWUgRGlyZWN0aXZlc1tDb25zdF0/XG4gICAqL1xuXG4gIHBhcnNlU2NhbGFyVHlwZURlZmluaXRpb24oKSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHRoaXMucGFyc2VEZXNjcmlwdGlvbigpO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnc2NhbGFyJyk7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgY29uc3QgZGlyZWN0aXZlcyA9IHRoaXMucGFyc2VDb25zdERpcmVjdGl2ZXMoKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLlNDQUxBUl9UWVBFX0RFRklOSVRJT04sXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIG5hbWUsXG4gICAgICBkaXJlY3RpdmVzLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBPYmplY3RUeXBlRGVmaW5pdGlvbiA6XG4gICAqICAgRGVzY3JpcHRpb24/XG4gICAqICAgdHlwZSBOYW1lIEltcGxlbWVudHNJbnRlcmZhY2VzPyBEaXJlY3RpdmVzW0NvbnN0XT8gRmllbGRzRGVmaW5pdGlvbj9cbiAgICovXG5cbiAgcGFyc2VPYmplY3RUeXBlRGVmaW5pdGlvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5wYXJzZURlc2NyaXB0aW9uKCk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCd0eXBlJyk7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgY29uc3QgaW50ZXJmYWNlcyA9IHRoaXMucGFyc2VJbXBsZW1lbnRzSW50ZXJmYWNlcygpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5wYXJzZUZpZWxkc0RlZmluaXRpb24oKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLk9CSkVDVF9UWVBFX0RFRklOSVRJT04sXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIG5hbWUsXG4gICAgICBpbnRlcmZhY2VzLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICAgIGZpZWxkcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogSW1wbGVtZW50c0ludGVyZmFjZXMgOlxuICAgKiAgIC0gaW1wbGVtZW50cyBgJmA/IE5hbWVkVHlwZVxuICAgKiAgIC0gSW1wbGVtZW50c0ludGVyZmFjZXMgJiBOYW1lZFR5cGVcbiAgICovXG5cbiAgcGFyc2VJbXBsZW1lbnRzSW50ZXJmYWNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5leHBlY3RPcHRpb25hbEtleXdvcmQoJ2ltcGxlbWVudHMnKVxuICAgICAgPyB0aGlzLmRlbGltaXRlZE1hbnkoVG9rZW5LaW5kLkFNUCwgdGhpcy5wYXJzZU5hbWVkVHlwZSlcbiAgICAgIDogW107XG4gIH1cbiAgLyoqXG4gICAqIGBgYFxuICAgKiBGaWVsZHNEZWZpbml0aW9uIDogeyBGaWVsZERlZmluaXRpb24rIH1cbiAgICogYGBgXG4gICAqL1xuXG4gIHBhcnNlRmllbGRzRGVmaW5pdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25hbE1hbnkoXG4gICAgICBUb2tlbktpbmQuQlJBQ0VfTCxcbiAgICAgIHRoaXMucGFyc2VGaWVsZERlZmluaXRpb24sXG4gICAgICBUb2tlbktpbmQuQlJBQ0VfUixcbiAgICApO1xuICB9XG4gIC8qKlxuICAgKiBGaWVsZERlZmluaXRpb24gOlxuICAgKiAgIC0gRGVzY3JpcHRpb24/IE5hbWUgQXJndW1lbnRzRGVmaW5pdGlvbj8gOiBUeXBlIERpcmVjdGl2ZXNbQ29uc3RdP1xuICAgKi9cblxuICBwYXJzZUZpZWxkRGVmaW5pdGlvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5wYXJzZURlc2NyaXB0aW9uKCk7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgY29uc3QgYXJncyA9IHRoaXMucGFyc2VBcmd1bWVudERlZnMoKTtcbiAgICB0aGlzLmV4cGVjdFRva2VuKFRva2VuS2luZC5DT0xPTik7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMucGFyc2VUeXBlUmVmZXJlbmNlKCk7XG4gICAgY29uc3QgZGlyZWN0aXZlcyA9IHRoaXMucGFyc2VDb25zdERpcmVjdGl2ZXMoKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLkZJRUxEX0RFRklOSVRJT04sXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIG5hbWUsXG4gICAgICBhcmd1bWVudHM6IGFyZ3MsXG4gICAgICB0eXBlLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQXJndW1lbnRzRGVmaW5pdGlvbiA6ICggSW5wdXRWYWx1ZURlZmluaXRpb24rIClcbiAgICovXG5cbiAgcGFyc2VBcmd1bWVudERlZnMoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uYWxNYW55KFxuICAgICAgVG9rZW5LaW5kLlBBUkVOX0wsXG4gICAgICB0aGlzLnBhcnNlSW5wdXRWYWx1ZURlZixcbiAgICAgIFRva2VuS2luZC5QQVJFTl9SLFxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqIElucHV0VmFsdWVEZWZpbml0aW9uIDpcbiAgICogICAtIERlc2NyaXB0aW9uPyBOYW1lIDogVHlwZSBEZWZhdWx0VmFsdWU/IERpcmVjdGl2ZXNbQ29uc3RdP1xuICAgKi9cblxuICBwYXJzZUlucHV0VmFsdWVEZWYoKSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHRoaXMucGFyc2VEZXNjcmlwdGlvbigpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIHRoaXMuZXhwZWN0VG9rZW4oVG9rZW5LaW5kLkNPTE9OKTtcbiAgICBjb25zdCB0eXBlID0gdGhpcy5wYXJzZVR5cGVSZWZlcmVuY2UoKTtcbiAgICBsZXQgZGVmYXVsdFZhbHVlO1xuXG4gICAgaWYgKHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihUb2tlbktpbmQuRVFVQUxTKSkge1xuICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy5wYXJzZUNvbnN0VmFsdWVMaXRlcmFsKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGlyZWN0aXZlcyA9IHRoaXMucGFyc2VDb25zdERpcmVjdGl2ZXMoKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLklOUFVUX1ZBTFVFX0RFRklOSVRJT04sXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIG5hbWUsXG4gICAgICB0eXBlLFxuICAgICAgZGVmYXVsdFZhbHVlLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogSW50ZXJmYWNlVHlwZURlZmluaXRpb24gOlxuICAgKiAgIC0gRGVzY3JpcHRpb24/IGludGVyZmFjZSBOYW1lIERpcmVjdGl2ZXNbQ29uc3RdPyBGaWVsZHNEZWZpbml0aW9uP1xuICAgKi9cblxuICBwYXJzZUludGVyZmFjZVR5cGVEZWZpbml0aW9uKCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLnBhcnNlRGVzY3JpcHRpb24oKTtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2ludGVyZmFjZScpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIGNvbnN0IGludGVyZmFjZXMgPSB0aGlzLnBhcnNlSW1wbGVtZW50c0ludGVyZmFjZXMoKTtcbiAgICBjb25zdCBkaXJlY3RpdmVzID0gdGhpcy5wYXJzZUNvbnN0RGlyZWN0aXZlcygpO1xuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMucGFyc2VGaWVsZHNEZWZpbml0aW9uKCk7XG4gICAgcmV0dXJuIHRoaXMubm9kZShzdGFydCwge1xuICAgICAga2luZDogS2luZC5JTlRFUkZBQ0VfVFlQRV9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBuYW1lLFxuICAgICAgaW50ZXJmYWNlcyxcbiAgICAgIGRpcmVjdGl2ZXMsXG4gICAgICBmaWVsZHMsXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIFVuaW9uVHlwZURlZmluaXRpb24gOlxuICAgKiAgIC0gRGVzY3JpcHRpb24/IHVuaW9uIE5hbWUgRGlyZWN0aXZlc1tDb25zdF0/IFVuaW9uTWVtYmVyVHlwZXM/XG4gICAqL1xuXG4gIHBhcnNlVW5pb25UeXBlRGVmaW5pdGlvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5wYXJzZURlc2NyaXB0aW9uKCk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCd1bmlvbicpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLnBhcnNlVW5pb25NZW1iZXJUeXBlcygpO1xuICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgIGtpbmQ6IEtpbmQuVU5JT05fVFlQRV9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBuYW1lLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICAgIHR5cGVzLFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBVbmlvbk1lbWJlclR5cGVzIDpcbiAgICogICAtID0gYHxgPyBOYW1lZFR5cGVcbiAgICogICAtIFVuaW9uTWVtYmVyVHlwZXMgfCBOYW1lZFR5cGVcbiAgICovXG5cbiAgcGFyc2VVbmlvbk1lbWJlclR5cGVzKCkge1xuICAgIHJldHVybiB0aGlzLmV4cGVjdE9wdGlvbmFsVG9rZW4oVG9rZW5LaW5kLkVRVUFMUylcbiAgICAgID8gdGhpcy5kZWxpbWl0ZWRNYW55KFRva2VuS2luZC5QSVBFLCB0aGlzLnBhcnNlTmFtZWRUeXBlKVxuICAgICAgOiBbXTtcbiAgfVxuICAvKipcbiAgICogRW51bVR5cGVEZWZpbml0aW9uIDpcbiAgICogICAtIERlc2NyaXB0aW9uPyBlbnVtIE5hbWUgRGlyZWN0aXZlc1tDb25zdF0/IEVudW1WYWx1ZXNEZWZpbml0aW9uP1xuICAgKi9cblxuICBwYXJzZUVudW1UeXBlRGVmaW5pdGlvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5wYXJzZURlc2NyaXB0aW9uKCk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCdlbnVtJyk7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgY29uc3QgZGlyZWN0aXZlcyA9IHRoaXMucGFyc2VDb25zdERpcmVjdGl2ZXMoKTtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnBhcnNlRW51bVZhbHVlc0RlZmluaXRpb24oKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLkVOVU1fVFlQRV9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBuYW1lLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICAgIHZhbHVlcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogYGBgXG4gICAqIEVudW1WYWx1ZXNEZWZpbml0aW9uIDogeyBFbnVtVmFsdWVEZWZpbml0aW9uKyB9XG4gICAqIGBgYFxuICAgKi9cblxuICBwYXJzZUVudW1WYWx1ZXNEZWZpbml0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbmFsTWFueShcbiAgICAgIFRva2VuS2luZC5CUkFDRV9MLFxuICAgICAgdGhpcy5wYXJzZUVudW1WYWx1ZURlZmluaXRpb24sXG4gICAgICBUb2tlbktpbmQuQlJBQ0VfUixcbiAgICApO1xuICB9XG4gIC8qKlxuICAgKiBFbnVtVmFsdWVEZWZpbml0aW9uIDogRGVzY3JpcHRpb24/IEVudW1WYWx1ZSBEaXJlY3RpdmVzW0NvbnN0XT9cbiAgICovXG5cbiAgcGFyc2VFbnVtVmFsdWVEZWZpbml0aW9uKCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLnBhcnNlRGVzY3JpcHRpb24oKTtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5wYXJzZUVudW1WYWx1ZU5hbWUoKTtcbiAgICBjb25zdCBkaXJlY3RpdmVzID0gdGhpcy5wYXJzZUNvbnN0RGlyZWN0aXZlcygpO1xuICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgIGtpbmQ6IEtpbmQuRU5VTV9WQUxVRV9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBuYW1lLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogRW51bVZhbHVlIDogTmFtZSBidXQgbm90IGB0cnVlYCwgYGZhbHNlYCBvciBgbnVsbGBcbiAgICovXG5cbiAgcGFyc2VFbnVtVmFsdWVOYW1lKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuX2xleGVyLnRva2VuLnZhbHVlID09PSAndHJ1ZScgfHxcbiAgICAgIHRoaXMuX2xleGVyLnRva2VuLnZhbHVlID09PSAnZmFsc2UnIHx8XG4gICAgICB0aGlzLl9sZXhlci50b2tlbi52YWx1ZSA9PT0gJ251bGwnXG4gICAgKSB7XG4gICAgICB0aHJvdyBzeW50YXhFcnJvcihcbiAgICAgICAgdGhpcy5fbGV4ZXIuc291cmNlLFxuICAgICAgICB0aGlzLl9sZXhlci50b2tlbi5zdGFydCxcbiAgICAgICAgYCR7Z2V0VG9rZW5EZXNjKFxuICAgICAgICAgIHRoaXMuX2xleGVyLnRva2VuLFxuICAgICAgICApfSBpcyByZXNlcnZlZCBhbmQgY2Fubm90IGJlIHVzZWQgZm9yIGFuIGVudW0gdmFsdWUuYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucGFyc2VOYW1lKCk7XG4gIH1cbiAgLyoqXG4gICAqIElucHV0T2JqZWN0VHlwZURlZmluaXRpb24gOlxuICAgKiAgIC0gRGVzY3JpcHRpb24/IGlucHV0IE5hbWUgRGlyZWN0aXZlc1tDb25zdF0/IElucHV0RmllbGRzRGVmaW5pdGlvbj9cbiAgICovXG5cbiAgcGFyc2VJbnB1dE9iamVjdFR5cGVEZWZpbml0aW9uKCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLnBhcnNlRGVzY3JpcHRpb24oKTtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2lucHV0Jyk7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgY29uc3QgZGlyZWN0aXZlcyA9IHRoaXMucGFyc2VDb25zdERpcmVjdGl2ZXMoKTtcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLnBhcnNlSW5wdXRGaWVsZHNEZWZpbml0aW9uKCk7XG4gICAgcmV0dXJuIHRoaXMubm9kZShzdGFydCwge1xuICAgICAga2luZDogS2luZC5JTlBVVF9PQkpFQ1RfVFlQRV9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBuYW1lLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICAgIGZpZWxkcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogYGBgXG4gICAqIElucHV0RmllbGRzRGVmaW5pdGlvbiA6IHsgSW5wdXRWYWx1ZURlZmluaXRpb24rIH1cbiAgICogYGBgXG4gICAqL1xuXG4gIHBhcnNlSW5wdXRGaWVsZHNEZWZpbml0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbmFsTWFueShcbiAgICAgIFRva2VuS2luZC5CUkFDRV9MLFxuICAgICAgdGhpcy5wYXJzZUlucHV0VmFsdWVEZWYsXG4gICAgICBUb2tlbktpbmQuQlJBQ0VfUixcbiAgICApO1xuICB9XG4gIC8qKlxuICAgKiBUeXBlU3lzdGVtRXh0ZW5zaW9uIDpcbiAgICogICAtIFNjaGVtYUV4dGVuc2lvblxuICAgKiAgIC0gVHlwZUV4dGVuc2lvblxuICAgKlxuICAgKiBUeXBlRXh0ZW5zaW9uIDpcbiAgICogICAtIFNjYWxhclR5cGVFeHRlbnNpb25cbiAgICogICAtIE9iamVjdFR5cGVFeHRlbnNpb25cbiAgICogICAtIEludGVyZmFjZVR5cGVFeHRlbnNpb25cbiAgICogICAtIFVuaW9uVHlwZUV4dGVuc2lvblxuICAgKiAgIC0gRW51bVR5cGVFeHRlbnNpb25cbiAgICogICAtIElucHV0T2JqZWN0VHlwZURlZmluaXRpb25cbiAgICovXG5cbiAgcGFyc2VUeXBlU3lzdGVtRXh0ZW5zaW9uKCkge1xuICAgIGNvbnN0IGtleXdvcmRUb2tlbiA9IHRoaXMuX2xleGVyLmxvb2thaGVhZCgpO1xuXG4gICAgaWYgKGtleXdvcmRUb2tlbi5raW5kID09PSBUb2tlbktpbmQuTkFNRSkge1xuICAgICAgc3dpdGNoIChrZXl3b3JkVG9rZW4udmFsdWUpIHtcbiAgICAgICAgY2FzZSAnc2NoZW1hJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZVNjaGVtYUV4dGVuc2lvbigpO1xuXG4gICAgICAgIGNhc2UgJ3NjYWxhcic6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VTY2FsYXJUeXBlRXh0ZW5zaW9uKCk7XG5cbiAgICAgICAgY2FzZSAndHlwZSc6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VPYmplY3RUeXBlRXh0ZW5zaW9uKCk7XG5cbiAgICAgICAgY2FzZSAnaW50ZXJmYWNlJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUludGVyZmFjZVR5cGVFeHRlbnNpb24oKTtcblxuICAgICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VVbmlvblR5cGVFeHRlbnNpb24oKTtcblxuICAgICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUVudW1UeXBlRXh0ZW5zaW9uKCk7XG5cbiAgICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlSW5wdXRPYmplY3RUeXBlRXh0ZW5zaW9uKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKGtleXdvcmRUb2tlbik7XG4gIH1cbiAgLyoqXG4gICAqIGBgYFxuICAgKiBTY2hlbWFFeHRlbnNpb24gOlxuICAgKiAgLSBleHRlbmQgc2NoZW1hIERpcmVjdGl2ZXNbQ29uc3RdPyB7IE9wZXJhdGlvblR5cGVEZWZpbml0aW9uKyB9XG4gICAqICAtIGV4dGVuZCBzY2hlbWEgRGlyZWN0aXZlc1tDb25zdF1cbiAgICogYGBgXG4gICAqL1xuXG4gIHBhcnNlU2NoZW1hRXh0ZW5zaW9uKCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCdleHRlbmQnKTtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ3NjaGVtYScpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG4gICAgY29uc3Qgb3BlcmF0aW9uVHlwZXMgPSB0aGlzLm9wdGlvbmFsTWFueShcbiAgICAgIFRva2VuS2luZC5CUkFDRV9MLFxuICAgICAgdGhpcy5wYXJzZU9wZXJhdGlvblR5cGVEZWZpbml0aW9uLFxuICAgICAgVG9rZW5LaW5kLkJSQUNFX1IsXG4gICAgKTtcblxuICAgIGlmIChkaXJlY3RpdmVzLmxlbmd0aCA9PT0gMCAmJiBvcGVyYXRpb25UeXBlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IHRoaXMudW5leHBlY3RlZCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgIGtpbmQ6IEtpbmQuU0NIRU1BX0VYVEVOU0lPTixcbiAgICAgIGRpcmVjdGl2ZXMsXG4gICAgICBvcGVyYXRpb25UeXBlcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogU2NhbGFyVHlwZUV4dGVuc2lvbiA6XG4gICAqICAgLSBleHRlbmQgc2NhbGFyIE5hbWUgRGlyZWN0aXZlc1tDb25zdF1cbiAgICovXG5cbiAgcGFyc2VTY2FsYXJUeXBlRXh0ZW5zaW9uKCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5fbGV4ZXIudG9rZW47XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCdleHRlbmQnKTtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ3NjYWxhcicpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG5cbiAgICBpZiAoZGlyZWN0aXZlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IHRoaXMudW5leHBlY3RlZCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgIGtpbmQ6IEtpbmQuU0NBTEFSX1RZUEVfRVhURU5TSU9OLFxuICAgICAgbmFtZSxcbiAgICAgIGRpcmVjdGl2ZXMsXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIE9iamVjdFR5cGVFeHRlbnNpb24gOlxuICAgKiAgLSBleHRlbmQgdHlwZSBOYW1lIEltcGxlbWVudHNJbnRlcmZhY2VzPyBEaXJlY3RpdmVzW0NvbnN0XT8gRmllbGRzRGVmaW5pdGlvblxuICAgKiAgLSBleHRlbmQgdHlwZSBOYW1lIEltcGxlbWVudHNJbnRlcmZhY2VzPyBEaXJlY3RpdmVzW0NvbnN0XVxuICAgKiAgLSBleHRlbmQgdHlwZSBOYW1lIEltcGxlbWVudHNJbnRlcmZhY2VzXG4gICAqL1xuXG4gIHBhcnNlT2JqZWN0VHlwZUV4dGVuc2lvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZXh0ZW5kJyk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCd0eXBlJyk7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMucGFyc2VOYW1lKCk7XG4gICAgY29uc3QgaW50ZXJmYWNlcyA9IHRoaXMucGFyc2VJbXBsZW1lbnRzSW50ZXJmYWNlcygpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5wYXJzZUZpZWxkc0RlZmluaXRpb24oKTtcblxuICAgIGlmIChcbiAgICAgIGludGVyZmFjZXMubGVuZ3RoID09PSAwICYmXG4gICAgICBkaXJlY3RpdmVzLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgZmllbGRzLmxlbmd0aCA9PT0gMFxuICAgICkge1xuICAgICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubm9kZShzdGFydCwge1xuICAgICAga2luZDogS2luZC5PQkpFQ1RfVFlQRV9FWFRFTlNJT04sXG4gICAgICBuYW1lLFxuICAgICAgaW50ZXJmYWNlcyxcbiAgICAgIGRpcmVjdGl2ZXMsXG4gICAgICBmaWVsZHMsXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEludGVyZmFjZVR5cGVFeHRlbnNpb24gOlxuICAgKiAgLSBleHRlbmQgaW50ZXJmYWNlIE5hbWUgSW1wbGVtZW50c0ludGVyZmFjZXM/IERpcmVjdGl2ZXNbQ29uc3RdPyBGaWVsZHNEZWZpbml0aW9uXG4gICAqICAtIGV4dGVuZCBpbnRlcmZhY2UgTmFtZSBJbXBsZW1lbnRzSW50ZXJmYWNlcz8gRGlyZWN0aXZlc1tDb25zdF1cbiAgICogIC0gZXh0ZW5kIGludGVyZmFjZSBOYW1lIEltcGxlbWVudHNJbnRlcmZhY2VzXG4gICAqL1xuXG4gIHBhcnNlSW50ZXJmYWNlVHlwZUV4dGVuc2lvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZXh0ZW5kJyk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCdpbnRlcmZhY2UnKTtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5wYXJzZU5hbWUoKTtcbiAgICBjb25zdCBpbnRlcmZhY2VzID0gdGhpcy5wYXJzZUltcGxlbWVudHNJbnRlcmZhY2VzKCk7XG4gICAgY29uc3QgZGlyZWN0aXZlcyA9IHRoaXMucGFyc2VDb25zdERpcmVjdGl2ZXMoKTtcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLnBhcnNlRmllbGRzRGVmaW5pdGlvbigpO1xuXG4gICAgaWYgKFxuICAgICAgaW50ZXJmYWNlcy5sZW5ndGggPT09IDAgJiZcbiAgICAgIGRpcmVjdGl2ZXMubGVuZ3RoID09PSAwICYmXG4gICAgICBmaWVsZHMubGVuZ3RoID09PSAwXG4gICAgKSB7XG4gICAgICB0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLklOVEVSRkFDRV9UWVBFX0VYVEVOU0lPTixcbiAgICAgIG5hbWUsXG4gICAgICBpbnRlcmZhY2VzLFxuICAgICAgZGlyZWN0aXZlcyxcbiAgICAgIGZpZWxkcyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogVW5pb25UeXBlRXh0ZW5zaW9uIDpcbiAgICogICAtIGV4dGVuZCB1bmlvbiBOYW1lIERpcmVjdGl2ZXNbQ29uc3RdPyBVbmlvbk1lbWJlclR5cGVzXG4gICAqICAgLSBleHRlbmQgdW5pb24gTmFtZSBEaXJlY3RpdmVzW0NvbnN0XVxuICAgKi9cblxuICBwYXJzZVVuaW9uVHlwZUV4dGVuc2lvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZXh0ZW5kJyk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCd1bmlvbicpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLnBhcnNlVW5pb25NZW1iZXJUeXBlcygpO1xuXG4gICAgaWYgKGRpcmVjdGl2ZXMubGVuZ3RoID09PSAwICYmIHR5cGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubm9kZShzdGFydCwge1xuICAgICAga2luZDogS2luZC5VTklPTl9UWVBFX0VYVEVOU0lPTixcbiAgICAgIG5hbWUsXG4gICAgICBkaXJlY3RpdmVzLFxuICAgICAgdHlwZXMsXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEVudW1UeXBlRXh0ZW5zaW9uIDpcbiAgICogICAtIGV4dGVuZCBlbnVtIE5hbWUgRGlyZWN0aXZlc1tDb25zdF0/IEVudW1WYWx1ZXNEZWZpbml0aW9uXG4gICAqICAgLSBleHRlbmQgZW51bSBOYW1lIERpcmVjdGl2ZXNbQ29uc3RdXG4gICAqL1xuXG4gIHBhcnNlRW51bVR5cGVFeHRlbnNpb24oKSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICB0aGlzLmV4cGVjdEtleXdvcmQoJ2V4dGVuZCcpO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZW51bScpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5wYXJzZUVudW1WYWx1ZXNEZWZpbml0aW9uKCk7XG5cbiAgICBpZiAoZGlyZWN0aXZlcy5sZW5ndGggPT09IDAgJiYgdmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgdGhpcy51bmV4cGVjdGVkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubm9kZShzdGFydCwge1xuICAgICAga2luZDogS2luZC5FTlVNX1RZUEVfRVhURU5TSU9OLFxuICAgICAgbmFtZSxcbiAgICAgIGRpcmVjdGl2ZXMsXG4gICAgICB2YWx1ZXMsXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIElucHV0T2JqZWN0VHlwZUV4dGVuc2lvbiA6XG4gICAqICAgLSBleHRlbmQgaW5wdXQgTmFtZSBEaXJlY3RpdmVzW0NvbnN0XT8gSW5wdXRGaWVsZHNEZWZpbml0aW9uXG4gICAqICAgLSBleHRlbmQgaW5wdXQgTmFtZSBEaXJlY3RpdmVzW0NvbnN0XVxuICAgKi9cblxuICBwYXJzZUlucHV0T2JqZWN0VHlwZUV4dGVuc2lvbigpIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZXh0ZW5kJyk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCdpbnB1dCcpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIGNvbnN0IGRpcmVjdGl2ZXMgPSB0aGlzLnBhcnNlQ29uc3REaXJlY3RpdmVzKCk7XG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5wYXJzZUlucHV0RmllbGRzRGVmaW5pdGlvbigpO1xuXG4gICAgaWYgKGRpcmVjdGl2ZXMubGVuZ3RoID09PSAwICYmIGZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IHRoaXMudW5leHBlY3RlZCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm5vZGUoc3RhcnQsIHtcbiAgICAgIGtpbmQ6IEtpbmQuSU5QVVRfT0JKRUNUX1RZUEVfRVhURU5TSU9OLFxuICAgICAgbmFtZSxcbiAgICAgIGRpcmVjdGl2ZXMsXG4gICAgICBmaWVsZHMsXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIGBgYFxuICAgKiBEaXJlY3RpdmVEZWZpbml0aW9uIDpcbiAgICogICAtIERlc2NyaXB0aW9uPyBkaXJlY3RpdmUgQCBOYW1lIEFyZ3VtZW50c0RlZmluaXRpb24/IGByZXBlYXRhYmxlYD8gb24gRGlyZWN0aXZlTG9jYXRpb25zXG4gICAqIGBgYFxuICAgKi9cblxuICBwYXJzZURpcmVjdGl2ZURlZmluaXRpb24oKSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHRoaXMucGFyc2VEZXNjcmlwdGlvbigpO1xuICAgIHRoaXMuZXhwZWN0S2V5d29yZCgnZGlyZWN0aXZlJyk7XG4gICAgdGhpcy5leHBlY3RUb2tlbihUb2tlbktpbmQuQVQpO1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLnBhcnNlTmFtZSgpO1xuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLnBhcnNlQXJndW1lbnREZWZzKCk7XG4gICAgY29uc3QgcmVwZWF0YWJsZSA9IHRoaXMuZXhwZWN0T3B0aW9uYWxLZXl3b3JkKCdyZXBlYXRhYmxlJyk7XG4gICAgdGhpcy5leHBlY3RLZXl3b3JkKCdvbicpO1xuICAgIGNvbnN0IGxvY2F0aW9ucyA9IHRoaXMucGFyc2VEaXJlY3RpdmVMb2NhdGlvbnMoKTtcbiAgICByZXR1cm4gdGhpcy5ub2RlKHN0YXJ0LCB7XG4gICAgICBraW5kOiBLaW5kLkRJUkVDVElWRV9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBuYW1lLFxuICAgICAgYXJndW1lbnRzOiBhcmdzLFxuICAgICAgcmVwZWF0YWJsZSxcbiAgICAgIGxvY2F0aW9ucyxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogRGlyZWN0aXZlTG9jYXRpb25zIDpcbiAgICogICAtIGB8YD8gRGlyZWN0aXZlTG9jYXRpb25cbiAgICogICAtIERpcmVjdGl2ZUxvY2F0aW9ucyB8IERpcmVjdGl2ZUxvY2F0aW9uXG4gICAqL1xuXG4gIHBhcnNlRGlyZWN0aXZlTG9jYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLmRlbGltaXRlZE1hbnkoVG9rZW5LaW5kLlBJUEUsIHRoaXMucGFyc2VEaXJlY3RpdmVMb2NhdGlvbik7XG4gIH1cbiAgLypcbiAgICogRGlyZWN0aXZlTG9jYXRpb24gOlxuICAgKiAgIC0gRXhlY3V0YWJsZURpcmVjdGl2ZUxvY2F0aW9uXG4gICAqICAgLSBUeXBlU3lzdGVtRGlyZWN0aXZlTG9jYXRpb25cbiAgICpcbiAgICogRXhlY3V0YWJsZURpcmVjdGl2ZUxvY2F0aW9uIDogb25lIG9mXG4gICAqICAgYFFVRVJZYFxuICAgKiAgIGBNVVRBVElPTmBcbiAgICogICBgU1VCU0NSSVBUSU9OYFxuICAgKiAgIGBGSUVMRGBcbiAgICogICBgRlJBR01FTlRfREVGSU5JVElPTmBcbiAgICogICBgRlJBR01FTlRfU1BSRUFEYFxuICAgKiAgIGBJTkxJTkVfRlJBR01FTlRgXG4gICAqXG4gICAqIFR5cGVTeXN0ZW1EaXJlY3RpdmVMb2NhdGlvbiA6IG9uZSBvZlxuICAgKiAgIGBTQ0hFTUFgXG4gICAqICAgYFNDQUxBUmBcbiAgICogICBgT0JKRUNUYFxuICAgKiAgIGBGSUVMRF9ERUZJTklUSU9OYFxuICAgKiAgIGBBUkdVTUVOVF9ERUZJTklUSU9OYFxuICAgKiAgIGBJTlRFUkZBQ0VgXG4gICAqICAgYFVOSU9OYFxuICAgKiAgIGBFTlVNYFxuICAgKiAgIGBFTlVNX1ZBTFVFYFxuICAgKiAgIGBJTlBVVF9PQkpFQ1RgXG4gICAqICAgYElOUFVUX0ZJRUxEX0RFRklOSVRJT05gXG4gICAqL1xuXG4gIHBhcnNlRGlyZWN0aXZlTG9jYXRpb24oKSB7XG4gICAgY29uc3Qgc3RhcnQgPSB0aGlzLl9sZXhlci50b2tlbjtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5wYXJzZU5hbWUoKTtcblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoRGlyZWN0aXZlTG9jYXRpb24sIG5hbWUudmFsdWUpKSB7XG4gICAgICByZXR1cm4gbmFtZTtcbiAgICB9XG5cbiAgICB0aHJvdyB0aGlzLnVuZXhwZWN0ZWQoc3RhcnQpO1xuICB9IC8vIENvcmUgcGFyc2luZyB1dGlsaXR5IGZ1bmN0aW9uc1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbm9kZSB0aGF0LCBpZiBjb25maWd1cmVkIHRvIGRvIHNvLCBzZXRzIGEgXCJsb2NcIiBmaWVsZCBhcyBhXG4gICAqIGxvY2F0aW9uIG9iamVjdCwgdXNlZCB0byBpZGVudGlmeSB0aGUgcGxhY2UgaW4gdGhlIHNvdXJjZSB0aGF0IGNyZWF0ZWQgYVxuICAgKiBnaXZlbiBwYXJzZWQgb2JqZWN0LlxuICAgKi9cblxuICBub2RlKHN0YXJ0VG9rZW4sIG5vZGUpIHtcbiAgICB2YXIgX3RoaXMkX29wdGlvbnMyO1xuXG4gICAgaWYgKFxuICAgICAgKChfdGhpcyRfb3B0aW9uczIgPSB0aGlzLl9vcHRpb25zKSA9PT0gbnVsbCB8fCBfdGhpcyRfb3B0aW9uczIgPT09IHZvaWQgMFxuICAgICAgICA/IHZvaWQgMFxuICAgICAgICA6IF90aGlzJF9vcHRpb25zMi5ub0xvY2F0aW9uKSAhPT0gdHJ1ZVxuICAgICkge1xuICAgICAgbm9kZS5sb2MgPSBuZXcgTG9jYXRpb24oXG4gICAgICAgIHN0YXJ0VG9rZW4sXG4gICAgICAgIHRoaXMuX2xleGVyLmxhc3RUb2tlbixcbiAgICAgICAgdGhpcy5fbGV4ZXIuc291cmNlLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgbmV4dCB0b2tlbiBpcyBvZiBhIGdpdmVuIGtpbmRcbiAgICovXG5cbiAgcGVlayhraW5kKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xleGVyLnRva2VuLmtpbmQgPT09IGtpbmQ7XG4gIH1cbiAgLyoqXG4gICAqIElmIHRoZSBuZXh0IHRva2VuIGlzIG9mIHRoZSBnaXZlbiBraW5kLCByZXR1cm4gdGhhdCB0b2tlbiBhZnRlciBhZHZhbmNpbmcgdGhlIGxleGVyLlxuICAgKiBPdGhlcndpc2UsIGRvIG5vdCBjaGFuZ2UgdGhlIHBhcnNlciBzdGF0ZSBhbmQgdGhyb3cgYW4gZXJyb3IuXG4gICAqL1xuXG4gIGV4cGVjdFRva2VuKGtpbmQpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuX2xleGVyLnRva2VuO1xuXG4gICAgaWYgKHRva2VuLmtpbmQgPT09IGtpbmQpIHtcbiAgICAgIHRoaXMuX2xleGVyLmFkdmFuY2UoKTtcblxuICAgICAgcmV0dXJuIHRva2VuO1xuICAgIH1cblxuICAgIHRocm93IHN5bnRheEVycm9yKFxuICAgICAgdGhpcy5fbGV4ZXIuc291cmNlLFxuICAgICAgdG9rZW4uc3RhcnQsXG4gICAgICBgRXhwZWN0ZWQgJHtnZXRUb2tlbktpbmREZXNjKGtpbmQpfSwgZm91bmQgJHtnZXRUb2tlbkRlc2ModG9rZW4pfS5gLFxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqIElmIHRoZSBuZXh0IHRva2VuIGlzIG9mIHRoZSBnaXZlbiBraW5kLCByZXR1cm4gXCJ0cnVlXCIgYWZ0ZXIgYWR2YW5jaW5nIHRoZSBsZXhlci5cbiAgICogT3RoZXJ3aXNlLCBkbyBub3QgY2hhbmdlIHRoZSBwYXJzZXIgc3RhdGUgYW5kIHJldHVybiBcImZhbHNlXCIuXG4gICAqL1xuXG4gIGV4cGVjdE9wdGlvbmFsVG9rZW4oa2luZCkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5fbGV4ZXIudG9rZW47XG5cbiAgICBpZiAodG9rZW4ua2luZCA9PT0ga2luZCkge1xuICAgICAgdGhpcy5fbGV4ZXIuYWR2YW5jZSgpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLyoqXG4gICAqIElmIHRoZSBuZXh0IHRva2VuIGlzIGEgZ2l2ZW4ga2V5d29yZCwgYWR2YW5jZSB0aGUgbGV4ZXIuXG4gICAqIE90aGVyd2lzZSwgZG8gbm90IGNoYW5nZSB0aGUgcGFyc2VyIHN0YXRlIGFuZCB0aHJvdyBhbiBlcnJvci5cbiAgICovXG5cbiAgZXhwZWN0S2V5d29yZCh2YWx1ZSkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5fbGV4ZXIudG9rZW47XG5cbiAgICBpZiAodG9rZW4ua2luZCA9PT0gVG9rZW5LaW5kLk5BTUUgJiYgdG9rZW4udmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9sZXhlci5hZHZhbmNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IHN5bnRheEVycm9yKFxuICAgICAgICB0aGlzLl9sZXhlci5zb3VyY2UsXG4gICAgICAgIHRva2VuLnN0YXJ0LFxuICAgICAgICBgRXhwZWN0ZWQgXCIke3ZhbHVlfVwiLCBmb3VuZCAke2dldFRva2VuRGVzYyh0b2tlbil9LmAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogSWYgdGhlIG5leHQgdG9rZW4gaXMgYSBnaXZlbiBrZXl3b3JkLCByZXR1cm4gXCJ0cnVlXCIgYWZ0ZXIgYWR2YW5jaW5nIHRoZSBsZXhlci5cbiAgICogT3RoZXJ3aXNlLCBkbyBub3QgY2hhbmdlIHRoZSBwYXJzZXIgc3RhdGUgYW5kIHJldHVybiBcImZhbHNlXCIuXG4gICAqL1xuXG4gIGV4cGVjdE9wdGlvbmFsS2V5d29yZCh2YWx1ZSkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5fbGV4ZXIudG9rZW47XG5cbiAgICBpZiAodG9rZW4ua2luZCA9PT0gVG9rZW5LaW5kLk5BTUUgJiYgdG9rZW4udmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9sZXhlci5hZHZhbmNlKCk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvKipcbiAgICogSGVscGVyIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhbiBlcnJvciB3aGVuIGFuIHVuZXhwZWN0ZWQgbGV4ZWQgdG9rZW4gaXMgZW5jb3VudGVyZWQuXG4gICAqL1xuXG4gIHVuZXhwZWN0ZWQoYXRUb2tlbikge1xuICAgIGNvbnN0IHRva2VuID1cbiAgICAgIGF0VG9rZW4gIT09IG51bGwgJiYgYXRUb2tlbiAhPT0gdm9pZCAwID8gYXRUb2tlbiA6IHRoaXMuX2xleGVyLnRva2VuO1xuICAgIHJldHVybiBzeW50YXhFcnJvcihcbiAgICAgIHRoaXMuX2xleGVyLnNvdXJjZSxcbiAgICAgIHRva2VuLnN0YXJ0LFxuICAgICAgYFVuZXhwZWN0ZWQgJHtnZXRUb2tlbkRlc2ModG9rZW4pfS5gLFxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgYSBwb3NzaWJseSBlbXB0eSBsaXN0IG9mIHBhcnNlIG5vZGVzLCBkZXRlcm1pbmVkIGJ5IHRoZSBwYXJzZUZuLlxuICAgKiBUaGlzIGxpc3QgYmVnaW5zIHdpdGggYSBsZXggdG9rZW4gb2Ygb3BlbktpbmQgYW5kIGVuZHMgd2l0aCBhIGxleCB0b2tlbiBvZiBjbG9zZUtpbmQuXG4gICAqIEFkdmFuY2VzIHRoZSBwYXJzZXIgdG8gdGhlIG5leHQgbGV4IHRva2VuIGFmdGVyIHRoZSBjbG9zaW5nIHRva2VuLlxuICAgKi9cblxuICBhbnkob3BlbktpbmQsIHBhcnNlRm4sIGNsb3NlS2luZCkge1xuICAgIHRoaXMuZXhwZWN0VG9rZW4ob3BlbktpbmQpO1xuICAgIGNvbnN0IG5vZGVzID0gW107XG5cbiAgICB3aGlsZSAoIXRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihjbG9zZUtpbmQpKSB7XG4gICAgICBub2Rlcy5wdXNoKHBhcnNlRm4uY2FsbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBwYXJzZSBub2RlcywgZGV0ZXJtaW5lZCBieSB0aGUgcGFyc2VGbi5cbiAgICogSXQgY2FuIGJlIGVtcHR5IG9ubHkgaWYgb3BlbiB0b2tlbiBpcyBtaXNzaW5nIG90aGVyd2lzZSBpdCB3aWxsIGFsd2F5cyByZXR1cm4gbm9uLWVtcHR5IGxpc3RcbiAgICogdGhhdCBiZWdpbnMgd2l0aCBhIGxleCB0b2tlbiBvZiBvcGVuS2luZCBhbmQgZW5kcyB3aXRoIGEgbGV4IHRva2VuIG9mIGNsb3NlS2luZC5cbiAgICogQWR2YW5jZXMgdGhlIHBhcnNlciB0byB0aGUgbmV4dCBsZXggdG9rZW4gYWZ0ZXIgdGhlIGNsb3NpbmcgdG9rZW4uXG4gICAqL1xuXG4gIG9wdGlvbmFsTWFueShvcGVuS2luZCwgcGFyc2VGbiwgY2xvc2VLaW5kKSB7XG4gICAgaWYgKHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihvcGVuS2luZCkpIHtcbiAgICAgIGNvbnN0IG5vZGVzID0gW107XG5cbiAgICAgIGRvIHtcbiAgICAgICAgbm9kZXMucHVzaChwYXJzZUZuLmNhbGwodGhpcykpO1xuICAgICAgfSB3aGlsZSAoIXRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihjbG9zZUtpbmQpKTtcblxuICAgICAgcmV0dXJuIG5vZGVzO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfVxuICAvKipcbiAgICogUmV0dXJucyBhIG5vbi1lbXB0eSBsaXN0IG9mIHBhcnNlIG5vZGVzLCBkZXRlcm1pbmVkIGJ5IHRoZSBwYXJzZUZuLlxuICAgKiBUaGlzIGxpc3QgYmVnaW5zIHdpdGggYSBsZXggdG9rZW4gb2Ygb3BlbktpbmQgYW5kIGVuZHMgd2l0aCBhIGxleCB0b2tlbiBvZiBjbG9zZUtpbmQuXG4gICAqIEFkdmFuY2VzIHRoZSBwYXJzZXIgdG8gdGhlIG5leHQgbGV4IHRva2VuIGFmdGVyIHRoZSBjbG9zaW5nIHRva2VuLlxuICAgKi9cblxuICBtYW55KG9wZW5LaW5kLCBwYXJzZUZuLCBjbG9zZUtpbmQpIHtcbiAgICB0aGlzLmV4cGVjdFRva2VuKG9wZW5LaW5kKTtcbiAgICBjb25zdCBub2RlcyA9IFtdO1xuXG4gICAgZG8ge1xuICAgICAgbm9kZXMucHVzaChwYXJzZUZuLmNhbGwodGhpcykpO1xuICAgIH0gd2hpbGUgKCF0aGlzLmV4cGVjdE9wdGlvbmFsVG9rZW4oY2xvc2VLaW5kKSk7XG5cbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cbiAgLyoqXG4gICAqIFJldHVybnMgYSBub24tZW1wdHkgbGlzdCBvZiBwYXJzZSBub2RlcywgZGV0ZXJtaW5lZCBieSB0aGUgcGFyc2VGbi5cbiAgICogVGhpcyBsaXN0IG1heSBiZWdpbiB3aXRoIGEgbGV4IHRva2VuIG9mIGRlbGltaXRlcktpbmQgZm9sbG93ZWQgYnkgaXRlbXMgc2VwYXJhdGVkIGJ5IGxleCB0b2tlbnMgb2YgdG9rZW5LaW5kLlxuICAgKiBBZHZhbmNlcyB0aGUgcGFyc2VyIHRvIHRoZSBuZXh0IGxleCB0b2tlbiBhZnRlciBsYXN0IGl0ZW0gaW4gdGhlIGxpc3QuXG4gICAqL1xuXG4gIGRlbGltaXRlZE1hbnkoZGVsaW1pdGVyS2luZCwgcGFyc2VGbikge1xuICAgIHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihkZWxpbWl0ZXJLaW5kKTtcbiAgICBjb25zdCBub2RlcyA9IFtdO1xuXG4gICAgZG8ge1xuICAgICAgbm9kZXMucHVzaChwYXJzZUZuLmNhbGwodGhpcykpO1xuICAgIH0gd2hpbGUgKHRoaXMuZXhwZWN0T3B0aW9uYWxUb2tlbihkZWxpbWl0ZXJLaW5kKSk7XG5cbiAgICByZXR1cm4gbm9kZXM7XG4gIH1cbn1cbi8qKlxuICogQSBoZWxwZXIgZnVuY3Rpb24gdG8gZGVzY3JpYmUgYSB0b2tlbiBhcyBhIHN0cmluZyBmb3IgZGVidWdnaW5nLlxuICovXG5cbmZ1bmN0aW9uIGdldFRva2VuRGVzYyh0b2tlbikge1xuICBjb25zdCB2YWx1ZSA9IHRva2VuLnZhbHVlO1xuICByZXR1cm4gZ2V0VG9rZW5LaW5kRGVzYyh0b2tlbi5raW5kKSArICh2YWx1ZSAhPSBudWxsID8gYCBcIiR7dmFsdWV9XCJgIDogJycpO1xufVxuLyoqXG4gKiBBIGhlbHBlciBmdW5jdGlvbiB0byBkZXNjcmliZSBhIHRva2VuIGtpbmQgYXMgYSBzdHJpbmcgZm9yIGRlYnVnZ2luZy5cbiAqL1xuXG5mdW5jdGlvbiBnZXRUb2tlbktpbmREZXNjKGtpbmQpIHtcbiAgcmV0dXJuIGlzUHVuY3R1YXRvclRva2VuS2luZChraW5kKSA/IGBcIiR7a2luZH1cImAgOiBraW5kO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/language/parser.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/language/predicates.mjs":
/*!******************************************************!*\
  !*** ./node_modules/graphql/language/predicates.mjs ***!
  \******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"isConstValueNode\": function() { return /* binding */ isConstValueNode; },\n/* harmony export */   \"isDefinitionNode\": function() { return /* binding */ isDefinitionNode; },\n/* harmony export */   \"isExecutableDefinitionNode\": function() { return /* binding */ isExecutableDefinitionNode; },\n/* harmony export */   \"isSelectionNode\": function() { return /* binding */ isSelectionNode; },\n/* harmony export */   \"isTypeDefinitionNode\": function() { return /* binding */ isTypeDefinitionNode; },\n/* harmony export */   \"isTypeExtensionNode\": function() { return /* binding */ isTypeExtensionNode; },\n/* harmony export */   \"isTypeNode\": function() { return /* binding */ isTypeNode; },\n/* harmony export */   \"isTypeSystemDefinitionNode\": function() { return /* binding */ isTypeSystemDefinitionNode; },\n/* harmony export */   \"isTypeSystemExtensionNode\": function() { return /* binding */ isTypeSystemExtensionNode; },\n/* harmony export */   \"isValueNode\": function() { return /* binding */ isValueNode; }\n/* harmony export */ });\n/* harmony import */ var _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n\nfunction isDefinitionNode(node) {\n  return (\n    isExecutableDefinitionNode(node) ||\n    isTypeSystemDefinitionNode(node) ||\n    isTypeSystemExtensionNode(node)\n  );\n}\nfunction isExecutableDefinitionNode(node) {\n  return (\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.OPERATION_DEFINITION ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.FRAGMENT_DEFINITION\n  );\n}\nfunction isSelectionNode(node) {\n  return (\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.FIELD ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.FRAGMENT_SPREAD ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.INLINE_FRAGMENT\n  );\n}\nfunction isValueNode(node) {\n  return (\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.VARIABLE ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.INT ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.FLOAT ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.STRING ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.BOOLEAN ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.NULL ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.ENUM ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.LIST ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.OBJECT\n  );\n}\nfunction isConstValueNode(node) {\n  return (\n    isValueNode(node) &&\n    (node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.LIST\n      ? node.values.some(isConstValueNode)\n      : node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.OBJECT\n      ? node.fields.some((field) => isConstValueNode(field.value))\n      : node.kind !== _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.VARIABLE)\n  );\n}\nfunction isTypeNode(node) {\n  return (\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.NAMED_TYPE ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.LIST_TYPE ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.NON_NULL_TYPE\n  );\n}\nfunction isTypeSystemDefinitionNode(node) {\n  return (\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.SCHEMA_DEFINITION ||\n    isTypeDefinitionNode(node) ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.DIRECTIVE_DEFINITION\n  );\n}\nfunction isTypeDefinitionNode(node) {\n  return (\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.SCALAR_TYPE_DEFINITION ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.OBJECT_TYPE_DEFINITION ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.INTERFACE_TYPE_DEFINITION ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.UNION_TYPE_DEFINITION ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.ENUM_TYPE_DEFINITION ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.INPUT_OBJECT_TYPE_DEFINITION\n  );\n}\nfunction isTypeSystemExtensionNode(node) {\n  return node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node);\n}\nfunction isTypeExtensionNode(node) {\n  return (\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.SCALAR_TYPE_EXTENSION ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.OBJECT_TYPE_EXTENSION ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.INTERFACE_TYPE_EXTENSION ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.UNION_TYPE_EXTENSION ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.ENUM_TYPE_EXTENSION ||\n    node.kind === _kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.INPUT_OBJECT_TYPE_EXTENSION\n  );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9wcmVkaWNhdGVzLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFtQztBQUM1QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxrQkFBa0IsaUVBQXlCO0FBQzNDLGtCQUFrQixnRUFBd0I7QUFDMUM7QUFDQTtBQUNPO0FBQ1A7QUFDQSxrQkFBa0Isa0RBQVU7QUFDNUIsa0JBQWtCLDREQUFvQjtBQUN0QyxrQkFBa0IsNERBQW9CO0FBQ3RDO0FBQ0E7QUFDTztBQUNQO0FBQ0Esa0JBQWtCLHFEQUFhO0FBQy9CLGtCQUFrQixnREFBUTtBQUMxQixrQkFBa0Isa0RBQVU7QUFDNUIsa0JBQWtCLG1EQUFXO0FBQzdCLGtCQUFrQixvREFBWTtBQUM5QixrQkFBa0IsaURBQVM7QUFDM0Isa0JBQWtCLGlEQUFTO0FBQzNCLGtCQUFrQixpREFBUztBQUMzQixrQkFBa0IsbURBQVc7QUFDN0I7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLG1CQUFtQixpREFBUztBQUM1QjtBQUNBLHNCQUFzQixtREFBVztBQUNqQztBQUNBLHNCQUFzQixxREFBYTtBQUNuQztBQUNBO0FBQ087QUFDUDtBQUNBLGtCQUFrQix1REFBZTtBQUNqQyxrQkFBa0Isc0RBQWM7QUFDaEMsa0JBQWtCLDBEQUFrQjtBQUNwQztBQUNBO0FBQ087QUFDUDtBQUNBLGtCQUFrQiw4REFBc0I7QUFDeEM7QUFDQSxrQkFBa0IsaUVBQXlCO0FBQzNDO0FBQ0E7QUFDTztBQUNQO0FBQ0Esa0JBQWtCLG1FQUEyQjtBQUM3QyxrQkFBa0IsbUVBQTJCO0FBQzdDLGtCQUFrQixzRUFBOEI7QUFDaEQsa0JBQWtCLGtFQUEwQjtBQUM1QyxrQkFBa0IsaUVBQXlCO0FBQzNDLGtCQUFrQix5RUFBaUM7QUFDbkQ7QUFDQTtBQUNPO0FBQ1AsdUJBQXVCLDZEQUFxQjtBQUM1QztBQUNPO0FBQ1A7QUFDQSxrQkFBa0Isa0VBQTBCO0FBQzVDLGtCQUFrQixrRUFBMEI7QUFDNUMsa0JBQWtCLHFFQUE2QjtBQUMvQyxrQkFBa0IsaUVBQXlCO0FBQzNDLGtCQUFrQixnRUFBd0I7QUFDMUMsa0JBQWtCLHdFQUFnQztBQUNsRDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL3ByZWRpY2F0ZXMubWpzP2MwZDkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2luZCB9IGZyb20gJy4va2luZHMubWpzJztcbmV4cG9ydCBmdW5jdGlvbiBpc0RlZmluaXRpb25Ob2RlKG5vZGUpIHtcbiAgcmV0dXJuIChcbiAgICBpc0V4ZWN1dGFibGVEZWZpbml0aW9uTm9kZShub2RlKSB8fFxuICAgIGlzVHlwZVN5c3RlbURlZmluaXRpb25Ob2RlKG5vZGUpIHx8XG4gICAgaXNUeXBlU3lzdGVtRXh0ZW5zaW9uTm9kZShub2RlKVxuICApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRXhlY3V0YWJsZURlZmluaXRpb25Ob2RlKG5vZGUpIHtcbiAgcmV0dXJuIChcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuT1BFUkFUSU9OX0RFRklOSVRJT04gfHxcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuRlJBR01FTlRfREVGSU5JVElPTlxuICApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VsZWN0aW9uTm9kZShub2RlKSB7XG4gIHJldHVybiAoXG4gICAgbm9kZS5raW5kID09PSBLaW5kLkZJRUxEIHx8XG4gICAgbm9kZS5raW5kID09PSBLaW5kLkZSQUdNRU5UX1NQUkVBRCB8fFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5JTkxJTkVfRlJBR01FTlRcbiAgKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbHVlTm9kZShub2RlKSB7XG4gIHJldHVybiAoXG4gICAgbm9kZS5raW5kID09PSBLaW5kLlZBUklBQkxFIHx8XG4gICAgbm9kZS5raW5kID09PSBLaW5kLklOVCB8fFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5GTE9BVCB8fFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5TVFJJTkcgfHxcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuQk9PTEVBTiB8fFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5OVUxMIHx8XG4gICAgbm9kZS5raW5kID09PSBLaW5kLkVOVU0gfHxcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuTElTVCB8fFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5PQkpFQ1RcbiAgKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnN0VmFsdWVOb2RlKG5vZGUpIHtcbiAgcmV0dXJuIChcbiAgICBpc1ZhbHVlTm9kZShub2RlKSAmJlxuICAgIChub2RlLmtpbmQgPT09IEtpbmQuTElTVFxuICAgICAgPyBub2RlLnZhbHVlcy5zb21lKGlzQ29uc3RWYWx1ZU5vZGUpXG4gICAgICA6IG5vZGUua2luZCA9PT0gS2luZC5PQkpFQ1RcbiAgICAgID8gbm9kZS5maWVsZHMuc29tZSgoZmllbGQpID0+IGlzQ29uc3RWYWx1ZU5vZGUoZmllbGQudmFsdWUpKVxuICAgICAgOiBub2RlLmtpbmQgIT09IEtpbmQuVkFSSUFCTEUpXG4gICk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNUeXBlTm9kZShub2RlKSB7XG4gIHJldHVybiAoXG4gICAgbm9kZS5raW5kID09PSBLaW5kLk5BTUVEX1RZUEUgfHxcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuTElTVF9UWVBFIHx8XG4gICAgbm9kZS5raW5kID09PSBLaW5kLk5PTl9OVUxMX1RZUEVcbiAgKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGVTeXN0ZW1EZWZpbml0aW9uTm9kZShub2RlKSB7XG4gIHJldHVybiAoXG4gICAgbm9kZS5raW5kID09PSBLaW5kLlNDSEVNQV9ERUZJTklUSU9OIHx8XG4gICAgaXNUeXBlRGVmaW5pdGlvbk5vZGUobm9kZSkgfHxcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuRElSRUNUSVZFX0RFRklOSVRJT05cbiAgKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1R5cGVEZWZpbml0aW9uTm9kZShub2RlKSB7XG4gIHJldHVybiAoXG4gICAgbm9kZS5raW5kID09PSBLaW5kLlNDQUxBUl9UWVBFX0RFRklOSVRJT04gfHxcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuT0JKRUNUX1RZUEVfREVGSU5JVElPTiB8fFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5JTlRFUkZBQ0VfVFlQRV9ERUZJTklUSU9OIHx8XG4gICAgbm9kZS5raW5kID09PSBLaW5kLlVOSU9OX1RZUEVfREVGSU5JVElPTiB8fFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5FTlVNX1RZUEVfREVGSU5JVElPTiB8fFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5JTlBVVF9PQkpFQ1RfVFlQRV9ERUZJTklUSU9OXG4gICk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNUeXBlU3lzdGVtRXh0ZW5zaW9uTm9kZShub2RlKSB7XG4gIHJldHVybiBub2RlLmtpbmQgPT09IEtpbmQuU0NIRU1BX0VYVEVOU0lPTiB8fCBpc1R5cGVFeHRlbnNpb25Ob2RlKG5vZGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVHlwZUV4dGVuc2lvbk5vZGUobm9kZSkge1xuICByZXR1cm4gKFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5TQ0FMQVJfVFlQRV9FWFRFTlNJT04gfHxcbiAgICBub2RlLmtpbmQgPT09IEtpbmQuT0JKRUNUX1RZUEVfRVhURU5TSU9OIHx8XG4gICAgbm9kZS5raW5kID09PSBLaW5kLklOVEVSRkFDRV9UWVBFX0VYVEVOU0lPTiB8fFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5VTklPTl9UWVBFX0VYVEVOU0lPTiB8fFxuICAgIG5vZGUua2luZCA9PT0gS2luZC5FTlVNX1RZUEVfRVhURU5TSU9OIHx8XG4gICAgbm9kZS5raW5kID09PSBLaW5kLklOUFVUX09CSkVDVF9UWVBFX0VYVEVOU0lPTlxuICApO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/language/predicates.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/language/printLocation.mjs":
/*!*********************************************************!*\
  !*** ./node_modules/graphql/language/printLocation.mjs ***!
  \*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"printLocation\": function() { return /* binding */ printLocation; },\n/* harmony export */   \"printSourceLocation\": function() { return /* binding */ printSourceLocation; }\n/* harmony export */ });\n/* harmony import */ var _location_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./location.mjs */ \"./node_modules/graphql/language/location.mjs\");\n\n\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\nfunction printLocation(location) {\n  return printSourceLocation(\n    location.source,\n    (0,_location_mjs__WEBPACK_IMPORTED_MODULE_0__.getLocation)(location.source, location.start),\n  );\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nfunction printSourceLocation(source, sourceLocation) {\n  const firstLineColumnOffset = source.locationOffset.column - 1;\n  const body = ''.padStart(firstLineColumnOffset) + source.body;\n  const lineIndex = sourceLocation.line - 1;\n  const lineOffset = source.locationOffset.line - 1;\n  const lineNum = sourceLocation.line + lineOffset;\n  const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n  const columnNum = sourceLocation.column + columnOffset;\n  const locationStr = `${source.name}:${lineNum}:${columnNum}\\n`;\n  const lines = body.split(/\\r\\n|[\\n\\r]/g);\n  const locationLine = lines[lineIndex]; // Special case for minified documents\n\n  if (locationLine.length > 120) {\n    const subLineIndex = Math.floor(columnNum / 80);\n    const subLineColumnNum = columnNum % 80;\n    const subLines = [];\n\n    for (let i = 0; i < locationLine.length; i += 80) {\n      subLines.push(locationLine.slice(i, i + 80));\n    }\n\n    return (\n      locationStr +\n      printPrefixedLines([\n        [`${lineNum} |`, subLines[0]],\n        ...subLines.slice(1, subLineIndex + 1).map((subLine) => ['|', subLine]),\n        ['|', '^'.padStart(subLineColumnNum)],\n        ['|', subLines[subLineIndex + 1]],\n      ])\n    );\n  }\n\n  return (\n    locationStr +\n    printPrefixedLines([\n      // Lines specified like this: [\"prefix\", \"string\"],\n      [`${lineNum - 1} |`, lines[lineIndex - 1]],\n      [`${lineNum} |`, locationLine],\n      ['|', '^'.padStart(columnNum)],\n      [`${lineNum + 1} |`, lines[lineIndex + 1]],\n    ])\n  );\n}\n\nfunction printPrefixedLines(lines) {\n  const existingLines = lines.filter(([_, line]) => line !== undefined);\n  const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length));\n  return existingLines\n    .map(([prefix, line]) => prefix.padStart(padLen) + (line ? ' ' + line : ''))\n    .join('\\n');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9wcmludExvY2F0aW9uLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBNkM7O0FBRTdDO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLElBQUksMERBQVc7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsWUFBWSxHQUFHLFFBQVEsR0FBRyxVQUFVO0FBQzdEO0FBQ0EseUNBQXlDOztBQUV6QztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IseUJBQXlCO0FBQzdDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWSxTQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsYUFBYTtBQUN2QixVQUFVLFNBQVM7QUFDbkI7QUFDQSxVQUFVLGFBQWE7QUFDdkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL3ByaW50TG9jYXRpb24ubWpzPzcyYmIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0TG9jYXRpb24gfSBmcm9tICcuL2xvY2F0aW9uLm1qcyc7XG5cbi8qKlxuICogUmVuZGVyIGEgaGVscGZ1bCBkZXNjcmlwdGlvbiBvZiB0aGUgbG9jYXRpb24gaW4gdGhlIEdyYXBoUUwgU291cmNlIGRvY3VtZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRMb2NhdGlvbihsb2NhdGlvbikge1xuICByZXR1cm4gcHJpbnRTb3VyY2VMb2NhdGlvbihcbiAgICBsb2NhdGlvbi5zb3VyY2UsXG4gICAgZ2V0TG9jYXRpb24obG9jYXRpb24uc291cmNlLCBsb2NhdGlvbi5zdGFydCksXG4gICk7XG59XG4vKipcbiAqIFJlbmRlciBhIGhlbHBmdWwgZGVzY3JpcHRpb24gb2YgdGhlIGxvY2F0aW9uIGluIHRoZSBHcmFwaFFMIFNvdXJjZSBkb2N1bWVudC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRTb3VyY2VMb2NhdGlvbihzb3VyY2UsIHNvdXJjZUxvY2F0aW9uKSB7XG4gIGNvbnN0IGZpcnN0TGluZUNvbHVtbk9mZnNldCA9IHNvdXJjZS5sb2NhdGlvbk9mZnNldC5jb2x1bW4gLSAxO1xuICBjb25zdCBib2R5ID0gJycucGFkU3RhcnQoZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KSArIHNvdXJjZS5ib2R5O1xuICBjb25zdCBsaW5lSW5kZXggPSBzb3VyY2VMb2NhdGlvbi5saW5lIC0gMTtcbiAgY29uc3QgbGluZU9mZnNldCA9IHNvdXJjZS5sb2NhdGlvbk9mZnNldC5saW5lIC0gMTtcbiAgY29uc3QgbGluZU51bSA9IHNvdXJjZUxvY2F0aW9uLmxpbmUgKyBsaW5lT2Zmc2V0O1xuICBjb25zdCBjb2x1bW5PZmZzZXQgPSBzb3VyY2VMb2NhdGlvbi5saW5lID09PSAxID8gZmlyc3RMaW5lQ29sdW1uT2Zmc2V0IDogMDtcbiAgY29uc3QgY29sdW1uTnVtID0gc291cmNlTG9jYXRpb24uY29sdW1uICsgY29sdW1uT2Zmc2V0O1xuICBjb25zdCBsb2NhdGlvblN0ciA9IGAke3NvdXJjZS5uYW1lfToke2xpbmVOdW19OiR7Y29sdW1uTnVtfVxcbmA7XG4gIGNvbnN0IGxpbmVzID0gYm9keS5zcGxpdCgvXFxyXFxufFtcXG5cXHJdL2cpO1xuICBjb25zdCBsb2NhdGlvbkxpbmUgPSBsaW5lc1tsaW5lSW5kZXhdOyAvLyBTcGVjaWFsIGNhc2UgZm9yIG1pbmlmaWVkIGRvY3VtZW50c1xuXG4gIGlmIChsb2NhdGlvbkxpbmUubGVuZ3RoID4gMTIwKSB7XG4gICAgY29uc3Qgc3ViTGluZUluZGV4ID0gTWF0aC5mbG9vcihjb2x1bW5OdW0gLyA4MCk7XG4gICAgY29uc3Qgc3ViTGluZUNvbHVtbk51bSA9IGNvbHVtbk51bSAlIDgwO1xuICAgIGNvbnN0IHN1YkxpbmVzID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvY2F0aW9uTGluZS5sZW5ndGg7IGkgKz0gODApIHtcbiAgICAgIHN1YkxpbmVzLnB1c2gobG9jYXRpb25MaW5lLnNsaWNlKGksIGkgKyA4MCkpO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICBsb2NhdGlvblN0ciArXG4gICAgICBwcmludFByZWZpeGVkTGluZXMoW1xuICAgICAgICBbYCR7bGluZU51bX0gfGAsIHN1YkxpbmVzWzBdXSxcbiAgICAgICAgLi4uc3ViTGluZXMuc2xpY2UoMSwgc3ViTGluZUluZGV4ICsgMSkubWFwKChzdWJMaW5lKSA9PiBbJ3wnLCBzdWJMaW5lXSksXG4gICAgICAgIFsnfCcsICdeJy5wYWRTdGFydChzdWJMaW5lQ29sdW1uTnVtKV0sXG4gICAgICAgIFsnfCcsIHN1YkxpbmVzW3N1YkxpbmVJbmRleCArIDFdXSxcbiAgICAgIF0pXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgbG9jYXRpb25TdHIgK1xuICAgIHByaW50UHJlZml4ZWRMaW5lcyhbXG4gICAgICAvLyBMaW5lcyBzcGVjaWZpZWQgbGlrZSB0aGlzOiBbXCJwcmVmaXhcIiwgXCJzdHJpbmdcIl0sXG4gICAgICBbYCR7bGluZU51bSAtIDF9IHxgLCBsaW5lc1tsaW5lSW5kZXggLSAxXV0sXG4gICAgICBbYCR7bGluZU51bX0gfGAsIGxvY2F0aW9uTGluZV0sXG4gICAgICBbJ3wnLCAnXicucGFkU3RhcnQoY29sdW1uTnVtKV0sXG4gICAgICBbYCR7bGluZU51bSArIDF9IHxgLCBsaW5lc1tsaW5lSW5kZXggKyAxXV0sXG4gICAgXSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gcHJpbnRQcmVmaXhlZExpbmVzKGxpbmVzKSB7XG4gIGNvbnN0IGV4aXN0aW5nTGluZXMgPSBsaW5lcy5maWx0ZXIoKFtfLCBsaW5lXSkgPT4gbGluZSAhPT0gdW5kZWZpbmVkKTtcbiAgY29uc3QgcGFkTGVuID0gTWF0aC5tYXgoLi4uZXhpc3RpbmdMaW5lcy5tYXAoKFtwcmVmaXhdKSA9PiBwcmVmaXgubGVuZ3RoKSk7XG4gIHJldHVybiBleGlzdGluZ0xpbmVzXG4gICAgLm1hcCgoW3ByZWZpeCwgbGluZV0pID0+IHByZWZpeC5wYWRTdGFydChwYWRMZW4pICsgKGxpbmUgPyAnICcgKyBsaW5lIDogJycpKVxuICAgIC5qb2luKCdcXG4nKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/language/printLocation.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/language/printString.mjs":
/*!*******************************************************!*\
  !*** ./node_modules/graphql/language/printString.mjs ***!
  \*******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"printString\": function() { return /* binding */ printString; }\n/* harmony export */ });\n/**\n * Prints a string as a GraphQL StringValue literal. Replaces control characters\n * and excluded characters (\" U+0022 and \\\\ U+005C) with escape sequences.\n */\nfunction printString(str) {\n  return `\"${str.replace(escapedRegExp, escapedReplacer)}\"`;\n} // eslint-disable-next-line no-control-regex\n\nconst escapedRegExp = /[\\x00-\\x1f\\x22\\x5c\\x7f-\\x9f]/g;\n\nfunction escapedReplacer(str) {\n  return escapeSequences[str.charCodeAt(0)];\n} // prettier-ignore\n\nconst escapeSequences = [\n  '\\\\u0000',\n  '\\\\u0001',\n  '\\\\u0002',\n  '\\\\u0003',\n  '\\\\u0004',\n  '\\\\u0005',\n  '\\\\u0006',\n  '\\\\u0007',\n  '\\\\b',\n  '\\\\t',\n  '\\\\n',\n  '\\\\u000B',\n  '\\\\f',\n  '\\\\r',\n  '\\\\u000E',\n  '\\\\u000F',\n  '\\\\u0010',\n  '\\\\u0011',\n  '\\\\u0012',\n  '\\\\u0013',\n  '\\\\u0014',\n  '\\\\u0015',\n  '\\\\u0016',\n  '\\\\u0017',\n  '\\\\u0018',\n  '\\\\u0019',\n  '\\\\u001A',\n  '\\\\u001B',\n  '\\\\u001C',\n  '\\\\u001D',\n  '\\\\u001E',\n  '\\\\u001F',\n  '',\n  '',\n  '\\\\\"',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '', // 2F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '', // 3F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '', // 4F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '\\\\\\\\',\n  '',\n  '',\n  '', // 5F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '', // 6F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '\\\\u007F',\n  '\\\\u0080',\n  '\\\\u0081',\n  '\\\\u0082',\n  '\\\\u0083',\n  '\\\\u0084',\n  '\\\\u0085',\n  '\\\\u0086',\n  '\\\\u0087',\n  '\\\\u0088',\n  '\\\\u0089',\n  '\\\\u008A',\n  '\\\\u008B',\n  '\\\\u008C',\n  '\\\\u008D',\n  '\\\\u008E',\n  '\\\\u008F',\n  '\\\\u0090',\n  '\\\\u0091',\n  '\\\\u0092',\n  '\\\\u0093',\n  '\\\\u0094',\n  '\\\\u0095',\n  '\\\\u0096',\n  '\\\\u0097',\n  '\\\\u0098',\n  '\\\\u0099',\n  '\\\\u009A',\n  '\\\\u009B',\n  '\\\\u009C',\n  '\\\\u009D',\n  '\\\\u009E',\n  '\\\\u009F',\n];\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9wcmludFN0cmluZy5tanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxhQUFhLDRDQUE0QztBQUN6RCxFQUFFOztBQUVGOztBQUVBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9wcmludFN0cmluZy5tanM/ZjUxMyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByaW50cyBhIHN0cmluZyBhcyBhIEdyYXBoUUwgU3RyaW5nVmFsdWUgbGl0ZXJhbC4gUmVwbGFjZXMgY29udHJvbCBjaGFyYWN0ZXJzXG4gKiBhbmQgZXhjbHVkZWQgY2hhcmFjdGVycyAoXCIgVSswMDIyIGFuZCBcXFxcIFUrMDA1Qykgd2l0aCBlc2NhcGUgc2VxdWVuY2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRTdHJpbmcoc3RyKSB7XG4gIHJldHVybiBgXCIke3N0ci5yZXBsYWNlKGVzY2FwZWRSZWdFeHAsIGVzY2FwZWRSZXBsYWNlcil9XCJgO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udHJvbC1yZWdleFxuXG5jb25zdCBlc2NhcGVkUmVnRXhwID0gL1tcXHgwMC1cXHgxZlxceDIyXFx4NWNcXHg3Zi1cXHg5Zl0vZztcblxuZnVuY3Rpb24gZXNjYXBlZFJlcGxhY2VyKHN0cikge1xuICByZXR1cm4gZXNjYXBlU2VxdWVuY2VzW3N0ci5jaGFyQ29kZUF0KDApXTtcbn0gLy8gcHJldHRpZXItaWdub3JlXG5cbmNvbnN0IGVzY2FwZVNlcXVlbmNlcyA9IFtcbiAgJ1xcXFx1MDAwMCcsXG4gICdcXFxcdTAwMDEnLFxuICAnXFxcXHUwMDAyJyxcbiAgJ1xcXFx1MDAwMycsXG4gICdcXFxcdTAwMDQnLFxuICAnXFxcXHUwMDA1JyxcbiAgJ1xcXFx1MDAwNicsXG4gICdcXFxcdTAwMDcnLFxuICAnXFxcXGInLFxuICAnXFxcXHQnLFxuICAnXFxcXG4nLFxuICAnXFxcXHUwMDBCJyxcbiAgJ1xcXFxmJyxcbiAgJ1xcXFxyJyxcbiAgJ1xcXFx1MDAwRScsXG4gICdcXFxcdTAwMEYnLFxuICAnXFxcXHUwMDEwJyxcbiAgJ1xcXFx1MDAxMScsXG4gICdcXFxcdTAwMTInLFxuICAnXFxcXHUwMDEzJyxcbiAgJ1xcXFx1MDAxNCcsXG4gICdcXFxcdTAwMTUnLFxuICAnXFxcXHUwMDE2JyxcbiAgJ1xcXFx1MDAxNycsXG4gICdcXFxcdTAwMTgnLFxuICAnXFxcXHUwMDE5JyxcbiAgJ1xcXFx1MDAxQScsXG4gICdcXFxcdTAwMUInLFxuICAnXFxcXHUwMDFDJyxcbiAgJ1xcXFx1MDAxRCcsXG4gICdcXFxcdTAwMUUnLFxuICAnXFxcXHUwMDFGJyxcbiAgJycsXG4gICcnLFxuICAnXFxcXFwiJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsIC8vIDJGXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLCAvLyAzRlxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJywgLy8gNEZcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJ1xcXFxcXFxcJyxcbiAgJycsXG4gICcnLFxuICAnJywgLy8gNUZcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsIC8vIDZGXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICcnLFxuICAnJyxcbiAgJycsXG4gICdcXFxcdTAwN0YnLFxuICAnXFxcXHUwMDgwJyxcbiAgJ1xcXFx1MDA4MScsXG4gICdcXFxcdTAwODInLFxuICAnXFxcXHUwMDgzJyxcbiAgJ1xcXFx1MDA4NCcsXG4gICdcXFxcdTAwODUnLFxuICAnXFxcXHUwMDg2JyxcbiAgJ1xcXFx1MDA4NycsXG4gICdcXFxcdTAwODgnLFxuICAnXFxcXHUwMDg5JyxcbiAgJ1xcXFx1MDA4QScsXG4gICdcXFxcdTAwOEInLFxuICAnXFxcXHUwMDhDJyxcbiAgJ1xcXFx1MDA4RCcsXG4gICdcXFxcdTAwOEUnLFxuICAnXFxcXHUwMDhGJyxcbiAgJ1xcXFx1MDA5MCcsXG4gICdcXFxcdTAwOTEnLFxuICAnXFxcXHUwMDkyJyxcbiAgJ1xcXFx1MDA5MycsXG4gICdcXFxcdTAwOTQnLFxuICAnXFxcXHUwMDk1JyxcbiAgJ1xcXFx1MDA5NicsXG4gICdcXFxcdTAwOTcnLFxuICAnXFxcXHUwMDk4JyxcbiAgJ1xcXFx1MDA5OScsXG4gICdcXFxcdTAwOUEnLFxuICAnXFxcXHUwMDlCJyxcbiAgJ1xcXFx1MDA5QycsXG4gICdcXFxcdTAwOUQnLFxuICAnXFxcXHUwMDlFJyxcbiAgJ1xcXFx1MDA5RicsXG5dO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/language/printString.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/language/printer.mjs":
/*!***************************************************!*\
  !*** ./node_modules/graphql/language/printer.mjs ***!
  \***************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"print\": function() { return /* binding */ print; }\n/* harmony export */ });\n/* harmony import */ var _blockString_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./blockString.mjs */ \"./node_modules/graphql/language/blockString.mjs\");\n/* harmony import */ var _printString_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./printString.mjs */ \"./node_modules/graphql/language/printString.mjs\");\n/* harmony import */ var _visitor_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./visitor.mjs */ \"./node_modules/graphql/language/visitor.mjs\");\n\n\n\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nfunction print(ast) {\n  return (0,_visitor_mjs__WEBPACK_IMPORTED_MODULE_0__.visit)(ast, printDocASTReducer);\n}\nconst MAX_LINE_LENGTH = 80;\nconst printDocASTReducer = {\n  Name: {\n    leave: (node) => node.value,\n  },\n  Variable: {\n    leave: (node) => '$' + node.name,\n  },\n  // Document\n  Document: {\n    leave: (node) => join(node.definitions, '\\n\\n'),\n  },\n  OperationDefinition: {\n    leave(node) {\n      const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n      const prefix = join(\n        [\n          node.operation,\n          join([node.name, varDefs]),\n          join(node.directives, ' '),\n        ],\n        ' ',\n      ); // Anonymous queries with no directives or variable definitions can use\n      // the query short form.\n\n      return (prefix === 'query' ? '' : prefix + ' ') + node.selectionSet;\n    },\n  },\n  VariableDefinition: {\n    leave: ({ variable, type, defaultValue, directives }) =>\n      variable +\n      ': ' +\n      type +\n      wrap(' = ', defaultValue) +\n      wrap(' ', join(directives, ' ')),\n  },\n  SelectionSet: {\n    leave: ({ selections }) => block(selections),\n  },\n  Field: {\n    leave({ alias, name, arguments: args, directives, selectionSet }) {\n      const prefix = wrap('', alias, ': ') + name;\n      let argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n      if (argsLine.length > MAX_LINE_LENGTH) {\n        argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n      }\n\n      return join([argsLine, join(directives, ' '), selectionSet], ' ');\n    },\n  },\n  Argument: {\n    leave: ({ name, value }) => name + ': ' + value,\n  },\n  // Fragments\n  FragmentSpread: {\n    leave: ({ name, directives }) =>\n      '...' + name + wrap(' ', join(directives, ' ')),\n  },\n  InlineFragment: {\n    leave: ({ typeCondition, directives, selectionSet }) =>\n      join(\n        [\n          '...',\n          wrap('on ', typeCondition),\n          join(directives, ' '),\n          selectionSet,\n        ],\n        ' ',\n      ),\n  },\n  FragmentDefinition: {\n    leave: (\n      { name, typeCondition, variableDefinitions, directives, selectionSet }, // Note: fragment variable definitions are experimental and may be changed\n    ) =>\n      // or removed in the future.\n      `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` +\n      `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` +\n      selectionSet,\n  },\n  // Value\n  IntValue: {\n    leave: ({ value }) => value,\n  },\n  FloatValue: {\n    leave: ({ value }) => value,\n  },\n  StringValue: {\n    leave: ({ value, block: isBlockString }) =>\n      isBlockString ? (0,_blockString_mjs__WEBPACK_IMPORTED_MODULE_1__.printBlockString)(value) : (0,_printString_mjs__WEBPACK_IMPORTED_MODULE_2__.printString)(value),\n  },\n  BooleanValue: {\n    leave: ({ value }) => (value ? 'true' : 'false'),\n  },\n  NullValue: {\n    leave: () => 'null',\n  },\n  EnumValue: {\n    leave: ({ value }) => value,\n  },\n  ListValue: {\n    leave: ({ values }) => '[' + join(values, ', ') + ']',\n  },\n  ObjectValue: {\n    leave: ({ fields }) => '{' + join(fields, ', ') + '}',\n  },\n  ObjectField: {\n    leave: ({ name, value }) => name + ': ' + value,\n  },\n  // Directive\n  Directive: {\n    leave: ({ name, arguments: args }) =>\n      '@' + name + wrap('(', join(args, ', '), ')'),\n  },\n  // Type\n  NamedType: {\n    leave: ({ name }) => name,\n  },\n  ListType: {\n    leave: ({ type }) => '[' + type + ']',\n  },\n  NonNullType: {\n    leave: ({ type }) => type + '!',\n  },\n  // Type System Definitions\n  SchemaDefinition: {\n    leave: ({ description, directives, operationTypes }) =>\n      wrap('', description, '\\n') +\n      join(['schema', join(directives, ' '), block(operationTypes)], ' '),\n  },\n  OperationTypeDefinition: {\n    leave: ({ operation, type }) => operation + ': ' + type,\n  },\n  ScalarTypeDefinition: {\n    leave: ({ description, name, directives }) =>\n      wrap('', description, '\\n') +\n      join(['scalar', name, join(directives, ' ')], ' '),\n  },\n  ObjectTypeDefinition: {\n    leave: ({ description, name, interfaces, directives, fields }) =>\n      wrap('', description, '\\n') +\n      join(\n        [\n          'type',\n          name,\n          wrap('implements ', join(interfaces, ' & ')),\n          join(directives, ' '),\n          block(fields),\n        ],\n        ' ',\n      ),\n  },\n  FieldDefinition: {\n    leave: ({ description, name, arguments: args, type, directives }) =>\n      wrap('', description, '\\n') +\n      name +\n      (hasMultilineItems(args)\n        ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n        : wrap('(', join(args, ', '), ')')) +\n      ': ' +\n      type +\n      wrap(' ', join(directives, ' ')),\n  },\n  InputValueDefinition: {\n    leave: ({ description, name, type, defaultValue, directives }) =>\n      wrap('', description, '\\n') +\n      join(\n        [name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')],\n        ' ',\n      ),\n  },\n  InterfaceTypeDefinition: {\n    leave: ({ description, name, interfaces, directives, fields }) =>\n      wrap('', description, '\\n') +\n      join(\n        [\n          'interface',\n          name,\n          wrap('implements ', join(interfaces, ' & ')),\n          join(directives, ' '),\n          block(fields),\n        ],\n        ' ',\n      ),\n  },\n  UnionTypeDefinition: {\n    leave: ({ description, name, directives, types }) =>\n      wrap('', description, '\\n') +\n      join(\n        ['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))],\n        ' ',\n      ),\n  },\n  EnumTypeDefinition: {\n    leave: ({ description, name, directives, values }) =>\n      wrap('', description, '\\n') +\n      join(['enum', name, join(directives, ' '), block(values)], ' '),\n  },\n  EnumValueDefinition: {\n    leave: ({ description, name, directives }) =>\n      wrap('', description, '\\n') + join([name, join(directives, ' ')], ' '),\n  },\n  InputObjectTypeDefinition: {\n    leave: ({ description, name, directives, fields }) =>\n      wrap('', description, '\\n') +\n      join(['input', name, join(directives, ' '), block(fields)], ' '),\n  },\n  DirectiveDefinition: {\n    leave: ({ description, name, arguments: args, repeatable, locations }) =>\n      wrap('', description, '\\n') +\n      'directive @' +\n      name +\n      (hasMultilineItems(args)\n        ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n        : wrap('(', join(args, ', '), ')')) +\n      (repeatable ? ' repeatable' : '') +\n      ' on ' +\n      join(locations, ' | '),\n  },\n  SchemaExtension: {\n    leave: ({ directives, operationTypes }) =>\n      join(\n        ['extend schema', join(directives, ' '), block(operationTypes)],\n        ' ',\n      ),\n  },\n  ScalarTypeExtension: {\n    leave: ({ name, directives }) =>\n      join(['extend scalar', name, join(directives, ' ')], ' '),\n  },\n  ObjectTypeExtension: {\n    leave: ({ name, interfaces, directives, fields }) =>\n      join(\n        [\n          'extend type',\n          name,\n          wrap('implements ', join(interfaces, ' & ')),\n          join(directives, ' '),\n          block(fields),\n        ],\n        ' ',\n      ),\n  },\n  InterfaceTypeExtension: {\n    leave: ({ name, interfaces, directives, fields }) =>\n      join(\n        [\n          'extend interface',\n          name,\n          wrap('implements ', join(interfaces, ' & ')),\n          join(directives, ' '),\n          block(fields),\n        ],\n        ' ',\n      ),\n  },\n  UnionTypeExtension: {\n    leave: ({ name, directives, types }) =>\n      join(\n        [\n          'extend union',\n          name,\n          join(directives, ' '),\n          wrap('= ', join(types, ' | ')),\n        ],\n        ' ',\n      ),\n  },\n  EnumTypeExtension: {\n    leave: ({ name, directives, values }) =>\n      join(['extend enum', name, join(directives, ' '), block(values)], ' '),\n  },\n  InputObjectTypeExtension: {\n    leave: ({ name, directives, fields }) =>\n      join(['extend input', name, join(directives, ' '), block(fields)], ' '),\n  },\n};\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\nfunction join(maybeArray, separator = '') {\n  var _maybeArray$filter$jo;\n\n  return (_maybeArray$filter$jo =\n    maybeArray === null || maybeArray === void 0\n      ? void 0\n      : maybeArray.filter((x) => x).join(separator)) !== null &&\n    _maybeArray$filter$jo !== void 0\n    ? _maybeArray$filter$jo\n    : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an indented `{ }` block.\n */\n\nfunction block(array) {\n  return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\nfunction wrap(start, maybeString, end = '') {\n  return maybeString != null && maybeString !== ''\n    ? start + maybeString + end\n    : '';\n}\n\nfunction indent(str) {\n  return wrap('  ', str.replace(/\\n/g, '\\n  '));\n}\n\nfunction hasMultilineItems(maybeArray) {\n  var _maybeArray$some;\n\n  // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n  /* c8 ignore next */\n  return (_maybeArray$some =\n    maybeArray === null || maybeArray === void 0\n      ? void 0\n      : maybeArray.some((str) => str.includes('\\n'))) !== null &&\n    _maybeArray$some !== void 0\n    ? _maybeArray$some\n    : false;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9wcmludGVyLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXFEO0FBQ0w7QUFDVjtBQUN0QztBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQLFNBQVMsbURBQUs7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLGNBQWMsMENBQTBDO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxjQUFjLFlBQVk7QUFDMUIsR0FBRztBQUNIO0FBQ0EsWUFBWSx3REFBd0Q7QUFDcEU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsY0FBYyxhQUFhO0FBQzNCLEdBQUc7QUFDSDtBQUNBO0FBQ0EsY0FBYyxrQkFBa0I7QUFDaEM7QUFDQSxHQUFHO0FBQ0g7QUFDQSxjQUFjLHlDQUF5QztBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLFFBQVEsb0VBQW9FO0FBQzVFO0FBQ0E7QUFDQSxrQkFBa0IsS0FBSyxFQUFFLGlEQUFpRDtBQUMxRSxZQUFZLGVBQWUsRUFBRSxxQ0FBcUM7QUFDbEU7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLGNBQWMsT0FBTztBQUNyQixHQUFHO0FBQ0g7QUFDQSxjQUFjLE9BQU87QUFDckIsR0FBRztBQUNIO0FBQ0EsY0FBYyw2QkFBNkI7QUFDM0Msc0JBQXNCLGtFQUFnQixVQUFVLDZEQUFXO0FBQzNELEdBQUc7QUFDSDtBQUNBLGNBQWMsT0FBTztBQUNyQixHQUFHO0FBQ0g7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLGNBQWMsT0FBTztBQUNyQixHQUFHO0FBQ0g7QUFDQSxjQUFjLFFBQVE7QUFDdEIsR0FBRztBQUNIO0FBQ0EsY0FBYyxRQUFRLE9BQU8sMkJBQTJCO0FBQ3hELEdBQUc7QUFDSDtBQUNBLGNBQWMsYUFBYTtBQUMzQixHQUFHO0FBQ0g7QUFDQTtBQUNBLGNBQWMsdUJBQXVCO0FBQ3JDO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxjQUFjLE1BQU07QUFDcEIsR0FBRztBQUNIO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCLEdBQUc7QUFDSDtBQUNBLGNBQWMsTUFBTTtBQUNwQixHQUFHO0FBQ0g7QUFDQTtBQUNBLGNBQWMseUNBQXlDO0FBQ3ZEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxjQUFjLGlCQUFpQjtBQUMvQixHQUFHO0FBQ0g7QUFDQSxjQUFjLCtCQUErQjtBQUM3QztBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsY0FBYyxtREFBbUQ7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLGNBQWMsc0RBQXNEO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxjQUFjLG1EQUFtRDtBQUNqRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsY0FBYyxtREFBbUQ7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLGNBQWMsc0NBQXNDO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxjQUFjLHVDQUF1QztBQUNyRDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsY0FBYywrQkFBK0I7QUFDN0M7QUFDQSxHQUFHO0FBQ0g7QUFDQSxjQUFjLHVDQUF1QztBQUNyRDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsY0FBYywyREFBMkQ7QUFDekU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsY0FBYyw0QkFBNEI7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxjQUFjLGtCQUFrQjtBQUNoQztBQUNBLEdBQUc7QUFDSDtBQUNBLGNBQWMsc0NBQXNDO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsY0FBYyxzQ0FBc0M7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxjQUFjLHlCQUF5QjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxjQUFjLDBCQUEwQjtBQUN4QztBQUNBLEdBQUc7QUFDSDtBQUNBLGNBQWMsMEJBQTBCO0FBQ3hDO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0RUFBNEU7QUFDNUU7O0FBRUE7QUFDQSxnQkFBZ0Isb0NBQW9DO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL3ByaW50ZXIubWpzPzcwOWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJpbnRCbG9ja1N0cmluZyB9IGZyb20gJy4vYmxvY2tTdHJpbmcubWpzJztcbmltcG9ydCB7IHByaW50U3RyaW5nIH0gZnJvbSAnLi9wcmludFN0cmluZy5tanMnO1xuaW1wb3J0IHsgdmlzaXQgfSBmcm9tICcuL3Zpc2l0b3IubWpzJztcbi8qKlxuICogQ29udmVydHMgYW4gQVNUIGludG8gYSBzdHJpbmcsIHVzaW5nIG9uZSBzZXQgb2YgcmVhc29uYWJsZVxuICogZm9ybWF0dGluZyBydWxlcy5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnQoYXN0KSB7XG4gIHJldHVybiB2aXNpdChhc3QsIHByaW50RG9jQVNUUmVkdWNlcik7XG59XG5jb25zdCBNQVhfTElORV9MRU5HVEggPSA4MDtcbmNvbnN0IHByaW50RG9jQVNUUmVkdWNlciA9IHtcbiAgTmFtZToge1xuICAgIGxlYXZlOiAobm9kZSkgPT4gbm9kZS52YWx1ZSxcbiAgfSxcbiAgVmFyaWFibGU6IHtcbiAgICBsZWF2ZTogKG5vZGUpID0+ICckJyArIG5vZGUubmFtZSxcbiAgfSxcbiAgLy8gRG9jdW1lbnRcbiAgRG9jdW1lbnQ6IHtcbiAgICBsZWF2ZTogKG5vZGUpID0+IGpvaW4obm9kZS5kZWZpbml0aW9ucywgJ1xcblxcbicpLFxuICB9LFxuICBPcGVyYXRpb25EZWZpbml0aW9uOiB7XG4gICAgbGVhdmUobm9kZSkge1xuICAgICAgY29uc3QgdmFyRGVmcyA9IHdyYXAoJygnLCBqb2luKG5vZGUudmFyaWFibGVEZWZpbml0aW9ucywgJywgJyksICcpJyk7XG4gICAgICBjb25zdCBwcmVmaXggPSBqb2luKFxuICAgICAgICBbXG4gICAgICAgICAgbm9kZS5vcGVyYXRpb24sXG4gICAgICAgICAgam9pbihbbm9kZS5uYW1lLCB2YXJEZWZzXSksXG4gICAgICAgICAgam9pbihub2RlLmRpcmVjdGl2ZXMsICcgJyksXG4gICAgICAgIF0sXG4gICAgICAgICcgJyxcbiAgICAgICk7IC8vIEFub255bW91cyBxdWVyaWVzIHdpdGggbm8gZGlyZWN0aXZlcyBvciB2YXJpYWJsZSBkZWZpbml0aW9ucyBjYW4gdXNlXG4gICAgICAvLyB0aGUgcXVlcnkgc2hvcnQgZm9ybS5cblxuICAgICAgcmV0dXJuIChwcmVmaXggPT09ICdxdWVyeScgPyAnJyA6IHByZWZpeCArICcgJykgKyBub2RlLnNlbGVjdGlvblNldDtcbiAgICB9LFxuICB9LFxuICBWYXJpYWJsZURlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKHsgdmFyaWFibGUsIHR5cGUsIGRlZmF1bHRWYWx1ZSwgZGlyZWN0aXZlcyB9KSA9PlxuICAgICAgdmFyaWFibGUgK1xuICAgICAgJzogJyArXG4gICAgICB0eXBlICtcbiAgICAgIHdyYXAoJyA9ICcsIGRlZmF1bHRWYWx1ZSkgK1xuICAgICAgd3JhcCgnICcsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSksXG4gIH0sXG4gIFNlbGVjdGlvblNldDoge1xuICAgIGxlYXZlOiAoeyBzZWxlY3Rpb25zIH0pID0+IGJsb2NrKHNlbGVjdGlvbnMpLFxuICB9LFxuICBGaWVsZDoge1xuICAgIGxlYXZlKHsgYWxpYXMsIG5hbWUsIGFyZ3VtZW50czogYXJncywgZGlyZWN0aXZlcywgc2VsZWN0aW9uU2V0IH0pIHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IHdyYXAoJycsIGFsaWFzLCAnOiAnKSArIG5hbWU7XG4gICAgICBsZXQgYXJnc0xpbmUgPSBwcmVmaXggKyB3cmFwKCcoJywgam9pbihhcmdzLCAnLCAnKSwgJyknKTtcblxuICAgICAgaWYgKGFyZ3NMaW5lLmxlbmd0aCA+IE1BWF9MSU5FX0xFTkdUSCkge1xuICAgICAgICBhcmdzTGluZSA9IHByZWZpeCArIHdyYXAoJyhcXG4nLCBpbmRlbnQoam9pbihhcmdzLCAnXFxuJykpLCAnXFxuKScpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gam9pbihbYXJnc0xpbmUsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgc2VsZWN0aW9uU2V0XSwgJyAnKTtcbiAgICB9LFxuICB9LFxuICBBcmd1bWVudDoge1xuICAgIGxlYXZlOiAoeyBuYW1lLCB2YWx1ZSB9KSA9PiBuYW1lICsgJzogJyArIHZhbHVlLFxuICB9LFxuICAvLyBGcmFnbWVudHNcbiAgRnJhZ21lbnRTcHJlYWQ6IHtcbiAgICBsZWF2ZTogKHsgbmFtZSwgZGlyZWN0aXZlcyB9KSA9PlxuICAgICAgJy4uLicgKyBuYW1lICsgd3JhcCgnICcsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSksXG4gIH0sXG4gIElubGluZUZyYWdtZW50OiB7XG4gICAgbGVhdmU6ICh7IHR5cGVDb25kaXRpb24sIGRpcmVjdGl2ZXMsIHNlbGVjdGlvblNldCB9KSA9PlxuICAgICAgam9pbihcbiAgICAgICAgW1xuICAgICAgICAgICcuLi4nLFxuICAgICAgICAgIHdyYXAoJ29uICcsIHR5cGVDb25kaXRpb24pLFxuICAgICAgICAgIGpvaW4oZGlyZWN0aXZlcywgJyAnKSxcbiAgICAgICAgICBzZWxlY3Rpb25TZXQsXG4gICAgICAgIF0sXG4gICAgICAgICcgJyxcbiAgICAgICksXG4gIH0sXG4gIEZyYWdtZW50RGVmaW5pdGlvbjoge1xuICAgIGxlYXZlOiAoXG4gICAgICB7IG5hbWUsIHR5cGVDb25kaXRpb24sIHZhcmlhYmxlRGVmaW5pdGlvbnMsIGRpcmVjdGl2ZXMsIHNlbGVjdGlvblNldCB9LCAvLyBOb3RlOiBmcmFnbWVudCB2YXJpYWJsZSBkZWZpbml0aW9ucyBhcmUgZXhwZXJpbWVudGFsIGFuZCBtYXkgYmUgY2hhbmdlZFxuICAgICkgPT5cbiAgICAgIC8vIG9yIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS5cbiAgICAgIGBmcmFnbWVudCAke25hbWV9JHt3cmFwKCcoJywgam9pbih2YXJpYWJsZURlZmluaXRpb25zLCAnLCAnKSwgJyknKX0gYCArXG4gICAgICBgb24gJHt0eXBlQ29uZGl0aW9ufSAke3dyYXAoJycsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgJyAnKX1gICtcbiAgICAgIHNlbGVjdGlvblNldCxcbiAgfSxcbiAgLy8gVmFsdWVcbiAgSW50VmFsdWU6IHtcbiAgICBsZWF2ZTogKHsgdmFsdWUgfSkgPT4gdmFsdWUsXG4gIH0sXG4gIEZsb2F0VmFsdWU6IHtcbiAgICBsZWF2ZTogKHsgdmFsdWUgfSkgPT4gdmFsdWUsXG4gIH0sXG4gIFN0cmluZ1ZhbHVlOiB7XG4gICAgbGVhdmU6ICh7IHZhbHVlLCBibG9jazogaXNCbG9ja1N0cmluZyB9KSA9PlxuICAgICAgaXNCbG9ja1N0cmluZyA/IHByaW50QmxvY2tTdHJpbmcodmFsdWUpIDogcHJpbnRTdHJpbmcodmFsdWUpLFxuICB9LFxuICBCb29sZWFuVmFsdWU6IHtcbiAgICBsZWF2ZTogKHsgdmFsdWUgfSkgPT4gKHZhbHVlID8gJ3RydWUnIDogJ2ZhbHNlJyksXG4gIH0sXG4gIE51bGxWYWx1ZToge1xuICAgIGxlYXZlOiAoKSA9PiAnbnVsbCcsXG4gIH0sXG4gIEVudW1WYWx1ZToge1xuICAgIGxlYXZlOiAoeyB2YWx1ZSB9KSA9PiB2YWx1ZSxcbiAgfSxcbiAgTGlzdFZhbHVlOiB7XG4gICAgbGVhdmU6ICh7IHZhbHVlcyB9KSA9PiAnWycgKyBqb2luKHZhbHVlcywgJywgJykgKyAnXScsXG4gIH0sXG4gIE9iamVjdFZhbHVlOiB7XG4gICAgbGVhdmU6ICh7IGZpZWxkcyB9KSA9PiAneycgKyBqb2luKGZpZWxkcywgJywgJykgKyAnfScsXG4gIH0sXG4gIE9iamVjdEZpZWxkOiB7XG4gICAgbGVhdmU6ICh7IG5hbWUsIHZhbHVlIH0pID0+IG5hbWUgKyAnOiAnICsgdmFsdWUsXG4gIH0sXG4gIC8vIERpcmVjdGl2ZVxuICBEaXJlY3RpdmU6IHtcbiAgICBsZWF2ZTogKHsgbmFtZSwgYXJndW1lbnRzOiBhcmdzIH0pID0+XG4gICAgICAnQCcgKyBuYW1lICsgd3JhcCgnKCcsIGpvaW4oYXJncywgJywgJyksICcpJyksXG4gIH0sXG4gIC8vIFR5cGVcbiAgTmFtZWRUeXBlOiB7XG4gICAgbGVhdmU6ICh7IG5hbWUgfSkgPT4gbmFtZSxcbiAgfSxcbiAgTGlzdFR5cGU6IHtcbiAgICBsZWF2ZTogKHsgdHlwZSB9KSA9PiAnWycgKyB0eXBlICsgJ10nLFxuICB9LFxuICBOb25OdWxsVHlwZToge1xuICAgIGxlYXZlOiAoeyB0eXBlIH0pID0+IHR5cGUgKyAnIScsXG4gIH0sXG4gIC8vIFR5cGUgU3lzdGVtIERlZmluaXRpb25zXG4gIFNjaGVtYURlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKHsgZGVzY3JpcHRpb24sIGRpcmVjdGl2ZXMsIG9wZXJhdGlvblR5cGVzIH0pID0+XG4gICAgICB3cmFwKCcnLCBkZXNjcmlwdGlvbiwgJ1xcbicpICtcbiAgICAgIGpvaW4oWydzY2hlbWEnLCBqb2luKGRpcmVjdGl2ZXMsICcgJyksIGJsb2NrKG9wZXJhdGlvblR5cGVzKV0sICcgJyksXG4gIH0sXG4gIE9wZXJhdGlvblR5cGVEZWZpbml0aW9uOiB7XG4gICAgbGVhdmU6ICh7IG9wZXJhdGlvbiwgdHlwZSB9KSA9PiBvcGVyYXRpb24gKyAnOiAnICsgdHlwZSxcbiAgfSxcbiAgU2NhbGFyVHlwZURlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKHsgZGVzY3JpcHRpb24sIG5hbWUsIGRpcmVjdGl2ZXMgfSkgPT5cbiAgICAgIHdyYXAoJycsIGRlc2NyaXB0aW9uLCAnXFxuJykgK1xuICAgICAgam9pbihbJ3NjYWxhcicsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgJyAnKV0sICcgJyksXG4gIH0sXG4gIE9iamVjdFR5cGVEZWZpbml0aW9uOiB7XG4gICAgbGVhdmU6ICh7IGRlc2NyaXB0aW9uLCBuYW1lLCBpbnRlcmZhY2VzLCBkaXJlY3RpdmVzLCBmaWVsZHMgfSkgPT5cbiAgICAgIHdyYXAoJycsIGRlc2NyaXB0aW9uLCAnXFxuJykgK1xuICAgICAgam9pbihcbiAgICAgICAgW1xuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHdyYXAoJ2ltcGxlbWVudHMgJywgam9pbihpbnRlcmZhY2VzLCAnICYgJykpLFxuICAgICAgICAgIGpvaW4oZGlyZWN0aXZlcywgJyAnKSxcbiAgICAgICAgICBibG9jayhmaWVsZHMpLFxuICAgICAgICBdLFxuICAgICAgICAnICcsXG4gICAgICApLFxuICB9LFxuICBGaWVsZERlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKHsgZGVzY3JpcHRpb24sIG5hbWUsIGFyZ3VtZW50czogYXJncywgdHlwZSwgZGlyZWN0aXZlcyB9KSA9PlxuICAgICAgd3JhcCgnJywgZGVzY3JpcHRpb24sICdcXG4nKSArXG4gICAgICBuYW1lICtcbiAgICAgIChoYXNNdWx0aWxpbmVJdGVtcyhhcmdzKVxuICAgICAgICA/IHdyYXAoJyhcXG4nLCBpbmRlbnQoam9pbihhcmdzLCAnXFxuJykpLCAnXFxuKScpXG4gICAgICAgIDogd3JhcCgnKCcsIGpvaW4oYXJncywgJywgJyksICcpJykpICtcbiAgICAgICc6ICcgK1xuICAgICAgdHlwZSArXG4gICAgICB3cmFwKCcgJywgam9pbihkaXJlY3RpdmVzLCAnICcpKSxcbiAgfSxcbiAgSW5wdXRWYWx1ZURlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKHsgZGVzY3JpcHRpb24sIG5hbWUsIHR5cGUsIGRlZmF1bHRWYWx1ZSwgZGlyZWN0aXZlcyB9KSA9PlxuICAgICAgd3JhcCgnJywgZGVzY3JpcHRpb24sICdcXG4nKSArXG4gICAgICBqb2luKFxuICAgICAgICBbbmFtZSArICc6ICcgKyB0eXBlLCB3cmFwKCc9ICcsIGRlZmF1bHRWYWx1ZSksIGpvaW4oZGlyZWN0aXZlcywgJyAnKV0sXG4gICAgICAgICcgJyxcbiAgICAgICksXG4gIH0sXG4gIEludGVyZmFjZVR5cGVEZWZpbml0aW9uOiB7XG4gICAgbGVhdmU6ICh7IGRlc2NyaXB0aW9uLCBuYW1lLCBpbnRlcmZhY2VzLCBkaXJlY3RpdmVzLCBmaWVsZHMgfSkgPT5cbiAgICAgIHdyYXAoJycsIGRlc2NyaXB0aW9uLCAnXFxuJykgK1xuICAgICAgam9pbihcbiAgICAgICAgW1xuICAgICAgICAgICdpbnRlcmZhY2UnLFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgd3JhcCgnaW1wbGVtZW50cyAnLCBqb2luKGludGVyZmFjZXMsICcgJiAnKSksXG4gICAgICAgICAgam9pbihkaXJlY3RpdmVzLCAnICcpLFxuICAgICAgICAgIGJsb2NrKGZpZWxkcyksXG4gICAgICAgIF0sXG4gICAgICAgICcgJyxcbiAgICAgICksXG4gIH0sXG4gIFVuaW9uVHlwZURlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKHsgZGVzY3JpcHRpb24sIG5hbWUsIGRpcmVjdGl2ZXMsIHR5cGVzIH0pID0+XG4gICAgICB3cmFwKCcnLCBkZXNjcmlwdGlvbiwgJ1xcbicpICtcbiAgICAgIGpvaW4oXG4gICAgICAgIFsndW5pb24nLCBuYW1lLCBqb2luKGRpcmVjdGl2ZXMsICcgJyksIHdyYXAoJz0gJywgam9pbih0eXBlcywgJyB8ICcpKV0sXG4gICAgICAgICcgJyxcbiAgICAgICksXG4gIH0sXG4gIEVudW1UeXBlRGVmaW5pdGlvbjoge1xuICAgIGxlYXZlOiAoeyBkZXNjcmlwdGlvbiwgbmFtZSwgZGlyZWN0aXZlcywgdmFsdWVzIH0pID0+XG4gICAgICB3cmFwKCcnLCBkZXNjcmlwdGlvbiwgJ1xcbicpICtcbiAgICAgIGpvaW4oWydlbnVtJywgbmFtZSwgam9pbihkaXJlY3RpdmVzLCAnICcpLCBibG9jayh2YWx1ZXMpXSwgJyAnKSxcbiAgfSxcbiAgRW51bVZhbHVlRGVmaW5pdGlvbjoge1xuICAgIGxlYXZlOiAoeyBkZXNjcmlwdGlvbiwgbmFtZSwgZGlyZWN0aXZlcyB9KSA9PlxuICAgICAgd3JhcCgnJywgZGVzY3JpcHRpb24sICdcXG4nKSArIGpvaW4oW25hbWUsIGpvaW4oZGlyZWN0aXZlcywgJyAnKV0sICcgJyksXG4gIH0sXG4gIElucHV0T2JqZWN0VHlwZURlZmluaXRpb246IHtcbiAgICBsZWF2ZTogKHsgZGVzY3JpcHRpb24sIG5hbWUsIGRpcmVjdGl2ZXMsIGZpZWxkcyB9KSA9PlxuICAgICAgd3JhcCgnJywgZGVzY3JpcHRpb24sICdcXG4nKSArXG4gICAgICBqb2luKFsnaW5wdXQnLCBuYW1lLCBqb2luKGRpcmVjdGl2ZXMsICcgJyksIGJsb2NrKGZpZWxkcyldLCAnICcpLFxuICB9LFxuICBEaXJlY3RpdmVEZWZpbml0aW9uOiB7XG4gICAgbGVhdmU6ICh7IGRlc2NyaXB0aW9uLCBuYW1lLCBhcmd1bWVudHM6IGFyZ3MsIHJlcGVhdGFibGUsIGxvY2F0aW9ucyB9KSA9PlxuICAgICAgd3JhcCgnJywgZGVzY3JpcHRpb24sICdcXG4nKSArXG4gICAgICAnZGlyZWN0aXZlIEAnICtcbiAgICAgIG5hbWUgK1xuICAgICAgKGhhc011bHRpbGluZUl0ZW1zKGFyZ3MpXG4gICAgICAgID8gd3JhcCgnKFxcbicsIGluZGVudChqb2luKGFyZ3MsICdcXG4nKSksICdcXG4pJylcbiAgICAgICAgOiB3cmFwKCcoJywgam9pbihhcmdzLCAnLCAnKSwgJyknKSkgK1xuICAgICAgKHJlcGVhdGFibGUgPyAnIHJlcGVhdGFibGUnIDogJycpICtcbiAgICAgICcgb24gJyArXG4gICAgICBqb2luKGxvY2F0aW9ucywgJyB8ICcpLFxuICB9LFxuICBTY2hlbWFFeHRlbnNpb246IHtcbiAgICBsZWF2ZTogKHsgZGlyZWN0aXZlcywgb3BlcmF0aW9uVHlwZXMgfSkgPT5cbiAgICAgIGpvaW4oXG4gICAgICAgIFsnZXh0ZW5kIHNjaGVtYScsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgYmxvY2sob3BlcmF0aW9uVHlwZXMpXSxcbiAgICAgICAgJyAnLFxuICAgICAgKSxcbiAgfSxcbiAgU2NhbGFyVHlwZUV4dGVuc2lvbjoge1xuICAgIGxlYXZlOiAoeyBuYW1lLCBkaXJlY3RpdmVzIH0pID0+XG4gICAgICBqb2luKFsnZXh0ZW5kIHNjYWxhcicsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgJyAnKV0sICcgJyksXG4gIH0sXG4gIE9iamVjdFR5cGVFeHRlbnNpb246IHtcbiAgICBsZWF2ZTogKHsgbmFtZSwgaW50ZXJmYWNlcywgZGlyZWN0aXZlcywgZmllbGRzIH0pID0+XG4gICAgICBqb2luKFxuICAgICAgICBbXG4gICAgICAgICAgJ2V4dGVuZCB0eXBlJyxcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHdyYXAoJ2ltcGxlbWVudHMgJywgam9pbihpbnRlcmZhY2VzLCAnICYgJykpLFxuICAgICAgICAgIGpvaW4oZGlyZWN0aXZlcywgJyAnKSxcbiAgICAgICAgICBibG9jayhmaWVsZHMpLFxuICAgICAgICBdLFxuICAgICAgICAnICcsXG4gICAgICApLFxuICB9LFxuICBJbnRlcmZhY2VUeXBlRXh0ZW5zaW9uOiB7XG4gICAgbGVhdmU6ICh7IG5hbWUsIGludGVyZmFjZXMsIGRpcmVjdGl2ZXMsIGZpZWxkcyB9KSA9PlxuICAgICAgam9pbihcbiAgICAgICAgW1xuICAgICAgICAgICdleHRlbmQgaW50ZXJmYWNlJyxcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHdyYXAoJ2ltcGxlbWVudHMgJywgam9pbihpbnRlcmZhY2VzLCAnICYgJykpLFxuICAgICAgICAgIGpvaW4oZGlyZWN0aXZlcywgJyAnKSxcbiAgICAgICAgICBibG9jayhmaWVsZHMpLFxuICAgICAgICBdLFxuICAgICAgICAnICcsXG4gICAgICApLFxuICB9LFxuICBVbmlvblR5cGVFeHRlbnNpb246IHtcbiAgICBsZWF2ZTogKHsgbmFtZSwgZGlyZWN0aXZlcywgdHlwZXMgfSkgPT5cbiAgICAgIGpvaW4oXG4gICAgICAgIFtcbiAgICAgICAgICAnZXh0ZW5kIHVuaW9uJyxcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIGpvaW4oZGlyZWN0aXZlcywgJyAnKSxcbiAgICAgICAgICB3cmFwKCc9ICcsIGpvaW4odHlwZXMsICcgfCAnKSksXG4gICAgICAgIF0sXG4gICAgICAgICcgJyxcbiAgICAgICksXG4gIH0sXG4gIEVudW1UeXBlRXh0ZW5zaW9uOiB7XG4gICAgbGVhdmU6ICh7IG5hbWUsIGRpcmVjdGl2ZXMsIHZhbHVlcyB9KSA9PlxuICAgICAgam9pbihbJ2V4dGVuZCBlbnVtJywgbmFtZSwgam9pbihkaXJlY3RpdmVzLCAnICcpLCBibG9jayh2YWx1ZXMpXSwgJyAnKSxcbiAgfSxcbiAgSW5wdXRPYmplY3RUeXBlRXh0ZW5zaW9uOiB7XG4gICAgbGVhdmU6ICh7IG5hbWUsIGRpcmVjdGl2ZXMsIGZpZWxkcyB9KSA9PlxuICAgICAgam9pbihbJ2V4dGVuZCBpbnB1dCcsIG5hbWUsIGpvaW4oZGlyZWN0aXZlcywgJyAnKSwgYmxvY2soZmllbGRzKV0sICcgJyksXG4gIH0sXG59O1xuLyoqXG4gKiBHaXZlbiBtYXliZUFycmF5LCBwcmludCBhbiBlbXB0eSBzdHJpbmcgaWYgaXQgaXMgbnVsbCBvciBlbXB0eSwgb3RoZXJ3aXNlXG4gKiBwcmludCBhbGwgaXRlbXMgdG9nZXRoZXIgc2VwYXJhdGVkIGJ5IHNlcGFyYXRvciBpZiBwcm92aWRlZFxuICovXG5cbmZ1bmN0aW9uIGpvaW4obWF5YmVBcnJheSwgc2VwYXJhdG9yID0gJycpIHtcbiAgdmFyIF9tYXliZUFycmF5JGZpbHRlciRqbztcblxuICByZXR1cm4gKF9tYXliZUFycmF5JGZpbHRlciRqbyA9XG4gICAgbWF5YmVBcnJheSA9PT0gbnVsbCB8fCBtYXliZUFycmF5ID09PSB2b2lkIDBcbiAgICAgID8gdm9pZCAwXG4gICAgICA6IG1heWJlQXJyYXkuZmlsdGVyKCh4KSA9PiB4KS5qb2luKHNlcGFyYXRvcikpICE9PSBudWxsICYmXG4gICAgX21heWJlQXJyYXkkZmlsdGVyJGpvICE9PSB2b2lkIDBcbiAgICA/IF9tYXliZUFycmF5JGZpbHRlciRqb1xuICAgIDogJyc7XG59XG4vKipcbiAqIEdpdmVuIGFycmF5LCBwcmludCBlYWNoIGl0ZW0gb24gaXRzIG93biBsaW5lLCB3cmFwcGVkIGluIGFuIGluZGVudGVkIGB7IH1gIGJsb2NrLlxuICovXG5cbmZ1bmN0aW9uIGJsb2NrKGFycmF5KSB7XG4gIHJldHVybiB3cmFwKCd7XFxuJywgaW5kZW50KGpvaW4oYXJyYXksICdcXG4nKSksICdcXG59Jyk7XG59XG4vKipcbiAqIElmIG1heWJlU3RyaW5nIGlzIG5vdCBudWxsIG9yIGVtcHR5LCB0aGVuIHdyYXAgd2l0aCBzdGFydCBhbmQgZW5kLCBvdGhlcndpc2UgcHJpbnQgYW4gZW1wdHkgc3RyaW5nLlxuICovXG5cbmZ1bmN0aW9uIHdyYXAoc3RhcnQsIG1heWJlU3RyaW5nLCBlbmQgPSAnJykge1xuICByZXR1cm4gbWF5YmVTdHJpbmcgIT0gbnVsbCAmJiBtYXliZVN0cmluZyAhPT0gJydcbiAgICA/IHN0YXJ0ICsgbWF5YmVTdHJpbmcgKyBlbmRcbiAgICA6ICcnO1xufVxuXG5mdW5jdGlvbiBpbmRlbnQoc3RyKSB7XG4gIHJldHVybiB3cmFwKCcgICcsIHN0ci5yZXBsYWNlKC9cXG4vZywgJ1xcbiAgJykpO1xufVxuXG5mdW5jdGlvbiBoYXNNdWx0aWxpbmVJdGVtcyhtYXliZUFycmF5KSB7XG4gIHZhciBfbWF5YmVBcnJheSRzb21lO1xuXG4gIC8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzXG5cbiAgLyogYzggaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIChfbWF5YmVBcnJheSRzb21lID1cbiAgICBtYXliZUFycmF5ID09PSBudWxsIHx8IG1heWJlQXJyYXkgPT09IHZvaWQgMFxuICAgICAgPyB2b2lkIDBcbiAgICAgIDogbWF5YmVBcnJheS5zb21lKChzdHIpID0+IHN0ci5pbmNsdWRlcygnXFxuJykpKSAhPT0gbnVsbCAmJlxuICAgIF9tYXliZUFycmF5JHNvbWUgIT09IHZvaWQgMFxuICAgID8gX21heWJlQXJyYXkkc29tZVxuICAgIDogZmFsc2U7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/language/printer.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/language/source.mjs":
/*!**************************************************!*\
  !*** ./node_modules/graphql/language/source.mjs ***!
  \**************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Source\": function() { return /* binding */ Source; },\n/* harmony export */   \"isSource\": function() { return /* binding */ isSource; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"./node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/instanceOf.mjs */ \"./node_modules/graphql/jsutils/instanceOf.mjs\");\n\n\n\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nclass Source {\n  constructor(\n    body,\n    name = 'GraphQL request',\n    locationOffset = {\n      line: 1,\n      column: 1,\n    },\n  ) {\n    typeof body === 'string' ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__.devAssert)(false, `Body must be a string. Received: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__.inspect)(body)}.`);\n    this.body = body;\n    this.name = name;\n    this.locationOffset = locationOffset;\n    this.locationOffset.line > 0 ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__.devAssert)(\n        false,\n        'line in locationOffset is 1-indexed and must be positive.',\n      );\n    this.locationOffset.column > 0 ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__.devAssert)(\n        false,\n        'column in locationOffset is 1-indexed and must be positive.',\n      );\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'Source';\n  }\n}\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\nfunction isSource(source) {\n  return (0,_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_2__.instanceOf)(source, Source);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS9zb3VyY2UubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQXFEO0FBQ0o7QUFDTTs7QUFFdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvRUFBb0UscUJBQXFCO0FBQ3pGO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsTUFBTSxpRUFBUyw0Q0FBNEMsNkRBQU8sT0FBTztBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0saUVBQVM7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0saUVBQVM7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxTQUFTLG1FQUFVO0FBQ25CIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL3NvdXJjZS5tanM/YWJjYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXZBc3NlcnQgfSBmcm9tICcuLi9qc3V0aWxzL2RldkFzc2VydC5tanMnO1xuaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgaW5zdGFuY2VPZiB9IGZyb20gJy4uL2pzdXRpbHMvaW5zdGFuY2VPZi5tanMnO1xuXG4vKipcbiAqIEEgcmVwcmVzZW50YXRpb24gb2Ygc291cmNlIGlucHV0IHRvIEdyYXBoUUwuIFRoZSBgbmFtZWAgYW5kIGBsb2NhdGlvbk9mZnNldGAgcGFyYW1ldGVycyBhcmVcbiAqIG9wdGlvbmFsLCBidXQgdGhleSBhcmUgdXNlZnVsIGZvciBjbGllbnRzIHdobyBzdG9yZSBHcmFwaFFMIGRvY3VtZW50cyBpbiBzb3VyY2UgZmlsZXMuXG4gKiBGb3IgZXhhbXBsZSwgaWYgdGhlIEdyYXBoUUwgaW5wdXQgc3RhcnRzIGF0IGxpbmUgNDAgaW4gYSBmaWxlIG5hbWVkIGBGb28uZ3JhcGhxbGAsIGl0IG1pZ2h0XG4gKiBiZSB1c2VmdWwgZm9yIGBuYW1lYCB0byBiZSBgXCJGb28uZ3JhcGhxbFwiYCBhbmQgbG9jYXRpb24gdG8gYmUgYHsgbGluZTogNDAsIGNvbHVtbjogMSB9YC5cbiAqIFRoZSBgbGluZWAgYW5kIGBjb2x1bW5gIHByb3BlcnRpZXMgaW4gYGxvY2F0aW9uT2Zmc2V0YCBhcmUgMS1pbmRleGVkLlxuICovXG5leHBvcnQgY2xhc3MgU291cmNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgYm9keSxcbiAgICBuYW1lID0gJ0dyYXBoUUwgcmVxdWVzdCcsXG4gICAgbG9jYXRpb25PZmZzZXQgPSB7XG4gICAgICBsaW5lOiAxLFxuICAgICAgY29sdW1uOiAxLFxuICAgIH0sXG4gICkge1xuICAgIHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJyB8fFxuICAgICAgZGV2QXNzZXJ0KGZhbHNlLCBgQm9keSBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZDogJHtpbnNwZWN0KGJvZHkpfS5gKTtcbiAgICB0aGlzLmJvZHkgPSBib2R5O1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5sb2NhdGlvbk9mZnNldCA9IGxvY2F0aW9uT2Zmc2V0O1xuICAgIHRoaXMubG9jYXRpb25PZmZzZXQubGluZSA+IDAgfHxcbiAgICAgIGRldkFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgICdsaW5lIGluIGxvY2F0aW9uT2Zmc2V0IGlzIDEtaW5kZXhlZCBhbmQgbXVzdCBiZSBwb3NpdGl2ZS4nLFxuICAgICAgKTtcbiAgICB0aGlzLmxvY2F0aW9uT2Zmc2V0LmNvbHVtbiA+IDAgfHxcbiAgICAgIGRldkFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgICdjb2x1bW4gaW4gbG9jYXRpb25PZmZzZXQgaXMgMS1pbmRleGVkIGFuZCBtdXN0IGJlIHBvc2l0aXZlLicsXG4gICAgICApO1xuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnU291cmNlJztcbiAgfVxufVxuLyoqXG4gKiBUZXN0IGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIFNvdXJjZSBvYmplY3QuXG4gKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU291cmNlKHNvdXJjZSkge1xuICByZXR1cm4gaW5zdGFuY2VPZihzb3VyY2UsIFNvdXJjZSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/language/source.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/language/tokenKind.mjs":
/*!*****************************************************!*\
  !*** ./node_modules/graphql/language/tokenKind.mjs ***!
  \*****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TokenKind\": function() { return /* binding */ TokenKind; }\n/* harmony export */ });\n/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nlet TokenKind;\n/**\n * The enum type representing the token kinds values.\n *\n * @deprecated Please use `TokenKind`. Will be remove in v17.\n */\n\n(function (TokenKind) {\n  TokenKind['SOF'] = '<SOF>';\n  TokenKind['EOF'] = '<EOF>';\n  TokenKind['BANG'] = '!';\n  TokenKind['DOLLAR'] = '$';\n  TokenKind['AMP'] = '&';\n  TokenKind['PAREN_L'] = '(';\n  TokenKind['PAREN_R'] = ')';\n  TokenKind['SPREAD'] = '...';\n  TokenKind['COLON'] = ':';\n  TokenKind['EQUALS'] = '=';\n  TokenKind['AT'] = '@';\n  TokenKind['BRACKET_L'] = '[';\n  TokenKind['BRACKET_R'] = ']';\n  TokenKind['BRACE_L'] = '{';\n  TokenKind['PIPE'] = '|';\n  TokenKind['BRACE_R'] = '}';\n  TokenKind['NAME'] = 'Name';\n  TokenKind['INT'] = 'Int';\n  TokenKind['FLOAT'] = 'Float';\n  TokenKind['STRING'] = 'String';\n  TokenKind['BLOCK_STRING'] = 'BlockString';\n  TokenKind['COMMENT'] = 'Comment';\n})(TokenKind || (TokenKind = {}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS90b2tlbktpbmQubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsOEJBQThCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL3Rva2VuS2luZC5tanM/ZGE5NSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuIGV4cG9ydGVkIGVudW0gZGVzY3JpYmluZyB0aGUgZGlmZmVyZW50IGtpbmRzIG9mIHRva2VucyB0aGF0IHRoZVxuICogbGV4ZXIgZW1pdHMuXG4gKi9cbmV4cG9ydCBsZXQgVG9rZW5LaW5kO1xuLyoqXG4gKiBUaGUgZW51bSB0eXBlIHJlcHJlc2VudGluZyB0aGUgdG9rZW4ga2luZHMgdmFsdWVzLlxuICpcbiAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYFRva2VuS2luZGAuIFdpbGwgYmUgcmVtb3ZlIGluIHYxNy5cbiAqL1xuXG4oZnVuY3Rpb24gKFRva2VuS2luZCkge1xuICBUb2tlbktpbmRbJ1NPRiddID0gJzxTT0Y+JztcbiAgVG9rZW5LaW5kWydFT0YnXSA9ICc8RU9GPic7XG4gIFRva2VuS2luZFsnQkFORyddID0gJyEnO1xuICBUb2tlbktpbmRbJ0RPTExBUiddID0gJyQnO1xuICBUb2tlbktpbmRbJ0FNUCddID0gJyYnO1xuICBUb2tlbktpbmRbJ1BBUkVOX0wnXSA9ICcoJztcbiAgVG9rZW5LaW5kWydQQVJFTl9SJ10gPSAnKSc7XG4gIFRva2VuS2luZFsnU1BSRUFEJ10gPSAnLi4uJztcbiAgVG9rZW5LaW5kWydDT0xPTiddID0gJzonO1xuICBUb2tlbktpbmRbJ0VRVUFMUyddID0gJz0nO1xuICBUb2tlbktpbmRbJ0FUJ10gPSAnQCc7XG4gIFRva2VuS2luZFsnQlJBQ0tFVF9MJ10gPSAnWyc7XG4gIFRva2VuS2luZFsnQlJBQ0tFVF9SJ10gPSAnXSc7XG4gIFRva2VuS2luZFsnQlJBQ0VfTCddID0gJ3snO1xuICBUb2tlbktpbmRbJ1BJUEUnXSA9ICd8JztcbiAgVG9rZW5LaW5kWydCUkFDRV9SJ10gPSAnfSc7XG4gIFRva2VuS2luZFsnTkFNRSddID0gJ05hbWUnO1xuICBUb2tlbktpbmRbJ0lOVCddID0gJ0ludCc7XG4gIFRva2VuS2luZFsnRkxPQVQnXSA9ICdGbG9hdCc7XG4gIFRva2VuS2luZFsnU1RSSU5HJ10gPSAnU3RyaW5nJztcbiAgVG9rZW5LaW5kWydCTE9DS19TVFJJTkcnXSA9ICdCbG9ja1N0cmluZyc7XG4gIFRva2VuS2luZFsnQ09NTUVOVCddID0gJ0NvbW1lbnQnO1xufSkoVG9rZW5LaW5kIHx8IChUb2tlbktpbmQgPSB7fSkpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/language/tokenKind.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/language/visitor.mjs":
/*!***************************************************!*\
  !*** ./node_modules/graphql/language/visitor.mjs ***!
  \***************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BREAK\": function() { return /* binding */ BREAK; },\n/* harmony export */   \"getEnterLeaveForKind\": function() { return /* binding */ getEnterLeaveForKind; },\n/* harmony export */   \"getVisitFn\": function() { return /* binding */ getVisitFn; },\n/* harmony export */   \"visit\": function() { return /* binding */ visit; },\n/* harmony export */   \"visitInParallel\": function() { return /* binding */ visitInParallel; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"./node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _ast_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ast.mjs */ \"./node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n\n\n\n\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nconst BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n *   enter(node, key, parent, path, ancestors) {\n *     // @return\n *     //   undefined: no action\n *     //   false: skip visiting this node\n *     //   visitor.BREAK: stop visiting altogether\n *     //   null: delete this node\n *     //   any value: replace this node with the returned value\n *   },\n *   leave(node, key, parent, path, ancestors) {\n *     // @return\n *     //   undefined: no action\n *     //   false: no action\n *     //   visitor.BREAK: stop visiting altogether\n *     //   null: delete this node\n *     //   any value: replace this node with the returned value\n *   }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n *   Kind(node) {\n *     // enter the \"Kind\" node\n *   }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n *   Kind: {\n *     enter(node) {\n *       // enter the \"Kind\" node\n *     }\n *     leave(node) {\n *       // leave the \"Kind\" node\n *     }\n *   }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n *   enter(node) {\n *     // enter any node\n *   },\n *   leave(node) {\n *     // leave any node\n *   }\n * })\n * ```\n */\n\nfunction visit(root, visitor, visitorKeys = _ast_mjs__WEBPACK_IMPORTED_MODULE_0__.QueryDocumentKeys) {\n  const enterLeaveMap = new Map();\n\n  for (const kind of Object.values(_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind)) {\n    enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n  }\n  /* eslint-disable no-undef-init */\n\n  let stack = undefined;\n  let inArray = Array.isArray(root);\n  let keys = [root];\n  let index = -1;\n  let edits = [];\n  let node = root;\n  let key = undefined;\n  let parent = undefined;\n  const path = [];\n  const ancestors = [];\n  /* eslint-enable no-undef-init */\n\n  do {\n    index++;\n    const isLeaving = index === keys.length;\n    const isEdited = isLeaving && edits.length !== 0;\n\n    if (isLeaving) {\n      key = ancestors.length === 0 ? undefined : path[path.length - 1];\n      node = parent;\n      parent = ancestors.pop();\n\n      if (isEdited) {\n        if (inArray) {\n          node = node.slice();\n          let editOffset = 0;\n\n          for (const [editKey, editValue] of edits) {\n            const arrayKey = editKey - editOffset;\n\n            if (editValue === null) {\n              node.splice(arrayKey, 1);\n              editOffset++;\n            } else {\n              node[arrayKey] = editValue;\n            }\n          }\n        } else {\n          node = Object.defineProperties(\n            {},\n            Object.getOwnPropertyDescriptors(node),\n          );\n\n          for (const [editKey, editValue] of edits) {\n            node[editKey] = editValue;\n          }\n        }\n      }\n\n      index = stack.index;\n      keys = stack.keys;\n      edits = stack.edits;\n      inArray = stack.inArray;\n      stack = stack.prev;\n    } else if (parent) {\n      key = inArray ? index : keys[index];\n      node = parent[key];\n\n      if (node === null || node === undefined) {\n        continue;\n      }\n\n      path.push(key);\n    }\n\n    let result;\n\n    if (!Array.isArray(node)) {\n      var _enterLeaveMap$get, _enterLeaveMap$get2;\n\n      (0,_ast_mjs__WEBPACK_IMPORTED_MODULE_0__.isNode)(node) || (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(false, `Invalid AST Node: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(node)}.`);\n      const visitFn = isLeaving\n        ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null ||\n          _enterLeaveMap$get === void 0\n          ? void 0\n          : _enterLeaveMap$get.leave\n        : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null ||\n          _enterLeaveMap$get2 === void 0\n        ? void 0\n        : _enterLeaveMap$get2.enter;\n      result =\n        visitFn === null || visitFn === void 0\n          ? void 0\n          : visitFn.call(visitor, node, key, parent, path, ancestors);\n\n      if (result === BREAK) {\n        break;\n      }\n\n      if (result === false) {\n        if (!isLeaving) {\n          path.pop();\n          continue;\n        }\n      } else if (result !== undefined) {\n        edits.push([key, result]);\n\n        if (!isLeaving) {\n          if ((0,_ast_mjs__WEBPACK_IMPORTED_MODULE_0__.isNode)(result)) {\n            node = result;\n          } else {\n            path.pop();\n            continue;\n          }\n        }\n      }\n    }\n\n    if (result === undefined && isEdited) {\n      edits.push([key, node]);\n    }\n\n    if (isLeaving) {\n      path.pop();\n    } else {\n      var _node$kind;\n\n      stack = {\n        inArray,\n        index,\n        keys,\n        edits,\n        prev: stack,\n      };\n      inArray = Array.isArray(node);\n      keys = inArray\n        ? node\n        : (_node$kind = visitorKeys[node.kind]) !== null &&\n          _node$kind !== void 0\n        ? _node$kind\n        : [];\n      index = -1;\n      edits = [];\n\n      if (parent) {\n        ancestors.push(parent);\n      }\n\n      parent = node;\n    }\n  } while (stack !== undefined);\n\n  if (edits.length !== 0) {\n    // New root\n    return edits[edits.length - 1][1];\n  }\n\n  return root;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nfunction visitInParallel(visitors) {\n  const skipping = new Array(visitors.length).fill(null);\n  const mergedVisitor = Object.create(null);\n\n  for (const kind of Object.values(_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind)) {\n    let hasVisitor = false;\n    const enterList = new Array(visitors.length).fill(undefined);\n    const leaveList = new Array(visitors.length).fill(undefined);\n\n    for (let i = 0; i < visitors.length; ++i) {\n      const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n      hasVisitor || (hasVisitor = enter != null || leave != null);\n      enterList[i] = enter;\n      leaveList[i] = leave;\n    }\n\n    if (!hasVisitor) {\n      continue;\n    }\n\n    const mergedEnterLeave = {\n      enter(...args) {\n        const node = args[0];\n\n        for (let i = 0; i < visitors.length; i++) {\n          if (skipping[i] === null) {\n            var _enterList$i;\n\n            const result =\n              (_enterList$i = enterList[i]) === null || _enterList$i === void 0\n                ? void 0\n                : _enterList$i.apply(visitors[i], args);\n\n            if (result === false) {\n              skipping[i] = node;\n            } else if (result === BREAK) {\n              skipping[i] = BREAK;\n            } else if (result !== undefined) {\n              return result;\n            }\n          }\n        }\n      },\n\n      leave(...args) {\n        const node = args[0];\n\n        for (let i = 0; i < visitors.length; i++) {\n          if (skipping[i] === null) {\n            var _leaveList$i;\n\n            const result =\n              (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0\n                ? void 0\n                : _leaveList$i.apply(visitors[i], args);\n\n            if (result === BREAK) {\n              skipping[i] = BREAK;\n            } else if (result !== undefined && result !== false) {\n              return result;\n            }\n          } else if (skipping[i] === node) {\n            skipping[i] = null;\n          }\n        }\n      },\n    };\n    mergedVisitor[kind] = mergedEnterLeave;\n  }\n\n  return mergedVisitor;\n}\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\n\nfunction getEnterLeaveForKind(visitor, kind) {\n  const kindVisitor = visitor[kind];\n\n  if (typeof kindVisitor === 'object') {\n    // { Kind: { enter() {}, leave() {} } }\n    return kindVisitor;\n  } else if (typeof kindVisitor === 'function') {\n    // { Kind() {} }\n    return {\n      enter: kindVisitor,\n      leave: undefined,\n    };\n  } // { enter() {}, leave() {} }\n\n  return {\n    enter: visitor.enter,\n    leave: visitor.leave,\n  };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n *\n * @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17\n */\n\n/* c8 ignore next 8 */\n\nfunction getVisitFn(visitor, kind, isLeaving) {\n  const { enter, leave } = getEnterLeaveForKind(visitor, kind);\n  return isLeaving ? leave : enter;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC9sYW5ndWFnZS92aXNpdG9yLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBcUQ7QUFDSjtBQUNLO0FBQ25CO0FBQ25DO0FBQ0E7QUFDQTtBQUNBOztBQUVPLDhCQUE4QjtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRU8sNENBQTRDLHVEQUFpQjtBQUNwRTs7QUFFQSxtQ0FBbUMsNENBQUk7QUFDdkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0EsY0FBYztBQUNkO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSxNQUFNLGdEQUFNLFVBQVUsaUVBQVMsNkJBQTZCLDZEQUFPLE9BQU87QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7O0FBRUE7QUFDQSxjQUFjLGdEQUFNO0FBQ3BCO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRUEsbUNBQW1DLDRDQUFJO0FBQ3ZDO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IscUJBQXFCO0FBQ3pDLGNBQWMsZUFBZTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixxQkFBcUI7QUFDN0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBOztBQUVBLHdCQUF3QixxQkFBcUI7QUFDN0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQSxTQUFTLFFBQVEsVUFBVTtBQUMzQjtBQUNBLElBQUk7QUFDSixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLEtBQUssVUFBVTs7QUFFbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFTztBQUNQLFVBQVUsZUFBZTtBQUN6QjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL2xhbmd1YWdlL3Zpc2l0b3IubWpzPzA3ZjYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGV2QXNzZXJ0IH0gZnJvbSAnLi4vanN1dGlscy9kZXZBc3NlcnQubWpzJztcbmltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IGlzTm9kZSwgUXVlcnlEb2N1bWVudEtleXMgfSBmcm9tICcuL2FzdC5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4va2luZHMubWpzJztcbi8qKlxuICogQSB2aXNpdG9yIGlzIHByb3ZpZGVkIHRvIHZpc2l0LCBpdCBjb250YWlucyB0aGUgY29sbGVjdGlvbiBvZlxuICogcmVsZXZhbnQgZnVuY3Rpb25zIHRvIGJlIGNhbGxlZCBkdXJpbmcgdGhlIHZpc2l0b3IncyB0cmF2ZXJzYWwuXG4gKi9cblxuZXhwb3J0IGNvbnN0IEJSRUFLID0gT2JqZWN0LmZyZWV6ZSh7fSk7XG4vKipcbiAqIHZpc2l0KCkgd2lsbCB3YWxrIHRocm91Z2ggYW4gQVNUIHVzaW5nIGEgZGVwdGgtZmlyc3QgdHJhdmVyc2FsLCBjYWxsaW5nXG4gKiB0aGUgdmlzaXRvcidzIGVudGVyIGZ1bmN0aW9uIGF0IGVhY2ggbm9kZSBpbiB0aGUgdHJhdmVyc2FsLCBhbmQgY2FsbGluZyB0aGVcbiAqIGxlYXZlIGZ1bmN0aW9uIGFmdGVyIHZpc2l0aW5nIHRoYXQgbm9kZSBhbmQgYWxsIG9mIGl0cyBjaGlsZCBub2Rlcy5cbiAqXG4gKiBCeSByZXR1cm5pbmcgZGlmZmVyZW50IHZhbHVlcyBmcm9tIHRoZSBlbnRlciBhbmQgbGVhdmUgZnVuY3Rpb25zLCB0aGVcbiAqIGJlaGF2aW9yIG9mIHRoZSB2aXNpdG9yIGNhbiBiZSBhbHRlcmVkLCBpbmNsdWRpbmcgc2tpcHBpbmcgb3ZlciBhIHN1Yi10cmVlIG9mXG4gKiB0aGUgQVNUIChieSByZXR1cm5pbmcgZmFsc2UpLCBlZGl0aW5nIHRoZSBBU1QgYnkgcmV0dXJuaW5nIGEgdmFsdWUgb3IgbnVsbFxuICogdG8gcmVtb3ZlIHRoZSB2YWx1ZSwgb3IgdG8gc3RvcCB0aGUgd2hvbGUgdHJhdmVyc2FsIGJ5IHJldHVybmluZyBCUkVBSy5cbiAqXG4gKiBXaGVuIHVzaW5nIHZpc2l0KCkgdG8gZWRpdCBhbiBBU1QsIHRoZSBvcmlnaW5hbCBBU1Qgd2lsbCBub3QgYmUgbW9kaWZpZWQsIGFuZFxuICogYSBuZXcgdmVyc2lvbiBvZiB0aGUgQVNUIHdpdGggdGhlIGNoYW5nZXMgYXBwbGllZCB3aWxsIGJlIHJldHVybmVkIGZyb20gdGhlXG4gKiB2aXNpdCBmdW5jdGlvbi5cbiAqXG4gKiBgYGB0c1xuICogY29uc3QgZWRpdGVkQVNUID0gdmlzaXQoYXN0LCB7XG4gKiAgIGVudGVyKG5vZGUsIGtleSwgcGFyZW50LCBwYXRoLCBhbmNlc3RvcnMpIHtcbiAqICAgICAvLyBAcmV0dXJuXG4gKiAgICAgLy8gICB1bmRlZmluZWQ6IG5vIGFjdGlvblxuICogICAgIC8vICAgZmFsc2U6IHNraXAgdmlzaXRpbmcgdGhpcyBub2RlXG4gKiAgICAgLy8gICB2aXNpdG9yLkJSRUFLOiBzdG9wIHZpc2l0aW5nIGFsdG9nZXRoZXJcbiAqICAgICAvLyAgIG51bGw6IGRlbGV0ZSB0aGlzIG5vZGVcbiAqICAgICAvLyAgIGFueSB2YWx1ZTogcmVwbGFjZSB0aGlzIG5vZGUgd2l0aCB0aGUgcmV0dXJuZWQgdmFsdWVcbiAqICAgfSxcbiAqICAgbGVhdmUobm9kZSwga2V5LCBwYXJlbnQsIHBhdGgsIGFuY2VzdG9ycykge1xuICogICAgIC8vIEByZXR1cm5cbiAqICAgICAvLyAgIHVuZGVmaW5lZDogbm8gYWN0aW9uXG4gKiAgICAgLy8gICBmYWxzZTogbm8gYWN0aW9uXG4gKiAgICAgLy8gICB2aXNpdG9yLkJSRUFLOiBzdG9wIHZpc2l0aW5nIGFsdG9nZXRoZXJcbiAqICAgICAvLyAgIG51bGw6IGRlbGV0ZSB0aGlzIG5vZGVcbiAqICAgICAvLyAgIGFueSB2YWx1ZTogcmVwbGFjZSB0aGlzIG5vZGUgd2l0aCB0aGUgcmV0dXJuZWQgdmFsdWVcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBBbHRlcm5hdGl2ZWx5IHRvIHByb3ZpZGluZyBlbnRlcigpIGFuZCBsZWF2ZSgpIGZ1bmN0aW9ucywgYSB2aXNpdG9yIGNhblxuICogaW5zdGVhZCBwcm92aWRlIGZ1bmN0aW9ucyBuYW1lZCB0aGUgc2FtZSBhcyB0aGUga2luZHMgb2YgQVNUIG5vZGVzLCBvclxuICogZW50ZXIvbGVhdmUgdmlzaXRvcnMgYXQgYSBuYW1lZCBrZXksIGxlYWRpbmcgdG8gdGhyZWUgcGVybXV0YXRpb25zIG9mIHRoZVxuICogdmlzaXRvciBBUEk6XG4gKlxuICogMSkgTmFtZWQgdmlzaXRvcnMgdHJpZ2dlcmVkIHdoZW4gZW50ZXJpbmcgYSBub2RlIG9mIGEgc3BlY2lmaWMga2luZC5cbiAqXG4gKiBgYGB0c1xuICogdmlzaXQoYXN0LCB7XG4gKiAgIEtpbmQobm9kZSkge1xuICogICAgIC8vIGVudGVyIHRoZSBcIktpbmRcIiBub2RlXG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiAyKSBOYW1lZCB2aXNpdG9ycyB0aGF0IHRyaWdnZXIgdXBvbiBlbnRlcmluZyBhbmQgbGVhdmluZyBhIG5vZGUgb2YgYSBzcGVjaWZpYyBraW5kLlxuICpcbiAqIGBgYHRzXG4gKiB2aXNpdChhc3QsIHtcbiAqICAgS2luZDoge1xuICogICAgIGVudGVyKG5vZGUpIHtcbiAqICAgICAgIC8vIGVudGVyIHRoZSBcIktpbmRcIiBub2RlXG4gKiAgICAgfVxuICogICAgIGxlYXZlKG5vZGUpIHtcbiAqICAgICAgIC8vIGxlYXZlIHRoZSBcIktpbmRcIiBub2RlXG4gKiAgICAgfVxuICogICB9XG4gKiB9KVxuICogYGBgXG4gKlxuICogMykgR2VuZXJpYyB2aXNpdG9ycyB0aGF0IHRyaWdnZXIgdXBvbiBlbnRlcmluZyBhbmQgbGVhdmluZyBhbnkgbm9kZS5cbiAqXG4gKiBgYGB0c1xuICogdmlzaXQoYXN0LCB7XG4gKiAgIGVudGVyKG5vZGUpIHtcbiAqICAgICAvLyBlbnRlciBhbnkgbm9kZVxuICogICB9LFxuICogICBsZWF2ZShub2RlKSB7XG4gKiAgICAgLy8gbGVhdmUgYW55IG5vZGVcbiAqICAgfVxuICogfSlcbiAqIGBgYFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB2aXNpdChyb290LCB2aXNpdG9yLCB2aXNpdG9yS2V5cyA9IFF1ZXJ5RG9jdW1lbnRLZXlzKSB7XG4gIGNvbnN0IGVudGVyTGVhdmVNYXAgPSBuZXcgTWFwKCk7XG5cbiAgZm9yIChjb25zdCBraW5kIG9mIE9iamVjdC52YWx1ZXMoS2luZCkpIHtcbiAgICBlbnRlckxlYXZlTWFwLnNldChraW5kLCBnZXRFbnRlckxlYXZlRm9yS2luZCh2aXNpdG9yLCBraW5kKSk7XG4gIH1cbiAgLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYtaW5pdCAqL1xuXG4gIGxldCBzdGFjayA9IHVuZGVmaW5lZDtcbiAgbGV0IGluQXJyYXkgPSBBcnJheS5pc0FycmF5KHJvb3QpO1xuICBsZXQga2V5cyA9IFtyb290XTtcbiAgbGV0IGluZGV4ID0gLTE7XG4gIGxldCBlZGl0cyA9IFtdO1xuICBsZXQgbm9kZSA9IHJvb3Q7XG4gIGxldCBrZXkgPSB1bmRlZmluZWQ7XG4gIGxldCBwYXJlbnQgPSB1bmRlZmluZWQ7XG4gIGNvbnN0IHBhdGggPSBbXTtcbiAgY29uc3QgYW5jZXN0b3JzID0gW107XG4gIC8qIGVzbGludC1lbmFibGUgbm8tdW5kZWYtaW5pdCAqL1xuXG4gIGRvIHtcbiAgICBpbmRleCsrO1xuICAgIGNvbnN0IGlzTGVhdmluZyA9IGluZGV4ID09PSBrZXlzLmxlbmd0aDtcbiAgICBjb25zdCBpc0VkaXRlZCA9IGlzTGVhdmluZyAmJiBlZGl0cy5sZW5ndGggIT09IDA7XG5cbiAgICBpZiAoaXNMZWF2aW5nKSB7XG4gICAgICBrZXkgPSBhbmNlc3RvcnMubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICAgICAgbm9kZSA9IHBhcmVudDtcbiAgICAgIHBhcmVudCA9IGFuY2VzdG9ycy5wb3AoKTtcblxuICAgICAgaWYgKGlzRWRpdGVkKSB7XG4gICAgICAgIGlmIChpbkFycmF5KSB7XG4gICAgICAgICAgbm9kZSA9IG5vZGUuc2xpY2UoKTtcbiAgICAgICAgICBsZXQgZWRpdE9mZnNldCA9IDA7XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IFtlZGl0S2V5LCBlZGl0VmFsdWVdIG9mIGVkaXRzKSB7XG4gICAgICAgICAgICBjb25zdCBhcnJheUtleSA9IGVkaXRLZXkgLSBlZGl0T2Zmc2V0O1xuXG4gICAgICAgICAgICBpZiAoZWRpdFZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIG5vZGUuc3BsaWNlKGFycmF5S2V5LCAxKTtcbiAgICAgICAgICAgICAgZWRpdE9mZnNldCsrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbm9kZVthcnJheUtleV0gPSBlZGl0VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vZGUgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobm9kZSksXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGZvciAoY29uc3QgW2VkaXRLZXksIGVkaXRWYWx1ZV0gb2YgZWRpdHMpIHtcbiAgICAgICAgICAgIG5vZGVbZWRpdEtleV0gPSBlZGl0VmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGluZGV4ID0gc3RhY2suaW5kZXg7XG4gICAgICBrZXlzID0gc3RhY2sua2V5cztcbiAgICAgIGVkaXRzID0gc3RhY2suZWRpdHM7XG4gICAgICBpbkFycmF5ID0gc3RhY2suaW5BcnJheTtcbiAgICAgIHN0YWNrID0gc3RhY2sucHJldjtcbiAgICB9IGVsc2UgaWYgKHBhcmVudCkge1xuICAgICAga2V5ID0gaW5BcnJheSA/IGluZGV4IDoga2V5c1tpbmRleF07XG4gICAgICBub2RlID0gcGFyZW50W2tleV07XG5cbiAgICAgIGlmIChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcGF0aC5wdXNoKGtleSk7XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdDtcblxuICAgIGlmICghQXJyYXkuaXNBcnJheShub2RlKSkge1xuICAgICAgdmFyIF9lbnRlckxlYXZlTWFwJGdldCwgX2VudGVyTGVhdmVNYXAkZ2V0MjtcblxuICAgICAgaXNOb2RlKG5vZGUpIHx8IGRldkFzc2VydChmYWxzZSwgYEludmFsaWQgQVNUIE5vZGU6ICR7aW5zcGVjdChub2RlKX0uYCk7XG4gICAgICBjb25zdCB2aXNpdEZuID0gaXNMZWF2aW5nXG4gICAgICAgID8gKF9lbnRlckxlYXZlTWFwJGdldCA9IGVudGVyTGVhdmVNYXAuZ2V0KG5vZGUua2luZCkpID09PSBudWxsIHx8XG4gICAgICAgICAgX2VudGVyTGVhdmVNYXAkZ2V0ID09PSB2b2lkIDBcbiAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgIDogX2VudGVyTGVhdmVNYXAkZ2V0LmxlYXZlXG4gICAgICAgIDogKF9lbnRlckxlYXZlTWFwJGdldDIgPSBlbnRlckxlYXZlTWFwLmdldChub2RlLmtpbmQpKSA9PT0gbnVsbCB8fFxuICAgICAgICAgIF9lbnRlckxlYXZlTWFwJGdldDIgPT09IHZvaWQgMFxuICAgICAgICA/IHZvaWQgMFxuICAgICAgICA6IF9lbnRlckxlYXZlTWFwJGdldDIuZW50ZXI7XG4gICAgICByZXN1bHQgPVxuICAgICAgICB2aXNpdEZuID09PSBudWxsIHx8IHZpc2l0Rm4gPT09IHZvaWQgMFxuICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgOiB2aXNpdEZuLmNhbGwodmlzaXRvciwgbm9kZSwga2V5LCBwYXJlbnQsIHBhdGgsIGFuY2VzdG9ycyk7XG5cbiAgICAgIGlmIChyZXN1bHQgPT09IEJSRUFLKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0ID09PSBmYWxzZSkge1xuICAgICAgICBpZiAoIWlzTGVhdmluZykge1xuICAgICAgICAgIHBhdGgucG9wKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZWRpdHMucHVzaChba2V5LCByZXN1bHRdKTtcblxuICAgICAgICBpZiAoIWlzTGVhdmluZykge1xuICAgICAgICAgIGlmIChpc05vZGUocmVzdWx0KSkge1xuICAgICAgICAgICAgbm9kZSA9IHJlc3VsdDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGF0aC5wb3AoKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCAmJiBpc0VkaXRlZCkge1xuICAgICAgZWRpdHMucHVzaChba2V5LCBub2RlXSk7XG4gICAgfVxuXG4gICAgaWYgKGlzTGVhdmluZykge1xuICAgICAgcGF0aC5wb3AoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIF9ub2RlJGtpbmQ7XG5cbiAgICAgIHN0YWNrID0ge1xuICAgICAgICBpbkFycmF5LFxuICAgICAgICBpbmRleCxcbiAgICAgICAga2V5cyxcbiAgICAgICAgZWRpdHMsXG4gICAgICAgIHByZXY6IHN0YWNrLFxuICAgICAgfTtcbiAgICAgIGluQXJyYXkgPSBBcnJheS5pc0FycmF5KG5vZGUpO1xuICAgICAga2V5cyA9IGluQXJyYXlcbiAgICAgICAgPyBub2RlXG4gICAgICAgIDogKF9ub2RlJGtpbmQgPSB2aXNpdG9yS2V5c1tub2RlLmtpbmRdKSAhPT0gbnVsbCAmJlxuICAgICAgICAgIF9ub2RlJGtpbmQgIT09IHZvaWQgMFxuICAgICAgICA/IF9ub2RlJGtpbmRcbiAgICAgICAgOiBbXTtcbiAgICAgIGluZGV4ID0gLTE7XG4gICAgICBlZGl0cyA9IFtdO1xuXG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIGFuY2VzdG9ycy5wdXNoKHBhcmVudCk7XG4gICAgICB9XG5cbiAgICAgIHBhcmVudCA9IG5vZGU7XG4gICAgfVxuICB9IHdoaWxlIChzdGFjayAhPT0gdW5kZWZpbmVkKTtcblxuICBpZiAoZWRpdHMubGVuZ3RoICE9PSAwKSB7XG4gICAgLy8gTmV3IHJvb3RcbiAgICByZXR1cm4gZWRpdHNbZWRpdHMubGVuZ3RoIC0gMV1bMV07XG4gIH1cblxuICByZXR1cm4gcm9vdDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB2aXNpdG9yIGluc3RhbmNlIHdoaWNoIGRlbGVnYXRlcyB0byBtYW55IHZpc2l0b3JzIHRvIHJ1biBpblxuICogcGFyYWxsZWwuIEVhY2ggdmlzaXRvciB3aWxsIGJlIHZpc2l0ZWQgZm9yIGVhY2ggbm9kZSBiZWZvcmUgbW92aW5nIG9uLlxuICpcbiAqIElmIGEgcHJpb3IgdmlzaXRvciBlZGl0cyBhIG5vZGUsIG5vIGZvbGxvd2luZyB2aXNpdG9ycyB3aWxsIHNlZSB0aGF0IG5vZGUuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHZpc2l0SW5QYXJhbGxlbCh2aXNpdG9ycykge1xuICBjb25zdCBza2lwcGluZyA9IG5ldyBBcnJheSh2aXNpdG9ycy5sZW5ndGgpLmZpbGwobnVsbCk7XG4gIGNvbnN0IG1lcmdlZFZpc2l0b3IgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAoY29uc3Qga2luZCBvZiBPYmplY3QudmFsdWVzKEtpbmQpKSB7XG4gICAgbGV0IGhhc1Zpc2l0b3IgPSBmYWxzZTtcbiAgICBjb25zdCBlbnRlckxpc3QgPSBuZXcgQXJyYXkodmlzaXRvcnMubGVuZ3RoKS5maWxsKHVuZGVmaW5lZCk7XG4gICAgY29uc3QgbGVhdmVMaXN0ID0gbmV3IEFycmF5KHZpc2l0b3JzLmxlbmd0aCkuZmlsbCh1bmRlZmluZWQpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aXNpdG9ycy5sZW5ndGg7ICsraSkge1xuICAgICAgY29uc3QgeyBlbnRlciwgbGVhdmUgfSA9IGdldEVudGVyTGVhdmVGb3JLaW5kKHZpc2l0b3JzW2ldLCBraW5kKTtcbiAgICAgIGhhc1Zpc2l0b3IgfHwgKGhhc1Zpc2l0b3IgPSBlbnRlciAhPSBudWxsIHx8IGxlYXZlICE9IG51bGwpO1xuICAgICAgZW50ZXJMaXN0W2ldID0gZW50ZXI7XG4gICAgICBsZWF2ZUxpc3RbaV0gPSBsZWF2ZTtcbiAgICB9XG5cbiAgICBpZiAoIWhhc1Zpc2l0b3IpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IG1lcmdlZEVudGVyTGVhdmUgPSB7XG4gICAgICBlbnRlciguLi5hcmdzKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBhcmdzWzBdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmlzaXRvcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoc2tpcHBpbmdbaV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHZhciBfZW50ZXJMaXN0JGk7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAgICAgICAgIChfZW50ZXJMaXN0JGkgPSBlbnRlckxpc3RbaV0pID09PSBudWxsIHx8IF9lbnRlckxpc3QkaSA9PT0gdm9pZCAwXG4gICAgICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgICAgICA6IF9lbnRlckxpc3QkaS5hcHBseSh2aXNpdG9yc1tpXSwgYXJncyk7XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIHNraXBwaW5nW2ldID0gbm9kZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09PSBCUkVBSykge1xuICAgICAgICAgICAgICBza2lwcGluZ1tpXSA9IEJSRUFLO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcblxuICAgICAgbGVhdmUoLi4uYXJncykge1xuICAgICAgICBjb25zdCBub2RlID0gYXJnc1swXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZpc2l0b3JzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKHNraXBwaW5nW2ldID09PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgX2xlYXZlTGlzdCRpO1xuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPVxuICAgICAgICAgICAgICAoX2xlYXZlTGlzdCRpID0gbGVhdmVMaXN0W2ldKSA9PT0gbnVsbCB8fCBfbGVhdmVMaXN0JGkgPT09IHZvaWQgMFxuICAgICAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICAgICAgOiBfbGVhdmVMaXN0JGkuYXBwbHkodmlzaXRvcnNbaV0sIGFyZ3MpO1xuXG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSBCUkVBSykge1xuICAgICAgICAgICAgICBza2lwcGluZ1tpXSA9IEJSRUFLO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCAmJiByZXN1bHQgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChza2lwcGluZ1tpXSA9PT0gbm9kZSkge1xuICAgICAgICAgICAgc2tpcHBpbmdbaV0gPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICAgIG1lcmdlZFZpc2l0b3Jba2luZF0gPSBtZXJnZWRFbnRlckxlYXZlO1xuICB9XG5cbiAgcmV0dXJuIG1lcmdlZFZpc2l0b3I7XG59XG4vKipcbiAqIEdpdmVuIGEgdmlzaXRvciBpbnN0YW5jZSBhbmQgYSBub2RlIGtpbmQsIHJldHVybiBFbnRlckxlYXZlVmlzaXRvciBmb3IgdGhhdCBraW5kLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnRlckxlYXZlRm9yS2luZCh2aXNpdG9yLCBraW5kKSB7XG4gIGNvbnN0IGtpbmRWaXNpdG9yID0gdmlzaXRvcltraW5kXTtcblxuICBpZiAodHlwZW9mIGtpbmRWaXNpdG9yID09PSAnb2JqZWN0Jykge1xuICAgIC8vIHsgS2luZDogeyBlbnRlcigpIHt9LCBsZWF2ZSgpIHt9IH0gfVxuICAgIHJldHVybiBraW5kVmlzaXRvcjtcbiAgfSBlbHNlIGlmICh0eXBlb2Yga2luZFZpc2l0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyB7IEtpbmQoKSB7fSB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudGVyOiBraW5kVmlzaXRvcixcbiAgICAgIGxlYXZlOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfSAvLyB7IGVudGVyKCkge30sIGxlYXZlKCkge30gfVxuXG4gIHJldHVybiB7XG4gICAgZW50ZXI6IHZpc2l0b3IuZW50ZXIsXG4gICAgbGVhdmU6IHZpc2l0b3IubGVhdmUsXG4gIH07XG59XG4vKipcbiAqIEdpdmVuIGEgdmlzaXRvciBpbnN0YW5jZSwgaWYgaXQgaXMgbGVhdmluZyBvciBub3QsIGFuZCBhIG5vZGUga2luZCwgcmV0dXJuXG4gKiB0aGUgZnVuY3Rpb24gdGhlIHZpc2l0b3IgcnVudGltZSBzaG91bGQgY2FsbC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIGBnZXRFbnRlckxlYXZlRm9yS2luZGAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxN1xuICovXG5cbi8qIGM4IGlnbm9yZSBuZXh0IDggKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZpc2l0Rm4odmlzaXRvciwga2luZCwgaXNMZWF2aW5nKSB7XG4gIGNvbnN0IHsgZW50ZXIsIGxlYXZlIH0gPSBnZXRFbnRlckxlYXZlRm9yS2luZCh2aXNpdG9yLCBraW5kKTtcbiAgcmV0dXJuIGlzTGVhdmluZyA/IGxlYXZlIDogZW50ZXI7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/language/visitor.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/type/assertName.mjs":
/*!**************************************************!*\
  !*** ./node_modules/graphql/type/assertName.mjs ***!
  \**************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"assertEnumValueName\": function() { return /* binding */ assertEnumValueName; },\n/* harmony export */   \"assertName\": function() { return /* binding */ assertName; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"./node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/characterClasses.mjs */ \"./node_modules/graphql/language/characterClasses.mjs\");\n\n\n\n/**\n * Upholds the spec rules about naming.\n */\n\nfunction assertName(name) {\n  name != null || (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__.devAssert)(false, 'Must provide name.');\n  typeof name === 'string' || (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__.devAssert)(false, 'Expected name to be a string.');\n\n  if (name.length === 0) {\n    throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError('Expected name to be a non-empty string.');\n  }\n\n  for (let i = 1; i < name.length; ++i) {\n    if (!(0,_language_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_2__.isNameContinue)(name.charCodeAt(i))) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n        `Names must only contain [_a-zA-Z0-9] but \"${name}\" does not.`,\n      );\n    }\n  }\n\n  if (!(0,_language_characterClasses_mjs__WEBPACK_IMPORTED_MODULE_2__.isNameStart)(name.charCodeAt(0))) {\n    throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n      `Names must start with [_a-zA-Z] but \"${name}\" does not.`,\n    );\n  }\n\n  return name;\n}\n/**\n * Upholds the spec rules about naming enum values.\n *\n * @internal\n */\n\nfunction assertEnumValueName(name) {\n  if (name === 'true' || name === 'false' || name === 'null') {\n    throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(`Enum values cannot be named: ${name}`);\n  }\n\n  return assertName(name);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC90eXBlL2Fzc2VydE5hbWUubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQXFEO0FBQ0k7QUFDc0I7QUFDL0U7QUFDQTtBQUNBOztBQUVPO0FBQ1Asa0JBQWtCLGlFQUFTO0FBQzNCLDhCQUE4QixpRUFBUzs7QUFFdkM7QUFDQSxjQUFjLGlFQUFZO0FBQzFCOztBQUVBLGtCQUFrQixpQkFBaUI7QUFDbkMsU0FBUyw4RUFBYztBQUN2QixnQkFBZ0IsaUVBQVk7QUFDNUIscURBQXFELEtBQUs7QUFDMUQ7QUFDQTtBQUNBOztBQUVBLE9BQU8sMkVBQVc7QUFDbEIsY0FBYyxpRUFBWTtBQUMxQiw4Q0FBOEMsS0FBSztBQUNuRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQSxjQUFjLGlFQUFZLGlDQUFpQyxLQUFLO0FBQ2hFOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9hc3NlcnROYW1lLm1qcz85NmFiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRldkFzc2VydCB9IGZyb20gJy4uL2pzdXRpbHMvZGV2QXNzZXJ0Lm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcbmltcG9ydCB7IGlzTmFtZUNvbnRpbnVlLCBpc05hbWVTdGFydCB9IGZyb20gJy4uL2xhbmd1YWdlL2NoYXJhY3RlckNsYXNzZXMubWpzJztcbi8qKlxuICogVXBob2xkcyB0aGUgc3BlYyBydWxlcyBhYm91dCBuYW1pbmcuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5hbWUobmFtZSkge1xuICBuYW1lICE9IG51bGwgfHwgZGV2QXNzZXJ0KGZhbHNlLCAnTXVzdCBwcm92aWRlIG5hbWUuJyk7XG4gIHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJyB8fCBkZXZBc3NlcnQoZmFsc2UsICdFeHBlY3RlZCBuYW1lIHRvIGJlIGEgc3RyaW5nLicpO1xuXG4gIGlmIChuYW1lLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoJ0V4cGVjdGVkIG5hbWUgdG8gYmUgYSBub24tZW1wdHkgc3RyaW5nLicpO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDE7IGkgPCBuYW1lLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKCFpc05hbWVDb250aW51ZShuYW1lLmNoYXJDb2RlQXQoaSkpKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgTmFtZXMgbXVzdCBvbmx5IGNvbnRhaW4gW19hLXpBLVowLTldIGJ1dCBcIiR7bmFtZX1cIiBkb2VzIG5vdC5gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWlzTmFtZVN0YXJ0KG5hbWUuY2hhckNvZGVBdCgwKSkpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgYE5hbWVzIG11c3Qgc3RhcnQgd2l0aCBbX2EtekEtWl0gYnV0IFwiJHtuYW1lfVwiIGRvZXMgbm90LmAsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBuYW1lO1xufVxuLyoqXG4gKiBVcGhvbGRzIHRoZSBzcGVjIHJ1bGVzIGFib3V0IG5hbWluZyBlbnVtIHZhbHVlcy5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RW51bVZhbHVlTmFtZShuYW1lKSB7XG4gIGlmIChuYW1lID09PSAndHJ1ZScgfHwgbmFtZSA9PT0gJ2ZhbHNlJyB8fCBuYW1lID09PSAnbnVsbCcpIHtcbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKGBFbnVtIHZhbHVlcyBjYW5ub3QgYmUgbmFtZWQ6ICR7bmFtZX1gKTtcbiAgfVxuXG4gIHJldHVybiBhc3NlcnROYW1lKG5hbWUpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/type/assertName.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/type/definition.mjs":
/*!**************************************************!*\
  !*** ./node_modules/graphql/type/definition.mjs ***!
  \**************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"GraphQLEnumType\": function() { return /* binding */ GraphQLEnumType; },\n/* harmony export */   \"GraphQLInputObjectType\": function() { return /* binding */ GraphQLInputObjectType; },\n/* harmony export */   \"GraphQLInterfaceType\": function() { return /* binding */ GraphQLInterfaceType; },\n/* harmony export */   \"GraphQLList\": function() { return /* binding */ GraphQLList; },\n/* harmony export */   \"GraphQLNonNull\": function() { return /* binding */ GraphQLNonNull; },\n/* harmony export */   \"GraphQLObjectType\": function() { return /* binding */ GraphQLObjectType; },\n/* harmony export */   \"GraphQLScalarType\": function() { return /* binding */ GraphQLScalarType; },\n/* harmony export */   \"GraphQLUnionType\": function() { return /* binding */ GraphQLUnionType; },\n/* harmony export */   \"argsToArgsConfig\": function() { return /* binding */ argsToArgsConfig; },\n/* harmony export */   \"assertAbstractType\": function() { return /* binding */ assertAbstractType; },\n/* harmony export */   \"assertCompositeType\": function() { return /* binding */ assertCompositeType; },\n/* harmony export */   \"assertEnumType\": function() { return /* binding */ assertEnumType; },\n/* harmony export */   \"assertInputObjectType\": function() { return /* binding */ assertInputObjectType; },\n/* harmony export */   \"assertInputType\": function() { return /* binding */ assertInputType; },\n/* harmony export */   \"assertInterfaceType\": function() { return /* binding */ assertInterfaceType; },\n/* harmony export */   \"assertLeafType\": function() { return /* binding */ assertLeafType; },\n/* harmony export */   \"assertListType\": function() { return /* binding */ assertListType; },\n/* harmony export */   \"assertNamedType\": function() { return /* binding */ assertNamedType; },\n/* harmony export */   \"assertNonNullType\": function() { return /* binding */ assertNonNullType; },\n/* harmony export */   \"assertNullableType\": function() { return /* binding */ assertNullableType; },\n/* harmony export */   \"assertObjectType\": function() { return /* binding */ assertObjectType; },\n/* harmony export */   \"assertOutputType\": function() { return /* binding */ assertOutputType; },\n/* harmony export */   \"assertScalarType\": function() { return /* binding */ assertScalarType; },\n/* harmony export */   \"assertType\": function() { return /* binding */ assertType; },\n/* harmony export */   \"assertUnionType\": function() { return /* binding */ assertUnionType; },\n/* harmony export */   \"assertWrappingType\": function() { return /* binding */ assertWrappingType; },\n/* harmony export */   \"defineArguments\": function() { return /* binding */ defineArguments; },\n/* harmony export */   \"getNamedType\": function() { return /* binding */ getNamedType; },\n/* harmony export */   \"getNullableType\": function() { return /* binding */ getNullableType; },\n/* harmony export */   \"isAbstractType\": function() { return /* binding */ isAbstractType; },\n/* harmony export */   \"isCompositeType\": function() { return /* binding */ isCompositeType; },\n/* harmony export */   \"isEnumType\": function() { return /* binding */ isEnumType; },\n/* harmony export */   \"isInputObjectType\": function() { return /* binding */ isInputObjectType; },\n/* harmony export */   \"isInputType\": function() { return /* binding */ isInputType; },\n/* harmony export */   \"isInterfaceType\": function() { return /* binding */ isInterfaceType; },\n/* harmony export */   \"isLeafType\": function() { return /* binding */ isLeafType; },\n/* harmony export */   \"isListType\": function() { return /* binding */ isListType; },\n/* harmony export */   \"isNamedType\": function() { return /* binding */ isNamedType; },\n/* harmony export */   \"isNonNullType\": function() { return /* binding */ isNonNullType; },\n/* harmony export */   \"isNullableType\": function() { return /* binding */ isNullableType; },\n/* harmony export */   \"isObjectType\": function() { return /* binding */ isObjectType; },\n/* harmony export */   \"isOutputType\": function() { return /* binding */ isOutputType; },\n/* harmony export */   \"isRequiredArgument\": function() { return /* binding */ isRequiredArgument; },\n/* harmony export */   \"isRequiredInputField\": function() { return /* binding */ isRequiredInputField; },\n/* harmony export */   \"isScalarType\": function() { return /* binding */ isScalarType; },\n/* harmony export */   \"isType\": function() { return /* binding */ isType; },\n/* harmony export */   \"isUnionType\": function() { return /* binding */ isUnionType; },\n/* harmony export */   \"isWrappingType\": function() { return /* binding */ isWrappingType; },\n/* harmony export */   \"resolveObjMapThunk\": function() { return /* binding */ resolveObjMapThunk; },\n/* harmony export */   \"resolveReadonlyArrayThunk\": function() { return /* binding */ resolveReadonlyArrayThunk; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"./node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../jsutils/didYouMean.mjs */ \"./node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_identityFunc_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/identityFunc.mjs */ \"./node_modules/graphql/jsutils/identityFunc.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/instanceOf.mjs */ \"./node_modules/graphql/jsutils/instanceOf.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"./node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../jsutils/keyMap.mjs */ \"./node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../jsutils/keyValMap.mjs */ \"./node_modules/graphql/jsutils/keyValMap.mjs\");\n/* harmony import */ var _jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jsutils/mapValue.mjs */ \"./node_modules/graphql/jsutils/mapValue.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../jsutils/suggestionList.mjs */ \"./node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../jsutils/toObjMap.mjs */ \"./node_modules/graphql/jsutils/toObjMap.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../language/printer.mjs */ \"./node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _utilities_valueFromASTUntyped_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utilities/valueFromASTUntyped.mjs */ \"./node_modules/graphql/utilities/valueFromASTUntyped.mjs\");\n/* harmony import */ var _assertName_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./assertName.mjs */ \"./node_modules/graphql/type/assertName.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction isType(type) {\n  return (\n    isScalarType(type) ||\n    isObjectType(type) ||\n    isInterfaceType(type) ||\n    isUnionType(type) ||\n    isEnumType(type) ||\n    isInputObjectType(type) ||\n    isListType(type) ||\n    isNonNullType(type)\n  );\n}\nfunction assertType(type) {\n  if (!isType(type)) {\n    throw new Error(`Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)} to be a GraphQL type.`);\n  }\n\n  return type;\n}\n/**\n * There are predicates for each kind of GraphQL type.\n */\n\nfunction isScalarType(type) {\n  return (0,_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_1__.instanceOf)(type, GraphQLScalarType);\n}\nfunction assertScalarType(type) {\n  if (!isScalarType(type)) {\n    throw new Error(`Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)} to be a GraphQL Scalar type.`);\n  }\n\n  return type;\n}\nfunction isObjectType(type) {\n  return (0,_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_1__.instanceOf)(type, GraphQLObjectType);\n}\nfunction assertObjectType(type) {\n  if (!isObjectType(type)) {\n    throw new Error(`Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)} to be a GraphQL Object type.`);\n  }\n\n  return type;\n}\nfunction isInterfaceType(type) {\n  return (0,_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_1__.instanceOf)(type, GraphQLInterfaceType);\n}\nfunction assertInterfaceType(type) {\n  if (!isInterfaceType(type)) {\n    throw new Error(\n      `Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)} to be a GraphQL Interface type.`,\n    );\n  }\n\n  return type;\n}\nfunction isUnionType(type) {\n  return (0,_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_1__.instanceOf)(type, GraphQLUnionType);\n}\nfunction assertUnionType(type) {\n  if (!isUnionType(type)) {\n    throw new Error(`Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)} to be a GraphQL Union type.`);\n  }\n\n  return type;\n}\nfunction isEnumType(type) {\n  return (0,_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_1__.instanceOf)(type, GraphQLEnumType);\n}\nfunction assertEnumType(type) {\n  if (!isEnumType(type)) {\n    throw new Error(`Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)} to be a GraphQL Enum type.`);\n  }\n\n  return type;\n}\nfunction isInputObjectType(type) {\n  return (0,_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_1__.instanceOf)(type, GraphQLInputObjectType);\n}\nfunction assertInputObjectType(type) {\n  if (!isInputObjectType(type)) {\n    throw new Error(\n      `Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)} to be a GraphQL Input Object type.`,\n    );\n  }\n\n  return type;\n}\nfunction isListType(type) {\n  return (0,_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_1__.instanceOf)(type, GraphQLList);\n}\nfunction assertListType(type) {\n  if (!isListType(type)) {\n    throw new Error(`Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)} to be a GraphQL List type.`);\n  }\n\n  return type;\n}\nfunction isNonNullType(type) {\n  return (0,_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_1__.instanceOf)(type, GraphQLNonNull);\n}\nfunction assertNonNullType(type) {\n  if (!isNonNullType(type)) {\n    throw new Error(`Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)} to be a GraphQL Non-Null type.`);\n  }\n\n  return type;\n}\n/**\n * These types may be used as input types for arguments and directives.\n */\n\nfunction isInputType(type) {\n  return (\n    isScalarType(type) ||\n    isEnumType(type) ||\n    isInputObjectType(type) ||\n    (isWrappingType(type) && isInputType(type.ofType))\n  );\n}\nfunction assertInputType(type) {\n  if (!isInputType(type)) {\n    throw new Error(`Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)} to be a GraphQL input type.`);\n  }\n\n  return type;\n}\n/**\n * These types may be used as output types as the result of fields.\n */\n\nfunction isOutputType(type) {\n  return (\n    isScalarType(type) ||\n    isObjectType(type) ||\n    isInterfaceType(type) ||\n    isUnionType(type) ||\n    isEnumType(type) ||\n    (isWrappingType(type) && isOutputType(type.ofType))\n  );\n}\nfunction assertOutputType(type) {\n  if (!isOutputType(type)) {\n    throw new Error(`Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)} to be a GraphQL output type.`);\n  }\n\n  return type;\n}\n/**\n * These types may describe types which may be leaf values.\n */\n\nfunction isLeafType(type) {\n  return isScalarType(type) || isEnumType(type);\n}\nfunction assertLeafType(type) {\n  if (!isLeafType(type)) {\n    throw new Error(`Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)} to be a GraphQL leaf type.`);\n  }\n\n  return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nfunction isCompositeType(type) {\n  return isObjectType(type) || isInterfaceType(type) || isUnionType(type);\n}\nfunction assertCompositeType(type) {\n  if (!isCompositeType(type)) {\n    throw new Error(\n      `Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)} to be a GraphQL composite type.`,\n    );\n  }\n\n  return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nfunction isAbstractType(type) {\n  return isInterfaceType(type) || isUnionType(type);\n}\nfunction assertAbstractType(type) {\n  if (!isAbstractType(type)) {\n    throw new Error(`Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)} to be a GraphQL abstract type.`);\n  }\n\n  return type;\n}\n/**\n * List Type Wrapper\n *\n * A list is a wrapping type which points to another type.\n * Lists are often created within the context of defining the fields of\n * an object type.\n *\n * Example:\n *\n * ```ts\n * const PersonType = new GraphQLObjectType({\n *   name: 'Person',\n *   fields: () => ({\n *     parents: { type: new GraphQLList(PersonType) },\n *     children: { type: new GraphQLList(PersonType) },\n *   })\n * })\n * ```\n */\n\nclass GraphQLList {\n  constructor(ofType) {\n    isType(ofType) ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(false, `Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(ofType)} to be a GraphQL type.`);\n    this.ofType = ofType;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLList';\n  }\n\n  toString() {\n    return '[' + String(this.ofType) + ']';\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n/**\n * Non-Null Type Wrapper\n *\n * A non-null is a wrapping type which points to another type.\n * Non-null types enforce that their values are never null and can ensure\n * an error is raised if this ever occurs during a request. It is useful for\n * fields which you can make a strong guarantee on non-nullability, for example\n * usually the id field of a database row will never be null.\n *\n * Example:\n *\n * ```ts\n * const RowType = new GraphQLObjectType({\n *   name: 'Row',\n *   fields: () => ({\n *     id: { type: new GraphQLNonNull(GraphQLString) },\n *   })\n * })\n * ```\n * Note: the enforcement of non-nullability occurs within the executor.\n */\n\nclass GraphQLNonNull {\n  constructor(ofType) {\n    isNullableType(ofType) ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n        false,\n        `Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(ofType)} to be a GraphQL nullable type.`,\n      );\n    this.ofType = ofType;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLNonNull';\n  }\n\n  toString() {\n    return String(this.ofType) + '!';\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n/**\n * These types wrap and modify other types\n */\n\nfunction isWrappingType(type) {\n  return isListType(type) || isNonNullType(type);\n}\nfunction assertWrappingType(type) {\n  if (!isWrappingType(type)) {\n    throw new Error(`Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)} to be a GraphQL wrapping type.`);\n  }\n\n  return type;\n}\n/**\n * These types can all accept null as a value.\n */\n\nfunction isNullableType(type) {\n  return isType(type) && !isNonNullType(type);\n}\nfunction assertNullableType(type) {\n  if (!isNullableType(type)) {\n    throw new Error(`Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)} to be a GraphQL nullable type.`);\n  }\n\n  return type;\n}\nfunction getNullableType(type) {\n  if (type) {\n    return isNonNullType(type) ? type.ofType : type;\n  }\n}\n/**\n * These named types do not include modifiers like List or NonNull.\n */\n\nfunction isNamedType(type) {\n  return (\n    isScalarType(type) ||\n    isObjectType(type) ||\n    isInterfaceType(type) ||\n    isUnionType(type) ||\n    isEnumType(type) ||\n    isInputObjectType(type)\n  );\n}\nfunction assertNamedType(type) {\n  if (!isNamedType(type)) {\n    throw new Error(`Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)} to be a GraphQL named type.`);\n  }\n\n  return type;\n}\nfunction getNamedType(type) {\n  if (type) {\n    let unwrappedType = type;\n\n    while (isWrappingType(unwrappedType)) {\n      unwrappedType = unwrappedType.ofType;\n    }\n\n    return unwrappedType;\n  }\n}\n/**\n * Used while defining GraphQL types to allow for circular references in\n * otherwise immutable type definitions.\n */\n\nfunction resolveReadonlyArrayThunk(thunk) {\n  return typeof thunk === 'function' ? thunk() : thunk;\n}\nfunction resolveObjMapThunk(thunk) {\n  return typeof thunk === 'function' ? thunk() : thunk;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Scalar Type Definition\n *\n * The leaf values of any request and input values to arguments are\n * Scalars (or Enums) and are defined with a name and a series of functions\n * used to parse input from ast or variables and to ensure validity.\n *\n * If a type's serialize function does not return a value (i.e. it returns\n * `undefined`) then an error will be raised and a `null` value will be returned\n * in the response. If the serialize function returns `null`, then no error will\n * be included in the response.\n *\n * Example:\n *\n * ```ts\n * const OddType = new GraphQLScalarType({\n *   name: 'Odd',\n *   serialize(value) {\n *     if (value % 2 === 1) {\n *       return value;\n *     }\n *   }\n * });\n * ```\n */\nclass GraphQLScalarType {\n  constructor(config) {\n    var _config$parseValue,\n      _config$serialize,\n      _config$parseLiteral,\n      _config$extensionASTN;\n\n    const parseValue =\n      (_config$parseValue = config.parseValue) !== null &&\n      _config$parseValue !== void 0\n        ? _config$parseValue\n        : _jsutils_identityFunc_mjs__WEBPACK_IMPORTED_MODULE_3__.identityFunc;\n    this.name = (0,_assertName_mjs__WEBPACK_IMPORTED_MODULE_4__.assertName)(config.name);\n    this.description = config.description;\n    this.specifiedByURL = config.specifiedByURL;\n    this.serialize =\n      (_config$serialize = config.serialize) !== null &&\n      _config$serialize !== void 0\n        ? _config$serialize\n        : _jsutils_identityFunc_mjs__WEBPACK_IMPORTED_MODULE_3__.identityFunc;\n    this.parseValue = parseValue;\n    this.parseLiteral =\n      (_config$parseLiteral = config.parseLiteral) !== null &&\n      _config$parseLiteral !== void 0\n        ? _config$parseLiteral\n        : (node, variables) => parseValue((0,_utilities_valueFromASTUntyped_mjs__WEBPACK_IMPORTED_MODULE_5__.valueFromASTUntyped)(node, variables));\n    this.extensions = (0,_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_6__.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN = config.extensionASTNodes) !== null &&\n      _config$extensionASTN !== void 0\n        ? _config$extensionASTN\n        : [];\n    config.specifiedByURL == null ||\n      typeof config.specifiedByURL === 'string' ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n        false,\n        `${this.name} must provide \"specifiedByURL\" as a string, ` +\n          `but got: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(config.specifiedByURL)}.`,\n      );\n    config.serialize == null ||\n      typeof config.serialize === 'function' ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n        false,\n        `${this.name} must provide \"serialize\" function. If this custom Scalar is also used as an input type, ensure \"parseValue\" and \"parseLiteral\" functions are also provided.`,\n      );\n\n    if (config.parseLiteral) {\n      (typeof config.parseValue === 'function' &&\n        typeof config.parseLiteral === 'function') ||\n        (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n          false,\n          `${this.name} must provide both \"parseValue\" and \"parseLiteral\" functions.`,\n        );\n    }\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLScalarType';\n  }\n\n  toConfig() {\n    return {\n      name: this.name,\n      description: this.description,\n      specifiedByURL: this.specifiedByURL,\n      serialize: this.serialize,\n      parseValue: this.parseValue,\n      parseLiteral: this.parseLiteral,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\n/**\n * Object Type Definition\n *\n * Almost all of the GraphQL types you define will be object types. Object types\n * have a name, but most importantly describe their fields.\n *\n * Example:\n *\n * ```ts\n * const AddressType = new GraphQLObjectType({\n *   name: 'Address',\n *   fields: {\n *     street: { type: GraphQLString },\n *     number: { type: GraphQLInt },\n *     formatted: {\n *       type: GraphQLString,\n *       resolve(obj) {\n *         return obj.number + ' ' + obj.street\n *       }\n *     }\n *   }\n * });\n * ```\n *\n * When two types need to refer to each other, or a type needs to refer to\n * itself in a field, you can use a function expression (aka a closure or a\n * thunk) to supply the fields lazily.\n *\n * Example:\n *\n * ```ts\n * const PersonType = new GraphQLObjectType({\n *   name: 'Person',\n *   fields: () => ({\n *     name: { type: GraphQLString },\n *     bestFriend: { type: PersonType },\n *   })\n * });\n * ```\n */\nclass GraphQLObjectType {\n  constructor(config) {\n    var _config$extensionASTN2;\n\n    this.name = (0,_assertName_mjs__WEBPACK_IMPORTED_MODULE_4__.assertName)(config.name);\n    this.description = config.description;\n    this.isTypeOf = config.isTypeOf;\n    this.extensions = (0,_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_6__.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN2 = config.extensionASTNodes) !== null &&\n      _config$extensionASTN2 !== void 0\n        ? _config$extensionASTN2\n        : [];\n\n    this._fields = () => defineFieldMap(config);\n\n    this._interfaces = () => defineInterfaces(config);\n\n    config.isTypeOf == null ||\n      typeof config.isTypeOf === 'function' ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n        false,\n        `${this.name} must provide \"isTypeOf\" as a function, ` +\n          `but got: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(config.isTypeOf)}.`,\n      );\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLObjectType';\n  }\n\n  getFields() {\n    if (typeof this._fields === 'function') {\n      this._fields = this._fields();\n    }\n\n    return this._fields;\n  }\n\n  getInterfaces() {\n    if (typeof this._interfaces === 'function') {\n      this._interfaces = this._interfaces();\n    }\n\n    return this._interfaces;\n  }\n\n  toConfig() {\n    return {\n      name: this.name,\n      description: this.description,\n      interfaces: this.getInterfaces(),\n      fields: fieldsToFieldsConfig(this.getFields()),\n      isTypeOf: this.isTypeOf,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nfunction defineInterfaces(config) {\n  var _config$interfaces;\n\n  const interfaces = resolveReadonlyArrayThunk(\n    (_config$interfaces = config.interfaces) !== null &&\n      _config$interfaces !== void 0\n      ? _config$interfaces\n      : [],\n  );\n  Array.isArray(interfaces) ||\n    (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n      false,\n      `${config.name} interfaces must be an Array or a function which returns an Array.`,\n    );\n  return interfaces;\n}\n\nfunction defineFieldMap(config) {\n  const fieldMap = resolveObjMapThunk(config.fields);\n  isPlainObj(fieldMap) ||\n    (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n      false,\n      `${config.name} fields must be an object with field names as keys or a function which returns such an object.`,\n    );\n  return (0,_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_7__.mapValue)(fieldMap, (fieldConfig, fieldName) => {\n    var _fieldConfig$args;\n\n    isPlainObj(fieldConfig) ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n        false,\n        `${config.name}.${fieldName} field config must be an object.`,\n      );\n    fieldConfig.resolve == null ||\n      typeof fieldConfig.resolve === 'function' ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n        false,\n        `${config.name}.${fieldName} field resolver must be a function if ` +\n          `provided, but got: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(fieldConfig.resolve)}.`,\n      );\n    const argsConfig =\n      (_fieldConfig$args = fieldConfig.args) !== null &&\n      _fieldConfig$args !== void 0\n        ? _fieldConfig$args\n        : {};\n    isPlainObj(argsConfig) ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n        false,\n        `${config.name}.${fieldName} args must be an object with argument names as keys.`,\n      );\n    return {\n      name: (0,_assertName_mjs__WEBPACK_IMPORTED_MODULE_4__.assertName)(fieldName),\n      description: fieldConfig.description,\n      type: fieldConfig.type,\n      args: defineArguments(argsConfig),\n      resolve: fieldConfig.resolve,\n      subscribe: fieldConfig.subscribe,\n      deprecationReason: fieldConfig.deprecationReason,\n      extensions: (0,_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_6__.toObjMap)(fieldConfig.extensions),\n      astNode: fieldConfig.astNode,\n    };\n  });\n}\n\nfunction defineArguments(config) {\n  return Object.entries(config).map(([argName, argConfig]) => ({\n    name: (0,_assertName_mjs__WEBPACK_IMPORTED_MODULE_4__.assertName)(argName),\n    description: argConfig.description,\n    type: argConfig.type,\n    defaultValue: argConfig.defaultValue,\n    deprecationReason: argConfig.deprecationReason,\n    extensions: (0,_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_6__.toObjMap)(argConfig.extensions),\n    astNode: argConfig.astNode,\n  }));\n}\n\nfunction isPlainObj(obj) {\n  return (0,_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_8__.isObjectLike)(obj) && !Array.isArray(obj);\n}\n\nfunction fieldsToFieldsConfig(fields) {\n  return (0,_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_7__.mapValue)(fields, (field) => ({\n    description: field.description,\n    type: field.type,\n    args: argsToArgsConfig(field.args),\n    resolve: field.resolve,\n    subscribe: field.subscribe,\n    deprecationReason: field.deprecationReason,\n    extensions: field.extensions,\n    astNode: field.astNode,\n  }));\n}\n/**\n * @internal\n */\n\nfunction argsToArgsConfig(args) {\n  return (0,_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_9__.keyValMap)(\n    args,\n    (arg) => arg.name,\n    (arg) => ({\n      description: arg.description,\n      type: arg.type,\n      defaultValue: arg.defaultValue,\n      deprecationReason: arg.deprecationReason,\n      extensions: arg.extensions,\n      astNode: arg.astNode,\n    }),\n  );\n}\nfunction isRequiredArgument(arg) {\n  return isNonNullType(arg.type) && arg.defaultValue === undefined;\n}\n\n/**\n * Interface Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Interface type\n * is used to describe what types are possible, what fields are in common across\n * all types, as well as a function to determine which type is actually used\n * when the field is resolved.\n *\n * Example:\n *\n * ```ts\n * const EntityType = new GraphQLInterfaceType({\n *   name: 'Entity',\n *   fields: {\n *     name: { type: GraphQLString }\n *   }\n * });\n * ```\n */\nclass GraphQLInterfaceType {\n  constructor(config) {\n    var _config$extensionASTN3;\n\n    this.name = (0,_assertName_mjs__WEBPACK_IMPORTED_MODULE_4__.assertName)(config.name);\n    this.description = config.description;\n    this.resolveType = config.resolveType;\n    this.extensions = (0,_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_6__.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN3 = config.extensionASTNodes) !== null &&\n      _config$extensionASTN3 !== void 0\n        ? _config$extensionASTN3\n        : [];\n    this._fields = defineFieldMap.bind(undefined, config);\n    this._interfaces = defineInterfaces.bind(undefined, config);\n    config.resolveType == null ||\n      typeof config.resolveType === 'function' ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n        false,\n        `${this.name} must provide \"resolveType\" as a function, ` +\n          `but got: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(config.resolveType)}.`,\n      );\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLInterfaceType';\n  }\n\n  getFields() {\n    if (typeof this._fields === 'function') {\n      this._fields = this._fields();\n    }\n\n    return this._fields;\n  }\n\n  getInterfaces() {\n    if (typeof this._interfaces === 'function') {\n      this._interfaces = this._interfaces();\n    }\n\n    return this._interfaces;\n  }\n\n  toConfig() {\n    return {\n      name: this.name,\n      description: this.description,\n      interfaces: this.getInterfaces(),\n      fields: fieldsToFieldsConfig(this.getFields()),\n      resolveType: this.resolveType,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\n/**\n * Union Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Union type\n * is used to describe what types are possible as well as providing a function\n * to determine which type is actually used when the field is resolved.\n *\n * Example:\n *\n * ```ts\n * const PetType = new GraphQLUnionType({\n *   name: 'Pet',\n *   types: [ DogType, CatType ],\n *   resolveType(value) {\n *     if (value instanceof Dog) {\n *       return DogType;\n *     }\n *     if (value instanceof Cat) {\n *       return CatType;\n *     }\n *   }\n * });\n * ```\n */\nclass GraphQLUnionType {\n  constructor(config) {\n    var _config$extensionASTN4;\n\n    this.name = (0,_assertName_mjs__WEBPACK_IMPORTED_MODULE_4__.assertName)(config.name);\n    this.description = config.description;\n    this.resolveType = config.resolveType;\n    this.extensions = (0,_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_6__.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN4 = config.extensionASTNodes) !== null &&\n      _config$extensionASTN4 !== void 0\n        ? _config$extensionASTN4\n        : [];\n    this._types = defineTypes.bind(undefined, config);\n    config.resolveType == null ||\n      typeof config.resolveType === 'function' ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n        false,\n        `${this.name} must provide \"resolveType\" as a function, ` +\n          `but got: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(config.resolveType)}.`,\n      );\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLUnionType';\n  }\n\n  getTypes() {\n    if (typeof this._types === 'function') {\n      this._types = this._types();\n    }\n\n    return this._types;\n  }\n\n  toConfig() {\n    return {\n      name: this.name,\n      description: this.description,\n      types: this.getTypes(),\n      resolveType: this.resolveType,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nfunction defineTypes(config) {\n  const types = resolveReadonlyArrayThunk(config.types);\n  Array.isArray(types) ||\n    (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n      false,\n      `Must provide Array of types or a function which returns such an array for Union ${config.name}.`,\n    );\n  return types;\n}\n\n/**\n * Enum Type Definition\n *\n * Some leaf values of requests and input values are Enums. GraphQL serializes\n * Enum values as strings, however internally Enums can be represented by any\n * kind of type, often integers.\n *\n * Example:\n *\n * ```ts\n * const RGBType = new GraphQLEnumType({\n *   name: 'RGB',\n *   values: {\n *     RED: { value: 0 },\n *     GREEN: { value: 1 },\n *     BLUE: { value: 2 }\n *   }\n * });\n * ```\n *\n * Note: If a value is not provided in a definition, the name of the enum value\n * will be used as its internal value.\n */\nclass GraphQLEnumType {\n  /* <T> */\n  constructor(config) {\n    var _config$extensionASTN5;\n\n    this.name = (0,_assertName_mjs__WEBPACK_IMPORTED_MODULE_4__.assertName)(config.name);\n    this.description = config.description;\n    this.extensions = (0,_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_6__.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN5 = config.extensionASTNodes) !== null &&\n      _config$extensionASTN5 !== void 0\n        ? _config$extensionASTN5\n        : [];\n    this._values = defineEnumValues(this.name, config.values);\n    this._valueLookup = new Map(\n      this._values.map((enumValue) => [enumValue.value, enumValue]),\n    );\n    this._nameLookup = (0,_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_10__.keyMap)(this._values, (value) => value.name);\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLEnumType';\n  }\n\n  getValues() {\n    return this._values;\n  }\n\n  getValue(name) {\n    return this._nameLookup[name];\n  }\n\n  serialize(outputValue) {\n    const enumValue = this._valueLookup.get(outputValue);\n\n    if (enumValue === undefined) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_11__.GraphQLError(\n        `Enum \"${this.name}\" cannot represent value: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(outputValue)}`,\n      );\n    }\n\n    return enumValue.name;\n  }\n\n  parseValue(inputValue) /* T */\n  {\n    if (typeof inputValue !== 'string') {\n      const valueStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(inputValue);\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_11__.GraphQLError(\n        `Enum \"${this.name}\" cannot represent non-string value: ${valueStr}.` +\n          didYouMeanEnumValue(this, valueStr),\n      );\n    }\n\n    const enumValue = this.getValue(inputValue);\n\n    if (enumValue == null) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_11__.GraphQLError(\n        `Value \"${inputValue}\" does not exist in \"${this.name}\" enum.` +\n          didYouMeanEnumValue(this, inputValue),\n      );\n    }\n\n    return enumValue.value;\n  }\n\n  parseLiteral(valueNode, _variables) /* T */\n  {\n    // Note: variables will be resolved to a value before calling this function.\n    if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_12__.Kind.ENUM) {\n      const valueStr = (0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_13__.print)(valueNode);\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_11__.GraphQLError(\n        `Enum \"${this.name}\" cannot represent non-enum value: ${valueStr}.` +\n          didYouMeanEnumValue(this, valueStr),\n        valueNode,\n      );\n    }\n\n    const enumValue = this.getValue(valueNode.value);\n\n    if (enumValue == null) {\n      const valueStr = (0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_13__.print)(valueNode);\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_11__.GraphQLError(\n        `Value \"${valueStr}\" does not exist in \"${this.name}\" enum.` +\n          didYouMeanEnumValue(this, valueStr),\n        valueNode,\n      );\n    }\n\n    return enumValue.value;\n  }\n\n  toConfig() {\n    const values = (0,_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_9__.keyValMap)(\n      this.getValues(),\n      (value) => value.name,\n      (value) => ({\n        description: value.description,\n        value: value.value,\n        deprecationReason: value.deprecationReason,\n        extensions: value.extensions,\n        astNode: value.astNode,\n      }),\n    );\n    return {\n      name: this.name,\n      description: this.description,\n      values,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nfunction didYouMeanEnumValue(enumType, unknownValueStr) {\n  const allNames = enumType.getValues().map((value) => value.name);\n  const suggestedValues = (0,_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_14__.suggestionList)(unknownValueStr, allNames);\n  return (0,_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_15__.didYouMean)('the enum value', suggestedValues);\n}\n\nfunction defineEnumValues(typeName, valueMap) {\n  isPlainObj(valueMap) ||\n    (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n      false,\n      `${typeName} values must be an object with value names as keys.`,\n    );\n  return Object.entries(valueMap).map(([valueName, valueConfig]) => {\n    isPlainObj(valueConfig) ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n        false,\n        `${typeName}.${valueName} must refer to an object with a \"value\" key ` +\n          `representing an internal value but got: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(valueConfig)}.`,\n      );\n    return {\n      name: (0,_assertName_mjs__WEBPACK_IMPORTED_MODULE_4__.assertEnumValueName)(valueName),\n      description: valueConfig.description,\n      value: valueConfig.value !== undefined ? valueConfig.value : valueName,\n      deprecationReason: valueConfig.deprecationReason,\n      extensions: (0,_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_6__.toObjMap)(valueConfig.extensions),\n      astNode: valueConfig.astNode,\n    };\n  });\n}\n\n/**\n * Input Object Type Definition\n *\n * An input object defines a structured collection of fields which may be\n * supplied to a field argument.\n *\n * Using `NonNull` will ensure that a value must be provided by the query\n *\n * Example:\n *\n * ```ts\n * const GeoPoint = new GraphQLInputObjectType({\n *   name: 'GeoPoint',\n *   fields: {\n *     lat: { type: new GraphQLNonNull(GraphQLFloat) },\n *     lon: { type: new GraphQLNonNull(GraphQLFloat) },\n *     alt: { type: GraphQLFloat, defaultValue: 0 },\n *   }\n * });\n * ```\n */\nclass GraphQLInputObjectType {\n  constructor(config) {\n    var _config$extensionASTN6;\n\n    this.name = (0,_assertName_mjs__WEBPACK_IMPORTED_MODULE_4__.assertName)(config.name);\n    this.description = config.description;\n    this.extensions = (0,_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_6__.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN6 = config.extensionASTNodes) !== null &&\n      _config$extensionASTN6 !== void 0\n        ? _config$extensionASTN6\n        : [];\n    this._fields = defineInputFieldMap.bind(undefined, config);\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLInputObjectType';\n  }\n\n  getFields() {\n    if (typeof this._fields === 'function') {\n      this._fields = this._fields();\n    }\n\n    return this._fields;\n  }\n\n  toConfig() {\n    const fields = (0,_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_7__.mapValue)(this.getFields(), (field) => ({\n      description: field.description,\n      type: field.type,\n      defaultValue: field.defaultValue,\n      deprecationReason: field.deprecationReason,\n      extensions: field.extensions,\n      astNode: field.astNode,\n    }));\n    return {\n      name: this.name,\n      description: this.description,\n      fields,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nfunction defineInputFieldMap(config) {\n  const fieldMap = resolveObjMapThunk(config.fields);\n  isPlainObj(fieldMap) ||\n    (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n      false,\n      `${config.name} fields must be an object with field names as keys or a function which returns such an object.`,\n    );\n  return (0,_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_7__.mapValue)(fieldMap, (fieldConfig, fieldName) => {\n    !('resolve' in fieldConfig) ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(\n        false,\n        `${config.name}.${fieldName} field has a resolve property, but Input Types cannot define resolvers.`,\n      );\n    return {\n      name: (0,_assertName_mjs__WEBPACK_IMPORTED_MODULE_4__.assertName)(fieldName),\n      description: fieldConfig.description,\n      type: fieldConfig.type,\n      defaultValue: fieldConfig.defaultValue,\n      deprecationReason: fieldConfig.deprecationReason,\n      extensions: (0,_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_6__.toObjMap)(fieldConfig.extensions),\n      astNode: fieldConfig.astNode,\n    };\n  });\n}\n\nfunction isRequiredInputField(field) {\n  return isNonNullType(field.type) && field.defaultValue === undefined;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC90eXBlL2RlZmluaXRpb24ubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFxRDtBQUNFO0FBQ0k7QUFDVjtBQUNNO0FBQ0k7QUFDWjtBQUNNO0FBQ0Y7QUFDWTtBQUNaO0FBQ007QUFDWjtBQUNHO0FBQzJCO0FBQ1I7QUFDNUQ7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLGdDQUFnQyw2REFBTyxRQUFRO0FBQy9DOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxTQUFTLG1FQUFVO0FBQ25CO0FBQ087QUFDUDtBQUNBLGdDQUFnQyw2REFBTyxRQUFRO0FBQy9DOztBQUVBO0FBQ0E7QUFDTztBQUNQLFNBQVMsbUVBQVU7QUFDbkI7QUFDTztBQUNQO0FBQ0EsZ0NBQWdDLDZEQUFPLFFBQVE7QUFDL0M7O0FBRUE7QUFDQTtBQUNPO0FBQ1AsU0FBUyxtRUFBVTtBQUNuQjtBQUNPO0FBQ1A7QUFDQTtBQUNBLGtCQUFrQiw2REFBTyxRQUFRO0FBQ2pDO0FBQ0E7O0FBRUE7QUFDQTtBQUNPO0FBQ1AsU0FBUyxtRUFBVTtBQUNuQjtBQUNPO0FBQ1A7QUFDQSxnQ0FBZ0MsNkRBQU8sUUFBUTtBQUMvQzs7QUFFQTtBQUNBO0FBQ087QUFDUCxTQUFTLG1FQUFVO0FBQ25CO0FBQ087QUFDUDtBQUNBLGdDQUFnQyw2REFBTyxRQUFRO0FBQy9DOztBQUVBO0FBQ0E7QUFDTztBQUNQLFNBQVMsbUVBQVU7QUFDbkI7QUFDTztBQUNQO0FBQ0E7QUFDQSxrQkFBa0IsNkRBQU8sUUFBUTtBQUNqQztBQUNBOztBQUVBO0FBQ0E7QUFDTztBQUNQLFNBQVMsbUVBQVU7QUFDbkI7QUFDTztBQUNQO0FBQ0EsZ0NBQWdDLDZEQUFPLFFBQVE7QUFDL0M7O0FBRUE7QUFDQTtBQUNPO0FBQ1AsU0FBUyxtRUFBVTtBQUNuQjtBQUNPO0FBQ1A7QUFDQSxnQ0FBZ0MsNkRBQU8sUUFBUTtBQUMvQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsZ0NBQWdDLDZEQUFPLFFBQVE7QUFDL0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxnQ0FBZ0MsNkRBQU8sUUFBUTtBQUMvQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQSxnQ0FBZ0MsNkRBQU8sUUFBUTtBQUMvQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLGtCQUFrQiw2REFBTyxRQUFRO0FBQ2pDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0EsZ0NBQWdDLDZEQUFPLFFBQVE7QUFDL0M7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG1DQUFtQztBQUNyRCxtQkFBbUIsbUNBQW1DO0FBQ3RELE1BQU07QUFDTixJQUFJO0FBQ0o7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSxNQUFNLGlFQUFTLG9CQUFvQiw2REFBTyxVQUFVO0FBQ3BEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEseUNBQXlDO0FBQ3RELE1BQU07QUFDTixJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBLE1BQU0saUVBQVM7QUFDZjtBQUNBLG9CQUFvQiw2REFBTyxVQUFVO0FBQ3JDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQSxnQ0FBZ0MsNkRBQU8sUUFBUTtBQUMvQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNPO0FBQ1A7QUFDQSxnQ0FBZ0MsNkRBQU8sUUFBUTtBQUMvQzs7QUFFQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQSxnQ0FBZ0MsNkRBQU8sUUFBUTtBQUMvQzs7QUFFQTtBQUNBO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsbUVBQVk7QUFDdEIsZ0JBQWdCLDJEQUFVO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsbUVBQVk7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQyx1RkFBbUI7QUFDN0Qsc0JBQXNCLCtEQUFRO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGlFQUFTO0FBQ2Y7QUFDQSxXQUFXLFdBQVc7QUFDdEIsc0JBQXNCLDZEQUFPLHdCQUF3QjtBQUNyRDtBQUNBO0FBQ0E7QUFDQSxNQUFNLGlFQUFTO0FBQ2Y7QUFDQSxXQUFXLFdBQVc7QUFDdEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxpRUFBUztBQUNqQjtBQUNBLGFBQWEsV0FBVztBQUN4QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIscUJBQXFCO0FBQ3RDLGlCQUFpQixrQkFBa0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxxQkFBcUI7QUFDcEMscUJBQXFCLGtCQUFrQjtBQUN2QyxNQUFNO0FBQ04sSUFBSTtBQUNKO0FBQ0E7QUFDTztBQUNQO0FBQ0E7O0FBRUEsZ0JBQWdCLDJEQUFVO0FBQzFCO0FBQ0E7QUFDQSxzQkFBc0IsK0RBQVE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNLGlFQUFTO0FBQ2Y7QUFDQSxXQUFXLFdBQVc7QUFDdEIsc0JBQXNCLDZEQUFPLGtCQUFrQjtBQUMvQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxpRUFBUztBQUNiO0FBQ0EsU0FBUyxhQUFhO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGlFQUFTO0FBQ2I7QUFDQSxTQUFTLGFBQWE7QUFDdEI7QUFDQSxTQUFTLCtEQUFRO0FBQ2pCOztBQUVBO0FBQ0EsTUFBTSxpRUFBUztBQUNmO0FBQ0EsV0FBVyxZQUFZLEdBQUcsV0FBVztBQUNyQztBQUNBO0FBQ0E7QUFDQSxNQUFNLGlFQUFTO0FBQ2Y7QUFDQSxXQUFXLFlBQVksR0FBRyxXQUFXO0FBQ3JDLGdDQUFnQyw2REFBTyxzQkFBc0I7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGlFQUFTO0FBQ2Y7QUFDQSxXQUFXLFlBQVksR0FBRyxXQUFXO0FBQ3JDO0FBQ0E7QUFDQSxZQUFZLDJEQUFVO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiwrREFBUTtBQUMxQjtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVPO0FBQ1A7QUFDQSxVQUFVLDJEQUFVO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLCtEQUFRO0FBQ3hCO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0EsU0FBUyx1RUFBWTtBQUNyQjs7QUFFQTtBQUNBLFNBQVMsK0RBQVE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQLFNBQVMsaUVBQVM7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ087QUFDUDtBQUNBOztBQUVBLGdCQUFnQiwyREFBVTtBQUMxQjtBQUNBO0FBQ0Esc0JBQXNCLCtEQUFRO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxpRUFBUztBQUNmO0FBQ0EsV0FBVyxXQUFXO0FBQ3RCLHNCQUFzQiw2REFBTyxxQkFBcUI7QUFDbEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDTztBQUNQO0FBQ0E7O0FBRUEsZ0JBQWdCLDJEQUFVO0FBQzFCO0FBQ0E7QUFDQSxzQkFBc0IsK0RBQVE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxpRUFBUztBQUNmO0FBQ0EsV0FBVyxXQUFXO0FBQ3RCLHNCQUFzQiw2REFBTyxxQkFBcUI7QUFDbEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGlFQUFTO0FBQ2I7QUFDQSx5RkFBeUYsWUFBWTtBQUNyRztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFVBQVU7QUFDeEIsZ0JBQWdCLFVBQVU7QUFDMUIsZUFBZTtBQUNmO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTs7QUFFQSxnQkFBZ0IsMkRBQVU7QUFDMUI7QUFDQSxzQkFBc0IsK0RBQVE7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNERBQU07QUFDN0I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQixrRUFBWTtBQUM1QixpQkFBaUIsVUFBVSw0QkFBNEIsNkRBQU8sY0FBYztBQUM1RTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLDZEQUFPO0FBQzlCLGdCQUFnQixrRUFBWTtBQUM1QixpQkFBaUIsVUFBVSx1Q0FBdUMsU0FBUztBQUMzRTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxnQkFBZ0Isa0VBQVk7QUFDNUIsa0JBQWtCLFdBQVcsdUJBQXVCLFVBQVU7QUFDOUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDJEQUFTO0FBQ3BDLHVCQUF1Qiw2REFBSztBQUM1QixnQkFBZ0Isa0VBQVk7QUFDNUIsaUJBQWlCLFVBQVUscUNBQXFDLFNBQVM7QUFDekU7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSx1QkFBdUIsNkRBQUs7QUFDNUIsZ0JBQWdCLGtFQUFZO0FBQzVCLGtCQUFrQixTQUFTLHVCQUF1QixVQUFVO0FBQzVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsaUVBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDBCQUEwQiw0RUFBYztBQUN4QyxTQUFTLG9FQUFVO0FBQ25COztBQUVBO0FBQ0E7QUFDQSxJQUFJLGlFQUFTO0FBQ2I7QUFDQSxTQUFTLFVBQVU7QUFDbkI7QUFDQTtBQUNBO0FBQ0EsTUFBTSxpRUFBUztBQUNmO0FBQ0EsV0FBVyxTQUFTLEdBQUcsV0FBVztBQUNsQyxxREFBcUQsNkRBQU8sY0FBYztBQUMxRTtBQUNBO0FBQ0EsWUFBWSxvRUFBbUI7QUFDL0I7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLCtEQUFRO0FBQzFCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsd0NBQXdDO0FBQ3RELGNBQWMsd0NBQXdDO0FBQ3RELGNBQWMscUNBQXFDO0FBQ25EO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDTztBQUNQO0FBQ0E7O0FBRUEsZ0JBQWdCLDJEQUFVO0FBQzFCO0FBQ0Esc0JBQXNCLCtEQUFRO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsK0RBQVE7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSSxpRUFBUztBQUNiO0FBQ0EsU0FBUyxhQUFhO0FBQ3RCO0FBQ0EsU0FBUywrREFBUTtBQUNqQjtBQUNBLE1BQU0saUVBQVM7QUFDZjtBQUNBLFdBQVcsWUFBWSxHQUFHLFdBQVc7QUFDckM7QUFDQTtBQUNBLFlBQVksMkRBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsK0RBQVE7QUFDMUI7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFTztBQUNQO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9kZWZpbml0aW9uLm1qcz9iOWY5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRldkFzc2VydCB9IGZyb20gJy4uL2pzdXRpbHMvZGV2QXNzZXJ0Lm1qcyc7XG5pbXBvcnQgeyBkaWRZb3VNZWFuIH0gZnJvbSAnLi4vanN1dGlscy9kaWRZb3VNZWFuLm1qcyc7XG5pbXBvcnQgeyBpZGVudGl0eUZ1bmMgfSBmcm9tICcuLi9qc3V0aWxzL2lkZW50aXR5RnVuYy5tanMnO1xuaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgaW5zdGFuY2VPZiB9IGZyb20gJy4uL2pzdXRpbHMvaW5zdGFuY2VPZi5tanMnO1xuaW1wb3J0IHsgaXNPYmplY3RMaWtlIH0gZnJvbSAnLi4vanN1dGlscy9pc09iamVjdExpa2UubWpzJztcbmltcG9ydCB7IGtleU1hcCB9IGZyb20gJy4uL2pzdXRpbHMva2V5TWFwLm1qcyc7XG5pbXBvcnQgeyBrZXlWYWxNYXAgfSBmcm9tICcuLi9qc3V0aWxzL2tleVZhbE1hcC5tanMnO1xuaW1wb3J0IHsgbWFwVmFsdWUgfSBmcm9tICcuLi9qc3V0aWxzL21hcFZhbHVlLm1qcyc7XG5pbXBvcnQgeyBzdWdnZXN0aW9uTGlzdCB9IGZyb20gJy4uL2pzdXRpbHMvc3VnZ2VzdGlvbkxpc3QubWpzJztcbmltcG9ydCB7IHRvT2JqTWFwIH0gZnJvbSAnLi4vanN1dGlscy90b09iak1hcC5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbmltcG9ydCB7IHByaW50IH0gZnJvbSAnLi4vbGFuZ3VhZ2UvcHJpbnRlci5tanMnO1xuaW1wb3J0IHsgdmFsdWVGcm9tQVNUVW50eXBlZCB9IGZyb20gJy4uL3V0aWxpdGllcy92YWx1ZUZyb21BU1RVbnR5cGVkLm1qcyc7XG5pbXBvcnQgeyBhc3NlcnRFbnVtVmFsdWVOYW1lLCBhc3NlcnROYW1lIH0gZnJvbSAnLi9hc3NlcnROYW1lLm1qcyc7XG5leHBvcnQgZnVuY3Rpb24gaXNUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIChcbiAgICBpc1NjYWxhclR5cGUodHlwZSkgfHxcbiAgICBpc09iamVjdFR5cGUodHlwZSkgfHxcbiAgICBpc0ludGVyZmFjZVR5cGUodHlwZSkgfHxcbiAgICBpc1VuaW9uVHlwZSh0eXBlKSB8fFxuICAgIGlzRW51bVR5cGUodHlwZSkgfHxcbiAgICBpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSB8fFxuICAgIGlzTGlzdFR5cGUodHlwZSkgfHxcbiAgICBpc05vbk51bGxUeXBlKHR5cGUpXG4gICk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VHlwZSh0eXBlKSB7XG4gIGlmICghaXNUeXBlKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2luc3BlY3QodHlwZSl9IHRvIGJlIGEgR3JhcGhRTCB0eXBlLmApO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG4vKipcbiAqIFRoZXJlIGFyZSBwcmVkaWNhdGVzIGZvciBlYWNoIGtpbmQgb2YgR3JhcGhRTCB0eXBlLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NjYWxhclR5cGUodHlwZSkge1xuICByZXR1cm4gaW5zdGFuY2VPZih0eXBlLCBHcmFwaFFMU2NhbGFyVHlwZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0U2NhbGFyVHlwZSh0eXBlKSB7XG4gIGlmICghaXNTY2FsYXJUeXBlKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2luc3BlY3QodHlwZSl9IHRvIGJlIGEgR3JhcGhRTCBTY2FsYXIgdHlwZS5gKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0VHlwZSh0eXBlKSB7XG4gIHJldHVybiBpbnN0YW5jZU9mKHR5cGUsIEdyYXBoUUxPYmplY3RUeXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRPYmplY3RUeXBlKHR5cGUpIHtcbiAgaWYgKCFpc09iamVjdFR5cGUodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7aW5zcGVjdCh0eXBlKX0gdG8gYmUgYSBHcmFwaFFMIE9iamVjdCB0eXBlLmApO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNJbnRlcmZhY2VUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGluc3RhbmNlT2YodHlwZSwgR3JhcGhRTEludGVyZmFjZVR5cGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEludGVyZmFjZVR5cGUodHlwZSkge1xuICBpZiAoIWlzSW50ZXJmYWNlVHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBFeHBlY3RlZCAke2luc3BlY3QodHlwZSl9IHRvIGJlIGEgR3JhcGhRTCBJbnRlcmZhY2UgdHlwZS5gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1VuaW9uVHlwZSh0eXBlKSB7XG4gIHJldHVybiBpbnN0YW5jZU9mKHR5cGUsIEdyYXBoUUxVbmlvblR5cGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFVuaW9uVHlwZSh0eXBlKSB7XG4gIGlmICghaXNVbmlvblR5cGUodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7aW5zcGVjdCh0eXBlKX0gdG8gYmUgYSBHcmFwaFFMIFVuaW9uIHR5cGUuYCk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0VudW1UeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGluc3RhbmNlT2YodHlwZSwgR3JhcGhRTEVudW1UeXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRFbnVtVHlwZSh0eXBlKSB7XG4gIGlmICghaXNFbnVtVHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtpbnNwZWN0KHR5cGUpfSB0byBiZSBhIEdyYXBoUUwgRW51bSB0eXBlLmApO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNJbnB1dE9iamVjdFR5cGUodHlwZSkge1xuICByZXR1cm4gaW5zdGFuY2VPZih0eXBlLCBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRJbnB1dE9iamVjdFR5cGUodHlwZSkge1xuICBpZiAoIWlzSW5wdXRPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEV4cGVjdGVkICR7aW5zcGVjdCh0eXBlKX0gdG8gYmUgYSBHcmFwaFFMIElucHV0IE9iamVjdCB0eXBlLmAsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTGlzdFR5cGUodHlwZSkge1xuICByZXR1cm4gaW5zdGFuY2VPZih0eXBlLCBHcmFwaFFMTGlzdCk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0TGlzdFR5cGUodHlwZSkge1xuICBpZiAoIWlzTGlzdFR5cGUodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7aW5zcGVjdCh0eXBlKX0gdG8gYmUgYSBHcmFwaFFMIExpc3QgdHlwZS5gKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9uTnVsbFR5cGUodHlwZSkge1xuICByZXR1cm4gaW5zdGFuY2VPZih0eXBlLCBHcmFwaFFMTm9uTnVsbCk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0Tm9uTnVsbFR5cGUodHlwZSkge1xuICBpZiAoIWlzTm9uTnVsbFR5cGUodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7aW5zcGVjdCh0eXBlKX0gdG8gYmUgYSBHcmFwaFFMIE5vbi1OdWxsIHR5cGUuYCk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbi8qKlxuICogVGhlc2UgdHlwZXMgbWF5IGJlIHVzZWQgYXMgaW5wdXQgdHlwZXMgZm9yIGFyZ3VtZW50cyBhbmQgZGlyZWN0aXZlcy5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnB1dFR5cGUodHlwZSkge1xuICByZXR1cm4gKFxuICAgIGlzU2NhbGFyVHlwZSh0eXBlKSB8fFxuICAgIGlzRW51bVR5cGUodHlwZSkgfHxcbiAgICBpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSB8fFxuICAgIChpc1dyYXBwaW5nVHlwZSh0eXBlKSAmJiBpc0lucHV0VHlwZSh0eXBlLm9mVHlwZSkpXG4gICk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SW5wdXRUeXBlKHR5cGUpIHtcbiAgaWYgKCFpc0lucHV0VHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtpbnNwZWN0KHR5cGUpfSB0byBiZSBhIEdyYXBoUUwgaW5wdXQgdHlwZS5gKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuLyoqXG4gKiBUaGVzZSB0eXBlcyBtYXkgYmUgdXNlZCBhcyBvdXRwdXQgdHlwZXMgYXMgdGhlIHJlc3VsdCBvZiBmaWVsZHMuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzT3V0cHV0VHlwZSh0eXBlKSB7XG4gIHJldHVybiAoXG4gICAgaXNTY2FsYXJUeXBlKHR5cGUpIHx8XG4gICAgaXNPYmplY3RUeXBlKHR5cGUpIHx8XG4gICAgaXNJbnRlcmZhY2VUeXBlKHR5cGUpIHx8XG4gICAgaXNVbmlvblR5cGUodHlwZSkgfHxcbiAgICBpc0VudW1UeXBlKHR5cGUpIHx8XG4gICAgKGlzV3JhcHBpbmdUeXBlKHR5cGUpICYmIGlzT3V0cHV0VHlwZSh0eXBlLm9mVHlwZSkpXG4gICk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0T3V0cHV0VHlwZSh0eXBlKSB7XG4gIGlmICghaXNPdXRwdXRUeXBlKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2luc3BlY3QodHlwZSl9IHRvIGJlIGEgR3JhcGhRTCBvdXRwdXQgdHlwZS5gKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuLyoqXG4gKiBUaGVzZSB0eXBlcyBtYXkgZGVzY3JpYmUgdHlwZXMgd2hpY2ggbWF5IGJlIGxlYWYgdmFsdWVzLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlYWZUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGlzU2NhbGFyVHlwZSh0eXBlKSB8fCBpc0VudW1UeXBlKHR5cGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydExlYWZUeXBlKHR5cGUpIHtcbiAgaWYgKCFpc0xlYWZUeXBlKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2luc3BlY3QodHlwZSl9IHRvIGJlIGEgR3JhcGhRTCBsZWFmIHR5cGUuYCk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbi8qKlxuICogVGhlc2UgdHlwZXMgbWF5IGRlc2NyaWJlIHRoZSBwYXJlbnQgY29udGV4dCBvZiBhIHNlbGVjdGlvbiBzZXQuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29tcG9zaXRlVHlwZSh0eXBlKSB7XG4gIHJldHVybiBpc09iamVjdFR5cGUodHlwZSkgfHwgaXNJbnRlcmZhY2VUeXBlKHR5cGUpIHx8IGlzVW5pb25UeXBlKHR5cGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydENvbXBvc2l0ZVR5cGUodHlwZSkge1xuICBpZiAoIWlzQ29tcG9zaXRlVHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBFeHBlY3RlZCAke2luc3BlY3QodHlwZSl9IHRvIGJlIGEgR3JhcGhRTCBjb21wb3NpdGUgdHlwZS5gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbi8qKlxuICogVGhlc2UgdHlwZXMgbWF5IGRlc2NyaWJlIHRoZSBwYXJlbnQgY29udGV4dCBvZiBhIHNlbGVjdGlvbiBzZXQuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWJzdHJhY3RUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGlzSW50ZXJmYWNlVHlwZSh0eXBlKSB8fCBpc1VuaW9uVHlwZSh0eXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRBYnN0cmFjdFR5cGUodHlwZSkge1xuICBpZiAoIWlzQWJzdHJhY3RUeXBlKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2luc3BlY3QodHlwZSl9IHRvIGJlIGEgR3JhcGhRTCBhYnN0cmFjdCB0eXBlLmApO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG4vKipcbiAqIExpc3QgVHlwZSBXcmFwcGVyXG4gKlxuICogQSBsaXN0IGlzIGEgd3JhcHBpbmcgdHlwZSB3aGljaCBwb2ludHMgdG8gYW5vdGhlciB0eXBlLlxuICogTGlzdHMgYXJlIG9mdGVuIGNyZWF0ZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGRlZmluaW5nIHRoZSBmaWVsZHMgb2ZcbiAqIGFuIG9iamVjdCB0eXBlLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IFBlcnNvblR5cGUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICogICBuYW1lOiAnUGVyc29uJyxcbiAqICAgZmllbGRzOiAoKSA9PiAoe1xuICogICAgIHBhcmVudHM6IHsgdHlwZTogbmV3IEdyYXBoUUxMaXN0KFBlcnNvblR5cGUpIH0sXG4gKiAgICAgY2hpbGRyZW46IHsgdHlwZTogbmV3IEdyYXBoUUxMaXN0KFBlcnNvblR5cGUpIH0sXG4gKiAgIH0pXG4gKiB9KVxuICogYGBgXG4gKi9cblxuZXhwb3J0IGNsYXNzIEdyYXBoUUxMaXN0IHtcbiAgY29uc3RydWN0b3Iob2ZUeXBlKSB7XG4gICAgaXNUeXBlKG9mVHlwZSkgfHxcbiAgICAgIGRldkFzc2VydChmYWxzZSwgYEV4cGVjdGVkICR7aW5zcGVjdChvZlR5cGUpfSB0byBiZSBhIEdyYXBoUUwgdHlwZS5gKTtcbiAgICB0aGlzLm9mVHlwZSA9IG9mVHlwZTtcbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gJ0dyYXBoUUxMaXN0JztcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiAnWycgKyBTdHJpbmcodGhpcy5vZlR5cGUpICsgJ10nO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCk7XG4gIH1cbn1cbi8qKlxuICogTm9uLU51bGwgVHlwZSBXcmFwcGVyXG4gKlxuICogQSBub24tbnVsbCBpcyBhIHdyYXBwaW5nIHR5cGUgd2hpY2ggcG9pbnRzIHRvIGFub3RoZXIgdHlwZS5cbiAqIE5vbi1udWxsIHR5cGVzIGVuZm9yY2UgdGhhdCB0aGVpciB2YWx1ZXMgYXJlIG5ldmVyIG51bGwgYW5kIGNhbiBlbnN1cmVcbiAqIGFuIGVycm9yIGlzIHJhaXNlZCBpZiB0aGlzIGV2ZXIgb2NjdXJzIGR1cmluZyBhIHJlcXVlc3QuIEl0IGlzIHVzZWZ1bCBmb3JcbiAqIGZpZWxkcyB3aGljaCB5b3UgY2FuIG1ha2UgYSBzdHJvbmcgZ3VhcmFudGVlIG9uIG5vbi1udWxsYWJpbGl0eSwgZm9yIGV4YW1wbGVcbiAqIHVzdWFsbHkgdGhlIGlkIGZpZWxkIG9mIGEgZGF0YWJhc2Ugcm93IHdpbGwgbmV2ZXIgYmUgbnVsbC5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBSb3dUeXBlID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAqICAgbmFtZTogJ1JvdycsXG4gKiAgIGZpZWxkczogKCkgPT4gKHtcbiAqICAgICBpZDogeyB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZykgfSxcbiAqICAgfSlcbiAqIH0pXG4gKiBgYGBcbiAqIE5vdGU6IHRoZSBlbmZvcmNlbWVudCBvZiBub24tbnVsbGFiaWxpdHkgb2NjdXJzIHdpdGhpbiB0aGUgZXhlY3V0b3IuXG4gKi9cblxuZXhwb3J0IGNsYXNzIEdyYXBoUUxOb25OdWxsIHtcbiAgY29uc3RydWN0b3Iob2ZUeXBlKSB7XG4gICAgaXNOdWxsYWJsZVR5cGUob2ZUeXBlKSB8fFxuICAgICAgZGV2QXNzZXJ0KFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgYEV4cGVjdGVkICR7aW5zcGVjdChvZlR5cGUpfSB0byBiZSBhIEdyYXBoUUwgbnVsbGFibGUgdHlwZS5gLFxuICAgICAgKTtcbiAgICB0aGlzLm9mVHlwZSA9IG9mVHlwZTtcbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gJ0dyYXBoUUxOb25OdWxsJztcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBTdHJpbmcodGhpcy5vZlR5cGUpICsgJyEnO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCk7XG4gIH1cbn1cbi8qKlxuICogVGhlc2UgdHlwZXMgd3JhcCBhbmQgbW9kaWZ5IG90aGVyIHR5cGVzXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzV3JhcHBpbmdUeXBlKHR5cGUpIHtcbiAgcmV0dXJuIGlzTGlzdFR5cGUodHlwZSkgfHwgaXNOb25OdWxsVHlwZSh0eXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRXcmFwcGluZ1R5cGUodHlwZSkge1xuICBpZiAoIWlzV3JhcHBpbmdUeXBlKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2luc3BlY3QodHlwZSl9IHRvIGJlIGEgR3JhcGhRTCB3cmFwcGluZyB0eXBlLmApO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG4vKipcbiAqIFRoZXNlIHR5cGVzIGNhbiBhbGwgYWNjZXB0IG51bGwgYXMgYSB2YWx1ZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsYWJsZVR5cGUodHlwZSkge1xuICByZXR1cm4gaXNUeXBlKHR5cGUpICYmICFpc05vbk51bGxUeXBlKHR5cGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE51bGxhYmxlVHlwZSh0eXBlKSB7XG4gIGlmICghaXNOdWxsYWJsZVR5cGUodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7aW5zcGVjdCh0eXBlKX0gdG8gYmUgYSBHcmFwaFFMIG51bGxhYmxlIHR5cGUuYCk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXROdWxsYWJsZVR5cGUodHlwZSkge1xuICBpZiAodHlwZSkge1xuICAgIHJldHVybiBpc05vbk51bGxUeXBlKHR5cGUpID8gdHlwZS5vZlR5cGUgOiB0eXBlO1xuICB9XG59XG4vKipcbiAqIFRoZXNlIG5hbWVkIHR5cGVzIGRvIG5vdCBpbmNsdWRlIG1vZGlmaWVycyBsaWtlIExpc3Qgb3IgTm9uTnVsbC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNOYW1lZFR5cGUodHlwZSkge1xuICByZXR1cm4gKFxuICAgIGlzU2NhbGFyVHlwZSh0eXBlKSB8fFxuICAgIGlzT2JqZWN0VHlwZSh0eXBlKSB8fFxuICAgIGlzSW50ZXJmYWNlVHlwZSh0eXBlKSB8fFxuICAgIGlzVW5pb25UeXBlKHR5cGUpIHx8XG4gICAgaXNFbnVtVHlwZSh0eXBlKSB8fFxuICAgIGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpXG4gICk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0TmFtZWRUeXBlKHR5cGUpIHtcbiAgaWYgKCFpc05hbWVkVHlwZSh0eXBlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtpbnNwZWN0KHR5cGUpfSB0byBiZSBhIEdyYXBoUUwgbmFtZWQgdHlwZS5gKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE5hbWVkVHlwZSh0eXBlKSB7XG4gIGlmICh0eXBlKSB7XG4gICAgbGV0IHVud3JhcHBlZFR5cGUgPSB0eXBlO1xuXG4gICAgd2hpbGUgKGlzV3JhcHBpbmdUeXBlKHVud3JhcHBlZFR5cGUpKSB7XG4gICAgICB1bndyYXBwZWRUeXBlID0gdW53cmFwcGVkVHlwZS5vZlR5cGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVud3JhcHBlZFR5cGU7XG4gIH1cbn1cbi8qKlxuICogVXNlZCB3aGlsZSBkZWZpbmluZyBHcmFwaFFMIHR5cGVzIHRvIGFsbG93IGZvciBjaXJjdWxhciByZWZlcmVuY2VzIGluXG4gKiBvdGhlcndpc2UgaW1tdXRhYmxlIHR5cGUgZGVmaW5pdGlvbnMuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSZWFkb25seUFycmF5VGh1bmsodGh1bmspIHtcbiAgcmV0dXJuIHR5cGVvZiB0aHVuayA9PT0gJ2Z1bmN0aW9uJyA/IHRodW5rKCkgOiB0aHVuaztcbn1cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlT2JqTWFwVGh1bmsodGh1bmspIHtcbiAgcmV0dXJuIHR5cGVvZiB0aHVuayA9PT0gJ2Z1bmN0aW9uJyA/IHRodW5rKCkgOiB0aHVuaztcbn1cbi8qKlxuICogQ3VzdG9tIGV4dGVuc2lvbnNcbiAqXG4gKiBAcmVtYXJrc1xuICogVXNlIGEgdW5pcXVlIGlkZW50aWZpZXIgbmFtZSBmb3IgeW91ciBleHRlbnNpb24sIGZvciBleGFtcGxlIHRoZSBuYW1lIG9mXG4gKiB5b3VyIGxpYnJhcnkgb3IgcHJvamVjdC4gRG8gbm90IHVzZSBhIHNob3J0ZW5lZCBpZGVudGlmaWVyIGFzIHRoaXMgaW5jcmVhc2VzXG4gKiB0aGUgcmlzayBvZiBjb25mbGljdHMuIFdlIHJlY29tbWVuZCB5b3UgYWRkIGF0IG1vc3Qgb25lIGV4dGVuc2lvbiBmaWVsZCxcbiAqIGFuIG9iamVjdCB3aGljaCBjYW4gY29udGFpbiBhbGwgdGhlIHZhbHVlcyB5b3UgbmVlZC5cbiAqL1xuXG4vKipcbiAqIFNjYWxhciBUeXBlIERlZmluaXRpb25cbiAqXG4gKiBUaGUgbGVhZiB2YWx1ZXMgb2YgYW55IHJlcXVlc3QgYW5kIGlucHV0IHZhbHVlcyB0byBhcmd1bWVudHMgYXJlXG4gKiBTY2FsYXJzIChvciBFbnVtcykgYW5kIGFyZSBkZWZpbmVkIHdpdGggYSBuYW1lIGFuZCBhIHNlcmllcyBvZiBmdW5jdGlvbnNcbiAqIHVzZWQgdG8gcGFyc2UgaW5wdXQgZnJvbSBhc3Qgb3IgdmFyaWFibGVzIGFuZCB0byBlbnN1cmUgdmFsaWRpdHkuXG4gKlxuICogSWYgYSB0eXBlJ3Mgc2VyaWFsaXplIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlIChpLmUuIGl0IHJldHVybnNcbiAqIGB1bmRlZmluZWRgKSB0aGVuIGFuIGVycm9yIHdpbGwgYmUgcmFpc2VkIGFuZCBhIGBudWxsYCB2YWx1ZSB3aWxsIGJlIHJldHVybmVkXG4gKiBpbiB0aGUgcmVzcG9uc2UuIElmIHRoZSBzZXJpYWxpemUgZnVuY3Rpb24gcmV0dXJucyBgbnVsbGAsIHRoZW4gbm8gZXJyb3Igd2lsbFxuICogYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IE9kZFR5cGUgPSBuZXcgR3JhcGhRTFNjYWxhclR5cGUoe1xuICogICBuYW1lOiAnT2RkJyxcbiAqICAgc2VyaWFsaXplKHZhbHVlKSB7XG4gKiAgICAgaWYgKHZhbHVlICUgMiA9PT0gMSkge1xuICogICAgICAgcmV0dXJuIHZhbHVlO1xuICogICAgIH1cbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoUUxTY2FsYXJUeXBlIHtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgdmFyIF9jb25maWckcGFyc2VWYWx1ZSxcbiAgICAgIF9jb25maWckc2VyaWFsaXplLFxuICAgICAgX2NvbmZpZyRwYXJzZUxpdGVyYWwsXG4gICAgICBfY29uZmlnJGV4dGVuc2lvbkFTVE47XG5cbiAgICBjb25zdCBwYXJzZVZhbHVlID1cbiAgICAgIChfY29uZmlnJHBhcnNlVmFsdWUgPSBjb25maWcucGFyc2VWYWx1ZSkgIT09IG51bGwgJiZcbiAgICAgIF9jb25maWckcGFyc2VWYWx1ZSAhPT0gdm9pZCAwXG4gICAgICAgID8gX2NvbmZpZyRwYXJzZVZhbHVlXG4gICAgICAgIDogaWRlbnRpdHlGdW5jO1xuICAgIHRoaXMubmFtZSA9IGFzc2VydE5hbWUoY29uZmlnLm5hbWUpO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBjb25maWcuZGVzY3JpcHRpb247XG4gICAgdGhpcy5zcGVjaWZpZWRCeVVSTCA9IGNvbmZpZy5zcGVjaWZpZWRCeVVSTDtcbiAgICB0aGlzLnNlcmlhbGl6ZSA9XG4gICAgICAoX2NvbmZpZyRzZXJpYWxpemUgPSBjb25maWcuc2VyaWFsaXplKSAhPT0gbnVsbCAmJlxuICAgICAgX2NvbmZpZyRzZXJpYWxpemUgIT09IHZvaWQgMFxuICAgICAgICA/IF9jb25maWckc2VyaWFsaXplXG4gICAgICAgIDogaWRlbnRpdHlGdW5jO1xuICAgIHRoaXMucGFyc2VWYWx1ZSA9IHBhcnNlVmFsdWU7XG4gICAgdGhpcy5wYXJzZUxpdGVyYWwgPVxuICAgICAgKF9jb25maWckcGFyc2VMaXRlcmFsID0gY29uZmlnLnBhcnNlTGl0ZXJhbCkgIT09IG51bGwgJiZcbiAgICAgIF9jb25maWckcGFyc2VMaXRlcmFsICE9PSB2b2lkIDBcbiAgICAgICAgPyBfY29uZmlnJHBhcnNlTGl0ZXJhbFxuICAgICAgICA6IChub2RlLCB2YXJpYWJsZXMpID0+IHBhcnNlVmFsdWUodmFsdWVGcm9tQVNUVW50eXBlZChub2RlLCB2YXJpYWJsZXMpKTtcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSB0b09iak1hcChjb25maWcuZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5hc3ROb2RlID0gY29uZmlnLmFzdE5vZGU7XG4gICAgdGhpcy5leHRlbnNpb25BU1ROb2RlcyA9XG4gICAgICAoX2NvbmZpZyRleHRlbnNpb25BU1ROID0gY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzKSAhPT0gbnVsbCAmJlxuICAgICAgX2NvbmZpZyRleHRlbnNpb25BU1ROICE9PSB2b2lkIDBcbiAgICAgICAgPyBfY29uZmlnJGV4dGVuc2lvbkFTVE5cbiAgICAgICAgOiBbXTtcbiAgICBjb25maWcuc3BlY2lmaWVkQnlVUkwgPT0gbnVsbCB8fFxuICAgICAgdHlwZW9mIGNvbmZpZy5zcGVjaWZpZWRCeVVSTCA9PT0gJ3N0cmluZycgfHxcbiAgICAgIGRldkFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGAke3RoaXMubmFtZX0gbXVzdCBwcm92aWRlIFwic3BlY2lmaWVkQnlVUkxcIiBhcyBhIHN0cmluZywgYCArXG4gICAgICAgICAgYGJ1dCBnb3Q6ICR7aW5zcGVjdChjb25maWcuc3BlY2lmaWVkQnlVUkwpfS5gLFxuICAgICAgKTtcbiAgICBjb25maWcuc2VyaWFsaXplID09IG51bGwgfHxcbiAgICAgIHR5cGVvZiBjb25maWcuc2VyaWFsaXplID09PSAnZnVuY3Rpb24nIHx8XG4gICAgICBkZXZBc3NlcnQoXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBgJHt0aGlzLm5hbWV9IG11c3QgcHJvdmlkZSBcInNlcmlhbGl6ZVwiIGZ1bmN0aW9uLiBJZiB0aGlzIGN1c3RvbSBTY2FsYXIgaXMgYWxzbyB1c2VkIGFzIGFuIGlucHV0IHR5cGUsIGVuc3VyZSBcInBhcnNlVmFsdWVcIiBhbmQgXCJwYXJzZUxpdGVyYWxcIiBmdW5jdGlvbnMgYXJlIGFsc28gcHJvdmlkZWQuYCxcbiAgICAgICk7XG5cbiAgICBpZiAoY29uZmlnLnBhcnNlTGl0ZXJhbCkge1xuICAgICAgKHR5cGVvZiBjb25maWcucGFyc2VWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgICB0eXBlb2YgY29uZmlnLnBhcnNlTGl0ZXJhbCA9PT0gJ2Z1bmN0aW9uJykgfHxcbiAgICAgICAgZGV2QXNzZXJ0KFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIGAke3RoaXMubmFtZX0gbXVzdCBwcm92aWRlIGJvdGggXCJwYXJzZVZhbHVlXCIgYW5kIFwicGFyc2VMaXRlcmFsXCIgZnVuY3Rpb25zLmAsXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnR3JhcGhRTFNjYWxhclR5cGUnO1xuICB9XG5cbiAgdG9Db25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgc3BlY2lmaWVkQnlVUkw6IHRoaXMuc3BlY2lmaWVkQnlVUkwsXG4gICAgICBzZXJpYWxpemU6IHRoaXMuc2VyaWFsaXplLFxuICAgICAgcGFyc2VWYWx1ZTogdGhpcy5wYXJzZVZhbHVlLFxuICAgICAgcGFyc2VMaXRlcmFsOiB0aGlzLnBhcnNlTGl0ZXJhbCxcbiAgICAgIGV4dGVuc2lvbnM6IHRoaXMuZXh0ZW5zaW9ucyxcbiAgICAgIGFzdE5vZGU6IHRoaXMuYXN0Tm9kZSxcbiAgICAgIGV4dGVuc2lvbkFTVE5vZGVzOiB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzLFxuICAgIH07XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBPYmplY3QgVHlwZSBEZWZpbml0aW9uXG4gKlxuICogQWxtb3N0IGFsbCBvZiB0aGUgR3JhcGhRTCB0eXBlcyB5b3UgZGVmaW5lIHdpbGwgYmUgb2JqZWN0IHR5cGVzLiBPYmplY3QgdHlwZXNcbiAqIGhhdmUgYSBuYW1lLCBidXQgbW9zdCBpbXBvcnRhbnRseSBkZXNjcmliZSB0aGVpciBmaWVsZHMuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgQWRkcmVzc1R5cGUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICogICBuYW1lOiAnQWRkcmVzcycsXG4gKiAgIGZpZWxkczoge1xuICogICAgIHN0cmVldDogeyB0eXBlOiBHcmFwaFFMU3RyaW5nIH0sXG4gKiAgICAgbnVtYmVyOiB7IHR5cGU6IEdyYXBoUUxJbnQgfSxcbiAqICAgICBmb3JtYXR0ZWQ6IHtcbiAqICAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gKiAgICAgICByZXNvbHZlKG9iaikge1xuICogICAgICAgICByZXR1cm4gb2JqLm51bWJlciArICcgJyArIG9iai5zdHJlZXRcbiAqICAgICAgIH1cbiAqICAgICB9XG4gKiAgIH1cbiAqIH0pO1xuICogYGBgXG4gKlxuICogV2hlbiB0d28gdHlwZXMgbmVlZCB0byByZWZlciB0byBlYWNoIG90aGVyLCBvciBhIHR5cGUgbmVlZHMgdG8gcmVmZXIgdG9cbiAqIGl0c2VsZiBpbiBhIGZpZWxkLCB5b3UgY2FuIHVzZSBhIGZ1bmN0aW9uIGV4cHJlc3Npb24gKGFrYSBhIGNsb3N1cmUgb3IgYVxuICogdGh1bmspIHRvIHN1cHBseSB0aGUgZmllbGRzIGxhemlseS5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBQZXJzb25UeXBlID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAqICAgbmFtZTogJ1BlcnNvbicsXG4gKiAgIGZpZWxkczogKCkgPT4gKHtcbiAqICAgICBuYW1lOiB7IHR5cGU6IEdyYXBoUUxTdHJpbmcgfSxcbiAqICAgICBiZXN0RnJpZW5kOiB7IHR5cGU6IFBlcnNvblR5cGUgfSxcbiAqICAgfSlcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaFFMT2JqZWN0VHlwZSB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIHZhciBfY29uZmlnJGV4dGVuc2lvbkFTVE4yO1xuXG4gICAgdGhpcy5uYW1lID0gYXNzZXJ0TmFtZShjb25maWcubmFtZSk7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGNvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLmlzVHlwZU9mID0gY29uZmlnLmlzVHlwZU9mO1xuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHRvT2JqTWFwKGNvbmZpZy5leHRlbnNpb25zKTtcbiAgICB0aGlzLmFzdE5vZGUgPSBjb25maWcuYXN0Tm9kZTtcbiAgICB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzID1cbiAgICAgIChfY29uZmlnJGV4dGVuc2lvbkFTVE4yID0gY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzKSAhPT0gbnVsbCAmJlxuICAgICAgX2NvbmZpZyRleHRlbnNpb25BU1ROMiAhPT0gdm9pZCAwXG4gICAgICAgID8gX2NvbmZpZyRleHRlbnNpb25BU1ROMlxuICAgICAgICA6IFtdO1xuXG4gICAgdGhpcy5fZmllbGRzID0gKCkgPT4gZGVmaW5lRmllbGRNYXAoY29uZmlnKTtcblxuICAgIHRoaXMuX2ludGVyZmFjZXMgPSAoKSA9PiBkZWZpbmVJbnRlcmZhY2VzKGNvbmZpZyk7XG5cbiAgICBjb25maWcuaXNUeXBlT2YgPT0gbnVsbCB8fFxuICAgICAgdHlwZW9mIGNvbmZpZy5pc1R5cGVPZiA9PT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgZGV2QXNzZXJ0KFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgYCR7dGhpcy5uYW1lfSBtdXN0IHByb3ZpZGUgXCJpc1R5cGVPZlwiIGFzIGEgZnVuY3Rpb24sIGAgK1xuICAgICAgICAgIGBidXQgZ290OiAke2luc3BlY3QoY29uZmlnLmlzVHlwZU9mKX0uYCxcbiAgICAgICk7XG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdHcmFwaFFMT2JqZWN0VHlwZSc7XG4gIH1cblxuICBnZXRGaWVsZHMoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9maWVsZHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuX2ZpZWxkcyA9IHRoaXMuX2ZpZWxkcygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9maWVsZHM7XG4gIH1cblxuICBnZXRJbnRlcmZhY2VzKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5faW50ZXJmYWNlcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5faW50ZXJmYWNlcyA9IHRoaXMuX2ludGVyZmFjZXMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5faW50ZXJmYWNlcztcbiAgfVxuXG4gIHRvQ29uZmlnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIGludGVyZmFjZXM6IHRoaXMuZ2V0SW50ZXJmYWNlcygpLFxuICAgICAgZmllbGRzOiBmaWVsZHNUb0ZpZWxkc0NvbmZpZyh0aGlzLmdldEZpZWxkcygpKSxcbiAgICAgIGlzVHlwZU9mOiB0aGlzLmlzVHlwZU9mLFxuICAgICAgZXh0ZW5zaW9uczogdGhpcy5leHRlbnNpb25zLFxuICAgICAgYXN0Tm9kZTogdGhpcy5hc3ROb2RlLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IHRoaXMuZXh0ZW5zaW9uQVNUTm9kZXMsXG4gICAgfTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWZpbmVJbnRlcmZhY2VzKGNvbmZpZykge1xuICB2YXIgX2NvbmZpZyRpbnRlcmZhY2VzO1xuXG4gIGNvbnN0IGludGVyZmFjZXMgPSByZXNvbHZlUmVhZG9ubHlBcnJheVRodW5rKFxuICAgIChfY29uZmlnJGludGVyZmFjZXMgPSBjb25maWcuaW50ZXJmYWNlcykgIT09IG51bGwgJiZcbiAgICAgIF9jb25maWckaW50ZXJmYWNlcyAhPT0gdm9pZCAwXG4gICAgICA/IF9jb25maWckaW50ZXJmYWNlc1xuICAgICAgOiBbXSxcbiAgKTtcbiAgQXJyYXkuaXNBcnJheShpbnRlcmZhY2VzKSB8fFxuICAgIGRldkFzc2VydChcbiAgICAgIGZhbHNlLFxuICAgICAgYCR7Y29uZmlnLm5hbWV9IGludGVyZmFjZXMgbXVzdCBiZSBhbiBBcnJheSBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gQXJyYXkuYCxcbiAgICApO1xuICByZXR1cm4gaW50ZXJmYWNlcztcbn1cblxuZnVuY3Rpb24gZGVmaW5lRmllbGRNYXAoY29uZmlnKSB7XG4gIGNvbnN0IGZpZWxkTWFwID0gcmVzb2x2ZU9iak1hcFRodW5rKGNvbmZpZy5maWVsZHMpO1xuICBpc1BsYWluT2JqKGZpZWxkTWFwKSB8fFxuICAgIGRldkFzc2VydChcbiAgICAgIGZhbHNlLFxuICAgICAgYCR7Y29uZmlnLm5hbWV9IGZpZWxkcyBtdXN0IGJlIGFuIG9iamVjdCB3aXRoIGZpZWxkIG5hbWVzIGFzIGtleXMgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIHN1Y2ggYW4gb2JqZWN0LmAsXG4gICAgKTtcbiAgcmV0dXJuIG1hcFZhbHVlKGZpZWxkTWFwLCAoZmllbGRDb25maWcsIGZpZWxkTmFtZSkgPT4ge1xuICAgIHZhciBfZmllbGRDb25maWckYXJncztcblxuICAgIGlzUGxhaW5PYmooZmllbGRDb25maWcpIHx8XG4gICAgICBkZXZBc3NlcnQoXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBgJHtjb25maWcubmFtZX0uJHtmaWVsZE5hbWV9IGZpZWxkIGNvbmZpZyBtdXN0IGJlIGFuIG9iamVjdC5gLFxuICAgICAgKTtcbiAgICBmaWVsZENvbmZpZy5yZXNvbHZlID09IG51bGwgfHxcbiAgICAgIHR5cGVvZiBmaWVsZENvbmZpZy5yZXNvbHZlID09PSAnZnVuY3Rpb24nIHx8XG4gICAgICBkZXZBc3NlcnQoXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBgJHtjb25maWcubmFtZX0uJHtmaWVsZE5hbWV9IGZpZWxkIHJlc29sdmVyIG11c3QgYmUgYSBmdW5jdGlvbiBpZiBgICtcbiAgICAgICAgICBgcHJvdmlkZWQsIGJ1dCBnb3Q6ICR7aW5zcGVjdChmaWVsZENvbmZpZy5yZXNvbHZlKX0uYCxcbiAgICAgICk7XG4gICAgY29uc3QgYXJnc0NvbmZpZyA9XG4gICAgICAoX2ZpZWxkQ29uZmlnJGFyZ3MgPSBmaWVsZENvbmZpZy5hcmdzKSAhPT0gbnVsbCAmJlxuICAgICAgX2ZpZWxkQ29uZmlnJGFyZ3MgIT09IHZvaWQgMFxuICAgICAgICA/IF9maWVsZENvbmZpZyRhcmdzXG4gICAgICAgIDoge307XG4gICAgaXNQbGFpbk9iaihhcmdzQ29uZmlnKSB8fFxuICAgICAgZGV2QXNzZXJ0KFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgYCR7Y29uZmlnLm5hbWV9LiR7ZmllbGROYW1lfSBhcmdzIG11c3QgYmUgYW4gb2JqZWN0IHdpdGggYXJndW1lbnQgbmFtZXMgYXMga2V5cy5gLFxuICAgICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogYXNzZXJ0TmFtZShmaWVsZE5hbWUpLFxuICAgICAgZGVzY3JpcHRpb246IGZpZWxkQ29uZmlnLmRlc2NyaXB0aW9uLFxuICAgICAgdHlwZTogZmllbGRDb25maWcudHlwZSxcbiAgICAgIGFyZ3M6IGRlZmluZUFyZ3VtZW50cyhhcmdzQ29uZmlnKSxcbiAgICAgIHJlc29sdmU6IGZpZWxkQ29uZmlnLnJlc29sdmUsXG4gICAgICBzdWJzY3JpYmU6IGZpZWxkQ29uZmlnLnN1YnNjcmliZSxcbiAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiBmaWVsZENvbmZpZy5kZXByZWNhdGlvblJlYXNvbixcbiAgICAgIGV4dGVuc2lvbnM6IHRvT2JqTWFwKGZpZWxkQ29uZmlnLmV4dGVuc2lvbnMpLFxuICAgICAgYXN0Tm9kZTogZmllbGRDb25maWcuYXN0Tm9kZSxcbiAgICB9O1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUFyZ3VtZW50cyhjb25maWcpIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGNvbmZpZykubWFwKChbYXJnTmFtZSwgYXJnQ29uZmlnXSkgPT4gKHtcbiAgICBuYW1lOiBhc3NlcnROYW1lKGFyZ05hbWUpLFxuICAgIGRlc2NyaXB0aW9uOiBhcmdDb25maWcuZGVzY3JpcHRpb24sXG4gICAgdHlwZTogYXJnQ29uZmlnLnR5cGUsXG4gICAgZGVmYXVsdFZhbHVlOiBhcmdDb25maWcuZGVmYXVsdFZhbHVlLFxuICAgIGRlcHJlY2F0aW9uUmVhc29uOiBhcmdDb25maWcuZGVwcmVjYXRpb25SZWFzb24sXG4gICAgZXh0ZW5zaW9uczogdG9PYmpNYXAoYXJnQ29uZmlnLmV4dGVuc2lvbnMpLFxuICAgIGFzdE5vZGU6IGFyZ0NvbmZpZy5hc3ROb2RlLFxuICB9KSk7XG59XG5cbmZ1bmN0aW9uIGlzUGxhaW5PYmoob2JqKSB7XG4gIHJldHVybiBpc09iamVjdExpa2Uob2JqKSAmJiAhQXJyYXkuaXNBcnJheShvYmopO1xufVxuXG5mdW5jdGlvbiBmaWVsZHNUb0ZpZWxkc0NvbmZpZyhmaWVsZHMpIHtcbiAgcmV0dXJuIG1hcFZhbHVlKGZpZWxkcywgKGZpZWxkKSA9PiAoe1xuICAgIGRlc2NyaXB0aW9uOiBmaWVsZC5kZXNjcmlwdGlvbixcbiAgICB0eXBlOiBmaWVsZC50eXBlLFxuICAgIGFyZ3M6IGFyZ3NUb0FyZ3NDb25maWcoZmllbGQuYXJncyksXG4gICAgcmVzb2x2ZTogZmllbGQucmVzb2x2ZSxcbiAgICBzdWJzY3JpYmU6IGZpZWxkLnN1YnNjcmliZSxcbiAgICBkZXByZWNhdGlvblJlYXNvbjogZmllbGQuZGVwcmVjYXRpb25SZWFzb24sXG4gICAgZXh0ZW5zaW9uczogZmllbGQuZXh0ZW5zaW9ucyxcbiAgICBhc3ROb2RlOiBmaWVsZC5hc3ROb2RlLFxuICB9KSk7XG59XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhcmdzVG9BcmdzQ29uZmlnKGFyZ3MpIHtcbiAgcmV0dXJuIGtleVZhbE1hcChcbiAgICBhcmdzLFxuICAgIChhcmcpID0+IGFyZy5uYW1lLFxuICAgIChhcmcpID0+ICh7XG4gICAgICBkZXNjcmlwdGlvbjogYXJnLmRlc2NyaXB0aW9uLFxuICAgICAgdHlwZTogYXJnLnR5cGUsXG4gICAgICBkZWZhdWx0VmFsdWU6IGFyZy5kZWZhdWx0VmFsdWUsXG4gICAgICBkZXByZWNhdGlvblJlYXNvbjogYXJnLmRlcHJlY2F0aW9uUmVhc29uLFxuICAgICAgZXh0ZW5zaW9uczogYXJnLmV4dGVuc2lvbnMsXG4gICAgICBhc3ROb2RlOiBhcmcuYXN0Tm9kZSxcbiAgICB9KSxcbiAgKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1JlcXVpcmVkQXJndW1lbnQoYXJnKSB7XG4gIHJldHVybiBpc05vbk51bGxUeXBlKGFyZy50eXBlKSAmJiBhcmcuZGVmYXVsdFZhbHVlID09PSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIFR5cGUgRGVmaW5pdGlvblxuICpcbiAqIFdoZW4gYSBmaWVsZCBjYW4gcmV0dXJuIG9uZSBvZiBhIGhldGVyb2dlbmVvdXMgc2V0IG9mIHR5cGVzLCBhIEludGVyZmFjZSB0eXBlXG4gKiBpcyB1c2VkIHRvIGRlc2NyaWJlIHdoYXQgdHlwZXMgYXJlIHBvc3NpYmxlLCB3aGF0IGZpZWxkcyBhcmUgaW4gY29tbW9uIGFjcm9zc1xuICogYWxsIHR5cGVzLCBhcyB3ZWxsIGFzIGEgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoaWNoIHR5cGUgaXMgYWN0dWFsbHkgdXNlZFxuICogd2hlbiB0aGUgZmllbGQgaXMgcmVzb2x2ZWQuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgRW50aXR5VHlwZSA9IG5ldyBHcmFwaFFMSW50ZXJmYWNlVHlwZSh7XG4gKiAgIG5hbWU6ICdFbnRpdHknLFxuICogICBmaWVsZHM6IHtcbiAqICAgICBuYW1lOiB7IHR5cGU6IEdyYXBoUUxTdHJpbmcgfVxuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhRTEludGVyZmFjZVR5cGUge1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICB2YXIgX2NvbmZpZyRleHRlbnNpb25BU1ROMztcblxuICAgIHRoaXMubmFtZSA9IGFzc2VydE5hbWUoY29uZmlnLm5hbWUpO1xuICAgIHRoaXMuZGVzY3JpcHRpb24gPSBjb25maWcuZGVzY3JpcHRpb247XG4gICAgdGhpcy5yZXNvbHZlVHlwZSA9IGNvbmZpZy5yZXNvbHZlVHlwZTtcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSB0b09iak1hcChjb25maWcuZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5hc3ROb2RlID0gY29uZmlnLmFzdE5vZGU7XG4gICAgdGhpcy5leHRlbnNpb25BU1ROb2RlcyA9XG4gICAgICAoX2NvbmZpZyRleHRlbnNpb25BU1ROMyA9IGNvbmZpZy5leHRlbnNpb25BU1ROb2RlcykgIT09IG51bGwgJiZcbiAgICAgIF9jb25maWckZXh0ZW5zaW9uQVNUTjMgIT09IHZvaWQgMFxuICAgICAgICA/IF9jb25maWckZXh0ZW5zaW9uQVNUTjNcbiAgICAgICAgOiBbXTtcbiAgICB0aGlzLl9maWVsZHMgPSBkZWZpbmVGaWVsZE1hcC5iaW5kKHVuZGVmaW5lZCwgY29uZmlnKTtcbiAgICB0aGlzLl9pbnRlcmZhY2VzID0gZGVmaW5lSW50ZXJmYWNlcy5iaW5kKHVuZGVmaW5lZCwgY29uZmlnKTtcbiAgICBjb25maWcucmVzb2x2ZVR5cGUgPT0gbnVsbCB8fFxuICAgICAgdHlwZW9mIGNvbmZpZy5yZXNvbHZlVHlwZSA9PT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgZGV2QXNzZXJ0KFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgYCR7dGhpcy5uYW1lfSBtdXN0IHByb3ZpZGUgXCJyZXNvbHZlVHlwZVwiIGFzIGEgZnVuY3Rpb24sIGAgK1xuICAgICAgICAgIGBidXQgZ290OiAke2luc3BlY3QoY29uZmlnLnJlc29sdmVUeXBlKX0uYCxcbiAgICAgICk7XG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdHcmFwaFFMSW50ZXJmYWNlVHlwZSc7XG4gIH1cblxuICBnZXRGaWVsZHMoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9maWVsZHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuX2ZpZWxkcyA9IHRoaXMuX2ZpZWxkcygpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9maWVsZHM7XG4gIH1cblxuICBnZXRJbnRlcmZhY2VzKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5faW50ZXJmYWNlcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5faW50ZXJmYWNlcyA9IHRoaXMuX2ludGVyZmFjZXMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5faW50ZXJmYWNlcztcbiAgfVxuXG4gIHRvQ29uZmlnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIGludGVyZmFjZXM6IHRoaXMuZ2V0SW50ZXJmYWNlcygpLFxuICAgICAgZmllbGRzOiBmaWVsZHNUb0ZpZWxkc0NvbmZpZyh0aGlzLmdldEZpZWxkcygpKSxcbiAgICAgIHJlc29sdmVUeXBlOiB0aGlzLnJlc29sdmVUeXBlLFxuICAgICAgZXh0ZW5zaW9uczogdGhpcy5leHRlbnNpb25zLFxuICAgICAgYXN0Tm9kZTogdGhpcy5hc3ROb2RlLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IHRoaXMuZXh0ZW5zaW9uQVNUTm9kZXMsXG4gICAgfTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfVxufVxuXG4vKipcbiAqIFVuaW9uIFR5cGUgRGVmaW5pdGlvblxuICpcbiAqIFdoZW4gYSBmaWVsZCBjYW4gcmV0dXJuIG9uZSBvZiBhIGhldGVyb2dlbmVvdXMgc2V0IG9mIHR5cGVzLCBhIFVuaW9uIHR5cGVcbiAqIGlzIHVzZWQgdG8gZGVzY3JpYmUgd2hhdCB0eXBlcyBhcmUgcG9zc2libGUgYXMgd2VsbCBhcyBwcm92aWRpbmcgYSBmdW5jdGlvblxuICogdG8gZGV0ZXJtaW5lIHdoaWNoIHR5cGUgaXMgYWN0dWFsbHkgdXNlZCB3aGVuIHRoZSBmaWVsZCBpcyByZXNvbHZlZC5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBQZXRUeXBlID0gbmV3IEdyYXBoUUxVbmlvblR5cGUoe1xuICogICBuYW1lOiAnUGV0JyxcbiAqICAgdHlwZXM6IFsgRG9nVHlwZSwgQ2F0VHlwZSBdLFxuICogICByZXNvbHZlVHlwZSh2YWx1ZSkge1xuICogICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERvZykge1xuICogICAgICAgcmV0dXJuIERvZ1R5cGU7XG4gKiAgICAgfVxuICogICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIENhdCkge1xuICogICAgICAgcmV0dXJuIENhdFR5cGU7XG4gKiAgICAgfVxuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhRTFVuaW9uVHlwZSB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIHZhciBfY29uZmlnJGV4dGVuc2lvbkFTVE40O1xuXG4gICAgdGhpcy5uYW1lID0gYXNzZXJ0TmFtZShjb25maWcubmFtZSk7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGNvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLnJlc29sdmVUeXBlID0gY29uZmlnLnJlc29sdmVUeXBlO1xuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHRvT2JqTWFwKGNvbmZpZy5leHRlbnNpb25zKTtcbiAgICB0aGlzLmFzdE5vZGUgPSBjb25maWcuYXN0Tm9kZTtcbiAgICB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzID1cbiAgICAgIChfY29uZmlnJGV4dGVuc2lvbkFTVE40ID0gY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzKSAhPT0gbnVsbCAmJlxuICAgICAgX2NvbmZpZyRleHRlbnNpb25BU1RONCAhPT0gdm9pZCAwXG4gICAgICAgID8gX2NvbmZpZyRleHRlbnNpb25BU1RONFxuICAgICAgICA6IFtdO1xuICAgIHRoaXMuX3R5cGVzID0gZGVmaW5lVHlwZXMuYmluZCh1bmRlZmluZWQsIGNvbmZpZyk7XG4gICAgY29uZmlnLnJlc29sdmVUeXBlID09IG51bGwgfHxcbiAgICAgIHR5cGVvZiBjb25maWcucmVzb2x2ZVR5cGUgPT09ICdmdW5jdGlvbicgfHxcbiAgICAgIGRldkFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGAke3RoaXMubmFtZX0gbXVzdCBwcm92aWRlIFwicmVzb2x2ZVR5cGVcIiBhcyBhIGZ1bmN0aW9uLCBgICtcbiAgICAgICAgICBgYnV0IGdvdDogJHtpbnNwZWN0KGNvbmZpZy5yZXNvbHZlVHlwZSl9LmAsXG4gICAgICApO1xuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnR3JhcGhRTFVuaW9uVHlwZSc7XG4gIH1cblxuICBnZXRUeXBlcygpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuX3R5cGVzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLl90eXBlcyA9IHRoaXMuX3R5cGVzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3R5cGVzO1xuICB9XG5cbiAgdG9Db25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgdHlwZXM6IHRoaXMuZ2V0VHlwZXMoKSxcbiAgICAgIHJlc29sdmVUeXBlOiB0aGlzLnJlc29sdmVUeXBlLFxuICAgICAgZXh0ZW5zaW9uczogdGhpcy5leHRlbnNpb25zLFxuICAgICAgYXN0Tm9kZTogdGhpcy5hc3ROb2RlLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IHRoaXMuZXh0ZW5zaW9uQVNUTm9kZXMsXG4gICAgfTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWZpbmVUeXBlcyhjb25maWcpIHtcbiAgY29uc3QgdHlwZXMgPSByZXNvbHZlUmVhZG9ubHlBcnJheVRodW5rKGNvbmZpZy50eXBlcyk7XG4gIEFycmF5LmlzQXJyYXkodHlwZXMpIHx8XG4gICAgZGV2QXNzZXJ0KFxuICAgICAgZmFsc2UsXG4gICAgICBgTXVzdCBwcm92aWRlIEFycmF5IG9mIHR5cGVzIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBzdWNoIGFuIGFycmF5IGZvciBVbmlvbiAke2NvbmZpZy5uYW1lfS5gLFxuICAgICk7XG4gIHJldHVybiB0eXBlcztcbn1cblxuLyoqXG4gKiBFbnVtIFR5cGUgRGVmaW5pdGlvblxuICpcbiAqIFNvbWUgbGVhZiB2YWx1ZXMgb2YgcmVxdWVzdHMgYW5kIGlucHV0IHZhbHVlcyBhcmUgRW51bXMuIEdyYXBoUUwgc2VyaWFsaXplc1xuICogRW51bSB2YWx1ZXMgYXMgc3RyaW5ncywgaG93ZXZlciBpbnRlcm5hbGx5IEVudW1zIGNhbiBiZSByZXByZXNlbnRlZCBieSBhbnlcbiAqIGtpbmQgb2YgdHlwZSwgb2Z0ZW4gaW50ZWdlcnMuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgUkdCVHlwZSA9IG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICogICBuYW1lOiAnUkdCJyxcbiAqICAgdmFsdWVzOiB7XG4gKiAgICAgUkVEOiB7IHZhbHVlOiAwIH0sXG4gKiAgICAgR1JFRU46IHsgdmFsdWU6IDEgfSxcbiAqICAgICBCTFVFOiB7IHZhbHVlOiAyIH1cbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBJZiBhIHZhbHVlIGlzIG5vdCBwcm92aWRlZCBpbiBhIGRlZmluaXRpb24sIHRoZSBuYW1lIG9mIHRoZSBlbnVtIHZhbHVlXG4gKiB3aWxsIGJlIHVzZWQgYXMgaXRzIGludGVybmFsIHZhbHVlLlxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhRTEVudW1UeXBlIHtcbiAgLyogPFQ+ICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZykge1xuICAgIHZhciBfY29uZmlnJGV4dGVuc2lvbkFTVE41O1xuXG4gICAgdGhpcy5uYW1lID0gYXNzZXJ0TmFtZShjb25maWcubmFtZSk7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGNvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLmV4dGVuc2lvbnMgPSB0b09iak1hcChjb25maWcuZXh0ZW5zaW9ucyk7XG4gICAgdGhpcy5hc3ROb2RlID0gY29uZmlnLmFzdE5vZGU7XG4gICAgdGhpcy5leHRlbnNpb25BU1ROb2RlcyA9XG4gICAgICAoX2NvbmZpZyRleHRlbnNpb25BU1RONSA9IGNvbmZpZy5leHRlbnNpb25BU1ROb2RlcykgIT09IG51bGwgJiZcbiAgICAgIF9jb25maWckZXh0ZW5zaW9uQVNUTjUgIT09IHZvaWQgMFxuICAgICAgICA/IF9jb25maWckZXh0ZW5zaW9uQVNUTjVcbiAgICAgICAgOiBbXTtcbiAgICB0aGlzLl92YWx1ZXMgPSBkZWZpbmVFbnVtVmFsdWVzKHRoaXMubmFtZSwgY29uZmlnLnZhbHVlcyk7XG4gICAgdGhpcy5fdmFsdWVMb29rdXAgPSBuZXcgTWFwKFxuICAgICAgdGhpcy5fdmFsdWVzLm1hcCgoZW51bVZhbHVlKSA9PiBbZW51bVZhbHVlLnZhbHVlLCBlbnVtVmFsdWVdKSxcbiAgICApO1xuICAgIHRoaXMuX25hbWVMb29rdXAgPSBrZXlNYXAodGhpcy5fdmFsdWVzLCAodmFsdWUpID0+IHZhbHVlLm5hbWUpO1xuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnR3JhcGhRTEVudW1UeXBlJztcbiAgfVxuXG4gIGdldFZhbHVlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVzO1xuICB9XG5cbiAgZ2V0VmFsdWUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLl9uYW1lTG9va3VwW25hbWVdO1xuICB9XG5cbiAgc2VyaWFsaXplKG91dHB1dFZhbHVlKSB7XG4gICAgY29uc3QgZW51bVZhbHVlID0gdGhpcy5fdmFsdWVMb29rdXAuZ2V0KG91dHB1dFZhbHVlKTtcblxuICAgIGlmIChlbnVtVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgYEVudW0gXCIke3RoaXMubmFtZX1cIiBjYW5ub3QgcmVwcmVzZW50IHZhbHVlOiAke2luc3BlY3Qob3V0cHV0VmFsdWUpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBlbnVtVmFsdWUubmFtZTtcbiAgfVxuXG4gIHBhcnNlVmFsdWUoaW5wdXRWYWx1ZSkgLyogVCAqL1xuICB7XG4gICAgaWYgKHR5cGVvZiBpbnB1dFZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgdmFsdWVTdHIgPSBpbnNwZWN0KGlucHV0VmFsdWUpO1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgYEVudW0gXCIke3RoaXMubmFtZX1cIiBjYW5ub3QgcmVwcmVzZW50IG5vbi1zdHJpbmcgdmFsdWU6ICR7dmFsdWVTdHJ9LmAgK1xuICAgICAgICAgIGRpZFlvdU1lYW5FbnVtVmFsdWUodGhpcywgdmFsdWVTdHIpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnVtVmFsdWUgPSB0aGlzLmdldFZhbHVlKGlucHV0VmFsdWUpO1xuXG4gICAgaWYgKGVudW1WYWx1ZSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgVmFsdWUgXCIke2lucHV0VmFsdWV9XCIgZG9lcyBub3QgZXhpc3QgaW4gXCIke3RoaXMubmFtZX1cIiBlbnVtLmAgK1xuICAgICAgICAgIGRpZFlvdU1lYW5FbnVtVmFsdWUodGhpcywgaW5wdXRWYWx1ZSksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBlbnVtVmFsdWUudmFsdWU7XG4gIH1cblxuICBwYXJzZUxpdGVyYWwodmFsdWVOb2RlLCBfdmFyaWFibGVzKSAvKiBUICovXG4gIHtcbiAgICAvLyBOb3RlOiB2YXJpYWJsZXMgd2lsbCBiZSByZXNvbHZlZCB0byBhIHZhbHVlIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4gICAgaWYgKHZhbHVlTm9kZS5raW5kICE9PSBLaW5kLkVOVU0pIHtcbiAgICAgIGNvbnN0IHZhbHVlU3RyID0gcHJpbnQodmFsdWVOb2RlKTtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgIGBFbnVtIFwiJHt0aGlzLm5hbWV9XCIgY2Fubm90IHJlcHJlc2VudCBub24tZW51bSB2YWx1ZTogJHt2YWx1ZVN0cn0uYCArXG4gICAgICAgICAgZGlkWW91TWVhbkVudW1WYWx1ZSh0aGlzLCB2YWx1ZVN0ciksXG4gICAgICAgIHZhbHVlTm9kZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZW51bVZhbHVlID0gdGhpcy5nZXRWYWx1ZSh2YWx1ZU5vZGUudmFsdWUpO1xuXG4gICAgaWYgKGVudW1WYWx1ZSA9PSBudWxsKSB7XG4gICAgICBjb25zdCB2YWx1ZVN0ciA9IHByaW50KHZhbHVlTm9kZSk7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgVmFsdWUgXCIke3ZhbHVlU3RyfVwiIGRvZXMgbm90IGV4aXN0IGluIFwiJHt0aGlzLm5hbWV9XCIgZW51bS5gICtcbiAgICAgICAgICBkaWRZb3VNZWFuRW51bVZhbHVlKHRoaXMsIHZhbHVlU3RyKSxcbiAgICAgICAgdmFsdWVOb2RlLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW51bVZhbHVlLnZhbHVlO1xuICB9XG5cbiAgdG9Db25maWcoKSB7XG4gICAgY29uc3QgdmFsdWVzID0ga2V5VmFsTWFwKFxuICAgICAgdGhpcy5nZXRWYWx1ZXMoKSxcbiAgICAgICh2YWx1ZSkgPT4gdmFsdWUubmFtZSxcbiAgICAgICh2YWx1ZSkgPT4gKHtcbiAgICAgICAgZGVzY3JpcHRpb246IHZhbHVlLmRlc2NyaXB0aW9uLFxuICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiB2YWx1ZS5kZXByZWNhdGlvblJlYXNvbixcbiAgICAgICAgZXh0ZW5zaW9uczogdmFsdWUuZXh0ZW5zaW9ucyxcbiAgICAgICAgYXN0Tm9kZTogdmFsdWUuYXN0Tm9kZSxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgdmFsdWVzLFxuICAgICAgZXh0ZW5zaW9uczogdGhpcy5leHRlbnNpb25zLFxuICAgICAgYXN0Tm9kZTogdGhpcy5hc3ROb2RlLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IHRoaXMuZXh0ZW5zaW9uQVNUTm9kZXMsXG4gICAgfTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWU7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkaWRZb3VNZWFuRW51bVZhbHVlKGVudW1UeXBlLCB1bmtub3duVmFsdWVTdHIpIHtcbiAgY29uc3QgYWxsTmFtZXMgPSBlbnVtVHlwZS5nZXRWYWx1ZXMoKS5tYXAoKHZhbHVlKSA9PiB2YWx1ZS5uYW1lKTtcbiAgY29uc3Qgc3VnZ2VzdGVkVmFsdWVzID0gc3VnZ2VzdGlvbkxpc3QodW5rbm93blZhbHVlU3RyLCBhbGxOYW1lcyk7XG4gIHJldHVybiBkaWRZb3VNZWFuKCd0aGUgZW51bSB2YWx1ZScsIHN1Z2dlc3RlZFZhbHVlcyk7XG59XG5cbmZ1bmN0aW9uIGRlZmluZUVudW1WYWx1ZXModHlwZU5hbWUsIHZhbHVlTWFwKSB7XG4gIGlzUGxhaW5PYmoodmFsdWVNYXApIHx8XG4gICAgZGV2QXNzZXJ0KFxuICAgICAgZmFsc2UsXG4gICAgICBgJHt0eXBlTmFtZX0gdmFsdWVzIG11c3QgYmUgYW4gb2JqZWN0IHdpdGggdmFsdWUgbmFtZXMgYXMga2V5cy5gLFxuICAgICk7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyh2YWx1ZU1hcCkubWFwKChbdmFsdWVOYW1lLCB2YWx1ZUNvbmZpZ10pID0+IHtcbiAgICBpc1BsYWluT2JqKHZhbHVlQ29uZmlnKSB8fFxuICAgICAgZGV2QXNzZXJ0KFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgYCR7dHlwZU5hbWV9LiR7dmFsdWVOYW1lfSBtdXN0IHJlZmVyIHRvIGFuIG9iamVjdCB3aXRoIGEgXCJ2YWx1ZVwiIGtleSBgICtcbiAgICAgICAgICBgcmVwcmVzZW50aW5nIGFuIGludGVybmFsIHZhbHVlIGJ1dCBnb3Q6ICR7aW5zcGVjdCh2YWx1ZUNvbmZpZyl9LmAsXG4gICAgICApO1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBhc3NlcnRFbnVtVmFsdWVOYW1lKHZhbHVlTmFtZSksXG4gICAgICBkZXNjcmlwdGlvbjogdmFsdWVDb25maWcuZGVzY3JpcHRpb24sXG4gICAgICB2YWx1ZTogdmFsdWVDb25maWcudmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlQ29uZmlnLnZhbHVlIDogdmFsdWVOYW1lLFxuICAgICAgZGVwcmVjYXRpb25SZWFzb246IHZhbHVlQ29uZmlnLmRlcHJlY2F0aW9uUmVhc29uLFxuICAgICAgZXh0ZW5zaW9uczogdG9PYmpNYXAodmFsdWVDb25maWcuZXh0ZW5zaW9ucyksXG4gICAgICBhc3ROb2RlOiB2YWx1ZUNvbmZpZy5hc3ROb2RlLFxuICAgIH07XG4gIH0pO1xufVxuXG4vKipcbiAqIElucHV0IE9iamVjdCBUeXBlIERlZmluaXRpb25cbiAqXG4gKiBBbiBpbnB1dCBvYmplY3QgZGVmaW5lcyBhIHN0cnVjdHVyZWQgY29sbGVjdGlvbiBvZiBmaWVsZHMgd2hpY2ggbWF5IGJlXG4gKiBzdXBwbGllZCB0byBhIGZpZWxkIGFyZ3VtZW50LlxuICpcbiAqIFVzaW5nIGBOb25OdWxsYCB3aWxsIGVuc3VyZSB0aGF0IGEgdmFsdWUgbXVzdCBiZSBwcm92aWRlZCBieSB0aGUgcXVlcnlcbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBHZW9Qb2ludCA9IG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAqICAgbmFtZTogJ0dlb1BvaW50JyxcbiAqICAgZmllbGRzOiB7XG4gKiAgICAgbGF0OiB7IHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMRmxvYXQpIH0sXG4gKiAgICAgbG9uOiB7IHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMRmxvYXQpIH0sXG4gKiAgICAgYWx0OiB7IHR5cGU6IEdyYXBoUUxGbG9hdCwgZGVmYXVsdFZhbHVlOiAwIH0sXG4gKiAgIH1cbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlIHtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgdmFyIF9jb25maWckZXh0ZW5zaW9uQVNUTjY7XG5cbiAgICB0aGlzLm5hbWUgPSBhc3NlcnROYW1lKGNvbmZpZy5uYW1lKTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gY29uZmlnLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHRvT2JqTWFwKGNvbmZpZy5leHRlbnNpb25zKTtcbiAgICB0aGlzLmFzdE5vZGUgPSBjb25maWcuYXN0Tm9kZTtcbiAgICB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzID1cbiAgICAgIChfY29uZmlnJGV4dGVuc2lvbkFTVE42ID0gY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzKSAhPT0gbnVsbCAmJlxuICAgICAgX2NvbmZpZyRleHRlbnNpb25BU1RONiAhPT0gdm9pZCAwXG4gICAgICAgID8gX2NvbmZpZyRleHRlbnNpb25BU1RONlxuICAgICAgICA6IFtdO1xuICAgIHRoaXMuX2ZpZWxkcyA9IGRlZmluZUlucHV0RmllbGRNYXAuYmluZCh1bmRlZmluZWQsIGNvbmZpZyk7XG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdHcmFwaFFMSW5wdXRPYmplY3RUeXBlJztcbiAgfVxuXG4gIGdldEZpZWxkcygpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuX2ZpZWxkcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5fZmllbGRzID0gdGhpcy5fZmllbGRzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkcztcbiAgfVxuXG4gIHRvQ29uZmlnKCkge1xuICAgIGNvbnN0IGZpZWxkcyA9IG1hcFZhbHVlKHRoaXMuZ2V0RmllbGRzKCksIChmaWVsZCkgPT4gKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBmaWVsZC5kZXNjcmlwdGlvbixcbiAgICAgIHR5cGU6IGZpZWxkLnR5cGUsXG4gICAgICBkZWZhdWx0VmFsdWU6IGZpZWxkLmRlZmF1bHRWYWx1ZSxcbiAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiBmaWVsZC5kZXByZWNhdGlvblJlYXNvbixcbiAgICAgIGV4dGVuc2lvbnM6IGZpZWxkLmV4dGVuc2lvbnMsXG4gICAgICBhc3ROb2RlOiBmaWVsZC5hc3ROb2RlLFxuICAgIH0pKTtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBmaWVsZHMsXG4gICAgICBleHRlbnNpb25zOiB0aGlzLmV4dGVuc2lvbnMsXG4gICAgICBhc3ROb2RlOiB0aGlzLmFzdE5vZGUsXG4gICAgICBleHRlbnNpb25BU1ROb2RlczogdGhpcy5leHRlbnNpb25BU1ROb2RlcyxcbiAgICB9O1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlZmluZUlucHV0RmllbGRNYXAoY29uZmlnKSB7XG4gIGNvbnN0IGZpZWxkTWFwID0gcmVzb2x2ZU9iak1hcFRodW5rKGNvbmZpZy5maWVsZHMpO1xuICBpc1BsYWluT2JqKGZpZWxkTWFwKSB8fFxuICAgIGRldkFzc2VydChcbiAgICAgIGZhbHNlLFxuICAgICAgYCR7Y29uZmlnLm5hbWV9IGZpZWxkcyBtdXN0IGJlIGFuIG9iamVjdCB3aXRoIGZpZWxkIG5hbWVzIGFzIGtleXMgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIHN1Y2ggYW4gb2JqZWN0LmAsXG4gICAgKTtcbiAgcmV0dXJuIG1hcFZhbHVlKGZpZWxkTWFwLCAoZmllbGRDb25maWcsIGZpZWxkTmFtZSkgPT4ge1xuICAgICEoJ3Jlc29sdmUnIGluIGZpZWxkQ29uZmlnKSB8fFxuICAgICAgZGV2QXNzZXJ0KFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgYCR7Y29uZmlnLm5hbWV9LiR7ZmllbGROYW1lfSBmaWVsZCBoYXMgYSByZXNvbHZlIHByb3BlcnR5LCBidXQgSW5wdXQgVHlwZXMgY2Fubm90IGRlZmluZSByZXNvbHZlcnMuYCxcbiAgICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGFzc2VydE5hbWUoZmllbGROYW1lKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBmaWVsZENvbmZpZy5kZXNjcmlwdGlvbixcbiAgICAgIHR5cGU6IGZpZWxkQ29uZmlnLnR5cGUsXG4gICAgICBkZWZhdWx0VmFsdWU6IGZpZWxkQ29uZmlnLmRlZmF1bHRWYWx1ZSxcbiAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiBmaWVsZENvbmZpZy5kZXByZWNhdGlvblJlYXNvbixcbiAgICAgIGV4dGVuc2lvbnM6IHRvT2JqTWFwKGZpZWxkQ29uZmlnLmV4dGVuc2lvbnMpLFxuICAgICAgYXN0Tm9kZTogZmllbGRDb25maWcuYXN0Tm9kZSxcbiAgICB9O1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVxdWlyZWRJbnB1dEZpZWxkKGZpZWxkKSB7XG4gIHJldHVybiBpc05vbk51bGxUeXBlKGZpZWxkLnR5cGUpICYmIGZpZWxkLmRlZmF1bHRWYWx1ZSA9PT0gdW5kZWZpbmVkO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/type/definition.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/type/directives.mjs":
/*!**************************************************!*\
  !*** ./node_modules/graphql/type/directives.mjs ***!
  \**************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DEFAULT_DEPRECATION_REASON\": function() { return /* binding */ DEFAULT_DEPRECATION_REASON; },\n/* harmony export */   \"GraphQLDeprecatedDirective\": function() { return /* binding */ GraphQLDeprecatedDirective; },\n/* harmony export */   \"GraphQLDirective\": function() { return /* binding */ GraphQLDirective; },\n/* harmony export */   \"GraphQLIncludeDirective\": function() { return /* binding */ GraphQLIncludeDirective; },\n/* harmony export */   \"GraphQLSkipDirective\": function() { return /* binding */ GraphQLSkipDirective; },\n/* harmony export */   \"GraphQLSpecifiedByDirective\": function() { return /* binding */ GraphQLSpecifiedByDirective; },\n/* harmony export */   \"assertDirective\": function() { return /* binding */ assertDirective; },\n/* harmony export */   \"isDirective\": function() { return /* binding */ isDirective; },\n/* harmony export */   \"isSpecifiedDirective\": function() { return /* binding */ isSpecifiedDirective; },\n/* harmony export */   \"specifiedDirectives\": function() { return /* binding */ specifiedDirectives; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"./node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/instanceOf.mjs */ \"./node_modules/graphql/jsutils/instanceOf.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"./node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/toObjMap.mjs */ \"./node_modules/graphql/jsutils/toObjMap.mjs\");\n/* harmony import */ var _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../language/directiveLocation.mjs */ \"./node_modules/graphql/language/directiveLocation.mjs\");\n/* harmony import */ var _assertName_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./assertName.mjs */ \"./node_modules/graphql/type/assertName.mjs\");\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _scalars_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./scalars.mjs */ \"./node_modules/graphql/type/scalars.mjs\");\n\n\n\n\n\n\n\n\n\n/**\n * Test if the given value is a GraphQL directive.\n */\n\nfunction isDirective(directive) {\n  return (0,_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_0__.instanceOf)(directive, GraphQLDirective);\n}\nfunction assertDirective(directive) {\n  if (!isDirective(directive)) {\n    throw new Error(\n      `Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__.inspect)(directive)} to be a GraphQL directive.`,\n    );\n  }\n\n  return directive;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Directives are used by the GraphQL runtime as a way of modifying execution\n * behavior. Type system creators will usually not create these directly.\n */\nclass GraphQLDirective {\n  constructor(config) {\n    var _config$isRepeatable, _config$args;\n\n    this.name = (0,_assertName_mjs__WEBPACK_IMPORTED_MODULE_2__.assertName)(config.name);\n    this.description = config.description;\n    this.locations = config.locations;\n    this.isRepeatable =\n      (_config$isRepeatable = config.isRepeatable) !== null &&\n      _config$isRepeatable !== void 0\n        ? _config$isRepeatable\n        : false;\n    this.extensions = (0,_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_3__.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    Array.isArray(config.locations) ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_4__.devAssert)(false, `@${config.name} locations must be an Array.`);\n    const args =\n      (_config$args = config.args) !== null && _config$args !== void 0\n        ? _config$args\n        : {};\n    ((0,_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_5__.isObjectLike)(args) && !Array.isArray(args)) ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_4__.devAssert)(\n        false,\n        `@${config.name} args must be an object with argument names as keys.`,\n      );\n    this.args = (0,_definition_mjs__WEBPACK_IMPORTED_MODULE_6__.defineArguments)(args);\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLDirective';\n  }\n\n  toConfig() {\n    return {\n      name: this.name,\n      description: this.description,\n      locations: this.locations,\n      args: (0,_definition_mjs__WEBPACK_IMPORTED_MODULE_6__.argsToArgsConfig)(this.args),\n      isRepeatable: this.isRepeatable,\n      extensions: this.extensions,\n      astNode: this.astNode,\n    };\n  }\n\n  toString() {\n    return '@' + this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\n/**\n * Used to conditionally include fields or fragments.\n */\nconst GraphQLIncludeDirective = new GraphQLDirective({\n  name: 'include',\n  description:\n    'Directs the executor to include this field or fragment only when the `if` argument is true.',\n  locations: [\n    _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_7__.DirectiveLocation.FIELD,\n    _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_7__.DirectiveLocation.FRAGMENT_SPREAD,\n    _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_7__.DirectiveLocation.INLINE_FRAGMENT,\n  ],\n  args: {\n    if: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_6__.GraphQLNonNull(_scalars_mjs__WEBPACK_IMPORTED_MODULE_8__.GraphQLBoolean),\n      description: 'Included when true.',\n    },\n  },\n});\n/**\n * Used to conditionally skip (exclude) fields or fragments.\n */\n\nconst GraphQLSkipDirective = new GraphQLDirective({\n  name: 'skip',\n  description:\n    'Directs the executor to skip this field or fragment when the `if` argument is true.',\n  locations: [\n    _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_7__.DirectiveLocation.FIELD,\n    _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_7__.DirectiveLocation.FRAGMENT_SPREAD,\n    _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_7__.DirectiveLocation.INLINE_FRAGMENT,\n  ],\n  args: {\n    if: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_6__.GraphQLNonNull(_scalars_mjs__WEBPACK_IMPORTED_MODULE_8__.GraphQLBoolean),\n      description: 'Skipped when true.',\n    },\n  },\n});\n/**\n * Constant string used for default reason for a deprecation.\n */\n\nconst DEFAULT_DEPRECATION_REASON = 'No longer supported';\n/**\n * Used to declare element of a GraphQL schema as deprecated.\n */\n\nconst GraphQLDeprecatedDirective = new GraphQLDirective({\n  name: 'deprecated',\n  description: 'Marks an element of a GraphQL schema as no longer supported.',\n  locations: [\n    _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_7__.DirectiveLocation.FIELD_DEFINITION,\n    _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_7__.DirectiveLocation.ARGUMENT_DEFINITION,\n    _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_7__.DirectiveLocation.INPUT_FIELD_DEFINITION,\n    _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_7__.DirectiveLocation.ENUM_VALUE,\n  ],\n  args: {\n    reason: {\n      type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_8__.GraphQLString,\n      description:\n        'Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).',\n      defaultValue: DEFAULT_DEPRECATION_REASON,\n    },\n  },\n});\n/**\n * Used to provide a URL for specifying the behavior of custom scalar definitions.\n */\n\nconst GraphQLSpecifiedByDirective = new GraphQLDirective({\n  name: 'specifiedBy',\n  description: 'Exposes a URL that specifies the behavior of this scalar.',\n  locations: [_language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_7__.DirectiveLocation.SCALAR],\n  args: {\n    url: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_6__.GraphQLNonNull(_scalars_mjs__WEBPACK_IMPORTED_MODULE_8__.GraphQLString),\n      description: 'The URL that specifies the behavior of this scalar.',\n    },\n  },\n});\n/**\n * The full list of specified directives.\n */\n\nconst specifiedDirectives = Object.freeze([\n  GraphQLIncludeDirective,\n  GraphQLSkipDirective,\n  GraphQLDeprecatedDirective,\n  GraphQLSpecifiedByDirective,\n]);\nfunction isSpecifiedDirective(directive) {\n  return specifiedDirectives.some(({ name }) => name === directive.name);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC90eXBlL2RpcmVjdGl2ZXMubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcUQ7QUFDSjtBQUNNO0FBQ0k7QUFDUjtBQUNtQjtBQUN4QjtBQUtwQjtBQUNvQztBQUM5RDtBQUNBO0FBQ0E7O0FBRU87QUFDUCxTQUFTLG1FQUFVO0FBQ25CO0FBQ087QUFDUDtBQUNBO0FBQ0Esa0JBQWtCLDZEQUFPLGFBQWE7QUFDdEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBOztBQUVBLGdCQUFnQiwyREFBVTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiwrREFBUTtBQUM5QjtBQUNBO0FBQ0EsTUFBTSxpRUFBUyxZQUFZLGFBQWE7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLHVFQUFZO0FBQ2pCLE1BQU0saUVBQVM7QUFDZjtBQUNBLFlBQVksYUFBYTtBQUN6QjtBQUNBLGdCQUFnQixnRUFBZTtBQUMvQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksaUVBQWdCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLG9GQUF1QjtBQUMzQixJQUFJLDhGQUFpQztBQUNyQyxJQUFJLDhGQUFpQztBQUNyQztBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsMkRBQWMsQ0FBQyx3REFBYztBQUM3QztBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxvRkFBdUI7QUFDM0IsSUFBSSw4RkFBaUM7QUFDckMsSUFBSSw4RkFBaUM7QUFDckM7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDJEQUFjLENBQUMsd0RBQWM7QUFDN0M7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxJQUFJLCtGQUFrQztBQUN0QyxJQUFJLGtHQUFxQztBQUN6QyxJQUFJLHFHQUF3QztBQUM1QyxJQUFJLHlGQUE0QjtBQUNoQztBQUNBO0FBQ0E7QUFDQSxZQUFZLHVEQUFhO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSxjQUFjLHFGQUF3QjtBQUN0QztBQUNBO0FBQ0EsZ0JBQWdCLDJEQUFjLENBQUMsdURBQWE7QUFDNUM7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxxQ0FBcUMsTUFBTTtBQUMzQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC90eXBlL2RpcmVjdGl2ZXMubWpzPzQ1MjAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGV2QXNzZXJ0IH0gZnJvbSAnLi4vanN1dGlscy9kZXZBc3NlcnQubWpzJztcbmltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IGluc3RhbmNlT2YgfSBmcm9tICcuLi9qc3V0aWxzL2luc3RhbmNlT2YubWpzJztcbmltcG9ydCB7IGlzT2JqZWN0TGlrZSB9IGZyb20gJy4uL2pzdXRpbHMvaXNPYmplY3RMaWtlLm1qcyc7XG5pbXBvcnQgeyB0b09iak1hcCB9IGZyb20gJy4uL2pzdXRpbHMvdG9PYmpNYXAubWpzJztcbmltcG9ydCB7IERpcmVjdGl2ZUxvY2F0aW9uIH0gZnJvbSAnLi4vbGFuZ3VhZ2UvZGlyZWN0aXZlTG9jYXRpb24ubWpzJztcbmltcG9ydCB7IGFzc2VydE5hbWUgfSBmcm9tICcuL2Fzc2VydE5hbWUubWpzJztcbmltcG9ydCB7XG4gIGFyZ3NUb0FyZ3NDb25maWcsXG4gIGRlZmluZUFyZ3VtZW50cyxcbiAgR3JhcGhRTE5vbk51bGwsXG59IGZyb20gJy4vZGVmaW5pdGlvbi5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEJvb2xlYW4sIEdyYXBoUUxTdHJpbmcgfSBmcm9tICcuL3NjYWxhcnMubWpzJztcbi8qKlxuICogVGVzdCBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBHcmFwaFFMIGRpcmVjdGl2ZS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNEaXJlY3RpdmUoZGlyZWN0aXZlKSB7XG4gIHJldHVybiBpbnN0YW5jZU9mKGRpcmVjdGl2ZSwgR3JhcGhRTERpcmVjdGl2ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RGlyZWN0aXZlKGRpcmVjdGl2ZSkge1xuICBpZiAoIWlzRGlyZWN0aXZlKGRpcmVjdGl2ZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgRXhwZWN0ZWQgJHtpbnNwZWN0KGRpcmVjdGl2ZSl9IHRvIGJlIGEgR3JhcGhRTCBkaXJlY3RpdmUuYCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGRpcmVjdGl2ZTtcbn1cbi8qKlxuICogQ3VzdG9tIGV4dGVuc2lvbnNcbiAqXG4gKiBAcmVtYXJrc1xuICogVXNlIGEgdW5pcXVlIGlkZW50aWZpZXIgbmFtZSBmb3IgeW91ciBleHRlbnNpb24sIGZvciBleGFtcGxlIHRoZSBuYW1lIG9mXG4gKiB5b3VyIGxpYnJhcnkgb3IgcHJvamVjdC4gRG8gbm90IHVzZSBhIHNob3J0ZW5lZCBpZGVudGlmaWVyIGFzIHRoaXMgaW5jcmVhc2VzXG4gKiB0aGUgcmlzayBvZiBjb25mbGljdHMuIFdlIHJlY29tbWVuZCB5b3UgYWRkIGF0IG1vc3Qgb25lIGV4dGVuc2lvbiBmaWVsZCxcbiAqIGFuIG9iamVjdCB3aGljaCBjYW4gY29udGFpbiBhbGwgdGhlIHZhbHVlcyB5b3UgbmVlZC5cbiAqL1xuXG4vKipcbiAqIERpcmVjdGl2ZXMgYXJlIHVzZWQgYnkgdGhlIEdyYXBoUUwgcnVudGltZSBhcyBhIHdheSBvZiBtb2RpZnlpbmcgZXhlY3V0aW9uXG4gKiBiZWhhdmlvci4gVHlwZSBzeXN0ZW0gY3JlYXRvcnMgd2lsbCB1c3VhbGx5IG5vdCBjcmVhdGUgdGhlc2UgZGlyZWN0bHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaFFMRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgdmFyIF9jb25maWckaXNSZXBlYXRhYmxlLCBfY29uZmlnJGFyZ3M7XG5cbiAgICB0aGlzLm5hbWUgPSBhc3NlcnROYW1lKGNvbmZpZy5uYW1lKTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gY29uZmlnLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMubG9jYXRpb25zID0gY29uZmlnLmxvY2F0aW9ucztcbiAgICB0aGlzLmlzUmVwZWF0YWJsZSA9XG4gICAgICAoX2NvbmZpZyRpc1JlcGVhdGFibGUgPSBjb25maWcuaXNSZXBlYXRhYmxlKSAhPT0gbnVsbCAmJlxuICAgICAgX2NvbmZpZyRpc1JlcGVhdGFibGUgIT09IHZvaWQgMFxuICAgICAgICA/IF9jb25maWckaXNSZXBlYXRhYmxlXG4gICAgICAgIDogZmFsc2U7XG4gICAgdGhpcy5leHRlbnNpb25zID0gdG9PYmpNYXAoY29uZmlnLmV4dGVuc2lvbnMpO1xuICAgIHRoaXMuYXN0Tm9kZSA9IGNvbmZpZy5hc3ROb2RlO1xuICAgIEFycmF5LmlzQXJyYXkoY29uZmlnLmxvY2F0aW9ucykgfHxcbiAgICAgIGRldkFzc2VydChmYWxzZSwgYEAke2NvbmZpZy5uYW1lfSBsb2NhdGlvbnMgbXVzdCBiZSBhbiBBcnJheS5gKTtcbiAgICBjb25zdCBhcmdzID1cbiAgICAgIChfY29uZmlnJGFyZ3MgPSBjb25maWcuYXJncykgIT09IG51bGwgJiYgX2NvbmZpZyRhcmdzICE9PSB2b2lkIDBcbiAgICAgICAgPyBfY29uZmlnJGFyZ3NcbiAgICAgICAgOiB7fTtcbiAgICAoaXNPYmplY3RMaWtlKGFyZ3MpICYmICFBcnJheS5pc0FycmF5KGFyZ3MpKSB8fFxuICAgICAgZGV2QXNzZXJ0KFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgYEAke2NvbmZpZy5uYW1lfSBhcmdzIG11c3QgYmUgYW4gb2JqZWN0IHdpdGggYXJndW1lbnQgbmFtZXMgYXMga2V5cy5gLFxuICAgICAgKTtcbiAgICB0aGlzLmFyZ3MgPSBkZWZpbmVBcmd1bWVudHMoYXJncyk7XG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdHcmFwaFFMRGlyZWN0aXZlJztcbiAgfVxuXG4gIHRvQ29uZmlnKCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIGxvY2F0aW9uczogdGhpcy5sb2NhdGlvbnMsXG4gICAgICBhcmdzOiBhcmdzVG9BcmdzQ29uZmlnKHRoaXMuYXJncyksXG4gICAgICBpc1JlcGVhdGFibGU6IHRoaXMuaXNSZXBlYXRhYmxlLFxuICAgICAgZXh0ZW5zaW9uczogdGhpcy5leHRlbnNpb25zLFxuICAgICAgYXN0Tm9kZTogdGhpcy5hc3ROb2RlLFxuICAgIH07XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gJ0AnICsgdGhpcy5uYW1lO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBVc2VkIHRvIGNvbmRpdGlvbmFsbHkgaW5jbHVkZSBmaWVsZHMgb3IgZnJhZ21lbnRzLlxuICovXG5leHBvcnQgY29uc3QgR3JhcGhRTEluY2x1ZGVEaXJlY3RpdmUgPSBuZXcgR3JhcGhRTERpcmVjdGl2ZSh7XG4gIG5hbWU6ICdpbmNsdWRlJyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ0RpcmVjdHMgdGhlIGV4ZWN1dG9yIHRvIGluY2x1ZGUgdGhpcyBmaWVsZCBvciBmcmFnbWVudCBvbmx5IHdoZW4gdGhlIGBpZmAgYXJndW1lbnQgaXMgdHJ1ZS4nLFxuICBsb2NhdGlvbnM6IFtcbiAgICBEaXJlY3RpdmVMb2NhdGlvbi5GSUVMRCxcbiAgICBEaXJlY3RpdmVMb2NhdGlvbi5GUkFHTUVOVF9TUFJFQUQsXG4gICAgRGlyZWN0aXZlTG9jYXRpb24uSU5MSU5FX0ZSQUdNRU5ULFxuICBdLFxuICBhcmdzOiB7XG4gICAgaWY6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMQm9vbGVhbiksXG4gICAgICBkZXNjcmlwdGlvbjogJ0luY2x1ZGVkIHdoZW4gdHJ1ZS4nLFxuICAgIH0sXG4gIH0sXG59KTtcbi8qKlxuICogVXNlZCB0byBjb25kaXRpb25hbGx5IHNraXAgKGV4Y2x1ZGUpIGZpZWxkcyBvciBmcmFnbWVudHMuXG4gKi9cblxuZXhwb3J0IGNvbnN0IEdyYXBoUUxTa2lwRGlyZWN0aXZlID0gbmV3IEdyYXBoUUxEaXJlY3RpdmUoe1xuICBuYW1lOiAnc2tpcCcsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdEaXJlY3RzIHRoZSBleGVjdXRvciB0byBza2lwIHRoaXMgZmllbGQgb3IgZnJhZ21lbnQgd2hlbiB0aGUgYGlmYCBhcmd1bWVudCBpcyB0cnVlLicsXG4gIGxvY2F0aW9uczogW1xuICAgIERpcmVjdGl2ZUxvY2F0aW9uLkZJRUxELFxuICAgIERpcmVjdGl2ZUxvY2F0aW9uLkZSQUdNRU5UX1NQUkVBRCxcbiAgICBEaXJlY3RpdmVMb2NhdGlvbi5JTkxJTkVfRlJBR01FTlQsXG4gIF0sXG4gIGFyZ3M6IHtcbiAgICBpZjoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnU2tpcHBlZCB3aGVuIHRydWUuJyxcbiAgICB9LFxuICB9LFxufSk7XG4vKipcbiAqIENvbnN0YW50IHN0cmluZyB1c2VkIGZvciBkZWZhdWx0IHJlYXNvbiBmb3IgYSBkZXByZWNhdGlvbi5cbiAqL1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9ERVBSRUNBVElPTl9SRUFTT04gPSAnTm8gbG9uZ2VyIHN1cHBvcnRlZCc7XG4vKipcbiAqIFVzZWQgdG8gZGVjbGFyZSBlbGVtZW50IG9mIGEgR3JhcGhRTCBzY2hlbWEgYXMgZGVwcmVjYXRlZC5cbiAqL1xuXG5leHBvcnQgY29uc3QgR3JhcGhRTERlcHJlY2F0ZWREaXJlY3RpdmUgPSBuZXcgR3JhcGhRTERpcmVjdGl2ZSh7XG4gIG5hbWU6ICdkZXByZWNhdGVkJyxcbiAgZGVzY3JpcHRpb246ICdNYXJrcyBhbiBlbGVtZW50IG9mIGEgR3JhcGhRTCBzY2hlbWEgYXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4nLFxuICBsb2NhdGlvbnM6IFtcbiAgICBEaXJlY3RpdmVMb2NhdGlvbi5GSUVMRF9ERUZJTklUSU9OLFxuICAgIERpcmVjdGl2ZUxvY2F0aW9uLkFSR1VNRU5UX0RFRklOSVRJT04sXG4gICAgRGlyZWN0aXZlTG9jYXRpb24uSU5QVVRfRklFTERfREVGSU5JVElPTixcbiAgICBEaXJlY3RpdmVMb2NhdGlvbi5FTlVNX1ZBTFVFLFxuICBdLFxuICBhcmdzOiB7XG4gICAgcmVhc29uOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdFeHBsYWlucyB3aHkgdGhpcyBlbGVtZW50IHdhcyBkZXByZWNhdGVkLCB1c3VhbGx5IGFsc28gaW5jbHVkaW5nIGEgc3VnZ2VzdGlvbiBmb3IgaG93IHRvIGFjY2VzcyBzdXBwb3J0ZWQgc2ltaWxhciBkYXRhLiBGb3JtYXR0ZWQgdXNpbmcgdGhlIE1hcmtkb3duIHN5bnRheCwgYXMgc3BlY2lmaWVkIGJ5IFtDb21tb25NYXJrXShodHRwczovL2NvbW1vbm1hcmsub3JnLykuJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogREVGQVVMVF9ERVBSRUNBVElPTl9SRUFTT04sXG4gICAgfSxcbiAgfSxcbn0pO1xuLyoqXG4gKiBVc2VkIHRvIHByb3ZpZGUgYSBVUkwgZm9yIHNwZWNpZnlpbmcgdGhlIGJlaGF2aW9yIG9mIGN1c3RvbSBzY2FsYXIgZGVmaW5pdGlvbnMuXG4gKi9cblxuZXhwb3J0IGNvbnN0IEdyYXBoUUxTcGVjaWZpZWRCeURpcmVjdGl2ZSA9IG5ldyBHcmFwaFFMRGlyZWN0aXZlKHtcbiAgbmFtZTogJ3NwZWNpZmllZEJ5JyxcbiAgZGVzY3JpcHRpb246ICdFeHBvc2VzIGEgVVJMIHRoYXQgc3BlY2lmaWVzIHRoZSBiZWhhdmlvciBvZiB0aGlzIHNjYWxhci4nLFxuICBsb2NhdGlvbnM6IFtEaXJlY3RpdmVMb2NhdGlvbi5TQ0FMQVJdLFxuICBhcmdzOiB7XG4gICAgdXJsOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoZSBVUkwgdGhhdCBzcGVjaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHRoaXMgc2NhbGFyLicsXG4gICAgfSxcbiAgfSxcbn0pO1xuLyoqXG4gKiBUaGUgZnVsbCBsaXN0IG9mIHNwZWNpZmllZCBkaXJlY3RpdmVzLlxuICovXG5cbmV4cG9ydCBjb25zdCBzcGVjaWZpZWREaXJlY3RpdmVzID0gT2JqZWN0LmZyZWV6ZShbXG4gIEdyYXBoUUxJbmNsdWRlRGlyZWN0aXZlLFxuICBHcmFwaFFMU2tpcERpcmVjdGl2ZSxcbiAgR3JhcGhRTERlcHJlY2F0ZWREaXJlY3RpdmUsXG4gIEdyYXBoUUxTcGVjaWZpZWRCeURpcmVjdGl2ZSxcbl0pO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3BlY2lmaWVkRGlyZWN0aXZlKGRpcmVjdGl2ZSkge1xuICByZXR1cm4gc3BlY2lmaWVkRGlyZWN0aXZlcy5zb21lKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gZGlyZWN0aXZlLm5hbWUpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/type/directives.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/type/index.mjs":
/*!*********************************************!*\
  !*** ./node_modules/graphql/type/index.mjs ***!
  \*********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DEFAULT_DEPRECATION_REASON\": function() { return /* reexport safe */ _directives_mjs__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_DEPRECATION_REASON; },\n/* harmony export */   \"GRAPHQL_MAX_INT\": function() { return /* reexport safe */ _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__.GRAPHQL_MAX_INT; },\n/* harmony export */   \"GRAPHQL_MIN_INT\": function() { return /* reexport safe */ _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__.GRAPHQL_MIN_INT; },\n/* harmony export */   \"GraphQLBoolean\": function() { return /* reexport safe */ _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLBoolean; },\n/* harmony export */   \"GraphQLDeprecatedDirective\": function() { return /* reexport safe */ _directives_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLDeprecatedDirective; },\n/* harmony export */   \"GraphQLDirective\": function() { return /* reexport safe */ _directives_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLDirective; },\n/* harmony export */   \"GraphQLEnumType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLEnumType; },\n/* harmony export */   \"GraphQLFloat\": function() { return /* reexport safe */ _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLFloat; },\n/* harmony export */   \"GraphQLID\": function() { return /* reexport safe */ _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLID; },\n/* harmony export */   \"GraphQLIncludeDirective\": function() { return /* reexport safe */ _directives_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLIncludeDirective; },\n/* harmony export */   \"GraphQLInputObjectType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLInputObjectType; },\n/* harmony export */   \"GraphQLInt\": function() { return /* reexport safe */ _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLInt; },\n/* harmony export */   \"GraphQLInterfaceType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLInterfaceType; },\n/* harmony export */   \"GraphQLList\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLList; },\n/* harmony export */   \"GraphQLNonNull\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLNonNull; },\n/* harmony export */   \"GraphQLObjectType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLObjectType; },\n/* harmony export */   \"GraphQLScalarType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLScalarType; },\n/* harmony export */   \"GraphQLSchema\": function() { return /* reexport safe */ _schema_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLSchema; },\n/* harmony export */   \"GraphQLSkipDirective\": function() { return /* reexport safe */ _directives_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLSkipDirective; },\n/* harmony export */   \"GraphQLSpecifiedByDirective\": function() { return /* reexport safe */ _directives_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLSpecifiedByDirective; },\n/* harmony export */   \"GraphQLString\": function() { return /* reexport safe */ _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLString; },\n/* harmony export */   \"GraphQLUnionType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLUnionType; },\n/* harmony export */   \"SchemaMetaFieldDef\": function() { return /* reexport safe */ _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__.SchemaMetaFieldDef; },\n/* harmony export */   \"TypeKind\": function() { return /* reexport safe */ _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__.TypeKind; },\n/* harmony export */   \"TypeMetaFieldDef\": function() { return /* reexport safe */ _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__.TypeMetaFieldDef; },\n/* harmony export */   \"TypeNameMetaFieldDef\": function() { return /* reexport safe */ _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__.TypeNameMetaFieldDef; },\n/* harmony export */   \"__Directive\": function() { return /* reexport safe */ _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__.__Directive; },\n/* harmony export */   \"__DirectiveLocation\": function() { return /* reexport safe */ _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__.__DirectiveLocation; },\n/* harmony export */   \"__EnumValue\": function() { return /* reexport safe */ _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__.__EnumValue; },\n/* harmony export */   \"__Field\": function() { return /* reexport safe */ _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__.__Field; },\n/* harmony export */   \"__InputValue\": function() { return /* reexport safe */ _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__.__InputValue; },\n/* harmony export */   \"__Schema\": function() { return /* reexport safe */ _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__.__Schema; },\n/* harmony export */   \"__Type\": function() { return /* reexport safe */ _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__.__Type; },\n/* harmony export */   \"__TypeKind\": function() { return /* reexport safe */ _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__.__TypeKind; },\n/* harmony export */   \"assertAbstractType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.assertAbstractType; },\n/* harmony export */   \"assertCompositeType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.assertCompositeType; },\n/* harmony export */   \"assertDirective\": function() { return /* reexport safe */ _directives_mjs__WEBPACK_IMPORTED_MODULE_2__.assertDirective; },\n/* harmony export */   \"assertEnumType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.assertEnumType; },\n/* harmony export */   \"assertEnumValueName\": function() { return /* reexport safe */ _assertName_mjs__WEBPACK_IMPORTED_MODULE_6__.assertEnumValueName; },\n/* harmony export */   \"assertInputObjectType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.assertInputObjectType; },\n/* harmony export */   \"assertInputType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.assertInputType; },\n/* harmony export */   \"assertInterfaceType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.assertInterfaceType; },\n/* harmony export */   \"assertLeafType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.assertLeafType; },\n/* harmony export */   \"assertListType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.assertListType; },\n/* harmony export */   \"assertName\": function() { return /* reexport safe */ _assertName_mjs__WEBPACK_IMPORTED_MODULE_6__.assertName; },\n/* harmony export */   \"assertNamedType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.assertNamedType; },\n/* harmony export */   \"assertNonNullType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.assertNonNullType; },\n/* harmony export */   \"assertNullableType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.assertNullableType; },\n/* harmony export */   \"assertObjectType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.assertObjectType; },\n/* harmony export */   \"assertOutputType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.assertOutputType; },\n/* harmony export */   \"assertScalarType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.assertScalarType; },\n/* harmony export */   \"assertSchema\": function() { return /* reexport safe */ _schema_mjs__WEBPACK_IMPORTED_MODULE_0__.assertSchema; },\n/* harmony export */   \"assertType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.assertType; },\n/* harmony export */   \"assertUnionType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.assertUnionType; },\n/* harmony export */   \"assertValidSchema\": function() { return /* reexport safe */ _validate_mjs__WEBPACK_IMPORTED_MODULE_5__.assertValidSchema; },\n/* harmony export */   \"assertWrappingType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.assertWrappingType; },\n/* harmony export */   \"getNamedType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.getNamedType; },\n/* harmony export */   \"getNullableType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.getNullableType; },\n/* harmony export */   \"introspectionTypes\": function() { return /* reexport safe */ _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__.introspectionTypes; },\n/* harmony export */   \"isAbstractType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isAbstractType; },\n/* harmony export */   \"isCompositeType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isCompositeType; },\n/* harmony export */   \"isDirective\": function() { return /* reexport safe */ _directives_mjs__WEBPACK_IMPORTED_MODULE_2__.isDirective; },\n/* harmony export */   \"isEnumType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isEnumType; },\n/* harmony export */   \"isInputObjectType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isInputObjectType; },\n/* harmony export */   \"isInputType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isInputType; },\n/* harmony export */   \"isInterfaceType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isInterfaceType; },\n/* harmony export */   \"isIntrospectionType\": function() { return /* reexport safe */ _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__.isIntrospectionType; },\n/* harmony export */   \"isLeafType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isLeafType; },\n/* harmony export */   \"isListType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isListType; },\n/* harmony export */   \"isNamedType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isNamedType; },\n/* harmony export */   \"isNonNullType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isNonNullType; },\n/* harmony export */   \"isNullableType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isNullableType; },\n/* harmony export */   \"isObjectType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isObjectType; },\n/* harmony export */   \"isOutputType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isOutputType; },\n/* harmony export */   \"isRequiredArgument\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isRequiredArgument; },\n/* harmony export */   \"isRequiredInputField\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isRequiredInputField; },\n/* harmony export */   \"isScalarType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isScalarType; },\n/* harmony export */   \"isSchema\": function() { return /* reexport safe */ _schema_mjs__WEBPACK_IMPORTED_MODULE_0__.isSchema; },\n/* harmony export */   \"isSpecifiedDirective\": function() { return /* reexport safe */ _directives_mjs__WEBPACK_IMPORTED_MODULE_2__.isSpecifiedDirective; },\n/* harmony export */   \"isSpecifiedScalarType\": function() { return /* reexport safe */ _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__.isSpecifiedScalarType; },\n/* harmony export */   \"isType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isType; },\n/* harmony export */   \"isUnionType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isUnionType; },\n/* harmony export */   \"isWrappingType\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isWrappingType; },\n/* harmony export */   \"resolveObjMapThunk\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.resolveObjMapThunk; },\n/* harmony export */   \"resolveReadonlyArrayThunk\": function() { return /* reexport safe */ _definition_mjs__WEBPACK_IMPORTED_MODULE_1__.resolveReadonlyArrayThunk; },\n/* harmony export */   \"specifiedDirectives\": function() { return /* reexport safe */ _directives_mjs__WEBPACK_IMPORTED_MODULE_2__.specifiedDirectives; },\n/* harmony export */   \"specifiedScalarTypes\": function() { return /* reexport safe */ _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__.specifiedScalarTypes; },\n/* harmony export */   \"validateSchema\": function() { return /* reexport safe */ _validate_mjs__WEBPACK_IMPORTED_MODULE_5__.validateSchema; }\n/* harmony export */ });\n/* harmony import */ var _schema_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schema.mjs */ \"./node_modules/graphql/type/schema.mjs\");\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _directives_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./directives.mjs */ \"./node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _scalars_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./scalars.mjs */ \"./node_modules/graphql/type/scalars.mjs\");\n/* harmony import */ var _introspection_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./introspection.mjs */ \"./node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _validate_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./validate.mjs */ \"./node_modules/graphql/type/validate.mjs\");\n/* harmony import */ var _assertName_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./assertName.mjs */ \"./node_modules/graphql/type/assertName.mjs\");\n\n\n\n// Common built-in scalar instances.\n\n // Validate GraphQL schema.\n\n // Upholds the spec rules about naming.\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC90eXBlL2luZGV4Lm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUtzQjtBQWtESTtBQWFBO0FBQzFCO0FBWXVCO0FBaUJNLENBQUM7O0FBRXFDLENBQUM7O0FBRUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9pbmRleC5tanM/N2EyYiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICAvLyBQcmVkaWNhdGVcbiAgaXNTY2hlbWEsIC8vIEFzc2VydGlvblxuICBhc3NlcnRTY2hlbWEsIC8vIEdyYXBoUUwgU2NoZW1hIGRlZmluaXRpb25cbiAgR3JhcGhRTFNjaGVtYSxcbn0gZnJvbSAnLi9zY2hlbWEubWpzJztcbmV4cG9ydCB7XG4gIHJlc29sdmVPYmpNYXBUaHVuayxcbiAgcmVzb2x2ZVJlYWRvbmx5QXJyYXlUaHVuaywgLy8gUHJlZGljYXRlc1xuICBpc1R5cGUsXG4gIGlzU2NhbGFyVHlwZSxcbiAgaXNPYmplY3RUeXBlLFxuICBpc0ludGVyZmFjZVR5cGUsXG4gIGlzVW5pb25UeXBlLFxuICBpc0VudW1UeXBlLFxuICBpc0lucHV0T2JqZWN0VHlwZSxcbiAgaXNMaXN0VHlwZSxcbiAgaXNOb25OdWxsVHlwZSxcbiAgaXNJbnB1dFR5cGUsXG4gIGlzT3V0cHV0VHlwZSxcbiAgaXNMZWFmVHlwZSxcbiAgaXNDb21wb3NpdGVUeXBlLFxuICBpc0Fic3RyYWN0VHlwZSxcbiAgaXNXcmFwcGluZ1R5cGUsXG4gIGlzTnVsbGFibGVUeXBlLFxuICBpc05hbWVkVHlwZSxcbiAgaXNSZXF1aXJlZEFyZ3VtZW50LFxuICBpc1JlcXVpcmVkSW5wdXRGaWVsZCwgLy8gQXNzZXJ0aW9uc1xuICBhc3NlcnRUeXBlLFxuICBhc3NlcnRTY2FsYXJUeXBlLFxuICBhc3NlcnRPYmplY3RUeXBlLFxuICBhc3NlcnRJbnRlcmZhY2VUeXBlLFxuICBhc3NlcnRVbmlvblR5cGUsXG4gIGFzc2VydEVudW1UeXBlLFxuICBhc3NlcnRJbnB1dE9iamVjdFR5cGUsXG4gIGFzc2VydExpc3RUeXBlLFxuICBhc3NlcnROb25OdWxsVHlwZSxcbiAgYXNzZXJ0SW5wdXRUeXBlLFxuICBhc3NlcnRPdXRwdXRUeXBlLFxuICBhc3NlcnRMZWFmVHlwZSxcbiAgYXNzZXJ0Q29tcG9zaXRlVHlwZSxcbiAgYXNzZXJ0QWJzdHJhY3RUeXBlLFxuICBhc3NlcnRXcmFwcGluZ1R5cGUsXG4gIGFzc2VydE51bGxhYmxlVHlwZSxcbiAgYXNzZXJ0TmFtZWRUeXBlLCAvLyBVbi1tb2RpZmllcnNcbiAgZ2V0TnVsbGFibGVUeXBlLFxuICBnZXROYW1lZFR5cGUsIC8vIERlZmluaXRpb25zXG4gIEdyYXBoUUxTY2FsYXJUeXBlLFxuICBHcmFwaFFMT2JqZWN0VHlwZSxcbiAgR3JhcGhRTEludGVyZmFjZVR5cGUsXG4gIEdyYXBoUUxVbmlvblR5cGUsXG4gIEdyYXBoUUxFbnVtVHlwZSxcbiAgR3JhcGhRTElucHV0T2JqZWN0VHlwZSwgLy8gVHlwZSBXcmFwcGVyc1xuICBHcmFwaFFMTGlzdCxcbiAgR3JhcGhRTE5vbk51bGwsXG59IGZyb20gJy4vZGVmaW5pdGlvbi5tanMnO1xuZXhwb3J0IHtcbiAgLy8gUHJlZGljYXRlXG4gIGlzRGlyZWN0aXZlLCAvLyBBc3NlcnRpb25cbiAgYXNzZXJ0RGlyZWN0aXZlLCAvLyBEaXJlY3RpdmVzIERlZmluaXRpb25cbiAgR3JhcGhRTERpcmVjdGl2ZSwgLy8gQnVpbHQtaW4gRGlyZWN0aXZlcyBkZWZpbmVkIGJ5IHRoZSBTcGVjXG4gIGlzU3BlY2lmaWVkRGlyZWN0aXZlLFxuICBzcGVjaWZpZWREaXJlY3RpdmVzLFxuICBHcmFwaFFMSW5jbHVkZURpcmVjdGl2ZSxcbiAgR3JhcGhRTFNraXBEaXJlY3RpdmUsXG4gIEdyYXBoUUxEZXByZWNhdGVkRGlyZWN0aXZlLFxuICBHcmFwaFFMU3BlY2lmaWVkQnlEaXJlY3RpdmUsIC8vIENvbnN0YW50IERlcHJlY2F0aW9uIFJlYXNvblxuICBERUZBVUxUX0RFUFJFQ0FUSU9OX1JFQVNPTixcbn0gZnJvbSAnLi9kaXJlY3RpdmVzLm1qcyc7XG4vLyBDb21tb24gYnVpbHQtaW4gc2NhbGFyIGluc3RhbmNlcy5cbmV4cG9ydCB7XG4gIC8vIFByZWRpY2F0ZVxuICBpc1NwZWNpZmllZFNjYWxhclR5cGUsIC8vIFN0YW5kYXJkIEdyYXBoUUwgU2NhbGFyc1xuICBzcGVjaWZpZWRTY2FsYXJUeXBlcyxcbiAgR3JhcGhRTEludCxcbiAgR3JhcGhRTEZsb2F0LFxuICBHcmFwaFFMU3RyaW5nLFxuICBHcmFwaFFMQm9vbGVhbixcbiAgR3JhcGhRTElELCAvLyBJbnQgYm91bmRhcmllcyBjb25zdGFudHNcbiAgR1JBUEhRTF9NQVhfSU5ULFxuICBHUkFQSFFMX01JTl9JTlQsXG59IGZyb20gJy4vc2NhbGFycy5tanMnO1xuZXhwb3J0IHtcbiAgLy8gUHJlZGljYXRlXG4gIGlzSW50cm9zcGVjdGlvblR5cGUsIC8vIEdyYXBoUUwgVHlwZXMgZm9yIGludHJvc3BlY3Rpb24uXG4gIGludHJvc3BlY3Rpb25UeXBlcyxcbiAgX19TY2hlbWEsXG4gIF9fRGlyZWN0aXZlLFxuICBfX0RpcmVjdGl2ZUxvY2F0aW9uLFxuICBfX1R5cGUsXG4gIF9fRmllbGQsXG4gIF9fSW5wdXRWYWx1ZSxcbiAgX19FbnVtVmFsdWUsXG4gIF9fVHlwZUtpbmQsIC8vIFwiRW51bVwiIG9mIFR5cGUgS2luZHNcbiAgVHlwZUtpbmQsIC8vIE1ldGEtZmllbGQgZGVmaW5pdGlvbnMuXG4gIFNjaGVtYU1ldGFGaWVsZERlZixcbiAgVHlwZU1ldGFGaWVsZERlZixcbiAgVHlwZU5hbWVNZXRhRmllbGREZWYsXG59IGZyb20gJy4vaW50cm9zcGVjdGlvbi5tanMnOyAvLyBWYWxpZGF0ZSBHcmFwaFFMIHNjaGVtYS5cblxuZXhwb3J0IHsgdmFsaWRhdGVTY2hlbWEsIGFzc2VydFZhbGlkU2NoZW1hIH0gZnJvbSAnLi92YWxpZGF0ZS5tanMnOyAvLyBVcGhvbGRzIHRoZSBzcGVjIHJ1bGVzIGFib3V0IG5hbWluZy5cblxuZXhwb3J0IHsgYXNzZXJ0TmFtZSwgYXNzZXJ0RW51bVZhbHVlTmFtZSB9IGZyb20gJy4vYXNzZXJ0TmFtZS5tanMnO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/type/index.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/type/introspection.mjs":
/*!*****************************************************!*\
  !*** ./node_modules/graphql/type/introspection.mjs ***!
  \*****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SchemaMetaFieldDef\": function() { return /* binding */ SchemaMetaFieldDef; },\n/* harmony export */   \"TypeKind\": function() { return /* binding */ TypeKind; },\n/* harmony export */   \"TypeMetaFieldDef\": function() { return /* binding */ TypeMetaFieldDef; },\n/* harmony export */   \"TypeNameMetaFieldDef\": function() { return /* binding */ TypeNameMetaFieldDef; },\n/* harmony export */   \"__Directive\": function() { return /* binding */ __Directive; },\n/* harmony export */   \"__DirectiveLocation\": function() { return /* binding */ __DirectiveLocation; },\n/* harmony export */   \"__EnumValue\": function() { return /* binding */ __EnumValue; },\n/* harmony export */   \"__Field\": function() { return /* binding */ __Field; },\n/* harmony export */   \"__InputValue\": function() { return /* binding */ __InputValue; },\n/* harmony export */   \"__Schema\": function() { return /* binding */ __Schema; },\n/* harmony export */   \"__Type\": function() { return /* binding */ __Type; },\n/* harmony export */   \"__TypeKind\": function() { return /* binding */ __TypeKind; },\n/* harmony export */   \"introspectionTypes\": function() { return /* binding */ introspectionTypes; },\n/* harmony export */   \"isIntrospectionType\": function() { return /* binding */ isIntrospectionType; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"./node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/directiveLocation.mjs */ \"./node_modules/graphql/language/directiveLocation.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../language/printer.mjs */ \"./node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _utilities_astFromValue_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utilities/astFromValue.mjs */ \"./node_modules/graphql/utilities/astFromValue.mjs\");\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scalars.mjs */ \"./node_modules/graphql/type/scalars.mjs\");\n\n\n\n\n\n\n\nconst __Schema = new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLObjectType({\n  name: '__Schema',\n  description:\n    'A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.',\n  fields: () => ({\n    description: {\n      type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString,\n      resolve: (schema) => schema.description,\n    },\n    types: {\n      description: 'A list of all types supported by this server.',\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLList(new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(__Type))),\n\n      resolve(schema) {\n        return Object.values(schema.getTypeMap());\n      },\n    },\n    queryType: {\n      description: 'The type that query operations will be rooted at.',\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(__Type),\n      resolve: (schema) => schema.getQueryType(),\n    },\n    mutationType: {\n      description:\n        'If this server supports mutation, the type that mutation operations will be rooted at.',\n      type: __Type,\n      resolve: (schema) => schema.getMutationType(),\n    },\n    subscriptionType: {\n      description:\n        'If this server support subscription, the type that subscription operations will be rooted at.',\n      type: __Type,\n      resolve: (schema) => schema.getSubscriptionType(),\n    },\n    directives: {\n      description: 'A list of all directives supported by this server.',\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(\n        new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLList(new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(__Directive)),\n      ),\n      resolve: (schema) => schema.getDirectives(),\n    },\n  }),\n});\nconst __Directive = new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLObjectType({\n  name: '__Directive',\n  description:\n    \"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\\n\\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.\",\n  fields: () => ({\n    name: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(_scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString),\n      resolve: (directive) => directive.name,\n    },\n    description: {\n      type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString,\n      resolve: (directive) => directive.description,\n    },\n    isRepeatable: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(_scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLBoolean),\n      resolve: (directive) => directive.isRepeatable,\n    },\n    locations: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(\n        new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLList(new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(__DirectiveLocation)),\n      ),\n      resolve: (directive) => directive.locations,\n    },\n    args: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(\n        new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLList(new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(__InputValue)),\n      ),\n      args: {\n        includeDeprecated: {\n          type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLBoolean,\n          defaultValue: false,\n        },\n      },\n\n      resolve(field, { includeDeprecated }) {\n        return includeDeprecated\n          ? field.args\n          : field.args.filter((arg) => arg.deprecationReason == null);\n      },\n    },\n  }),\n});\nconst __DirectiveLocation = new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLEnumType({\n  name: '__DirectiveLocation',\n  description:\n    'A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.',\n  values: {\n    QUERY: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.QUERY,\n      description: 'Location adjacent to a query operation.',\n    },\n    MUTATION: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.MUTATION,\n      description: 'Location adjacent to a mutation operation.',\n    },\n    SUBSCRIPTION: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.SUBSCRIPTION,\n      description: 'Location adjacent to a subscription operation.',\n    },\n    FIELD: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.FIELD,\n      description: 'Location adjacent to a field.',\n    },\n    FRAGMENT_DEFINITION: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.FRAGMENT_DEFINITION,\n      description: 'Location adjacent to a fragment definition.',\n    },\n    FRAGMENT_SPREAD: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.FRAGMENT_SPREAD,\n      description: 'Location adjacent to a fragment spread.',\n    },\n    INLINE_FRAGMENT: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.INLINE_FRAGMENT,\n      description: 'Location adjacent to an inline fragment.',\n    },\n    VARIABLE_DEFINITION: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.VARIABLE_DEFINITION,\n      description: 'Location adjacent to a variable definition.',\n    },\n    SCHEMA: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.SCHEMA,\n      description: 'Location adjacent to a schema definition.',\n    },\n    SCALAR: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.SCALAR,\n      description: 'Location adjacent to a scalar definition.',\n    },\n    OBJECT: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.OBJECT,\n      description: 'Location adjacent to an object type definition.',\n    },\n    FIELD_DEFINITION: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.FIELD_DEFINITION,\n      description: 'Location adjacent to a field definition.',\n    },\n    ARGUMENT_DEFINITION: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.ARGUMENT_DEFINITION,\n      description: 'Location adjacent to an argument definition.',\n    },\n    INTERFACE: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.INTERFACE,\n      description: 'Location adjacent to an interface definition.',\n    },\n    UNION: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.UNION,\n      description: 'Location adjacent to a union definition.',\n    },\n    ENUM: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.ENUM,\n      description: 'Location adjacent to an enum definition.',\n    },\n    ENUM_VALUE: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.ENUM_VALUE,\n      description: 'Location adjacent to an enum value definition.',\n    },\n    INPUT_OBJECT: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.INPUT_OBJECT,\n      description: 'Location adjacent to an input object type definition.',\n    },\n    INPUT_FIELD_DEFINITION: {\n      value: _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_2__.DirectiveLocation.INPUT_FIELD_DEFINITION,\n      description: 'Location adjacent to an input object field definition.',\n    },\n  },\n});\nconst __Type = new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLObjectType({\n  name: '__Type',\n  description:\n    'The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\\n\\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.',\n  fields: () => ({\n    kind: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(__TypeKind),\n\n      resolve(type) {\n        if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isScalarType)(type)) {\n          return TypeKind.SCALAR;\n        }\n\n        if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isObjectType)(type)) {\n          return TypeKind.OBJECT;\n        }\n\n        if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInterfaceType)(type)) {\n          return TypeKind.INTERFACE;\n        }\n\n        if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isUnionType)(type)) {\n          return TypeKind.UNION;\n        }\n\n        if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isEnumType)(type)) {\n          return TypeKind.ENUM;\n        }\n\n        if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInputObjectType)(type)) {\n          return TypeKind.INPUT_OBJECT;\n        }\n\n        if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isListType)(type)) {\n          return TypeKind.LIST;\n        }\n\n        if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isNonNullType)(type)) {\n          return TypeKind.NON_NULL;\n        }\n        /* c8 ignore next 3 */\n        // Not reachable, all possible types have been considered)\n\n         false || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_3__.invariant)(false, `Unexpected type: \"${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_4__.inspect)(type)}\".`);\n      },\n    },\n    name: {\n      type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString,\n      resolve: (type) => ('name' in type ? type.name : undefined),\n    },\n    description: {\n      type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString,\n      resolve: (\n        type, // FIXME: add test case\n      ) =>\n        /* c8 ignore next */\n        'description' in type ? type.description : undefined,\n    },\n    specifiedByURL: {\n      type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString,\n      resolve: (obj) =>\n        'specifiedByURL' in obj ? obj.specifiedByURL : undefined,\n    },\n    fields: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLList(new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(__Field)),\n      args: {\n        includeDeprecated: {\n          type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLBoolean,\n          defaultValue: false,\n        },\n      },\n\n      resolve(type, { includeDeprecated }) {\n        if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isObjectType)(type) || (0,_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInterfaceType)(type)) {\n          const fields = Object.values(type.getFields());\n          return includeDeprecated\n            ? fields\n            : fields.filter((field) => field.deprecationReason == null);\n        }\n      },\n    },\n    interfaces: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLList(new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(__Type)),\n\n      resolve(type) {\n        if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isObjectType)(type) || (0,_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInterfaceType)(type)) {\n          return type.getInterfaces();\n        }\n      },\n    },\n    possibleTypes: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLList(new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(__Type)),\n\n      resolve(type, _args, _context, { schema }) {\n        if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isAbstractType)(type)) {\n          return schema.getPossibleTypes(type);\n        }\n      },\n    },\n    enumValues: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLList(new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(__EnumValue)),\n      args: {\n        includeDeprecated: {\n          type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLBoolean,\n          defaultValue: false,\n        },\n      },\n\n      resolve(type, { includeDeprecated }) {\n        if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isEnumType)(type)) {\n          const values = type.getValues();\n          return includeDeprecated\n            ? values\n            : values.filter((field) => field.deprecationReason == null);\n        }\n      },\n    },\n    inputFields: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLList(new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(__InputValue)),\n      args: {\n        includeDeprecated: {\n          type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLBoolean,\n          defaultValue: false,\n        },\n      },\n\n      resolve(type, { includeDeprecated }) {\n        if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInputObjectType)(type)) {\n          const values = Object.values(type.getFields());\n          return includeDeprecated\n            ? values\n            : values.filter((field) => field.deprecationReason == null);\n        }\n      },\n    },\n    ofType: {\n      type: __Type,\n      resolve: (type) => ('ofType' in type ? type.ofType : undefined),\n    },\n  }),\n});\nconst __Field = new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLObjectType({\n  name: '__Field',\n  description:\n    'Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.',\n  fields: () => ({\n    name: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(_scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString),\n      resolve: (field) => field.name,\n    },\n    description: {\n      type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString,\n      resolve: (field) => field.description,\n    },\n    args: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(\n        new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLList(new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(__InputValue)),\n      ),\n      args: {\n        includeDeprecated: {\n          type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLBoolean,\n          defaultValue: false,\n        },\n      },\n\n      resolve(field, { includeDeprecated }) {\n        return includeDeprecated\n          ? field.args\n          : field.args.filter((arg) => arg.deprecationReason == null);\n      },\n    },\n    type: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(__Type),\n      resolve: (field) => field.type,\n    },\n    isDeprecated: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(_scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLBoolean),\n      resolve: (field) => field.deprecationReason != null,\n    },\n    deprecationReason: {\n      type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString,\n      resolve: (field) => field.deprecationReason,\n    },\n  }),\n});\nconst __InputValue = new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLObjectType({\n  name: '__InputValue',\n  description:\n    'Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.',\n  fields: () => ({\n    name: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(_scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString),\n      resolve: (inputValue) => inputValue.name,\n    },\n    description: {\n      type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString,\n      resolve: (inputValue) => inputValue.description,\n    },\n    type: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(__Type),\n      resolve: (inputValue) => inputValue.type,\n    },\n    defaultValue: {\n      type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString,\n      description:\n        'A GraphQL-formatted string representing the default value for this input value.',\n\n      resolve(inputValue) {\n        const { type, defaultValue } = inputValue;\n        const valueAST = (0,_utilities_astFromValue_mjs__WEBPACK_IMPORTED_MODULE_5__.astFromValue)(defaultValue, type);\n        return valueAST ? (0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_6__.print)(valueAST) : null;\n      },\n    },\n    isDeprecated: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(_scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLBoolean),\n      resolve: (field) => field.deprecationReason != null,\n    },\n    deprecationReason: {\n      type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString,\n      resolve: (obj) => obj.deprecationReason,\n    },\n  }),\n});\nconst __EnumValue = new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLObjectType({\n  name: '__EnumValue',\n  description:\n    'One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.',\n  fields: () => ({\n    name: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(_scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString),\n      resolve: (enumValue) => enumValue.name,\n    },\n    description: {\n      type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString,\n      resolve: (enumValue) => enumValue.description,\n    },\n    isDeprecated: {\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(_scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLBoolean),\n      resolve: (enumValue) => enumValue.deprecationReason != null,\n    },\n    deprecationReason: {\n      type: _scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString,\n      resolve: (enumValue) => enumValue.deprecationReason,\n    },\n  }),\n});\nlet TypeKind;\n\n(function (TypeKind) {\n  TypeKind['SCALAR'] = 'SCALAR';\n  TypeKind['OBJECT'] = 'OBJECT';\n  TypeKind['INTERFACE'] = 'INTERFACE';\n  TypeKind['UNION'] = 'UNION';\n  TypeKind['ENUM'] = 'ENUM';\n  TypeKind['INPUT_OBJECT'] = 'INPUT_OBJECT';\n  TypeKind['LIST'] = 'LIST';\n  TypeKind['NON_NULL'] = 'NON_NULL';\n})(TypeKind || (TypeKind = {}));\n\nconst __TypeKind = new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLEnumType({\n  name: '__TypeKind',\n  description: 'An enum describing what kind of type a given `__Type` is.',\n  values: {\n    SCALAR: {\n      value: TypeKind.SCALAR,\n      description: 'Indicates this type is a scalar.',\n    },\n    OBJECT: {\n      value: TypeKind.OBJECT,\n      description:\n        'Indicates this type is an object. `fields` and `interfaces` are valid fields.',\n    },\n    INTERFACE: {\n      value: TypeKind.INTERFACE,\n      description:\n        'Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.',\n    },\n    UNION: {\n      value: TypeKind.UNION,\n      description:\n        'Indicates this type is a union. `possibleTypes` is a valid field.',\n    },\n    ENUM: {\n      value: TypeKind.ENUM,\n      description:\n        'Indicates this type is an enum. `enumValues` is a valid field.',\n    },\n    INPUT_OBJECT: {\n      value: TypeKind.INPUT_OBJECT,\n      description:\n        'Indicates this type is an input object. `inputFields` is a valid field.',\n    },\n    LIST: {\n      value: TypeKind.LIST,\n      description: 'Indicates this type is a list. `ofType` is a valid field.',\n    },\n    NON_NULL: {\n      value: TypeKind.NON_NULL,\n      description:\n        'Indicates this type is a non-null. `ofType` is a valid field.',\n    },\n  },\n});\n/**\n * Note that these are GraphQLField and not GraphQLFieldConfig,\n * so the format for args is different.\n */\n\nconst SchemaMetaFieldDef = {\n  name: '__schema',\n  type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(__Schema),\n  description: 'Access the current type schema of this server.',\n  args: [],\n  resolve: (_source, _args, _context, { schema }) => schema,\n  deprecationReason: undefined,\n  extensions: Object.create(null),\n  astNode: undefined,\n};\nconst TypeMetaFieldDef = {\n  name: '__type',\n  type: __Type,\n  description: 'Request the type information of a single type.',\n  args: [\n    {\n      name: 'name',\n      description: undefined,\n      type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(_scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString),\n      defaultValue: undefined,\n      deprecationReason: undefined,\n      extensions: Object.create(null),\n      astNode: undefined,\n    },\n  ],\n  resolve: (_source, { name }, _context, { schema }) => schema.getType(name),\n  deprecationReason: undefined,\n  extensions: Object.create(null),\n  astNode: undefined,\n};\nconst TypeNameMetaFieldDef = {\n  name: '__typename',\n  type: new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLNonNull(_scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLString),\n  description: 'The name of the current Object type at runtime.',\n  args: [],\n  resolve: (_source, _args, _context, { parentType }) => parentType.name,\n  deprecationReason: undefined,\n  extensions: Object.create(null),\n  astNode: undefined,\n};\nconst introspectionTypes = Object.freeze([\n  __Schema,\n  __Directive,\n  __DirectiveLocation,\n  __Type,\n  __Field,\n  __InputValue,\n  __EnumValue,\n  __TypeKind,\n]);\nfunction isIntrospectionType(type) {\n  return introspectionTypes.some(({ name }) => type.name === name);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC90eXBlL2ludHJvc3BlY3Rpb24ubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFpRDtBQUNJO0FBQ2lCO0FBQ3RCO0FBQ2E7QUFlbkM7QUFDb0M7QUFDdkQscUJBQXFCLDhEQUFpQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1REFBYTtBQUN6QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsZ0JBQWdCLDJEQUFjLEtBQUssd0RBQVcsS0FBSywyREFBYzs7QUFFakU7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBLGdCQUFnQiwyREFBYztBQUM5QjtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLGdCQUFnQiwyREFBYztBQUM5QixZQUFZLHdEQUFXLEtBQUssMkRBQWM7QUFDMUM7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQztBQUNNLHdCQUF3Qiw4REFBaUI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyREFBYyxDQUFDLHVEQUFhO0FBQzVDO0FBQ0EsS0FBSztBQUNMO0FBQ0EsWUFBWSx1REFBYTtBQUN6QjtBQUNBLEtBQUs7QUFDTDtBQUNBLGdCQUFnQiwyREFBYyxDQUFDLHdEQUFjO0FBQzdDO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZ0JBQWdCLDJEQUFjO0FBQzlCLFlBQVksd0RBQVcsS0FBSywyREFBYztBQUMxQztBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZ0JBQWdCLDJEQUFjO0FBQzlCLFlBQVksd0RBQVcsS0FBSywyREFBYztBQUMxQztBQUNBO0FBQ0E7QUFDQSxnQkFBZ0Isd0RBQWM7QUFDOUI7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUCx1QkFBdUIsbUJBQW1CO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRztBQUNILENBQUM7QUFDTSxnQ0FBZ0MsNERBQWU7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsb0ZBQXVCO0FBQ3BDO0FBQ0EsS0FBSztBQUNMO0FBQ0EsYUFBYSx1RkFBMEI7QUFDdkM7QUFDQSxLQUFLO0FBQ0w7QUFDQSxhQUFhLDJGQUE4QjtBQUMzQztBQUNBLEtBQUs7QUFDTDtBQUNBLGFBQWEsb0ZBQXVCO0FBQ3BDO0FBQ0EsS0FBSztBQUNMO0FBQ0EsYUFBYSxrR0FBcUM7QUFDbEQ7QUFDQSxLQUFLO0FBQ0w7QUFDQSxhQUFhLDhGQUFpQztBQUM5QztBQUNBLEtBQUs7QUFDTDtBQUNBLGFBQWEsOEZBQWlDO0FBQzlDO0FBQ0EsS0FBSztBQUNMO0FBQ0EsYUFBYSxrR0FBcUM7QUFDbEQ7QUFDQSxLQUFLO0FBQ0w7QUFDQSxhQUFhLHFGQUF3QjtBQUNyQztBQUNBLEtBQUs7QUFDTDtBQUNBLGFBQWEscUZBQXdCO0FBQ3JDO0FBQ0EsS0FBSztBQUNMO0FBQ0EsYUFBYSxxRkFBd0I7QUFDckM7QUFDQSxLQUFLO0FBQ0w7QUFDQSxhQUFhLCtGQUFrQztBQUMvQztBQUNBLEtBQUs7QUFDTDtBQUNBLGFBQWEsa0dBQXFDO0FBQ2xEO0FBQ0EsS0FBSztBQUNMO0FBQ0EsYUFBYSx3RkFBMkI7QUFDeEM7QUFDQSxLQUFLO0FBQ0w7QUFDQSxhQUFhLG9GQUF1QjtBQUNwQztBQUNBLEtBQUs7QUFDTDtBQUNBLGFBQWEsbUZBQXNCO0FBQ25DO0FBQ0EsS0FBSztBQUNMO0FBQ0EsYUFBYSx5RkFBNEI7QUFDekM7QUFDQSxLQUFLO0FBQ0w7QUFDQSxhQUFhLDJGQUE4QjtBQUMzQztBQUNBLEtBQUs7QUFDTDtBQUNBLGFBQWEscUdBQXdDO0FBQ3JEO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCxDQUFDO0FBQ00sbUJBQW1CLDhEQUFpQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDJEQUFjOztBQUU5QjtBQUNBLFlBQVksNkRBQVk7QUFDeEI7QUFDQTs7QUFFQSxZQUFZLDZEQUFZO0FBQ3hCO0FBQ0E7O0FBRUEsWUFBWSxnRUFBZTtBQUMzQjtBQUNBOztBQUVBLFlBQVksNERBQVc7QUFDdkI7QUFDQTs7QUFFQSxZQUFZLDJEQUFVO0FBQ3RCO0FBQ0E7O0FBRUEsWUFBWSxrRUFBaUI7QUFDN0I7QUFDQTs7QUFFQSxZQUFZLDJEQUFVO0FBQ3RCO0FBQ0E7O0FBRUEsWUFBWSw4REFBYTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLE1BQUssSUFBSSxpRUFBUyw2QkFBNkIsNkRBQU8sT0FBTztBQUNyRSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsWUFBWSx1REFBYTtBQUN6QjtBQUNBLEtBQUs7QUFDTDtBQUNBLFlBQVksdURBQWE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLFlBQVksdURBQWE7QUFDekI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLGdCQUFnQix3REFBVyxLQUFLLDJEQUFjO0FBQzlDO0FBQ0E7QUFDQSxnQkFBZ0Isd0RBQWM7QUFDOUI7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUCxzQkFBc0IsbUJBQW1CO0FBQ3pDLFlBQVksNkRBQVksVUFBVSxnRUFBZTtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLGdCQUFnQix3REFBVyxLQUFLLDJEQUFjOztBQUU5QztBQUNBLFlBQVksNkRBQVksVUFBVSxnRUFBZTtBQUNqRDtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLGdCQUFnQix3REFBVyxLQUFLLDJEQUFjOztBQUU5Qyx1Q0FBdUMsUUFBUTtBQUMvQyxZQUFZLCtEQUFjO0FBQzFCO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsZ0JBQWdCLHdEQUFXLEtBQUssMkRBQWM7QUFDOUM7QUFDQTtBQUNBLGdCQUFnQix3REFBYztBQUM5QjtBQUNBLFNBQVM7QUFDVCxPQUFPOztBQUVQLHNCQUFzQixtQkFBbUI7QUFDekMsWUFBWSwyREFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLGdCQUFnQix3REFBVyxLQUFLLDJEQUFjO0FBQzlDO0FBQ0E7QUFDQSxnQkFBZ0Isd0RBQWM7QUFDOUI7QUFDQSxTQUFTO0FBQ1QsT0FBTzs7QUFFUCxzQkFBc0IsbUJBQW1CO0FBQ3pDLFlBQVksa0VBQWlCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0gsQ0FBQztBQUNNLG9CQUFvQiw4REFBaUI7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyREFBYyxDQUFDLHVEQUFhO0FBQzVDO0FBQ0EsS0FBSztBQUNMO0FBQ0EsWUFBWSx1REFBYTtBQUN6QjtBQUNBLEtBQUs7QUFDTDtBQUNBLGdCQUFnQiwyREFBYztBQUM5QixZQUFZLHdEQUFXLEtBQUssMkRBQWM7QUFDMUM7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLHdEQUFjO0FBQzlCO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVAsdUJBQXVCLG1CQUFtQjtBQUMxQztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsZ0JBQWdCLDJEQUFjO0FBQzlCO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZ0JBQWdCLDJEQUFjLENBQUMsd0RBQWM7QUFDN0M7QUFDQSxLQUFLO0FBQ0w7QUFDQSxZQUFZLHVEQUFhO0FBQ3pCO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSCxDQUFDO0FBQ00seUJBQXlCLDhEQUFpQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDJEQUFjLENBQUMsdURBQWE7QUFDNUM7QUFDQSxLQUFLO0FBQ0w7QUFDQSxZQUFZLHVEQUFhO0FBQ3pCO0FBQ0EsS0FBSztBQUNMO0FBQ0EsZ0JBQWdCLDJEQUFjO0FBQzlCO0FBQ0EsS0FBSztBQUNMO0FBQ0EsWUFBWSx1REFBYTtBQUN6QjtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCLHFCQUFxQjtBQUNyQyx5QkFBeUIseUVBQVk7QUFDckMsMEJBQTBCLDREQUFLO0FBQy9CLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxnQkFBZ0IsMkRBQWMsQ0FBQyx3REFBYztBQUM3QztBQUNBLEtBQUs7QUFDTDtBQUNBLFlBQVksdURBQWE7QUFDekI7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNILENBQUM7QUFDTSx3QkFBd0IsOERBQWlCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsMkRBQWMsQ0FBQyx1REFBYTtBQUM1QztBQUNBLEtBQUs7QUFDTDtBQUNBLFlBQVksdURBQWE7QUFDekI7QUFDQSxLQUFLO0FBQ0w7QUFDQSxnQkFBZ0IsMkRBQWMsQ0FBQyx3REFBYztBQUM3QztBQUNBLEtBQUs7QUFDTDtBQUNBLFlBQVksdURBQWE7QUFDekI7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNILENBQUM7QUFDTTs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLDRCQUE0Qjs7QUFFdEIsdUJBQXVCLDREQUFlO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNILENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0EsWUFBWSwyREFBYztBQUMxQjtBQUNBO0FBQ0Esd0NBQXdDLFFBQVE7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLDJEQUFjLENBQUMsdURBQWE7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSx1QkFBdUIsTUFBTSxjQUFjLFFBQVE7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0EsWUFBWSwyREFBYyxDQUFDLHVEQUFhO0FBQ3hDO0FBQ0E7QUFDQSx3Q0FBd0MsWUFBWTtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxvQ0FBb0MsTUFBTTtBQUMxQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC90eXBlL2ludHJvc3BlY3Rpb24ubWpzP2Q1MzgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSAnLi4vanN1dGlscy9pbnZhcmlhbnQubWpzJztcbmltcG9ydCB7IERpcmVjdGl2ZUxvY2F0aW9uIH0gZnJvbSAnLi4vbGFuZ3VhZ2UvZGlyZWN0aXZlTG9jYXRpb24ubWpzJztcbmltcG9ydCB7IHByaW50IH0gZnJvbSAnLi4vbGFuZ3VhZ2UvcHJpbnRlci5tanMnO1xuaW1wb3J0IHsgYXN0RnJvbVZhbHVlIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2FzdEZyb21WYWx1ZS5tanMnO1xuaW1wb3J0IHtcbiAgR3JhcGhRTEVudW1UeXBlLFxuICBHcmFwaFFMTGlzdCxcbiAgR3JhcGhRTE5vbk51bGwsXG4gIEdyYXBoUUxPYmplY3RUeXBlLFxuICBpc0Fic3RyYWN0VHlwZSxcbiAgaXNFbnVtVHlwZSxcbiAgaXNJbnB1dE9iamVjdFR5cGUsXG4gIGlzSW50ZXJmYWNlVHlwZSxcbiAgaXNMaXN0VHlwZSxcbiAgaXNOb25OdWxsVHlwZSxcbiAgaXNPYmplY3RUeXBlLFxuICBpc1NjYWxhclR5cGUsXG4gIGlzVW5pb25UeXBlLFxufSBmcm9tICcuL2RlZmluaXRpb24ubWpzJztcbmltcG9ydCB7IEdyYXBoUUxCb29sZWFuLCBHcmFwaFFMU3RyaW5nIH0gZnJvbSAnLi9zY2FsYXJzLm1qcyc7XG5leHBvcnQgY29uc3QgX19TY2hlbWEgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICBuYW1lOiAnX19TY2hlbWEnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnQSBHcmFwaFFMIFNjaGVtYSBkZWZpbmVzIHRoZSBjYXBhYmlsaXRpZXMgb2YgYSBHcmFwaFFMIHNlcnZlci4gSXQgZXhwb3NlcyBhbGwgYXZhaWxhYmxlIHR5cGVzIGFuZCBkaXJlY3RpdmVzIG9uIHRoZSBzZXJ2ZXIsIGFzIHdlbGwgYXMgdGhlIGVudHJ5IHBvaW50cyBmb3IgcXVlcnksIG11dGF0aW9uLCBhbmQgc3Vic2NyaXB0aW9uIG9wZXJhdGlvbnMuJyxcbiAgZmllbGRzOiAoKSA9PiAoe1xuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgcmVzb2x2ZTogKHNjaGVtYSkgPT4gc2NoZW1hLmRlc2NyaXB0aW9uLFxuICAgIH0sXG4gICAgdHlwZXM6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBsaXN0IG9mIGFsbCB0eXBlcyBzdXBwb3J0ZWQgYnkgdGhpcyBzZXJ2ZXIuJyxcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChuZXcgR3JhcGhRTExpc3QobmV3IEdyYXBoUUxOb25OdWxsKF9fVHlwZSkpKSxcblxuICAgICAgcmVzb2x2ZShzY2hlbWEpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoc2NoZW1hLmdldFR5cGVNYXAoKSk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgcXVlcnlUeXBlOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RoZSB0eXBlIHRoYXQgcXVlcnkgb3BlcmF0aW9ucyB3aWxsIGJlIHJvb3RlZCBhdC4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKF9fVHlwZSksXG4gICAgICByZXNvbHZlOiAoc2NoZW1hKSA9PiBzY2hlbWEuZ2V0UXVlcnlUeXBlKCksXG4gICAgfSxcbiAgICBtdXRhdGlvblR5cGU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnSWYgdGhpcyBzZXJ2ZXIgc3VwcG9ydHMgbXV0YXRpb24sIHRoZSB0eXBlIHRoYXQgbXV0YXRpb24gb3BlcmF0aW9ucyB3aWxsIGJlIHJvb3RlZCBhdC4nLFxuICAgICAgdHlwZTogX19UeXBlLFxuICAgICAgcmVzb2x2ZTogKHNjaGVtYSkgPT4gc2NoZW1hLmdldE11dGF0aW9uVHlwZSgpLFxuICAgIH0sXG4gICAgc3Vic2NyaXB0aW9uVHlwZToge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdJZiB0aGlzIHNlcnZlciBzdXBwb3J0IHN1YnNjcmlwdGlvbiwgdGhlIHR5cGUgdGhhdCBzdWJzY3JpcHRpb24gb3BlcmF0aW9ucyB3aWxsIGJlIHJvb3RlZCBhdC4nLFxuICAgICAgdHlwZTogX19UeXBlLFxuICAgICAgcmVzb2x2ZTogKHNjaGVtYSkgPT4gc2NoZW1hLmdldFN1YnNjcmlwdGlvblR5cGUoKSxcbiAgICB9LFxuICAgIGRpcmVjdGl2ZXM6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQSBsaXN0IG9mIGFsbCBkaXJlY3RpdmVzIHN1cHBvcnRlZCBieSB0aGlzIHNlcnZlci4nLFxuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKFxuICAgICAgICBuZXcgR3JhcGhRTExpc3QobmV3IEdyYXBoUUxOb25OdWxsKF9fRGlyZWN0aXZlKSksXG4gICAgICApLFxuICAgICAgcmVzb2x2ZTogKHNjaGVtYSkgPT4gc2NoZW1hLmdldERpcmVjdGl2ZXMoKSxcbiAgICB9LFxuICB9KSxcbn0pO1xuZXhwb3J0IGNvbnN0IF9fRGlyZWN0aXZlID0gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgbmFtZTogJ19fRGlyZWN0aXZlJyxcbiAgZGVzY3JpcHRpb246XG4gICAgXCJBIERpcmVjdGl2ZSBwcm92aWRlcyBhIHdheSB0byBkZXNjcmliZSBhbHRlcm5hdGUgcnVudGltZSBleGVjdXRpb24gYW5kIHR5cGUgdmFsaWRhdGlvbiBiZWhhdmlvciBpbiBhIEdyYXBoUUwgZG9jdW1lbnQuXFxuXFxuSW4gc29tZSBjYXNlcywgeW91IG5lZWQgdG8gcHJvdmlkZSBvcHRpb25zIHRvIGFsdGVyIEdyYXBoUUwncyBleGVjdXRpb24gYmVoYXZpb3IgaW4gd2F5cyBmaWVsZCBhcmd1bWVudHMgd2lsbCBub3Qgc3VmZmljZSwgc3VjaCBhcyBjb25kaXRpb25hbGx5IGluY2x1ZGluZyBvciBza2lwcGluZyBhIGZpZWxkLiBEaXJlY3RpdmVzIHByb3ZpZGUgdGhpcyBieSBkZXNjcmliaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gdGhlIGV4ZWN1dG9yLlwiLFxuICBmaWVsZHM6ICgpID0+ICh7XG4gICAgbmFtZToge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpLFxuICAgICAgcmVzb2x2ZTogKGRpcmVjdGl2ZSkgPT4gZGlyZWN0aXZlLm5hbWUsXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgdHlwZTogR3JhcGhRTFN0cmluZyxcbiAgICAgIHJlc29sdmU6IChkaXJlY3RpdmUpID0+IGRpcmVjdGl2ZS5kZXNjcmlwdGlvbixcbiAgICB9LFxuICAgIGlzUmVwZWF0YWJsZToge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICAgIHJlc29sdmU6IChkaXJlY3RpdmUpID0+IGRpcmVjdGl2ZS5pc1JlcGVhdGFibGUsXG4gICAgfSxcbiAgICBsb2NhdGlvbnM6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChcbiAgICAgICAgbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChfX0RpcmVjdGl2ZUxvY2F0aW9uKSksXG4gICAgICApLFxuICAgICAgcmVzb2x2ZTogKGRpcmVjdGl2ZSkgPT4gZGlyZWN0aXZlLmxvY2F0aW9ucyxcbiAgICB9LFxuICAgIGFyZ3M6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChcbiAgICAgICAgbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChfX0lucHV0VmFsdWUpKSxcbiAgICAgICksXG4gICAgICBhcmdzOiB7XG4gICAgICAgIGluY2x1ZGVEZXByZWNhdGVkOiB7XG4gICAgICAgICAgdHlwZTogR3JhcGhRTEJvb2xlYW4sXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG5cbiAgICAgIHJlc29sdmUoZmllbGQsIHsgaW5jbHVkZURlcHJlY2F0ZWQgfSkge1xuICAgICAgICByZXR1cm4gaW5jbHVkZURlcHJlY2F0ZWRcbiAgICAgICAgICA/IGZpZWxkLmFyZ3NcbiAgICAgICAgICA6IGZpZWxkLmFyZ3MuZmlsdGVyKChhcmcpID0+IGFyZy5kZXByZWNhdGlvblJlYXNvbiA9PSBudWxsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgfSksXG59KTtcbmV4cG9ydCBjb25zdCBfX0RpcmVjdGl2ZUxvY2F0aW9uID0gbmV3IEdyYXBoUUxFbnVtVHlwZSh7XG4gIG5hbWU6ICdfX0RpcmVjdGl2ZUxvY2F0aW9uJyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ0EgRGlyZWN0aXZlIGNhbiBiZSBhZGphY2VudCB0byBtYW55IHBhcnRzIG9mIHRoZSBHcmFwaFFMIGxhbmd1YWdlLCBhIF9fRGlyZWN0aXZlTG9jYXRpb24gZGVzY3JpYmVzIG9uZSBzdWNoIHBvc3NpYmxlIGFkamFjZW5jaWVzLicsXG4gIHZhbHVlczoge1xuICAgIFFVRVJZOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uUVVFUlksXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2F0aW9uIGFkamFjZW50IHRvIGEgcXVlcnkgb3BlcmF0aW9uLicsXG4gICAgfSxcbiAgICBNVVRBVElPTjoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLk1VVEFUSU9OLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhIG11dGF0aW9uIG9wZXJhdGlvbi4nLFxuICAgIH0sXG4gICAgU1VCU0NSSVBUSU9OOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uU1VCU0NSSVBUSU9OLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhIHN1YnNjcmlwdGlvbiBvcGVyYXRpb24uJyxcbiAgICB9LFxuICAgIEZJRUxEOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uRklFTEQsXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2F0aW9uIGFkamFjZW50IHRvIGEgZmllbGQuJyxcbiAgICB9LFxuICAgIEZSQUdNRU5UX0RFRklOSVRJT046IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5GUkFHTUVOVF9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhIGZyYWdtZW50IGRlZmluaXRpb24uJyxcbiAgICB9LFxuICAgIEZSQUdNRU5UX1NQUkVBRDoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLkZSQUdNRU5UX1NQUkVBRCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYSBmcmFnbWVudCBzcHJlYWQuJyxcbiAgICB9LFxuICAgIElOTElORV9GUkFHTUVOVDoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLklOTElORV9GUkFHTUVOVCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYW4gaW5saW5lIGZyYWdtZW50LicsXG4gICAgfSxcbiAgICBWQVJJQUJMRV9ERUZJTklUSU9OOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uVkFSSUFCTEVfREVGSU5JVElPTixcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYSB2YXJpYWJsZSBkZWZpbml0aW9uLicsXG4gICAgfSxcbiAgICBTQ0hFTUE6IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5TQ0hFTUEsXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2F0aW9uIGFkamFjZW50IHRvIGEgc2NoZW1hIGRlZmluaXRpb24uJyxcbiAgICB9LFxuICAgIFNDQUxBUjoge1xuICAgICAgdmFsdWU6IERpcmVjdGl2ZUxvY2F0aW9uLlNDQUxBUixcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYSBzY2FsYXIgZGVmaW5pdGlvbi4nLFxuICAgIH0sXG4gICAgT0JKRUNUOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uT0JKRUNULFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhbiBvYmplY3QgdHlwZSBkZWZpbml0aW9uLicsXG4gICAgfSxcbiAgICBGSUVMRF9ERUZJTklUSU9OOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uRklFTERfREVGSU5JVElPTixcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYSBmaWVsZCBkZWZpbml0aW9uLicsXG4gICAgfSxcbiAgICBBUkdVTUVOVF9ERUZJTklUSU9OOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uQVJHVU1FTlRfREVGSU5JVElPTixcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYW4gYXJndW1lbnQgZGVmaW5pdGlvbi4nLFxuICAgIH0sXG4gICAgSU5URVJGQUNFOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uSU5URVJGQUNFLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhbiBpbnRlcmZhY2UgZGVmaW5pdGlvbi4nLFxuICAgIH0sXG4gICAgVU5JT046IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5VTklPTixcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYSB1bmlvbiBkZWZpbml0aW9uLicsXG4gICAgfSxcbiAgICBFTlVNOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uRU5VTSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYW4gZW51bSBkZWZpbml0aW9uLicsXG4gICAgfSxcbiAgICBFTlVNX1ZBTFVFOiB7XG4gICAgICB2YWx1ZTogRGlyZWN0aXZlTG9jYXRpb24uRU5VTV9WQUxVRSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnTG9jYXRpb24gYWRqYWNlbnQgdG8gYW4gZW51bSB2YWx1ZSBkZWZpbml0aW9uLicsXG4gICAgfSxcbiAgICBJTlBVVF9PQkpFQ1Q6IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5JTlBVVF9PQkpFQ1QsXG4gICAgICBkZXNjcmlwdGlvbjogJ0xvY2F0aW9uIGFkamFjZW50IHRvIGFuIGlucHV0IG9iamVjdCB0eXBlIGRlZmluaXRpb24uJyxcbiAgICB9LFxuICAgIElOUFVUX0ZJRUxEX0RFRklOSVRJT046IHtcbiAgICAgIHZhbHVlOiBEaXJlY3RpdmVMb2NhdGlvbi5JTlBVVF9GSUVMRF9ERUZJTklUSU9OLFxuICAgICAgZGVzY3JpcHRpb246ICdMb2NhdGlvbiBhZGphY2VudCB0byBhbiBpbnB1dCBvYmplY3QgZmllbGQgZGVmaW5pdGlvbi4nLFxuICAgIH0sXG4gIH0sXG59KTtcbmV4cG9ydCBjb25zdCBfX1R5cGUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICBuYW1lOiAnX19UeXBlJyxcbiAgZGVzY3JpcHRpb246XG4gICAgJ1RoZSBmdW5kYW1lbnRhbCB1bml0IG9mIGFueSBHcmFwaFFMIFNjaGVtYSBpcyB0aGUgdHlwZS4gVGhlcmUgYXJlIG1hbnkga2luZHMgb2YgdHlwZXMgaW4gR3JhcGhRTCBhcyByZXByZXNlbnRlZCBieSB0aGUgYF9fVHlwZUtpbmRgIGVudW0uXFxuXFxuRGVwZW5kaW5nIG9uIHRoZSBraW5kIG9mIGEgdHlwZSwgY2VydGFpbiBmaWVsZHMgZGVzY3JpYmUgaW5mb3JtYXRpb24gYWJvdXQgdGhhdCB0eXBlLiBTY2FsYXIgdHlwZXMgcHJvdmlkZSBubyBpbmZvcm1hdGlvbiBiZXlvbmQgYSBuYW1lLCBkZXNjcmlwdGlvbiBhbmQgb3B0aW9uYWwgYHNwZWNpZmllZEJ5VVJMYCwgd2hpbGUgRW51bSB0eXBlcyBwcm92aWRlIHRoZWlyIHZhbHVlcy4gT2JqZWN0IGFuZCBJbnRlcmZhY2UgdHlwZXMgcHJvdmlkZSB0aGUgZmllbGRzIHRoZXkgZGVzY3JpYmUuIEFic3RyYWN0IHR5cGVzLCBVbmlvbiBhbmQgSW50ZXJmYWNlLCBwcm92aWRlIHRoZSBPYmplY3QgdHlwZXMgcG9zc2libGUgYXQgcnVudGltZS4gTGlzdCBhbmQgTm9uTnVsbCB0eXBlcyBjb21wb3NlIG90aGVyIHR5cGVzLicsXG4gIGZpZWxkczogKCkgPT4gKHtcbiAgICBraW5kOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoX19UeXBlS2luZCksXG5cbiAgICAgIHJlc29sdmUodHlwZSkge1xuICAgICAgICBpZiAoaXNTY2FsYXJUeXBlKHR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIFR5cGVLaW5kLlNDQUxBUjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc09iamVjdFR5cGUodHlwZSkpIHtcbiAgICAgICAgICByZXR1cm4gVHlwZUtpbmQuT0JKRUNUO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzSW50ZXJmYWNlVHlwZSh0eXBlKSkge1xuICAgICAgICAgIHJldHVybiBUeXBlS2luZC5JTlRFUkZBQ0U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNVbmlvblR5cGUodHlwZSkpIHtcbiAgICAgICAgICByZXR1cm4gVHlwZUtpbmQuVU5JT047XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNFbnVtVHlwZSh0eXBlKSkge1xuICAgICAgICAgIHJldHVybiBUeXBlS2luZC5FTlVNO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIFR5cGVLaW5kLklOUFVUX09CSkVDVDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0xpc3RUeXBlKHR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuIFR5cGVLaW5kLkxJU1Q7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNOb25OdWxsVHlwZSh0eXBlKSkge1xuICAgICAgICAgIHJldHVybiBUeXBlS2luZC5OT05fTlVMTDtcbiAgICAgICAgfVxuICAgICAgICAvKiBjOCBpZ25vcmUgbmV4dCAzICovXG4gICAgICAgIC8vIE5vdCByZWFjaGFibGUsIGFsbCBwb3NzaWJsZSB0eXBlcyBoYXZlIGJlZW4gY29uc2lkZXJlZClcblxuICAgICAgICBmYWxzZSB8fCBpbnZhcmlhbnQoZmFsc2UsIGBVbmV4cGVjdGVkIHR5cGU6IFwiJHtpbnNwZWN0KHR5cGUpfVwiLmApO1xuICAgICAgfSxcbiAgICB9LFxuICAgIG5hbWU6IHtcbiAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICByZXNvbHZlOiAodHlwZSkgPT4gKCduYW1lJyBpbiB0eXBlID8gdHlwZS5uYW1lIDogdW5kZWZpbmVkKSxcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgcmVzb2x2ZTogKFxuICAgICAgICB0eXBlLCAvLyBGSVhNRTogYWRkIHRlc3QgY2FzZVxuICAgICAgKSA9PlxuICAgICAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAnZGVzY3JpcHRpb24nIGluIHR5cGUgPyB0eXBlLmRlc2NyaXB0aW9uIDogdW5kZWZpbmVkLFxuICAgIH0sXG4gICAgc3BlY2lmaWVkQnlVUkw6IHtcbiAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICByZXNvbHZlOiAob2JqKSA9PlxuICAgICAgICAnc3BlY2lmaWVkQnlVUkwnIGluIG9iaiA/IG9iai5zcGVjaWZpZWRCeVVSTCA6IHVuZGVmaW5lZCxcbiAgICB9LFxuICAgIGZpZWxkczoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChfX0ZpZWxkKSksXG4gICAgICBhcmdzOiB7XG4gICAgICAgIGluY2x1ZGVEZXByZWNhdGVkOiB7XG4gICAgICAgICAgdHlwZTogR3JhcGhRTEJvb2xlYW4sXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG5cbiAgICAgIHJlc29sdmUodHlwZSwgeyBpbmNsdWRlRGVwcmVjYXRlZCB9KSB7XG4gICAgICAgIGlmIChpc09iamVjdFR5cGUodHlwZSkgfHwgaXNJbnRlcmZhY2VUeXBlKHR5cGUpKSB7XG4gICAgICAgICAgY29uc3QgZmllbGRzID0gT2JqZWN0LnZhbHVlcyh0eXBlLmdldEZpZWxkcygpKTtcbiAgICAgICAgICByZXR1cm4gaW5jbHVkZURlcHJlY2F0ZWRcbiAgICAgICAgICAgID8gZmllbGRzXG4gICAgICAgICAgICA6IGZpZWxkcy5maWx0ZXIoKGZpZWxkKSA9PiBmaWVsZC5kZXByZWNhdGlvblJlYXNvbiA9PSBudWxsKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICAgIGludGVyZmFjZXM6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19UeXBlKSksXG5cbiAgICAgIHJlc29sdmUodHlwZSkge1xuICAgICAgICBpZiAoaXNPYmplY3RUeXBlKHR5cGUpIHx8IGlzSW50ZXJmYWNlVHlwZSh0eXBlKSkge1xuICAgICAgICAgIHJldHVybiB0eXBlLmdldEludGVyZmFjZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICAgIHBvc3NpYmxlVHlwZXM6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19UeXBlKSksXG5cbiAgICAgIHJlc29sdmUodHlwZSwgX2FyZ3MsIF9jb250ZXh0LCB7IHNjaGVtYSB9KSB7XG4gICAgICAgIGlmIChpc0Fic3RyYWN0VHlwZSh0eXBlKSkge1xuICAgICAgICAgIHJldHVybiBzY2hlbWEuZ2V0UG9zc2libGVUeXBlcyh0eXBlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICAgIGVudW1WYWx1ZXM6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19FbnVtVmFsdWUpKSxcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgaW5jbHVkZURlcHJlY2F0ZWQ6IHtcbiAgICAgICAgICB0eXBlOiBHcmFwaFFMQm9vbGVhbixcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcblxuICAgICAgcmVzb2x2ZSh0eXBlLCB7IGluY2x1ZGVEZXByZWNhdGVkIH0pIHtcbiAgICAgICAgaWYgKGlzRW51bVR5cGUodHlwZSkpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZXMgPSB0eXBlLmdldFZhbHVlcygpO1xuICAgICAgICAgIHJldHVybiBpbmNsdWRlRGVwcmVjYXRlZFxuICAgICAgICAgICAgPyB2YWx1ZXNcbiAgICAgICAgICAgIDogdmFsdWVzLmZpbHRlcigoZmllbGQpID0+IGZpZWxkLmRlcHJlY2F0aW9uUmVhc29uID09IG51bGwpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAgaW5wdXRGaWVsZHM6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTGlzdChuZXcgR3JhcGhRTE5vbk51bGwoX19JbnB1dFZhbHVlKSksXG4gICAgICBhcmdzOiB7XG4gICAgICAgIGluY2x1ZGVEZXByZWNhdGVkOiB7XG4gICAgICAgICAgdHlwZTogR3JhcGhRTEJvb2xlYW4sXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG5cbiAgICAgIHJlc29sdmUodHlwZSwgeyBpbmNsdWRlRGVwcmVjYXRlZCB9KSB7XG4gICAgICAgIGlmIChpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IE9iamVjdC52YWx1ZXModHlwZS5nZXRGaWVsZHMoKSk7XG4gICAgICAgICAgcmV0dXJuIGluY2x1ZGVEZXByZWNhdGVkXG4gICAgICAgICAgICA/IHZhbHVlc1xuICAgICAgICAgICAgOiB2YWx1ZXMuZmlsdGVyKChmaWVsZCkgPT4gZmllbGQuZGVwcmVjYXRpb25SZWFzb24gPT0gbnVsbCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgICBvZlR5cGU6IHtcbiAgICAgIHR5cGU6IF9fVHlwZSxcbiAgICAgIHJlc29sdmU6ICh0eXBlKSA9PiAoJ29mVHlwZScgaW4gdHlwZSA/IHR5cGUub2ZUeXBlIDogdW5kZWZpbmVkKSxcbiAgICB9LFxuICB9KSxcbn0pO1xuZXhwb3J0IGNvbnN0IF9fRmllbGQgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICBuYW1lOiAnX19GaWVsZCcsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdPYmplY3QgYW5kIEludGVyZmFjZSB0eXBlcyBhcmUgZGVzY3JpYmVkIGJ5IGEgbGlzdCBvZiBGaWVsZHMsIGVhY2ggb2Ygd2hpY2ggaGFzIGEgbmFtZSwgcG90ZW50aWFsbHkgYSBsaXN0IG9mIGFyZ3VtZW50cywgYW5kIGEgcmV0dXJuIHR5cGUuJyxcbiAgZmllbGRzOiAoKSA9PiAoe1xuICAgIG5hbWU6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgICAgIHJlc29sdmU6IChmaWVsZCkgPT4gZmllbGQubmFtZSxcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgcmVzb2x2ZTogKGZpZWxkKSA9PiBmaWVsZC5kZXNjcmlwdGlvbixcbiAgICB9LFxuICAgIGFyZ3M6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChcbiAgICAgICAgbmV3IEdyYXBoUUxMaXN0KG5ldyBHcmFwaFFMTm9uTnVsbChfX0lucHV0VmFsdWUpKSxcbiAgICAgICksXG4gICAgICBhcmdzOiB7XG4gICAgICAgIGluY2x1ZGVEZXByZWNhdGVkOiB7XG4gICAgICAgICAgdHlwZTogR3JhcGhRTEJvb2xlYW4sXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG5cbiAgICAgIHJlc29sdmUoZmllbGQsIHsgaW5jbHVkZURlcHJlY2F0ZWQgfSkge1xuICAgICAgICByZXR1cm4gaW5jbHVkZURlcHJlY2F0ZWRcbiAgICAgICAgICA/IGZpZWxkLmFyZ3NcbiAgICAgICAgICA6IGZpZWxkLmFyZ3MuZmlsdGVyKChhcmcpID0+IGFyZy5kZXByZWNhdGlvblJlYXNvbiA9PSBudWxsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB0eXBlOiB7XG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoX19UeXBlKSxcbiAgICAgIHJlc29sdmU6IChmaWVsZCkgPT4gZmllbGQudHlwZSxcbiAgICB9LFxuICAgIGlzRGVwcmVjYXRlZDoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICAgIHJlc29sdmU6IChmaWVsZCkgPT4gZmllbGQuZGVwcmVjYXRpb25SZWFzb24gIT0gbnVsbCxcbiAgICB9LFxuICAgIGRlcHJlY2F0aW9uUmVhc29uOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgcmVzb2x2ZTogKGZpZWxkKSA9PiBmaWVsZC5kZXByZWNhdGlvblJlYXNvbixcbiAgICB9LFxuICB9KSxcbn0pO1xuZXhwb3J0IGNvbnN0IF9fSW5wdXRWYWx1ZSA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gIG5hbWU6ICdfX0lucHV0VmFsdWUnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnQXJndW1lbnRzIHByb3ZpZGVkIHRvIEZpZWxkcyBvciBEaXJlY3RpdmVzIGFuZCB0aGUgaW5wdXQgZmllbGRzIG9mIGFuIElucHV0T2JqZWN0IGFyZSByZXByZXNlbnRlZCBhcyBJbnB1dCBWYWx1ZXMgd2hpY2ggZGVzY3JpYmUgdGhlaXIgdHlwZSBhbmQgb3B0aW9uYWxseSBhIGRlZmF1bHQgdmFsdWUuJyxcbiAgZmllbGRzOiAoKSA9PiAoe1xuICAgIG5hbWU6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgICAgIHJlc29sdmU6IChpbnB1dFZhbHVlKSA9PiBpbnB1dFZhbHVlLm5hbWUsXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgdHlwZTogR3JhcGhRTFN0cmluZyxcbiAgICAgIHJlc29sdmU6IChpbnB1dFZhbHVlKSA9PiBpbnB1dFZhbHVlLmRlc2NyaXB0aW9uLFxuICAgIH0sXG4gICAgdHlwZToge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKF9fVHlwZSksXG4gICAgICByZXNvbHZlOiAoaW5wdXRWYWx1ZSkgPT4gaW5wdXRWYWx1ZS50eXBlLFxuICAgIH0sXG4gICAgZGVmYXVsdFZhbHVlOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdBIEdyYXBoUUwtZm9ybWF0dGVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgaW5wdXQgdmFsdWUuJyxcblxuICAgICAgcmVzb2x2ZShpbnB1dFZhbHVlKSB7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgZGVmYXVsdFZhbHVlIH0gPSBpbnB1dFZhbHVlO1xuICAgICAgICBjb25zdCB2YWx1ZUFTVCA9IGFzdEZyb21WYWx1ZShkZWZhdWx0VmFsdWUsIHR5cGUpO1xuICAgICAgICByZXR1cm4gdmFsdWVBU1QgPyBwcmludCh2YWx1ZUFTVCkgOiBudWxsO1xuICAgICAgfSxcbiAgICB9LFxuICAgIGlzRGVwcmVjYXRlZDoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICAgIHJlc29sdmU6IChmaWVsZCkgPT4gZmllbGQuZGVwcmVjYXRpb25SZWFzb24gIT0gbnVsbCxcbiAgICB9LFxuICAgIGRlcHJlY2F0aW9uUmVhc29uOiB7XG4gICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgcmVzb2x2ZTogKG9iaikgPT4gb2JqLmRlcHJlY2F0aW9uUmVhc29uLFxuICAgIH0sXG4gIH0pLFxufSk7XG5leHBvcnQgY29uc3QgX19FbnVtVmFsdWUgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICBuYW1lOiAnX19FbnVtVmFsdWUnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnT25lIHBvc3NpYmxlIHZhbHVlIGZvciBhIGdpdmVuIEVudW0uIEVudW0gdmFsdWVzIGFyZSB1bmlxdWUgdmFsdWVzLCBub3QgYSBwbGFjZWhvbGRlciBmb3IgYSBzdHJpbmcgb3IgbnVtZXJpYyB2YWx1ZS4gSG93ZXZlciBhbiBFbnVtIHZhbHVlIGlzIHJldHVybmVkIGluIGEgSlNPTiByZXNwb25zZSBhcyBhIHN0cmluZy4nLFxuICBmaWVsZHM6ICgpID0+ICh7XG4gICAgbmFtZToge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpLFxuICAgICAgcmVzb2x2ZTogKGVudW1WYWx1ZSkgPT4gZW51bVZhbHVlLm5hbWUsXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgdHlwZTogR3JhcGhRTFN0cmluZyxcbiAgICAgIHJlc29sdmU6IChlbnVtVmFsdWUpID0+IGVudW1WYWx1ZS5kZXNjcmlwdGlvbixcbiAgICB9LFxuICAgIGlzRGVwcmVjYXRlZDoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICAgIHJlc29sdmU6IChlbnVtVmFsdWUpID0+IGVudW1WYWx1ZS5kZXByZWNhdGlvblJlYXNvbiAhPSBudWxsLFxuICAgIH0sXG4gICAgZGVwcmVjYXRpb25SZWFzb246IHtcbiAgICAgIHR5cGU6IEdyYXBoUUxTdHJpbmcsXG4gICAgICByZXNvbHZlOiAoZW51bVZhbHVlKSA9PiBlbnVtVmFsdWUuZGVwcmVjYXRpb25SZWFzb24sXG4gICAgfSxcbiAgfSksXG59KTtcbmV4cG9ydCBsZXQgVHlwZUtpbmQ7XG5cbihmdW5jdGlvbiAoVHlwZUtpbmQpIHtcbiAgVHlwZUtpbmRbJ1NDQUxBUiddID0gJ1NDQUxBUic7XG4gIFR5cGVLaW5kWydPQkpFQ1QnXSA9ICdPQkpFQ1QnO1xuICBUeXBlS2luZFsnSU5URVJGQUNFJ10gPSAnSU5URVJGQUNFJztcbiAgVHlwZUtpbmRbJ1VOSU9OJ10gPSAnVU5JT04nO1xuICBUeXBlS2luZFsnRU5VTSddID0gJ0VOVU0nO1xuICBUeXBlS2luZFsnSU5QVVRfT0JKRUNUJ10gPSAnSU5QVVRfT0JKRUNUJztcbiAgVHlwZUtpbmRbJ0xJU1QnXSA9ICdMSVNUJztcbiAgVHlwZUtpbmRbJ05PTl9OVUxMJ10gPSAnTk9OX05VTEwnO1xufSkoVHlwZUtpbmQgfHwgKFR5cGVLaW5kID0ge30pKTtcblxuZXhwb3J0IGNvbnN0IF9fVHlwZUtpbmQgPSBuZXcgR3JhcGhRTEVudW1UeXBlKHtcbiAgbmFtZTogJ19fVHlwZUtpbmQnLFxuICBkZXNjcmlwdGlvbjogJ0FuIGVudW0gZGVzY3JpYmluZyB3aGF0IGtpbmQgb2YgdHlwZSBhIGdpdmVuIGBfX1R5cGVgIGlzLicsXG4gIHZhbHVlczoge1xuICAgIFNDQUxBUjoge1xuICAgICAgdmFsdWU6IFR5cGVLaW5kLlNDQUxBUixcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW5kaWNhdGVzIHRoaXMgdHlwZSBpcyBhIHNjYWxhci4nLFxuICAgIH0sXG4gICAgT0JKRUNUOiB7XG4gICAgICB2YWx1ZTogVHlwZUtpbmQuT0JKRUNULFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdJbmRpY2F0ZXMgdGhpcyB0eXBlIGlzIGFuIG9iamVjdC4gYGZpZWxkc2AgYW5kIGBpbnRlcmZhY2VzYCBhcmUgdmFsaWQgZmllbGRzLicsXG4gICAgfSxcbiAgICBJTlRFUkZBQ0U6IHtcbiAgICAgIHZhbHVlOiBUeXBlS2luZC5JTlRFUkZBQ0UsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0luZGljYXRlcyB0aGlzIHR5cGUgaXMgYW4gaW50ZXJmYWNlLiBgZmllbGRzYCwgYGludGVyZmFjZXNgLCBhbmQgYHBvc3NpYmxlVHlwZXNgIGFyZSB2YWxpZCBmaWVsZHMuJyxcbiAgICB9LFxuICAgIFVOSU9OOiB7XG4gICAgICB2YWx1ZTogVHlwZUtpbmQuVU5JT04sXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0luZGljYXRlcyB0aGlzIHR5cGUgaXMgYSB1bmlvbi4gYHBvc3NpYmxlVHlwZXNgIGlzIGEgdmFsaWQgZmllbGQuJyxcbiAgICB9LFxuICAgIEVOVU06IHtcbiAgICAgIHZhbHVlOiBUeXBlS2luZC5FTlVNLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdJbmRpY2F0ZXMgdGhpcyB0eXBlIGlzIGFuIGVudW0uIGBlbnVtVmFsdWVzYCBpcyBhIHZhbGlkIGZpZWxkLicsXG4gICAgfSxcbiAgICBJTlBVVF9PQkpFQ1Q6IHtcbiAgICAgIHZhbHVlOiBUeXBlS2luZC5JTlBVVF9PQkpFQ1QsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0luZGljYXRlcyB0aGlzIHR5cGUgaXMgYW4gaW5wdXQgb2JqZWN0LiBgaW5wdXRGaWVsZHNgIGlzIGEgdmFsaWQgZmllbGQuJyxcbiAgICB9LFxuICAgIExJU1Q6IHtcbiAgICAgIHZhbHVlOiBUeXBlS2luZC5MSVNULFxuICAgICAgZGVzY3JpcHRpb246ICdJbmRpY2F0ZXMgdGhpcyB0eXBlIGlzIGEgbGlzdC4gYG9mVHlwZWAgaXMgYSB2YWxpZCBmaWVsZC4nLFxuICAgIH0sXG4gICAgTk9OX05VTEw6IHtcbiAgICAgIHZhbHVlOiBUeXBlS2luZC5OT05fTlVMTCxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnSW5kaWNhdGVzIHRoaXMgdHlwZSBpcyBhIG5vbi1udWxsLiBgb2ZUeXBlYCBpcyBhIHZhbGlkIGZpZWxkLicsXG4gICAgfSxcbiAgfSxcbn0pO1xuLyoqXG4gKiBOb3RlIHRoYXQgdGhlc2UgYXJlIEdyYXBoUUxGaWVsZCBhbmQgbm90IEdyYXBoUUxGaWVsZENvbmZpZyxcbiAqIHNvIHRoZSBmb3JtYXQgZm9yIGFyZ3MgaXMgZGlmZmVyZW50LlxuICovXG5cbmV4cG9ydCBjb25zdCBTY2hlbWFNZXRhRmllbGREZWYgPSB7XG4gIG5hbWU6ICdfX3NjaGVtYScsXG4gIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChfX1NjaGVtYSksXG4gIGRlc2NyaXB0aW9uOiAnQWNjZXNzIHRoZSBjdXJyZW50IHR5cGUgc2NoZW1hIG9mIHRoaXMgc2VydmVyLicsXG4gIGFyZ3M6IFtdLFxuICByZXNvbHZlOiAoX3NvdXJjZSwgX2FyZ3MsIF9jb250ZXh0LCB7IHNjaGVtYSB9KSA9PiBzY2hlbWEsXG4gIGRlcHJlY2F0aW9uUmVhc29uOiB1bmRlZmluZWQsXG4gIGV4dGVuc2lvbnM6IE9iamVjdC5jcmVhdGUobnVsbCksXG4gIGFzdE5vZGU6IHVuZGVmaW5lZCxcbn07XG5leHBvcnQgY29uc3QgVHlwZU1ldGFGaWVsZERlZiA9IHtcbiAgbmFtZTogJ19fdHlwZScsXG4gIHR5cGU6IF9fVHlwZSxcbiAgZGVzY3JpcHRpb246ICdSZXF1ZXN0IHRoZSB0eXBlIGluZm9ybWF0aW9uIG9mIGEgc2luZ2xlIHR5cGUuJyxcbiAgYXJnczogW1xuICAgIHtcbiAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsXG4gICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiB1bmRlZmluZWQsXG4gICAgICBleHRlbnNpb25zOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuICAgICAgYXN0Tm9kZTogdW5kZWZpbmVkLFxuICAgIH0sXG4gIF0sXG4gIHJlc29sdmU6IChfc291cmNlLCB7IG5hbWUgfSwgX2NvbnRleHQsIHsgc2NoZW1hIH0pID0+IHNjaGVtYS5nZXRUeXBlKG5hbWUpLFxuICBkZXByZWNhdGlvblJlYXNvbjogdW5kZWZpbmVkLFxuICBleHRlbnNpb25zOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuICBhc3ROb2RlOiB1bmRlZmluZWQsXG59O1xuZXhwb3J0IGNvbnN0IFR5cGVOYW1lTWV0YUZpZWxkRGVmID0ge1xuICBuYW1lOiAnX190eXBlbmFtZScsXG4gIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgZGVzY3JpcHRpb246ICdUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBPYmplY3QgdHlwZSBhdCBydW50aW1lLicsXG4gIGFyZ3M6IFtdLFxuICByZXNvbHZlOiAoX3NvdXJjZSwgX2FyZ3MsIF9jb250ZXh0LCB7IHBhcmVudFR5cGUgfSkgPT4gcGFyZW50VHlwZS5uYW1lLFxuICBkZXByZWNhdGlvblJlYXNvbjogdW5kZWZpbmVkLFxuICBleHRlbnNpb25zOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuICBhc3ROb2RlOiB1bmRlZmluZWQsXG59O1xuZXhwb3J0IGNvbnN0IGludHJvc3BlY3Rpb25UeXBlcyA9IE9iamVjdC5mcmVlemUoW1xuICBfX1NjaGVtYSxcbiAgX19EaXJlY3RpdmUsXG4gIF9fRGlyZWN0aXZlTG9jYXRpb24sXG4gIF9fVHlwZSxcbiAgX19GaWVsZCxcbiAgX19JbnB1dFZhbHVlLFxuICBfX0VudW1WYWx1ZSxcbiAgX19UeXBlS2luZCxcbl0pO1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW50cm9zcGVjdGlvblR5cGUodHlwZSkge1xuICByZXR1cm4gaW50cm9zcGVjdGlvblR5cGVzLnNvbWUoKHsgbmFtZSB9KSA9PiB0eXBlLm5hbWUgPT09IG5hbWUpO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/type/introspection.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/type/scalars.mjs":
/*!***********************************************!*\
  !*** ./node_modules/graphql/type/scalars.mjs ***!
  \***********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"GRAPHQL_MAX_INT\": function() { return /* binding */ GRAPHQL_MAX_INT; },\n/* harmony export */   \"GRAPHQL_MIN_INT\": function() { return /* binding */ GRAPHQL_MIN_INT; },\n/* harmony export */   \"GraphQLBoolean\": function() { return /* binding */ GraphQLBoolean; },\n/* harmony export */   \"GraphQLFloat\": function() { return /* binding */ GraphQLFloat; },\n/* harmony export */   \"GraphQLID\": function() { return /* binding */ GraphQLID; },\n/* harmony export */   \"GraphQLInt\": function() { return /* binding */ GraphQLInt; },\n/* harmony export */   \"GraphQLString\": function() { return /* binding */ GraphQLString; },\n/* harmony export */   \"isSpecifiedScalarType\": function() { return /* binding */ isSpecifiedScalarType; },\n/* harmony export */   \"specifiedScalarTypes\": function() { return /* binding */ specifiedScalarTypes; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"./node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../language/printer.mjs */ \"./node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n/**\n * Maximum possible Int value as per GraphQL Spec (32-bit signed integer).\n * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe up-to 2^53 - 1\n * */\n\nconst GRAPHQL_MAX_INT = 2147483647;\n/**\n * Minimum possible Int value as per GraphQL Spec (32-bit signed integer).\n * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe starting at -(2^53 - 1)\n * */\n\nconst GRAPHQL_MIN_INT = -2147483648;\nconst GraphQLInt = new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLScalarType({\n  name: 'Int',\n  description:\n    'The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.',\n\n  serialize(outputValue) {\n    const coercedValue = serializeObject(outputValue);\n\n    if (typeof coercedValue === 'boolean') {\n      return coercedValue ? 1 : 0;\n    }\n\n    let num = coercedValue;\n\n    if (typeof coercedValue === 'string' && coercedValue !== '') {\n      num = Number(coercedValue);\n    }\n\n    if (typeof num !== 'number' || !Number.isInteger(num)) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n        `Int cannot represent non-integer value: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(coercedValue)}`,\n      );\n    }\n\n    if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n        'Int cannot represent non 32-bit signed integer value: ' +\n          (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(coercedValue),\n      );\n    }\n\n    return num;\n  },\n\n  parseValue(inputValue) {\n    if (typeof inputValue !== 'number' || !Number.isInteger(inputValue)) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n        `Int cannot represent non-integer value: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(inputValue)}`,\n      );\n    }\n\n    if (inputValue > GRAPHQL_MAX_INT || inputValue < GRAPHQL_MIN_INT) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n        `Int cannot represent non 32-bit signed integer value: ${inputValue}`,\n      );\n    }\n\n    return inputValue;\n  },\n\n  parseLiteral(valueNode) {\n    if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.INT) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n        `Int cannot represent non-integer value: ${(0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__.print)(valueNode)}`,\n        valueNode,\n      );\n    }\n\n    const num = parseInt(valueNode.value, 10);\n\n    if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n        `Int cannot represent non 32-bit signed integer value: ${valueNode.value}`,\n        valueNode,\n      );\n    }\n\n    return num;\n  },\n});\nconst GraphQLFloat = new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLScalarType({\n  name: 'Float',\n  description:\n    'The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).',\n\n  serialize(outputValue) {\n    const coercedValue = serializeObject(outputValue);\n\n    if (typeof coercedValue === 'boolean') {\n      return coercedValue ? 1 : 0;\n    }\n\n    let num = coercedValue;\n\n    if (typeof coercedValue === 'string' && coercedValue !== '') {\n      num = Number(coercedValue);\n    }\n\n    if (typeof num !== 'number' || !Number.isFinite(num)) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n        `Float cannot represent non numeric value: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(coercedValue)}`,\n      );\n    }\n\n    return num;\n  },\n\n  parseValue(inputValue) {\n    if (typeof inputValue !== 'number' || !Number.isFinite(inputValue)) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n        `Float cannot represent non numeric value: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(inputValue)}`,\n      );\n    }\n\n    return inputValue;\n  },\n\n  parseLiteral(valueNode) {\n    if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.FLOAT && valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.INT) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n        `Float cannot represent non numeric value: ${(0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__.print)(valueNode)}`,\n        valueNode,\n      );\n    }\n\n    return parseFloat(valueNode.value);\n  },\n});\nconst GraphQLString = new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLScalarType({\n  name: 'String',\n  description:\n    'The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.',\n\n  serialize(outputValue) {\n    const coercedValue = serializeObject(outputValue); // Serialize string, boolean and number values to a string, but do not\n    // attempt to coerce object, function, symbol, or other types as strings.\n\n    if (typeof coercedValue === 'string') {\n      return coercedValue;\n    }\n\n    if (typeof coercedValue === 'boolean') {\n      return coercedValue ? 'true' : 'false';\n    }\n\n    if (typeof coercedValue === 'number' && Number.isFinite(coercedValue)) {\n      return coercedValue.toString();\n    }\n\n    throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n      `String cannot represent value: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(outputValue)}`,\n    );\n  },\n\n  parseValue(inputValue) {\n    if (typeof inputValue !== 'string') {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n        `String cannot represent a non string value: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(inputValue)}`,\n      );\n    }\n\n    return inputValue;\n  },\n\n  parseLiteral(valueNode) {\n    if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.STRING) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n        `String cannot represent a non string value: ${(0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__.print)(valueNode)}`,\n        valueNode,\n      );\n    }\n\n    return valueNode.value;\n  },\n});\nconst GraphQLBoolean = new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLScalarType({\n  name: 'Boolean',\n  description: 'The `Boolean` scalar type represents `true` or `false`.',\n\n  serialize(outputValue) {\n    const coercedValue = serializeObject(outputValue);\n\n    if (typeof coercedValue === 'boolean') {\n      return coercedValue;\n    }\n\n    if (Number.isFinite(coercedValue)) {\n      return coercedValue !== 0;\n    }\n\n    throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n      `Boolean cannot represent a non boolean value: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(coercedValue)}`,\n    );\n  },\n\n  parseValue(inputValue) {\n    if (typeof inputValue !== 'boolean') {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n        `Boolean cannot represent a non boolean value: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(inputValue)}`,\n      );\n    }\n\n    return inputValue;\n  },\n\n  parseLiteral(valueNode) {\n    if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.BOOLEAN) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n        `Boolean cannot represent a non boolean value: ${(0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__.print)(valueNode)}`,\n        valueNode,\n      );\n    }\n\n    return valueNode.value;\n  },\n});\nconst GraphQLID = new _definition_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLScalarType({\n  name: 'ID',\n  description:\n    'The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.',\n\n  serialize(outputValue) {\n    const coercedValue = serializeObject(outputValue);\n\n    if (typeof coercedValue === 'string') {\n      return coercedValue;\n    }\n\n    if (Number.isInteger(coercedValue)) {\n      return String(coercedValue);\n    }\n\n    throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n      `ID cannot represent value: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(outputValue)}`,\n    );\n  },\n\n  parseValue(inputValue) {\n    if (typeof inputValue === 'string') {\n      return inputValue;\n    }\n\n    if (typeof inputValue === 'number' && Number.isInteger(inputValue)) {\n      return inputValue.toString();\n    }\n\n    throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(`ID cannot represent value: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(inputValue)}`);\n  },\n\n  parseLiteral(valueNode) {\n    if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.STRING && valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.INT) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n        'ID cannot represent a non-string and non-integer value: ' +\n          (0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__.print)(valueNode),\n        valueNode,\n      );\n    }\n\n    return valueNode.value;\n  },\n});\nconst specifiedScalarTypes = Object.freeze([\n  GraphQLString,\n  GraphQLInt,\n  GraphQLFloat,\n  GraphQLBoolean,\n  GraphQLID,\n]);\nfunction isSpecifiedScalarType(type) {\n  return specifiedScalarTypes.some(({ name }) => type.name === name);\n} // Support serializing objects with custom valueOf() or toJSON() functions -\n// a common way to represent a complex value which can be represented as\n// a string (ex: MongoDB id objects).\n\nfunction serializeObject(outputValue) {\n  if ((0,_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_5__.isObjectLike)(outputValue)) {\n    if (typeof outputValue.valueOf === 'function') {\n      const valueOfResult = outputValue.valueOf();\n\n      if (!(0,_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_5__.isObjectLike)(valueOfResult)) {\n        return valueOfResult;\n      }\n    }\n\n    if (typeof outputValue.toJSON === 'function') {\n      return outputValue.toJSON();\n    }\n  }\n\n  return outputValue;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC90eXBlL3NjYWxhcnMubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFpRDtBQUNVO0FBQ0Y7QUFDWjtBQUNHO0FBQ0s7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNBLHVCQUF1Qiw4REFBaUI7QUFDL0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQixpRUFBWTtBQUM1QixtREFBbUQsNkRBQU8sZUFBZTtBQUN6RTtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCLGlFQUFZO0FBQzVCO0FBQ0EsVUFBVSw2REFBTztBQUNqQjtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsZ0JBQWdCLGlFQUFZO0FBQzVCLG1EQUFtRCw2REFBTyxhQUFhO0FBQ3ZFO0FBQ0E7O0FBRUE7QUFDQSxnQkFBZ0IsaUVBQVk7QUFDNUIsaUVBQWlFLFdBQVc7QUFDNUU7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSwyQkFBMkIseURBQVE7QUFDbkMsZ0JBQWdCLGlFQUFZO0FBQzVCLG1EQUFtRCw0REFBSyxZQUFZO0FBQ3BFO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGdCQUFnQixpRUFBWTtBQUM1QixpRUFBaUUsZ0JBQWdCO0FBQ2pGO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSCxDQUFDO0FBQ00seUJBQXlCLDhEQUFpQjtBQUNqRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCLGlFQUFZO0FBQzVCLHFEQUFxRCw2REFBTyxlQUFlO0FBQzNFO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxnQkFBZ0IsaUVBQVk7QUFDNUIscURBQXFELDZEQUFPLGFBQWE7QUFDekU7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSwyQkFBMkIsMkRBQVUsdUJBQXVCLHlEQUFRO0FBQ3BFLGdCQUFnQixpRUFBWTtBQUM1QixxREFBcUQsNERBQUssWUFBWTtBQUN0RTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0gsQ0FBQztBQUNNLDBCQUEwQiw4REFBaUI7QUFDbEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdURBQXVEO0FBQ3ZEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGNBQWMsaUVBQVk7QUFDMUIsd0NBQXdDLDZEQUFPLGNBQWM7QUFDN0Q7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxnQkFBZ0IsaUVBQVk7QUFDNUIsdURBQXVELDZEQUFPLGFBQWE7QUFDM0U7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSwyQkFBMkIsNERBQVc7QUFDdEMsZ0JBQWdCLGlFQUFZO0FBQzVCLHVEQUF1RCw0REFBSyxZQUFZO0FBQ3hFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSCxDQUFDO0FBQ00sMkJBQTJCLDhEQUFpQjtBQUNuRDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxjQUFjLGlFQUFZO0FBQzFCLHVEQUF1RCw2REFBTyxlQUFlO0FBQzdFO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsZ0JBQWdCLGlFQUFZO0FBQzVCLHlEQUF5RCw2REFBTyxhQUFhO0FBQzdFO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOztBQUVIO0FBQ0EsMkJBQTJCLDZEQUFZO0FBQ3ZDLGdCQUFnQixpRUFBWTtBQUM1Qix5REFBeUQsNERBQUssWUFBWTtBQUMxRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0gsQ0FBQztBQUNNLHNCQUFzQiw4REFBaUI7QUFDOUM7QUFDQTtBQUNBLHFLQUFxSzs7QUFFcks7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGNBQWMsaUVBQVk7QUFDMUIsb0NBQW9DLDZEQUFPLGNBQWM7QUFDekQ7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxjQUFjLGlFQUFZLCtCQUErQiw2REFBTyxhQUFhO0FBQzdFLEdBQUc7O0FBRUg7QUFDQSwyQkFBMkIsNERBQVcsdUJBQXVCLHlEQUFRO0FBQ3JFLGdCQUFnQixpRUFBWTtBQUM1QjtBQUNBLFVBQVUsNERBQUs7QUFDZjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0gsQ0FBQztBQUNNO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxzQ0FBc0MsTUFBTTtBQUM1QyxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTtBQUNBLE1BQU0sdUVBQVk7QUFDbEI7QUFDQTs7QUFFQSxXQUFXLHVFQUFZO0FBQ3ZCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3R5cGUvc2NhbGFycy5tanM/MjZmMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSAnLi4vanN1dGlscy9pbnNwZWN0Lm1qcyc7XG5pbXBvcnQgeyBpc09iamVjdExpa2UgfSBmcm9tICcuLi9qc3V0aWxzL2lzT2JqZWN0TGlrZS5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbmltcG9ydCB7IHByaW50IH0gZnJvbSAnLi4vbGFuZ3VhZ2UvcHJpbnRlci5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTFNjYWxhclR5cGUgfSBmcm9tICcuL2RlZmluaXRpb24ubWpzJztcbi8qKlxuICogTWF4aW11bSBwb3NzaWJsZSBJbnQgdmFsdWUgYXMgcGVyIEdyYXBoUUwgU3BlYyAoMzItYml0IHNpZ25lZCBpbnRlZ2VyKS5cbiAqIG4uYi4gVGhpcyBkaWZmZXJzIGZyb20gSmF2YVNjcmlwdCdzIG51bWJlcnMgdGhhdCBhcmUgSUVFRSA3NTQgZG91YmxlcyBzYWZlIHVwLXRvIDJeNTMgLSAxXG4gKiAqL1xuXG5leHBvcnQgY29uc3QgR1JBUEhRTF9NQVhfSU5UID0gMjE0NzQ4MzY0Nztcbi8qKlxuICogTWluaW11bSBwb3NzaWJsZSBJbnQgdmFsdWUgYXMgcGVyIEdyYXBoUUwgU3BlYyAoMzItYml0IHNpZ25lZCBpbnRlZ2VyKS5cbiAqIG4uYi4gVGhpcyBkaWZmZXJzIGZyb20gSmF2YVNjcmlwdCdzIG51bWJlcnMgdGhhdCBhcmUgSUVFRSA3NTQgZG91YmxlcyBzYWZlIHN0YXJ0aW5nIGF0IC0oMl41MyAtIDEpXG4gKiAqL1xuXG5leHBvcnQgY29uc3QgR1JBUEhRTF9NSU5fSU5UID0gLTIxNDc0ODM2NDg7XG5leHBvcnQgY29uc3QgR3JhcGhRTEludCA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6ICdJbnQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIGBJbnRgIHNjYWxhciB0eXBlIHJlcHJlc2VudHMgbm9uLWZyYWN0aW9uYWwgc2lnbmVkIHdob2xlIG51bWVyaWMgdmFsdWVzLiBJbnQgY2FuIHJlcHJlc2VudCB2YWx1ZXMgYmV0d2VlbiAtKDJeMzEpIGFuZCAyXjMxIC0gMS4nLFxuXG4gIHNlcmlhbGl6ZShvdXRwdXRWYWx1ZSkge1xuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IHNlcmlhbGl6ZU9iamVjdChvdXRwdXRWYWx1ZSk7XG5cbiAgICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gY29lcmNlZFZhbHVlID8gMSA6IDA7XG4gICAgfVxuXG4gICAgbGV0IG51bSA9IGNvZXJjZWRWYWx1ZTtcblxuICAgIGlmICh0eXBlb2YgY29lcmNlZFZhbHVlID09PSAnc3RyaW5nJyAmJiBjb2VyY2VkVmFsdWUgIT09ICcnKSB7XG4gICAgICBudW0gPSBOdW1iZXIoY29lcmNlZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG51bSAhPT0gJ251bWJlcicgfHwgIU51bWJlci5pc0ludGVnZXIobnVtKSkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgYEludCBjYW5ub3QgcmVwcmVzZW50IG5vbi1pbnRlZ2VyIHZhbHVlOiAke2luc3BlY3QoY29lcmNlZFZhbHVlKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAobnVtID4gR1JBUEhRTF9NQVhfSU5UIHx8IG51bSA8IEdSQVBIUUxfTUlOX0lOVCkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgJ0ludCBjYW5ub3QgcmVwcmVzZW50IG5vbiAzMi1iaXQgc2lnbmVkIGludGVnZXIgdmFsdWU6ICcgK1xuICAgICAgICAgIGluc3BlY3QoY29lcmNlZFZhbHVlKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bTtcbiAgfSxcblxuICBwYXJzZVZhbHVlKGlucHV0VmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIGlucHV0VmFsdWUgIT09ICdudW1iZXInIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGlucHV0VmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgSW50IGNhbm5vdCByZXByZXNlbnQgbm9uLWludGVnZXIgdmFsdWU6ICR7aW5zcGVjdChpbnB1dFZhbHVlKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoaW5wdXRWYWx1ZSA+IEdSQVBIUUxfTUFYX0lOVCB8fCBpbnB1dFZhbHVlIDwgR1JBUEhRTF9NSU5fSU5UKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgSW50IGNhbm5vdCByZXByZXNlbnQgbm9uIDMyLWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZTogJHtpbnB1dFZhbHVlfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBpbnB1dFZhbHVlO1xuICB9LFxuXG4gIHBhcnNlTGl0ZXJhbCh2YWx1ZU5vZGUpIHtcbiAgICBpZiAodmFsdWVOb2RlLmtpbmQgIT09IEtpbmQuSU5UKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgSW50IGNhbm5vdCByZXByZXNlbnQgbm9uLWludGVnZXIgdmFsdWU6ICR7cHJpbnQodmFsdWVOb2RlKX1gLFxuICAgICAgICB2YWx1ZU5vZGUsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IG51bSA9IHBhcnNlSW50KHZhbHVlTm9kZS52YWx1ZSwgMTApO1xuXG4gICAgaWYgKG51bSA+IEdSQVBIUUxfTUFYX0lOVCB8fCBudW0gPCBHUkFQSFFMX01JTl9JTlQpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgIGBJbnQgY2Fubm90IHJlcHJlc2VudCBub24gMzItYml0IHNpZ25lZCBpbnRlZ2VyIHZhbHVlOiAke3ZhbHVlTm9kZS52YWx1ZX1gLFxuICAgICAgICB2YWx1ZU5vZGUsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBudW07XG4gIH0sXG59KTtcbmV4cG9ydCBjb25zdCBHcmFwaFFMRmxvYXQgPSBuZXcgR3JhcGhRTFNjYWxhclR5cGUoe1xuICBuYW1lOiAnRmxvYXQnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIGBGbG9hdGAgc2NhbGFyIHR5cGUgcmVwcmVzZW50cyBzaWduZWQgZG91YmxlLXByZWNpc2lvbiBmcmFjdGlvbmFsIHZhbHVlcyBhcyBzcGVjaWZpZWQgYnkgW0lFRUUgNzU0XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JRUVFX2Zsb2F0aW5nX3BvaW50KS4nLFxuXG4gIHNlcmlhbGl6ZShvdXRwdXRWYWx1ZSkge1xuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IHNlcmlhbGl6ZU9iamVjdChvdXRwdXRWYWx1ZSk7XG5cbiAgICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gY29lcmNlZFZhbHVlID8gMSA6IDA7XG4gICAgfVxuXG4gICAgbGV0IG51bSA9IGNvZXJjZWRWYWx1ZTtcblxuICAgIGlmICh0eXBlb2YgY29lcmNlZFZhbHVlID09PSAnc3RyaW5nJyAmJiBjb2VyY2VkVmFsdWUgIT09ICcnKSB7XG4gICAgICBudW0gPSBOdW1iZXIoY29lcmNlZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG51bSAhPT0gJ251bWJlcicgfHwgIU51bWJlci5pc0Zpbml0ZShudW0pKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgRmxvYXQgY2Fubm90IHJlcHJlc2VudCBub24gbnVtZXJpYyB2YWx1ZTogJHtpbnNwZWN0KGNvZXJjZWRWYWx1ZSl9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bTtcbiAgfSxcblxuICBwYXJzZVZhbHVlKGlucHV0VmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIGlucHV0VmFsdWUgIT09ICdudW1iZXInIHx8ICFOdW1iZXIuaXNGaW5pdGUoaW5wdXRWYWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgIGBGbG9hdCBjYW5ub3QgcmVwcmVzZW50IG5vbiBudW1lcmljIHZhbHVlOiAke2luc3BlY3QoaW5wdXRWYWx1ZSl9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gIH0sXG5cbiAgcGFyc2VMaXRlcmFsKHZhbHVlTm9kZSkge1xuICAgIGlmICh2YWx1ZU5vZGUua2luZCAhPT0gS2luZC5GTE9BVCAmJiB2YWx1ZU5vZGUua2luZCAhPT0gS2luZC5JTlQpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgIGBGbG9hdCBjYW5ub3QgcmVwcmVzZW50IG5vbiBudW1lcmljIHZhbHVlOiAke3ByaW50KHZhbHVlTm9kZSl9YCxcbiAgICAgICAgdmFsdWVOb2RlLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZU5vZGUudmFsdWUpO1xuICB9LFxufSk7XG5leHBvcnQgY29uc3QgR3JhcGhRTFN0cmluZyA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6ICdTdHJpbmcnLFxuICBkZXNjcmlwdGlvbjpcbiAgICAnVGhlIGBTdHJpbmdgIHNjYWxhciB0eXBlIHJlcHJlc2VudHMgdGV4dHVhbCBkYXRhLCByZXByZXNlbnRlZCBhcyBVVEYtOCBjaGFyYWN0ZXIgc2VxdWVuY2VzLiBUaGUgU3RyaW5nIHR5cGUgaXMgbW9zdCBvZnRlbiB1c2VkIGJ5IEdyYXBoUUwgdG8gcmVwcmVzZW50IGZyZWUtZm9ybSBodW1hbi1yZWFkYWJsZSB0ZXh0LicsXG5cbiAgc2VyaWFsaXplKG91dHB1dFZhbHVlKSB7XG4gICAgY29uc3QgY29lcmNlZFZhbHVlID0gc2VyaWFsaXplT2JqZWN0KG91dHB1dFZhbHVlKTsgLy8gU2VyaWFsaXplIHN0cmluZywgYm9vbGVhbiBhbmQgbnVtYmVyIHZhbHVlcyB0byBhIHN0cmluZywgYnV0IGRvIG5vdFxuICAgIC8vIGF0dGVtcHQgdG8gY29lcmNlIG9iamVjdCwgZnVuY3Rpb24sIHN5bWJvbCwgb3Igb3RoZXIgdHlwZXMgYXMgc3RyaW5ncy5cblxuICAgIGlmICh0eXBlb2YgY29lcmNlZFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGNvZXJjZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gY29lcmNlZFZhbHVlID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvZXJjZWRWYWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKGNvZXJjZWRWYWx1ZSkpIHtcbiAgICAgIHJldHVybiBjb2VyY2VkVmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgYFN0cmluZyBjYW5ub3QgcmVwcmVzZW50IHZhbHVlOiAke2luc3BlY3Qob3V0cHV0VmFsdWUpfWAsXG4gICAgKTtcbiAgfSxcblxuICBwYXJzZVZhbHVlKGlucHV0VmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIGlucHV0VmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgU3RyaW5nIGNhbm5vdCByZXByZXNlbnQgYSBub24gc3RyaW5nIHZhbHVlOiAke2luc3BlY3QoaW5wdXRWYWx1ZSl9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gIH0sXG5cbiAgcGFyc2VMaXRlcmFsKHZhbHVlTm9kZSkge1xuICAgIGlmICh2YWx1ZU5vZGUua2luZCAhPT0gS2luZC5TVFJJTkcpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgIGBTdHJpbmcgY2Fubm90IHJlcHJlc2VudCBhIG5vbiBzdHJpbmcgdmFsdWU6ICR7cHJpbnQodmFsdWVOb2RlKX1gLFxuICAgICAgICB2YWx1ZU5vZGUsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZU5vZGUudmFsdWU7XG4gIH0sXG59KTtcbmV4cG9ydCBjb25zdCBHcmFwaFFMQm9vbGVhbiA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6ICdCb29sZWFuJyxcbiAgZGVzY3JpcHRpb246ICdUaGUgYEJvb2xlYW5gIHNjYWxhciB0eXBlIHJlcHJlc2VudHMgYHRydWVgIG9yIGBmYWxzZWAuJyxcblxuICBzZXJpYWxpemUob3V0cHV0VmFsdWUpIHtcbiAgICBjb25zdCBjb2VyY2VkVmFsdWUgPSBzZXJpYWxpemVPYmplY3Qob3V0cHV0VmFsdWUpO1xuXG4gICAgaWYgKHR5cGVvZiBjb2VyY2VkVmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGNvZXJjZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoTnVtYmVyLmlzRmluaXRlKGNvZXJjZWRWYWx1ZSkpIHtcbiAgICAgIHJldHVybiBjb2VyY2VkVmFsdWUgIT09IDA7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgIGBCb29sZWFuIGNhbm5vdCByZXByZXNlbnQgYSBub24gYm9vbGVhbiB2YWx1ZTogJHtpbnNwZWN0KGNvZXJjZWRWYWx1ZSl9YCxcbiAgICApO1xuICB9LFxuXG4gIHBhcnNlVmFsdWUoaW5wdXRWYWx1ZSkge1xuICAgIGlmICh0eXBlb2YgaW5wdXRWYWx1ZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgQm9vbGVhbiBjYW5ub3QgcmVwcmVzZW50IGEgbm9uIGJvb2xlYW4gdmFsdWU6ICR7aW5zcGVjdChpbnB1dFZhbHVlKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgfSxcblxuICBwYXJzZUxpdGVyYWwodmFsdWVOb2RlKSB7XG4gICAgaWYgKHZhbHVlTm9kZS5raW5kICE9PSBLaW5kLkJPT0xFQU4pIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgIGBCb29sZWFuIGNhbm5vdCByZXByZXNlbnQgYSBub24gYm9vbGVhbiB2YWx1ZTogJHtwcmludCh2YWx1ZU5vZGUpfWAsXG4gICAgICAgIHZhbHVlTm9kZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlTm9kZS52YWx1ZTtcbiAgfSxcbn0pO1xuZXhwb3J0IGNvbnN0IEdyYXBoUUxJRCA9IG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gIG5hbWU6ICdJRCcsXG4gIGRlc2NyaXB0aW9uOlxuICAgICdUaGUgYElEYCBzY2FsYXIgdHlwZSByZXByZXNlbnRzIGEgdW5pcXVlIGlkZW50aWZpZXIsIG9mdGVuIHVzZWQgdG8gcmVmZXRjaCBhbiBvYmplY3Qgb3IgYXMga2V5IGZvciBhIGNhY2hlLiBUaGUgSUQgdHlwZSBhcHBlYXJzIGluIGEgSlNPTiByZXNwb25zZSBhcyBhIFN0cmluZzsgaG93ZXZlciwgaXQgaXMgbm90IGludGVuZGVkIHRvIGJlIGh1bWFuLXJlYWRhYmxlLiBXaGVuIGV4cGVjdGVkIGFzIGFuIGlucHV0IHR5cGUsIGFueSBzdHJpbmcgKHN1Y2ggYXMgYFwiNFwiYCkgb3IgaW50ZWdlciAoc3VjaCBhcyBgNGApIGlucHV0IHZhbHVlIHdpbGwgYmUgYWNjZXB0ZWQgYXMgYW4gSUQuJyxcblxuICBzZXJpYWxpemUob3V0cHV0VmFsdWUpIHtcbiAgICBjb25zdCBjb2VyY2VkVmFsdWUgPSBzZXJpYWxpemVPYmplY3Qob3V0cHV0VmFsdWUpO1xuXG4gICAgaWYgKHR5cGVvZiBjb2VyY2VkVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gY29lcmNlZFZhbHVlO1xuICAgIH1cblxuICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKGNvZXJjZWRWYWx1ZSkpIHtcbiAgICAgIHJldHVybiBTdHJpbmcoY29lcmNlZFZhbHVlKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgYElEIGNhbm5vdCByZXByZXNlbnQgdmFsdWU6ICR7aW5zcGVjdChvdXRwdXRWYWx1ZSl9YCxcbiAgICApO1xuICB9LFxuXG4gIHBhcnNlVmFsdWUoaW5wdXRWYWx1ZSkge1xuICAgIGlmICh0eXBlb2YgaW5wdXRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBpbnB1dFZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgaW5wdXRWYWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzSW50ZWdlcihpbnB1dFZhbHVlKSkge1xuICAgICAgcmV0dXJuIGlucHV0VmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKGBJRCBjYW5ub3QgcmVwcmVzZW50IHZhbHVlOiAke2luc3BlY3QoaW5wdXRWYWx1ZSl9YCk7XG4gIH0sXG5cbiAgcGFyc2VMaXRlcmFsKHZhbHVlTm9kZSkge1xuICAgIGlmICh2YWx1ZU5vZGUua2luZCAhPT0gS2luZC5TVFJJTkcgJiYgdmFsdWVOb2RlLmtpbmQgIT09IEtpbmQuSU5UKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAnSUQgY2Fubm90IHJlcHJlc2VudCBhIG5vbi1zdHJpbmcgYW5kIG5vbi1pbnRlZ2VyIHZhbHVlOiAnICtcbiAgICAgICAgICBwcmludCh2YWx1ZU5vZGUpLFxuICAgICAgICB2YWx1ZU5vZGUsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZU5vZGUudmFsdWU7XG4gIH0sXG59KTtcbmV4cG9ydCBjb25zdCBzcGVjaWZpZWRTY2FsYXJUeXBlcyA9IE9iamVjdC5mcmVlemUoW1xuICBHcmFwaFFMU3RyaW5nLFxuICBHcmFwaFFMSW50LFxuICBHcmFwaFFMRmxvYXQsXG4gIEdyYXBoUUxCb29sZWFuLFxuICBHcmFwaFFMSUQsXG5dKTtcbmV4cG9ydCBmdW5jdGlvbiBpc1NwZWNpZmllZFNjYWxhclR5cGUodHlwZSkge1xuICByZXR1cm4gc3BlY2lmaWVkU2NhbGFyVHlwZXMuc29tZSgoeyBuYW1lIH0pID0+IHR5cGUubmFtZSA9PT0gbmFtZSk7XG59IC8vIFN1cHBvcnQgc2VyaWFsaXppbmcgb2JqZWN0cyB3aXRoIGN1c3RvbSB2YWx1ZU9mKCkgb3IgdG9KU09OKCkgZnVuY3Rpb25zIC1cbi8vIGEgY29tbW9uIHdheSB0byByZXByZXNlbnQgYSBjb21wbGV4IHZhbHVlIHdoaWNoIGNhbiBiZSByZXByZXNlbnRlZCBhc1xuLy8gYSBzdHJpbmcgKGV4OiBNb25nb0RCIGlkIG9iamVjdHMpLlxuXG5mdW5jdGlvbiBzZXJpYWxpemVPYmplY3Qob3V0cHV0VmFsdWUpIHtcbiAgaWYgKGlzT2JqZWN0TGlrZShvdXRwdXRWYWx1ZSkpIHtcbiAgICBpZiAodHlwZW9mIG91dHB1dFZhbHVlLnZhbHVlT2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IHZhbHVlT2ZSZXN1bHQgPSBvdXRwdXRWYWx1ZS52YWx1ZU9mKCk7XG5cbiAgICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlT2ZSZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZU9mUmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3V0cHV0VmFsdWUudG9KU09OID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gb3V0cHV0VmFsdWUudG9KU09OKCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG91dHB1dFZhbHVlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/type/scalars.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/type/schema.mjs":
/*!**********************************************!*\
  !*** ./node_modules/graphql/type/schema.mjs ***!
  \**********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"GraphQLSchema\": function() { return /* binding */ GraphQLSchema; },\n/* harmony export */   \"assertSchema\": function() { return /* binding */ assertSchema; },\n/* harmony export */   \"isSchema\": function() { return /* binding */ isSchema; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"./node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/instanceOf.mjs */ \"./node_modules/graphql/jsutils/instanceOf.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"./node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/toObjMap.mjs */ \"./node_modules/graphql/jsutils/toObjMap.mjs\");\n/* harmony import */ var _language_ast_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../language/ast.mjs */ \"./node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _directives_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./directives.mjs */ \"./node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _introspection_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./introspection.mjs */ \"./node_modules/graphql/type/introspection.mjs\");\n\n\n\n\n\n\n\n\n\n/**\n * Test if the given value is a GraphQL schema.\n */\n\nfunction isSchema(schema) {\n  return (0,_jsutils_instanceOf_mjs__WEBPACK_IMPORTED_MODULE_0__.instanceOf)(schema, GraphQLSchema);\n}\nfunction assertSchema(schema) {\n  if (!isSchema(schema)) {\n    throw new Error(`Expected ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__.inspect)(schema)} to be a GraphQL schema.`);\n  }\n\n  return schema;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Schema Definition\n *\n * A Schema is created by supplying the root types of each type of operation,\n * query and mutation (optional). A schema definition is then supplied to the\n * validator and executor.\n *\n * Example:\n *\n * ```ts\n * const MyAppSchema = new GraphQLSchema({\n *   query: MyAppQueryRootType,\n *   mutation: MyAppMutationRootType,\n * })\n * ```\n *\n * Note: When the schema is constructed, by default only the types that are\n * reachable by traversing the root types are included, other types must be\n * explicitly referenced.\n *\n * Example:\n *\n * ```ts\n * const characterInterface = new GraphQLInterfaceType({\n *   name: 'Character',\n *   ...\n * });\n *\n * const humanType = new GraphQLObjectType({\n *   name: 'Human',\n *   interfaces: [characterInterface],\n *   ...\n * });\n *\n * const droidType = new GraphQLObjectType({\n *   name: 'Droid',\n *   interfaces: [characterInterface],\n *   ...\n * });\n *\n * const schema = new GraphQLSchema({\n *   query: new GraphQLObjectType({\n *     name: 'Query',\n *     fields: {\n *       hero: { type: characterInterface, ... },\n *     }\n *   }),\n *   ...\n *   // Since this schema references only the `Character` interface it's\n *   // necessary to explicitly list the types that implement it if\n *   // you want them to be included in the final schema.\n *   types: [humanType, droidType],\n * })\n * ```\n *\n * Note: If an array of `directives` are provided to GraphQLSchema, that will be\n * the exact list of directives represented and allowed. If `directives` is not\n * provided then a default set of the specified directives (e.g. `@include` and\n * `@skip`) will be used. If you wish to provide *additional* directives to these\n * specified directives, you must explicitly declare them. Example:\n *\n * ```ts\n * const MyAppSchema = new GraphQLSchema({\n *   ...\n *   directives: specifiedDirectives.concat([ myCustomDirective ]),\n * })\n * ```\n */\nclass GraphQLSchema {\n  // Used as a cache for validateSchema().\n  constructor(config) {\n    var _config$extensionASTN, _config$directives;\n\n    // If this schema was built from a source known to be valid, then it may be\n    // marked with assumeValid to avoid an additional type system validation.\n    this.__validationErrors = config.assumeValid === true ? [] : undefined; // Check for common mistakes during construction to produce early errors.\n\n    (0,_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_2__.isObjectLike)(config) ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_3__.devAssert)(false, 'Must provide configuration object.');\n    !config.types ||\n      Array.isArray(config.types) ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_3__.devAssert)(\n        false,\n        `\"types\" must be Array if provided but got: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__.inspect)(config.types)}.`,\n      );\n    !config.directives ||\n      Array.isArray(config.directives) ||\n      (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_3__.devAssert)(\n        false,\n        '\"directives\" must be Array if provided but got: ' +\n          `${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__.inspect)(config.directives)}.`,\n      );\n    this.description = config.description;\n    this.extensions = (0,_jsutils_toObjMap_mjs__WEBPACK_IMPORTED_MODULE_4__.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN = config.extensionASTNodes) !== null &&\n      _config$extensionASTN !== void 0\n        ? _config$extensionASTN\n        : [];\n    this._queryType = config.query;\n    this._mutationType = config.mutation;\n    this._subscriptionType = config.subscription; // Provide specified directives (e.g. @include and @skip) by default.\n\n    this._directives =\n      (_config$directives = config.directives) !== null &&\n      _config$directives !== void 0\n        ? _config$directives\n        : _directives_mjs__WEBPACK_IMPORTED_MODULE_5__.specifiedDirectives; // To preserve order of user-provided types, we add first to add them to\n    // the set of \"collected\" types, so `collectReferencedTypes` ignore them.\n\n    const allReferencedTypes = new Set(config.types);\n\n    if (config.types != null) {\n      for (const type of config.types) {\n        // When we ready to process this type, we remove it from \"collected\" types\n        // and then add it together with all dependent types in the correct position.\n        allReferencedTypes.delete(type);\n        collectReferencedTypes(type, allReferencedTypes);\n      }\n    }\n\n    if (this._queryType != null) {\n      collectReferencedTypes(this._queryType, allReferencedTypes);\n    }\n\n    if (this._mutationType != null) {\n      collectReferencedTypes(this._mutationType, allReferencedTypes);\n    }\n\n    if (this._subscriptionType != null) {\n      collectReferencedTypes(this._subscriptionType, allReferencedTypes);\n    }\n\n    for (const directive of this._directives) {\n      // Directives are not validated until validateSchema() is called.\n      if ((0,_directives_mjs__WEBPACK_IMPORTED_MODULE_5__.isDirective)(directive)) {\n        for (const arg of directive.args) {\n          collectReferencedTypes(arg.type, allReferencedTypes);\n        }\n      }\n    }\n\n    collectReferencedTypes(_introspection_mjs__WEBPACK_IMPORTED_MODULE_6__.__Schema, allReferencedTypes); // Storing the resulting map for reference by the schema.\n\n    this._typeMap = Object.create(null);\n    this._subTypeMap = Object.create(null); // Keep track of all implementations by interface name.\n\n    this._implementationsMap = Object.create(null);\n\n    for (const namedType of allReferencedTypes) {\n      if (namedType == null) {\n        continue;\n      }\n\n      const typeName = namedType.name;\n      typeName ||\n        (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_3__.devAssert)(\n          false,\n          'One of the provided types for building the Schema is missing a name.',\n        );\n\n      if (this._typeMap[typeName] !== undefined) {\n        throw new Error(\n          `Schema must contain uniquely named types but contains multiple types named \"${typeName}\".`,\n        );\n      }\n\n      this._typeMap[typeName] = namedType;\n\n      if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.isInterfaceType)(namedType)) {\n        // Store implementations by interface.\n        for (const iface of namedType.getInterfaces()) {\n          if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.isInterfaceType)(iface)) {\n            let implementations = this._implementationsMap[iface.name];\n\n            if (implementations === undefined) {\n              implementations = this._implementationsMap[iface.name] = {\n                objects: [],\n                interfaces: [],\n              };\n            }\n\n            implementations.interfaces.push(namedType);\n          }\n        }\n      } else if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.isObjectType)(namedType)) {\n        // Store implementations by objects.\n        for (const iface of namedType.getInterfaces()) {\n          if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.isInterfaceType)(iface)) {\n            let implementations = this._implementationsMap[iface.name];\n\n            if (implementations === undefined) {\n              implementations = this._implementationsMap[iface.name] = {\n                objects: [],\n                interfaces: [],\n              };\n            }\n\n            implementations.objects.push(namedType);\n          }\n        }\n      }\n    }\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLSchema';\n  }\n\n  getQueryType() {\n    return this._queryType;\n  }\n\n  getMutationType() {\n    return this._mutationType;\n  }\n\n  getSubscriptionType() {\n    return this._subscriptionType;\n  }\n\n  getRootType(operation) {\n    switch (operation) {\n      case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_8__.OperationTypeNode.QUERY:\n        return this.getQueryType();\n\n      case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_8__.OperationTypeNode.MUTATION:\n        return this.getMutationType();\n\n      case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_8__.OperationTypeNode.SUBSCRIPTION:\n        return this.getSubscriptionType();\n    }\n  }\n\n  getTypeMap() {\n    return this._typeMap;\n  }\n\n  getType(name) {\n    return this.getTypeMap()[name];\n  }\n\n  getPossibleTypes(abstractType) {\n    return (0,_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.isUnionType)(abstractType)\n      ? abstractType.getTypes()\n      : this.getImplementations(abstractType).objects;\n  }\n\n  getImplementations(interfaceType) {\n    const implementations = this._implementationsMap[interfaceType.name];\n    return implementations !== null && implementations !== void 0\n      ? implementations\n      : {\n          objects: [],\n          interfaces: [],\n        };\n  }\n\n  isSubType(abstractType, maybeSubType) {\n    let map = this._subTypeMap[abstractType.name];\n\n    if (map === undefined) {\n      map = Object.create(null);\n\n      if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.isUnionType)(abstractType)) {\n        for (const type of abstractType.getTypes()) {\n          map[type.name] = true;\n        }\n      } else {\n        const implementations = this.getImplementations(abstractType);\n\n        for (const type of implementations.objects) {\n          map[type.name] = true;\n        }\n\n        for (const type of implementations.interfaces) {\n          map[type.name] = true;\n        }\n      }\n\n      this._subTypeMap[abstractType.name] = map;\n    }\n\n    return map[maybeSubType.name] !== undefined;\n  }\n\n  getDirectives() {\n    return this._directives;\n  }\n\n  getDirective(name) {\n    return this.getDirectives().find((directive) => directive.name === name);\n  }\n\n  toConfig() {\n    return {\n      description: this.description,\n      query: this.getQueryType(),\n      mutation: this.getMutationType(),\n      subscription: this.getSubscriptionType(),\n      types: Object.values(this.getTypeMap()),\n      directives: this.getDirectives(),\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n      assumeValid: this.__validationErrors !== undefined,\n    };\n  }\n}\n\nfunction collectReferencedTypes(type, typeSet) {\n  const namedType = (0,_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.getNamedType)(type);\n\n  if (!typeSet.has(namedType)) {\n    typeSet.add(namedType);\n\n    if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.isUnionType)(namedType)) {\n      for (const memberType of namedType.getTypes()) {\n        collectReferencedTypes(memberType, typeSet);\n      }\n    } else if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.isObjectType)(namedType) || (0,_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.isInterfaceType)(namedType)) {\n      for (const interfaceType of namedType.getInterfaces()) {\n        collectReferencedTypes(interfaceType, typeSet);\n      }\n\n      for (const field of Object.values(namedType.getFields())) {\n        collectReferencedTypes(field.type, typeSet);\n\n        for (const arg of field.args) {\n          collectReferencedTypes(arg.type, typeSet);\n        }\n      }\n    } else if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.isInputObjectType)(namedType)) {\n      for (const field of Object.values(namedType.getFields())) {\n        collectReferencedTypes(field.type, typeSet);\n      }\n    }\n  }\n\n  return typeSet;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC90eXBlL3NjaGVtYS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQXFEO0FBQ0o7QUFDTTtBQUNJO0FBQ1I7QUFDSztBQU85QjtBQUMwQztBQUNyQjtBQUMvQztBQUNBO0FBQ0E7O0FBRU87QUFDUCxTQUFTLG1FQUFVO0FBQ25CO0FBQ087QUFDUDtBQUNBLGdDQUFnQyw2REFBTyxVQUFVO0FBQ2pEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLCtCQUErQjtBQUNoRDtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRFQUE0RTs7QUFFNUUsSUFBSSx1RUFBWTtBQUNoQixNQUFNLGlFQUFTO0FBQ2Y7QUFDQTtBQUNBLE1BQU0saUVBQVM7QUFDZjtBQUNBLHNEQUFzRCw2REFBTyxlQUFlO0FBQzVFO0FBQ0E7QUFDQTtBQUNBLE1BQU0saUVBQVM7QUFDZjtBQUNBO0FBQ0EsYUFBYSw2REFBTyxvQkFBb0I7QUFDeEM7QUFDQTtBQUNBLHNCQUFzQiwrREFBUTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsZ0VBQW1CLEVBQUU7QUFDL0I7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVSw0REFBVztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDJCQUEyQix3REFBUSx1QkFBdUI7O0FBRTFEO0FBQ0EsNENBQTRDOztBQUU1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUSxpRUFBUztBQUNqQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHlGQUF5RixTQUFTO0FBQ2xHO0FBQ0E7O0FBRUE7O0FBRUEsVUFBVSxnRUFBZTtBQUN6QjtBQUNBO0FBQ0EsY0FBYyxnRUFBZTtBQUM3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxTQUFTLDZEQUFZO0FBQzdCO0FBQ0E7QUFDQSxjQUFjLGdFQUFlO0FBQzdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLHNFQUF1QjtBQUNsQzs7QUFFQSxXQUFXLHlFQUEwQjtBQUNyQzs7QUFFQSxXQUFXLDZFQUE4QjtBQUN6QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFdBQVcsNERBQVc7QUFDdEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsVUFBVSw0REFBVztBQUNyQjtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQiw2REFBWTs7QUFFaEM7QUFDQTs7QUFFQSxRQUFRLDREQUFXO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLE1BQU0sU0FBUyw2REFBWSxlQUFlLGdFQUFlO0FBQ3pEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxTQUFTLGtFQUFpQjtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdHlwZS9zY2hlbWEubWpzP2Y2NDMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGV2QXNzZXJ0IH0gZnJvbSAnLi4vanN1dGlscy9kZXZBc3NlcnQubWpzJztcbmltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IGluc3RhbmNlT2YgfSBmcm9tICcuLi9qc3V0aWxzL2luc3RhbmNlT2YubWpzJztcbmltcG9ydCB7IGlzT2JqZWN0TGlrZSB9IGZyb20gJy4uL2pzdXRpbHMvaXNPYmplY3RMaWtlLm1qcyc7XG5pbXBvcnQgeyB0b09iak1hcCB9IGZyb20gJy4uL2pzdXRpbHMvdG9PYmpNYXAubWpzJztcbmltcG9ydCB7IE9wZXJhdGlvblR5cGVOb2RlIH0gZnJvbSAnLi4vbGFuZ3VhZ2UvYXN0Lm1qcyc7XG5pbXBvcnQge1xuICBnZXROYW1lZFR5cGUsXG4gIGlzSW5wdXRPYmplY3RUeXBlLFxuICBpc0ludGVyZmFjZVR5cGUsXG4gIGlzT2JqZWN0VHlwZSxcbiAgaXNVbmlvblR5cGUsXG59IGZyb20gJy4vZGVmaW5pdGlvbi5tanMnO1xuaW1wb3J0IHsgaXNEaXJlY3RpdmUsIHNwZWNpZmllZERpcmVjdGl2ZXMgfSBmcm9tICcuL2RpcmVjdGl2ZXMubWpzJztcbmltcG9ydCB7IF9fU2NoZW1hIH0gZnJvbSAnLi9pbnRyb3NwZWN0aW9uLm1qcyc7XG4vKipcbiAqIFRlc3QgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgR3JhcGhRTCBzY2hlbWEuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2NoZW1hKHNjaGVtYSkge1xuICByZXR1cm4gaW5zdGFuY2VPZihzY2hlbWEsIEdyYXBoUUxTY2hlbWEpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFNjaGVtYShzY2hlbWEpIHtcbiAgaWYgKCFpc1NjaGVtYShzY2hlbWEpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2luc3BlY3Qoc2NoZW1hKX0gdG8gYmUgYSBHcmFwaFFMIHNjaGVtYS5gKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59XG4vKipcbiAqIEN1c3RvbSBleHRlbnNpb25zXG4gKlxuICogQHJlbWFya3NcbiAqIFVzZSBhIHVuaXF1ZSBpZGVudGlmaWVyIG5hbWUgZm9yIHlvdXIgZXh0ZW5zaW9uLCBmb3IgZXhhbXBsZSB0aGUgbmFtZSBvZlxuICogeW91ciBsaWJyYXJ5IG9yIHByb2plY3QuIERvIG5vdCB1c2UgYSBzaG9ydGVuZWQgaWRlbnRpZmllciBhcyB0aGlzIGluY3JlYXNlc1xuICogdGhlIHJpc2sgb2YgY29uZmxpY3RzLiBXZSByZWNvbW1lbmQgeW91IGFkZCBhdCBtb3N0IG9uZSBleHRlbnNpb24gZmllbGQsXG4gKiBhbiBvYmplY3Qgd2hpY2ggY2FuIGNvbnRhaW4gYWxsIHRoZSB2YWx1ZXMgeW91IG5lZWQuXG4gKi9cblxuLyoqXG4gKiBTY2hlbWEgRGVmaW5pdGlvblxuICpcbiAqIEEgU2NoZW1hIGlzIGNyZWF0ZWQgYnkgc3VwcGx5aW5nIHRoZSByb290IHR5cGVzIG9mIGVhY2ggdHlwZSBvZiBvcGVyYXRpb24sXG4gKiBxdWVyeSBhbmQgbXV0YXRpb24gKG9wdGlvbmFsKS4gQSBzY2hlbWEgZGVmaW5pdGlvbiBpcyB0aGVuIHN1cHBsaWVkIHRvIHRoZVxuICogdmFsaWRhdG9yIGFuZCBleGVjdXRvci5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBNeUFwcFNjaGVtYSA9IG5ldyBHcmFwaFFMU2NoZW1hKHtcbiAqICAgcXVlcnk6IE15QXBwUXVlcnlSb290VHlwZSxcbiAqICAgbXV0YXRpb246IE15QXBwTXV0YXRpb25Sb290VHlwZSxcbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBOb3RlOiBXaGVuIHRoZSBzY2hlbWEgaXMgY29uc3RydWN0ZWQsIGJ5IGRlZmF1bHQgb25seSB0aGUgdHlwZXMgdGhhdCBhcmVcbiAqIHJlYWNoYWJsZSBieSB0cmF2ZXJzaW5nIHRoZSByb290IHR5cGVzIGFyZSBpbmNsdWRlZCwgb3RoZXIgdHlwZXMgbXVzdCBiZVxuICogZXhwbGljaXRseSByZWZlcmVuY2VkLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IGNoYXJhY3RlckludGVyZmFjZSA9IG5ldyBHcmFwaFFMSW50ZXJmYWNlVHlwZSh7XG4gKiAgIG5hbWU6ICdDaGFyYWN0ZXInLFxuICogICAuLi5cbiAqIH0pO1xuICpcbiAqIGNvbnN0IGh1bWFuVHlwZSA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gKiAgIG5hbWU6ICdIdW1hbicsXG4gKiAgIGludGVyZmFjZXM6IFtjaGFyYWN0ZXJJbnRlcmZhY2VdLFxuICogICAuLi5cbiAqIH0pO1xuICpcbiAqIGNvbnN0IGRyb2lkVHlwZSA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gKiAgIG5hbWU6ICdEcm9pZCcsXG4gKiAgIGludGVyZmFjZXM6IFtjaGFyYWN0ZXJJbnRlcmZhY2VdLFxuICogICAuLi5cbiAqIH0pO1xuICpcbiAqIGNvbnN0IHNjaGVtYSA9IG5ldyBHcmFwaFFMU2NoZW1hKHtcbiAqICAgcXVlcnk6IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gKiAgICAgbmFtZTogJ1F1ZXJ5JyxcbiAqICAgICBmaWVsZHM6IHtcbiAqICAgICAgIGhlcm86IHsgdHlwZTogY2hhcmFjdGVySW50ZXJmYWNlLCAuLi4gfSxcbiAqICAgICB9XG4gKiAgIH0pLFxuICogICAuLi5cbiAqICAgLy8gU2luY2UgdGhpcyBzY2hlbWEgcmVmZXJlbmNlcyBvbmx5IHRoZSBgQ2hhcmFjdGVyYCBpbnRlcmZhY2UgaXQnc1xuICogICAvLyBuZWNlc3NhcnkgdG8gZXhwbGljaXRseSBsaXN0IHRoZSB0eXBlcyB0aGF0IGltcGxlbWVudCBpdCBpZlxuICogICAvLyB5b3Ugd2FudCB0aGVtIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBmaW5hbCBzY2hlbWEuXG4gKiAgIHR5cGVzOiBbaHVtYW5UeXBlLCBkcm9pZFR5cGVdLFxuICogfSlcbiAqIGBgYFxuICpcbiAqIE5vdGU6IElmIGFuIGFycmF5IG9mIGBkaXJlY3RpdmVzYCBhcmUgcHJvdmlkZWQgdG8gR3JhcGhRTFNjaGVtYSwgdGhhdCB3aWxsIGJlXG4gKiB0aGUgZXhhY3QgbGlzdCBvZiBkaXJlY3RpdmVzIHJlcHJlc2VudGVkIGFuZCBhbGxvd2VkLiBJZiBgZGlyZWN0aXZlc2AgaXMgbm90XG4gKiBwcm92aWRlZCB0aGVuIGEgZGVmYXVsdCBzZXQgb2YgdGhlIHNwZWNpZmllZCBkaXJlY3RpdmVzIChlLmcuIGBAaW5jbHVkZWAgYW5kXG4gKiBgQHNraXBgKSB3aWxsIGJlIHVzZWQuIElmIHlvdSB3aXNoIHRvIHByb3ZpZGUgKmFkZGl0aW9uYWwqIGRpcmVjdGl2ZXMgdG8gdGhlc2VcbiAqIHNwZWNpZmllZCBkaXJlY3RpdmVzLCB5b3UgbXVzdCBleHBsaWNpdGx5IGRlY2xhcmUgdGhlbS4gRXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgTXlBcHBTY2hlbWEgPSBuZXcgR3JhcGhRTFNjaGVtYSh7XG4gKiAgIC4uLlxuICogICBkaXJlY3RpdmVzOiBzcGVjaWZpZWREaXJlY3RpdmVzLmNvbmNhdChbIG15Q3VzdG9tRGlyZWN0aXZlIF0pLFxuICogfSlcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhRTFNjaGVtYSB7XG4gIC8vIFVzZWQgYXMgYSBjYWNoZSBmb3IgdmFsaWRhdGVTY2hlbWEoKS5cbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgdmFyIF9jb25maWckZXh0ZW5zaW9uQVNUTiwgX2NvbmZpZyRkaXJlY3RpdmVzO1xuXG4gICAgLy8gSWYgdGhpcyBzY2hlbWEgd2FzIGJ1aWx0IGZyb20gYSBzb3VyY2Uga25vd24gdG8gYmUgdmFsaWQsIHRoZW4gaXQgbWF5IGJlXG4gICAgLy8gbWFya2VkIHdpdGggYXNzdW1lVmFsaWQgdG8gYXZvaWQgYW4gYWRkaXRpb25hbCB0eXBlIHN5c3RlbSB2YWxpZGF0aW9uLlxuICAgIHRoaXMuX192YWxpZGF0aW9uRXJyb3JzID0gY29uZmlnLmFzc3VtZVZhbGlkID09PSB0cnVlID8gW10gOiB1bmRlZmluZWQ7IC8vIENoZWNrIGZvciBjb21tb24gbWlzdGFrZXMgZHVyaW5nIGNvbnN0cnVjdGlvbiB0byBwcm9kdWNlIGVhcmx5IGVycm9ycy5cblxuICAgIGlzT2JqZWN0TGlrZShjb25maWcpIHx8XG4gICAgICBkZXZBc3NlcnQoZmFsc2UsICdNdXN0IHByb3ZpZGUgY29uZmlndXJhdGlvbiBvYmplY3QuJyk7XG4gICAgIWNvbmZpZy50eXBlcyB8fFxuICAgICAgQXJyYXkuaXNBcnJheShjb25maWcudHlwZXMpIHx8XG4gICAgICBkZXZBc3NlcnQoXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBgXCJ0eXBlc1wiIG11c3QgYmUgQXJyYXkgaWYgcHJvdmlkZWQgYnV0IGdvdDogJHtpbnNwZWN0KGNvbmZpZy50eXBlcyl9LmAsXG4gICAgICApO1xuICAgICFjb25maWcuZGlyZWN0aXZlcyB8fFxuICAgICAgQXJyYXkuaXNBcnJheShjb25maWcuZGlyZWN0aXZlcykgfHxcbiAgICAgIGRldkFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgICdcImRpcmVjdGl2ZXNcIiBtdXN0IGJlIEFycmF5IGlmIHByb3ZpZGVkIGJ1dCBnb3Q6ICcgK1xuICAgICAgICAgIGAke2luc3BlY3QoY29uZmlnLmRpcmVjdGl2ZXMpfS5gLFxuICAgICAgKTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gY29uZmlnLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMuZXh0ZW5zaW9ucyA9IHRvT2JqTWFwKGNvbmZpZy5leHRlbnNpb25zKTtcbiAgICB0aGlzLmFzdE5vZGUgPSBjb25maWcuYXN0Tm9kZTtcbiAgICB0aGlzLmV4dGVuc2lvbkFTVE5vZGVzID1cbiAgICAgIChfY29uZmlnJGV4dGVuc2lvbkFTVE4gPSBjb25maWcuZXh0ZW5zaW9uQVNUTm9kZXMpICE9PSBudWxsICYmXG4gICAgICBfY29uZmlnJGV4dGVuc2lvbkFTVE4gIT09IHZvaWQgMFxuICAgICAgICA/IF9jb25maWckZXh0ZW5zaW9uQVNUTlxuICAgICAgICA6IFtdO1xuICAgIHRoaXMuX3F1ZXJ5VHlwZSA9IGNvbmZpZy5xdWVyeTtcbiAgICB0aGlzLl9tdXRhdGlvblR5cGUgPSBjb25maWcubXV0YXRpb247XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uVHlwZSA9IGNvbmZpZy5zdWJzY3JpcHRpb247IC8vIFByb3ZpZGUgc3BlY2lmaWVkIGRpcmVjdGl2ZXMgKGUuZy4gQGluY2x1ZGUgYW5kIEBza2lwKSBieSBkZWZhdWx0LlxuXG4gICAgdGhpcy5fZGlyZWN0aXZlcyA9XG4gICAgICAoX2NvbmZpZyRkaXJlY3RpdmVzID0gY29uZmlnLmRpcmVjdGl2ZXMpICE9PSBudWxsICYmXG4gICAgICBfY29uZmlnJGRpcmVjdGl2ZXMgIT09IHZvaWQgMFxuICAgICAgICA/IF9jb25maWckZGlyZWN0aXZlc1xuICAgICAgICA6IHNwZWNpZmllZERpcmVjdGl2ZXM7IC8vIFRvIHByZXNlcnZlIG9yZGVyIG9mIHVzZXItcHJvdmlkZWQgdHlwZXMsIHdlIGFkZCBmaXJzdCB0byBhZGQgdGhlbSB0b1xuICAgIC8vIHRoZSBzZXQgb2YgXCJjb2xsZWN0ZWRcIiB0eXBlcywgc28gYGNvbGxlY3RSZWZlcmVuY2VkVHlwZXNgIGlnbm9yZSB0aGVtLlxuXG4gICAgY29uc3QgYWxsUmVmZXJlbmNlZFR5cGVzID0gbmV3IFNldChjb25maWcudHlwZXMpO1xuXG4gICAgaWYgKGNvbmZpZy50eXBlcyAhPSBudWxsKSB7XG4gICAgICBmb3IgKGNvbnN0IHR5cGUgb2YgY29uZmlnLnR5cGVzKSB7XG4gICAgICAgIC8vIFdoZW4gd2UgcmVhZHkgdG8gcHJvY2VzcyB0aGlzIHR5cGUsIHdlIHJlbW92ZSBpdCBmcm9tIFwiY29sbGVjdGVkXCIgdHlwZXNcbiAgICAgICAgLy8gYW5kIHRoZW4gYWRkIGl0IHRvZ2V0aGVyIHdpdGggYWxsIGRlcGVuZGVudCB0eXBlcyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbi5cbiAgICAgICAgYWxsUmVmZXJlbmNlZFR5cGVzLmRlbGV0ZSh0eXBlKTtcbiAgICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyh0eXBlLCBhbGxSZWZlcmVuY2VkVHlwZXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9xdWVyeVR5cGUgIT0gbnVsbCkge1xuICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyh0aGlzLl9xdWVyeVR5cGUsIGFsbFJlZmVyZW5jZWRUeXBlcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX211dGF0aW9uVHlwZSAhPSBudWxsKSB7XG4gICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKHRoaXMuX211dGF0aW9uVHlwZSwgYWxsUmVmZXJlbmNlZFR5cGVzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3Vic2NyaXB0aW9uVHlwZSAhPSBudWxsKSB7XG4gICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKHRoaXMuX3N1YnNjcmlwdGlvblR5cGUsIGFsbFJlZmVyZW5jZWRUeXBlcyk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBkaXJlY3RpdmUgb2YgdGhpcy5fZGlyZWN0aXZlcykge1xuICAgICAgLy8gRGlyZWN0aXZlcyBhcmUgbm90IHZhbGlkYXRlZCB1bnRpbCB2YWxpZGF0ZVNjaGVtYSgpIGlzIGNhbGxlZC5cbiAgICAgIGlmIChpc0RpcmVjdGl2ZShkaXJlY3RpdmUpKSB7XG4gICAgICAgIGZvciAoY29uc3QgYXJnIG9mIGRpcmVjdGl2ZS5hcmdzKSB7XG4gICAgICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyhhcmcudHlwZSwgYWxsUmVmZXJlbmNlZFR5cGVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbGxlY3RSZWZlcmVuY2VkVHlwZXMoX19TY2hlbWEsIGFsbFJlZmVyZW5jZWRUeXBlcyk7IC8vIFN0b3JpbmcgdGhlIHJlc3VsdGluZyBtYXAgZm9yIHJlZmVyZW5jZSBieSB0aGUgc2NoZW1hLlxuXG4gICAgdGhpcy5fdHlwZU1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGhpcy5fc3ViVHlwZU1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7IC8vIEtlZXAgdHJhY2sgb2YgYWxsIGltcGxlbWVudGF0aW9ucyBieSBpbnRlcmZhY2UgbmFtZS5cblxuICAgIHRoaXMuX2ltcGxlbWVudGF0aW9uc01hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICBmb3IgKGNvbnN0IG5hbWVkVHlwZSBvZiBhbGxSZWZlcmVuY2VkVHlwZXMpIHtcbiAgICAgIGlmIChuYW1lZFR5cGUgPT0gbnVsbCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdHlwZU5hbWUgPSBuYW1lZFR5cGUubmFtZTtcbiAgICAgIHR5cGVOYW1lIHx8XG4gICAgICAgIGRldkFzc2VydChcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAnT25lIG9mIHRoZSBwcm92aWRlZCB0eXBlcyBmb3IgYnVpbGRpbmcgdGhlIFNjaGVtYSBpcyBtaXNzaW5nIGEgbmFtZS4nLFxuICAgICAgICApO1xuXG4gICAgICBpZiAodGhpcy5fdHlwZU1hcFt0eXBlTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFNjaGVtYSBtdXN0IGNvbnRhaW4gdW5pcXVlbHkgbmFtZWQgdHlwZXMgYnV0IGNvbnRhaW5zIG11bHRpcGxlIHR5cGVzIG5hbWVkIFwiJHt0eXBlTmFtZX1cIi5gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl90eXBlTWFwW3R5cGVOYW1lXSA9IG5hbWVkVHlwZTtcblxuICAgICAgaWYgKGlzSW50ZXJmYWNlVHlwZShuYW1lZFR5cGUpKSB7XG4gICAgICAgIC8vIFN0b3JlIGltcGxlbWVudGF0aW9ucyBieSBpbnRlcmZhY2UuXG4gICAgICAgIGZvciAoY29uc3QgaWZhY2Ugb2YgbmFtZWRUeXBlLmdldEludGVyZmFjZXMoKSkge1xuICAgICAgICAgIGlmIChpc0ludGVyZmFjZVR5cGUoaWZhY2UpKSB7XG4gICAgICAgICAgICBsZXQgaW1wbGVtZW50YXRpb25zID0gdGhpcy5faW1wbGVtZW50YXRpb25zTWFwW2lmYWNlLm5hbWVdO1xuXG4gICAgICAgICAgICBpZiAoaW1wbGVtZW50YXRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zID0gdGhpcy5faW1wbGVtZW50YXRpb25zTWFwW2lmYWNlLm5hbWVdID0ge1xuICAgICAgICAgICAgICAgIG9iamVjdHM6IFtdLFxuICAgICAgICAgICAgICAgIGludGVyZmFjZXM6IFtdLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMuaW50ZXJmYWNlcy5wdXNoKG5hbWVkVHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0VHlwZShuYW1lZFR5cGUpKSB7XG4gICAgICAgIC8vIFN0b3JlIGltcGxlbWVudGF0aW9ucyBieSBvYmplY3RzLlxuICAgICAgICBmb3IgKGNvbnN0IGlmYWNlIG9mIG5hbWVkVHlwZS5nZXRJbnRlcmZhY2VzKCkpIHtcbiAgICAgICAgICBpZiAoaXNJbnRlcmZhY2VUeXBlKGlmYWNlKSkge1xuICAgICAgICAgICAgbGV0IGltcGxlbWVudGF0aW9ucyA9IHRoaXMuX2ltcGxlbWVudGF0aW9uc01hcFtpZmFjZS5uYW1lXTtcblxuICAgICAgICAgICAgaWYgKGltcGxlbWVudGF0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGltcGxlbWVudGF0aW9ucyA9IHRoaXMuX2ltcGxlbWVudGF0aW9uc01hcFtpZmFjZS5uYW1lXSA9IHtcbiAgICAgICAgICAgICAgICBvYmplY3RzOiBbXSxcbiAgICAgICAgICAgICAgICBpbnRlcmZhY2VzOiBbXSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zLm9iamVjdHMucHVzaChuYW1lZFR5cGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gJ0dyYXBoUUxTY2hlbWEnO1xuICB9XG5cbiAgZ2V0UXVlcnlUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLl9xdWVyeVR5cGU7XG4gIH1cblxuICBnZXRNdXRhdGlvblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX211dGF0aW9uVHlwZTtcbiAgfVxuXG4gIGdldFN1YnNjcmlwdGlvblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YnNjcmlwdGlvblR5cGU7XG4gIH1cblxuICBnZXRSb290VHlwZShvcGVyYXRpb24pIHtcbiAgICBzd2l0Y2ggKG9wZXJhdGlvbikge1xuICAgICAgY2FzZSBPcGVyYXRpb25UeXBlTm9kZS5RVUVSWTpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UXVlcnlUeXBlKCk7XG5cbiAgICAgIGNhc2UgT3BlcmF0aW9uVHlwZU5vZGUuTVVUQVRJT046XG4gICAgICAgIHJldHVybiB0aGlzLmdldE11dGF0aW9uVHlwZSgpO1xuXG4gICAgICBjYXNlIE9wZXJhdGlvblR5cGVOb2RlLlNVQlNDUklQVElPTjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3Vic2NyaXB0aW9uVHlwZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldFR5cGVNYXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGVNYXA7XG4gIH1cblxuICBnZXRUeXBlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUeXBlTWFwKClbbmFtZV07XG4gIH1cblxuICBnZXRQb3NzaWJsZVR5cGVzKGFic3RyYWN0VHlwZSkge1xuICAgIHJldHVybiBpc1VuaW9uVHlwZShhYnN0cmFjdFR5cGUpXG4gICAgICA/IGFic3RyYWN0VHlwZS5nZXRUeXBlcygpXG4gICAgICA6IHRoaXMuZ2V0SW1wbGVtZW50YXRpb25zKGFic3RyYWN0VHlwZSkub2JqZWN0cztcbiAgfVxuXG4gIGdldEltcGxlbWVudGF0aW9ucyhpbnRlcmZhY2VUeXBlKSB7XG4gICAgY29uc3QgaW1wbGVtZW50YXRpb25zID0gdGhpcy5faW1wbGVtZW50YXRpb25zTWFwW2ludGVyZmFjZVR5cGUubmFtZV07XG4gICAgcmV0dXJuIGltcGxlbWVudGF0aW9ucyAhPT0gbnVsbCAmJiBpbXBsZW1lbnRhdGlvbnMgIT09IHZvaWQgMFxuICAgICAgPyBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIDoge1xuICAgICAgICAgIG9iamVjdHM6IFtdLFxuICAgICAgICAgIGludGVyZmFjZXM6IFtdLFxuICAgICAgICB9O1xuICB9XG5cbiAgaXNTdWJUeXBlKGFic3RyYWN0VHlwZSwgbWF5YmVTdWJUeXBlKSB7XG4gICAgbGV0IG1hcCA9IHRoaXMuX3N1YlR5cGVNYXBbYWJzdHJhY3RUeXBlLm5hbWVdO1xuXG4gICAgaWYgKG1hcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBtYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgICBpZiAoaXNVbmlvblR5cGUoYWJzdHJhY3RUeXBlKSkge1xuICAgICAgICBmb3IgKGNvbnN0IHR5cGUgb2YgYWJzdHJhY3RUeXBlLmdldFR5cGVzKCkpIHtcbiAgICAgICAgICBtYXBbdHlwZS5uYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGltcGxlbWVudGF0aW9ucyA9IHRoaXMuZ2V0SW1wbGVtZW50YXRpb25zKGFic3RyYWN0VHlwZSk7XG5cbiAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIGltcGxlbWVudGF0aW9ucy5vYmplY3RzKSB7XG4gICAgICAgICAgbWFwW3R5cGUubmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIGltcGxlbWVudGF0aW9ucy5pbnRlcmZhY2VzKSB7XG4gICAgICAgICAgbWFwW3R5cGUubmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3N1YlR5cGVNYXBbYWJzdHJhY3RUeXBlLm5hbWVdID0gbWFwO1xuICAgIH1cblxuICAgIHJldHVybiBtYXBbbWF5YmVTdWJUeXBlLm5hbWVdICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXREaXJlY3RpdmVzKCkge1xuICAgIHJldHVybiB0aGlzLl9kaXJlY3RpdmVzO1xuICB9XG5cbiAgZ2V0RGlyZWN0aXZlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5nZXREaXJlY3RpdmVzKCkuZmluZCgoZGlyZWN0aXZlKSA9PiBkaXJlY3RpdmUubmFtZSA9PT0gbmFtZSk7XG4gIH1cblxuICB0b0NvbmZpZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBxdWVyeTogdGhpcy5nZXRRdWVyeVR5cGUoKSxcbiAgICAgIG11dGF0aW9uOiB0aGlzLmdldE11dGF0aW9uVHlwZSgpLFxuICAgICAgc3Vic2NyaXB0aW9uOiB0aGlzLmdldFN1YnNjcmlwdGlvblR5cGUoKSxcbiAgICAgIHR5cGVzOiBPYmplY3QudmFsdWVzKHRoaXMuZ2V0VHlwZU1hcCgpKSxcbiAgICAgIGRpcmVjdGl2ZXM6IHRoaXMuZ2V0RGlyZWN0aXZlcygpLFxuICAgICAgZXh0ZW5zaW9uczogdGhpcy5leHRlbnNpb25zLFxuICAgICAgYXN0Tm9kZTogdGhpcy5hc3ROb2RlLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IHRoaXMuZXh0ZW5zaW9uQVNUTm9kZXMsXG4gICAgICBhc3N1bWVWYWxpZDogdGhpcy5fX3ZhbGlkYXRpb25FcnJvcnMgIT09IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RSZWZlcmVuY2VkVHlwZXModHlwZSwgdHlwZVNldCkge1xuICBjb25zdCBuYW1lZFR5cGUgPSBnZXROYW1lZFR5cGUodHlwZSk7XG5cbiAgaWYgKCF0eXBlU2V0LmhhcyhuYW1lZFR5cGUpKSB7XG4gICAgdHlwZVNldC5hZGQobmFtZWRUeXBlKTtcblxuICAgIGlmIChpc1VuaW9uVHlwZShuYW1lZFR5cGUpKSB7XG4gICAgICBmb3IgKGNvbnN0IG1lbWJlclR5cGUgb2YgbmFtZWRUeXBlLmdldFR5cGVzKCkpIHtcbiAgICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyhtZW1iZXJUeXBlLCB0eXBlU2V0KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0VHlwZShuYW1lZFR5cGUpIHx8IGlzSW50ZXJmYWNlVHlwZShuYW1lZFR5cGUpKSB7XG4gICAgICBmb3IgKGNvbnN0IGludGVyZmFjZVR5cGUgb2YgbmFtZWRUeXBlLmdldEludGVyZmFjZXMoKSkge1xuICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKGludGVyZmFjZVR5cGUsIHR5cGVTZXQpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIE9iamVjdC52YWx1ZXMobmFtZWRUeXBlLmdldEZpZWxkcygpKSkge1xuICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKGZpZWxkLnR5cGUsIHR5cGVTZXQpO1xuXG4gICAgICAgIGZvciAoY29uc3QgYXJnIG9mIGZpZWxkLmFyZ3MpIHtcbiAgICAgICAgICBjb2xsZWN0UmVmZXJlbmNlZFR5cGVzKGFyZy50eXBlLCB0eXBlU2V0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNJbnB1dE9iamVjdFR5cGUobmFtZWRUeXBlKSkge1xuICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBPYmplY3QudmFsdWVzKG5hbWVkVHlwZS5nZXRGaWVsZHMoKSkpIHtcbiAgICAgICAgY29sbGVjdFJlZmVyZW5jZWRUeXBlcyhmaWVsZC50eXBlLCB0eXBlU2V0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHlwZVNldDtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/type/schema.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/type/validate.mjs":
/*!************************************************!*\
  !*** ./node_modules/graphql/type/validate.mjs ***!
  \************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"assertValidSchema\": function() { return /* binding */ assertValidSchema; },\n/* harmony export */   \"validateSchema\": function() { return /* binding */ validateSchema; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_ast_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../language/ast.mjs */ \"./node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utilities/typeComparators.mjs */ \"./node_modules/graphql/utilities/typeComparators.mjs\");\n/* harmony import */ var _definition_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _directives_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./directives.mjs */ \"./node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _introspection_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./introspection.mjs */ \"./node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _schema_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./schema.mjs */ \"./node_modules/graphql/type/schema.mjs\");\n\n\n\n\n\n\n\n\n/**\n * Implements the \"Type Validation\" sub-sections of the specification's\n * \"Type System\" section.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the Schema is valid.\n */\n\nfunction validateSchema(schema) {\n  // First check to ensure the provided value is in fact a GraphQLSchema.\n  (0,_schema_mjs__WEBPACK_IMPORTED_MODULE_0__.assertSchema)(schema); // If this Schema has already been validated, return the previous results.\n\n  if (schema.__validationErrors) {\n    return schema.__validationErrors;\n  } // Validate the schema, producing a list of errors.\n\n  const context = new SchemaValidationContext(schema);\n  validateRootTypes(context);\n  validateDirectives(context);\n  validateTypes(context); // Persist the results of validation before returning to ensure validation\n  // does not run multiple times for this schema.\n\n  const errors = context.getErrors();\n  schema.__validationErrors = errors;\n  return errors;\n}\n/**\n * Utility function which asserts a schema is valid by throwing an error if\n * it is invalid.\n */\n\nfunction assertValidSchema(schema) {\n  const errors = validateSchema(schema);\n\n  if (errors.length !== 0) {\n    throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n  }\n}\n\nclass SchemaValidationContext {\n  constructor(schema) {\n    this._errors = [];\n    this.schema = schema;\n  }\n\n  reportError(message, nodes) {\n    const _nodes = Array.isArray(nodes) ? nodes.filter(Boolean) : nodes;\n\n    this._errors.push(new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(message, _nodes));\n  }\n\n  getErrors() {\n    return this._errors;\n  }\n}\n\nfunction validateRootTypes(context) {\n  const schema = context.schema;\n  const queryType = schema.getQueryType();\n\n  if (!queryType) {\n    context.reportError('Query root type must be provided.', schema.astNode);\n  } else if (!(0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isObjectType)(queryType)) {\n    var _getOperationTypeNode;\n\n    context.reportError(\n      `Query root type must be Object type, it cannot be ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(\n        queryType,\n      )}.`,\n      (_getOperationTypeNode = getOperationTypeNode(\n        schema,\n        _language_ast_mjs__WEBPACK_IMPORTED_MODULE_4__.OperationTypeNode.QUERY,\n      )) !== null && _getOperationTypeNode !== void 0\n        ? _getOperationTypeNode\n        : queryType.astNode,\n    );\n  }\n\n  const mutationType = schema.getMutationType();\n\n  if (mutationType && !(0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isObjectType)(mutationType)) {\n    var _getOperationTypeNode2;\n\n    context.reportError(\n      'Mutation root type must be Object type if provided, it cannot be ' +\n        `${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(mutationType)}.`,\n      (_getOperationTypeNode2 = getOperationTypeNode(\n        schema,\n        _language_ast_mjs__WEBPACK_IMPORTED_MODULE_4__.OperationTypeNode.MUTATION,\n      )) !== null && _getOperationTypeNode2 !== void 0\n        ? _getOperationTypeNode2\n        : mutationType.astNode,\n    );\n  }\n\n  const subscriptionType = schema.getSubscriptionType();\n\n  if (subscriptionType && !(0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isObjectType)(subscriptionType)) {\n    var _getOperationTypeNode3;\n\n    context.reportError(\n      'Subscription root type must be Object type if provided, it cannot be ' +\n        `${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(subscriptionType)}.`,\n      (_getOperationTypeNode3 = getOperationTypeNode(\n        schema,\n        _language_ast_mjs__WEBPACK_IMPORTED_MODULE_4__.OperationTypeNode.SUBSCRIPTION,\n      )) !== null && _getOperationTypeNode3 !== void 0\n        ? _getOperationTypeNode3\n        : subscriptionType.astNode,\n    );\n  }\n}\n\nfunction getOperationTypeNode(schema, operation) {\n  var _flatMap$find;\n\n  return (_flatMap$find = [schema.astNode, ...schema.extensionASTNodes]\n    .flatMap(\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      (schemaNode) => {\n        var _schemaNode$operation;\n\n        return (\n          /* c8 ignore next */\n          (_schemaNode$operation =\n            schemaNode === null || schemaNode === void 0\n              ? void 0\n              : schemaNode.operationTypes) !== null &&\n            _schemaNode$operation !== void 0\n            ? _schemaNode$operation\n            : []\n        );\n      },\n    )\n    .find((operationNode) => operationNode.operation === operation)) === null ||\n    _flatMap$find === void 0\n    ? void 0\n    : _flatMap$find.type;\n}\n\nfunction validateDirectives(context) {\n  for (const directive of context.schema.getDirectives()) {\n    // Ensure all directives are in fact GraphQL directives.\n    if (!(0,_directives_mjs__WEBPACK_IMPORTED_MODULE_5__.isDirective)(directive)) {\n      context.reportError(\n        `Expected directive but got: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(directive)}.`,\n        directive === null || directive === void 0 ? void 0 : directive.astNode,\n      );\n      continue;\n    } // Ensure they are named correctly.\n\n    validateName(context, directive); // TODO: Ensure proper locations.\n    // Ensure the arguments are valid.\n\n    for (const arg of directive.args) {\n      // Ensure they are named correctly.\n      validateName(context, arg); // Ensure the type is an input type.\n\n      if (!(0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isInputType)(arg.type)) {\n        context.reportError(\n          `The type of @${directive.name}(${arg.name}:) must be Input Type ` +\n            `but got: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(arg.type)}.`,\n          arg.astNode,\n        );\n      }\n\n      if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isRequiredArgument)(arg) && arg.deprecationReason != null) {\n        var _arg$astNode;\n\n        context.reportError(\n          `Required argument @${directive.name}(${arg.name}:) cannot be deprecated.`,\n          [\n            getDeprecatedDirectiveNode(arg.astNode),\n            (_arg$astNode = arg.astNode) === null || _arg$astNode === void 0\n              ? void 0\n              : _arg$astNode.type,\n          ],\n        );\n      }\n    }\n  }\n}\n\nfunction validateName(context, node) {\n  // Ensure names are valid, however introspection types opt out.\n  if (node.name.startsWith('__')) {\n    context.reportError(\n      `Name \"${node.name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n      node.astNode,\n    );\n  }\n}\n\nfunction validateTypes(context) {\n  const validateInputObjectCircularRefs =\n    createInputObjectCircularRefsValidator(context);\n  const typeMap = context.schema.getTypeMap();\n\n  for (const type of Object.values(typeMap)) {\n    // Ensure all provided types are in fact GraphQL type.\n    if (!(0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isNamedType)(type)) {\n      context.reportError(\n        `Expected GraphQL named type but got: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(type)}.`,\n        type.astNode,\n      );\n      continue;\n    } // Ensure it is named correctly (excluding introspection types).\n\n    if (!(0,_introspection_mjs__WEBPACK_IMPORTED_MODULE_6__.isIntrospectionType)(type)) {\n      validateName(context, type);\n    }\n\n    if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isObjectType)(type)) {\n      // Ensure fields are valid\n      validateFields(context, type); // Ensure objects implement the interfaces they claim to.\n\n      validateInterfaces(context, type);\n    } else if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isInterfaceType)(type)) {\n      // Ensure fields are valid.\n      validateFields(context, type); // Ensure interfaces implement the interfaces they claim to.\n\n      validateInterfaces(context, type);\n    } else if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isUnionType)(type)) {\n      // Ensure Unions include valid member types.\n      validateUnionMembers(context, type);\n    } else if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isEnumType)(type)) {\n      // Ensure Enums have valid values.\n      validateEnumValues(context, type);\n    } else if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isInputObjectType)(type)) {\n      // Ensure Input Object fields are valid.\n      validateInputFields(context, type); // Ensure Input Objects do not contain non-nullable circular references\n\n      validateInputObjectCircularRefs(type);\n    }\n  }\n}\n\nfunction validateFields(context, type) {\n  const fields = Object.values(type.getFields()); // Objects and Interfaces both must define one or more fields.\n\n  if (fields.length === 0) {\n    context.reportError(`Type ${type.name} must define one or more fields.`, [\n      type.astNode,\n      ...type.extensionASTNodes,\n    ]);\n  }\n\n  for (const field of fields) {\n    // Ensure they are named correctly.\n    validateName(context, field); // Ensure the type is an output type\n\n    if (!(0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isOutputType)(field.type)) {\n      var _field$astNode;\n\n      context.reportError(\n        `The type of ${type.name}.${field.name} must be Output Type ` +\n          `but got: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(field.type)}.`,\n        (_field$astNode = field.astNode) === null || _field$astNode === void 0\n          ? void 0\n          : _field$astNode.type,\n      );\n    } // Ensure the arguments are valid\n\n    for (const arg of field.args) {\n      const argName = arg.name; // Ensure they are named correctly.\n\n      validateName(context, arg); // Ensure the type is an input type\n\n      if (!(0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isInputType)(arg.type)) {\n        var _arg$astNode2;\n\n        context.reportError(\n          `The type of ${type.name}.${field.name}(${argName}:) must be Input ` +\n            `Type but got: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(arg.type)}.`,\n          (_arg$astNode2 = arg.astNode) === null || _arg$astNode2 === void 0\n            ? void 0\n            : _arg$astNode2.type,\n        );\n      }\n\n      if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isRequiredArgument)(arg) && arg.deprecationReason != null) {\n        var _arg$astNode3;\n\n        context.reportError(\n          `Required argument ${type.name}.${field.name}(${argName}:) cannot be deprecated.`,\n          [\n            getDeprecatedDirectiveNode(arg.astNode),\n            (_arg$astNode3 = arg.astNode) === null || _arg$astNode3 === void 0\n              ? void 0\n              : _arg$astNode3.type,\n          ],\n        );\n      }\n    }\n  }\n}\n\nfunction validateInterfaces(context, type) {\n  const ifaceTypeNames = Object.create(null);\n\n  for (const iface of type.getInterfaces()) {\n    if (!(0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isInterfaceType)(iface)) {\n      context.reportError(\n        `Type ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(type)} must only implement Interface types, ` +\n          `it cannot implement ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(iface)}.`,\n        getAllImplementsInterfaceNodes(type, iface),\n      );\n      continue;\n    }\n\n    if (type === iface) {\n      context.reportError(\n        `Type ${type.name} cannot implement itself because it would create a circular reference.`,\n        getAllImplementsInterfaceNodes(type, iface),\n      );\n      continue;\n    }\n\n    if (ifaceTypeNames[iface.name]) {\n      context.reportError(\n        `Type ${type.name} can only implement ${iface.name} once.`,\n        getAllImplementsInterfaceNodes(type, iface),\n      );\n      continue;\n    }\n\n    ifaceTypeNames[iface.name] = true;\n    validateTypeImplementsAncestors(context, type, iface);\n    validateTypeImplementsInterface(context, type, iface);\n  }\n}\n\nfunction validateTypeImplementsInterface(context, type, iface) {\n  const typeFieldMap = type.getFields(); // Assert each interface field is implemented.\n\n  for (const ifaceField of Object.values(iface.getFields())) {\n    const fieldName = ifaceField.name;\n    const typeField = typeFieldMap[fieldName]; // Assert interface field exists on type.\n\n    if (!typeField) {\n      context.reportError(\n        `Interface field ${iface.name}.${fieldName} expected but ${type.name} does not provide it.`,\n        [ifaceField.astNode, type.astNode, ...type.extensionASTNodes],\n      );\n      continue;\n    } // Assert interface field type is satisfied by type field type, by being\n    // a valid subtype. (covariant)\n\n    if (!(0,_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_7__.isTypeSubTypeOf)(context.schema, typeField.type, ifaceField.type)) {\n      var _ifaceField$astNode, _typeField$astNode;\n\n      context.reportError(\n        `Interface field ${iface.name}.${fieldName} expects type ` +\n          `${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(ifaceField.type)} but ${type.name}.${fieldName} ` +\n          `is type ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(typeField.type)}.`,\n        [\n          (_ifaceField$astNode = ifaceField.astNode) === null ||\n          _ifaceField$astNode === void 0\n            ? void 0\n            : _ifaceField$astNode.type,\n          (_typeField$astNode = typeField.astNode) === null ||\n          _typeField$astNode === void 0\n            ? void 0\n            : _typeField$astNode.type,\n        ],\n      );\n    } // Assert each interface field arg is implemented.\n\n    for (const ifaceArg of ifaceField.args) {\n      const argName = ifaceArg.name;\n      const typeArg = typeField.args.find((arg) => arg.name === argName); // Assert interface field arg exists on object field.\n\n      if (!typeArg) {\n        context.reportError(\n          `Interface field argument ${iface.name}.${fieldName}(${argName}:) expected but ${type.name}.${fieldName} does not provide it.`,\n          [ifaceArg.astNode, typeField.astNode],\n        );\n        continue;\n      } // Assert interface field arg type matches object field arg type.\n      // (invariant)\n      // TODO: change to contravariant?\n\n      if (!(0,_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_7__.isEqualType)(ifaceArg.type, typeArg.type)) {\n        var _ifaceArg$astNode, _typeArg$astNode;\n\n        context.reportError(\n          `Interface field argument ${iface.name}.${fieldName}(${argName}:) ` +\n            `expects type ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(ifaceArg.type)} but ` +\n            `${type.name}.${fieldName}(${argName}:) is type ` +\n            `${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(typeArg.type)}.`,\n          [\n            (_ifaceArg$astNode = ifaceArg.astNode) === null ||\n            _ifaceArg$astNode === void 0\n              ? void 0\n              : _ifaceArg$astNode.type,\n            (_typeArg$astNode = typeArg.astNode) === null ||\n            _typeArg$astNode === void 0\n              ? void 0\n              : _typeArg$astNode.type,\n          ],\n        );\n      } // TODO: validate default values?\n    } // Assert additional arguments must not be required.\n\n    for (const typeArg of typeField.args) {\n      const argName = typeArg.name;\n      const ifaceArg = ifaceField.args.find((arg) => arg.name === argName);\n\n      if (!ifaceArg && (0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isRequiredArgument)(typeArg)) {\n        context.reportError(\n          `Object field ${type.name}.${fieldName} includes required argument ${argName} that is missing from the Interface field ${iface.name}.${fieldName}.`,\n          [typeArg.astNode, ifaceField.astNode],\n        );\n      }\n    }\n  }\n}\n\nfunction validateTypeImplementsAncestors(context, type, iface) {\n  const ifaceInterfaces = type.getInterfaces();\n\n  for (const transitive of iface.getInterfaces()) {\n    if (!ifaceInterfaces.includes(transitive)) {\n      context.reportError(\n        transitive === type\n          ? `Type ${type.name} cannot implement ${iface.name} because it would create a circular reference.`\n          : `Type ${type.name} must implement ${transitive.name} because it is implemented by ${iface.name}.`,\n        [\n          ...getAllImplementsInterfaceNodes(iface, transitive),\n          ...getAllImplementsInterfaceNodes(type, iface),\n        ],\n      );\n    }\n  }\n}\n\nfunction validateUnionMembers(context, union) {\n  const memberTypes = union.getTypes();\n\n  if (memberTypes.length === 0) {\n    context.reportError(\n      `Union type ${union.name} must define one or more member types.`,\n      [union.astNode, ...union.extensionASTNodes],\n    );\n  }\n\n  const includedTypeNames = Object.create(null);\n\n  for (const memberType of memberTypes) {\n    if (includedTypeNames[memberType.name]) {\n      context.reportError(\n        `Union type ${union.name} can only include type ${memberType.name} once.`,\n        getUnionMemberTypeNodes(union, memberType.name),\n      );\n      continue;\n    }\n\n    includedTypeNames[memberType.name] = true;\n\n    if (!(0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isObjectType)(memberType)) {\n      context.reportError(\n        `Union type ${union.name} can only include Object types, ` +\n          `it cannot include ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(memberType)}.`,\n        getUnionMemberTypeNodes(union, String(memberType)),\n      );\n    }\n  }\n}\n\nfunction validateEnumValues(context, enumType) {\n  const enumValues = enumType.getValues();\n\n  if (enumValues.length === 0) {\n    context.reportError(\n      `Enum type ${enumType.name} must define one or more values.`,\n      [enumType.astNode, ...enumType.extensionASTNodes],\n    );\n  }\n\n  for (const enumValue of enumValues) {\n    // Ensure valid name.\n    validateName(context, enumValue);\n  }\n}\n\nfunction validateInputFields(context, inputObj) {\n  const fields = Object.values(inputObj.getFields());\n\n  if (fields.length === 0) {\n    context.reportError(\n      `Input Object type ${inputObj.name} must define one or more fields.`,\n      [inputObj.astNode, ...inputObj.extensionASTNodes],\n    );\n  } // Ensure the arguments are valid\n\n  for (const field of fields) {\n    // Ensure they are named correctly.\n    validateName(context, field); // Ensure the type is an input type\n\n    if (!(0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isInputType)(field.type)) {\n      var _field$astNode2;\n\n      context.reportError(\n        `The type of ${inputObj.name}.${field.name} must be Input Type ` +\n          `but got: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(field.type)}.`,\n        (_field$astNode2 = field.astNode) === null || _field$astNode2 === void 0\n          ? void 0\n          : _field$astNode2.type,\n      );\n    }\n\n    if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isRequiredInputField)(field) && field.deprecationReason != null) {\n      var _field$astNode3;\n\n      context.reportError(\n        `Required input field ${inputObj.name}.${field.name} cannot be deprecated.`,\n        [\n          getDeprecatedDirectiveNode(field.astNode),\n          (_field$astNode3 = field.astNode) === null ||\n          _field$astNode3 === void 0\n            ? void 0\n            : _field$astNode3.type,\n        ],\n      );\n    }\n  }\n}\n\nfunction createInputObjectCircularRefsValidator(context) {\n  // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.\n  // Tracks already visited types to maintain O(N) and to ensure that cycles\n  // are not redundantly reported.\n  const visitedTypes = Object.create(null); // Array of types nodes used to produce meaningful errors\n\n  const fieldPath = []; // Position in the type path\n\n  const fieldPathIndexByTypeName = Object.create(null);\n  return detectCycleRecursive; // This does a straight-forward DFS to find cycles.\n  // It does not terminate when a cycle was found but continues to explore\n  // the graph to find all possible cycles.\n\n  function detectCycleRecursive(inputObj) {\n    if (visitedTypes[inputObj.name]) {\n      return;\n    }\n\n    visitedTypes[inputObj.name] = true;\n    fieldPathIndexByTypeName[inputObj.name] = fieldPath.length;\n    const fields = Object.values(inputObj.getFields());\n\n    for (const field of fields) {\n      if ((0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isNonNullType)(field.type) && (0,_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isInputObjectType)(field.type.ofType)) {\n        const fieldType = field.type.ofType;\n        const cycleIndex = fieldPathIndexByTypeName[fieldType.name];\n        fieldPath.push(field);\n\n        if (cycleIndex === undefined) {\n          detectCycleRecursive(fieldType);\n        } else {\n          const cyclePath = fieldPath.slice(cycleIndex);\n          const pathStr = cyclePath.map((fieldObj) => fieldObj.name).join('.');\n          context.reportError(\n            `Cannot reference Input Object \"${fieldType.name}\" within itself through a series of non-null fields: \"${pathStr}\".`,\n            cyclePath.map((fieldObj) => fieldObj.astNode),\n          );\n        }\n\n        fieldPath.pop();\n      }\n    }\n\n    fieldPathIndexByTypeName[inputObj.name] = undefined;\n  }\n}\n\nfunction getAllImplementsInterfaceNodes(type, iface) {\n  const { astNode, extensionASTNodes } = type;\n  const nodes =\n    astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n  return nodes\n    .flatMap((typeNode) => {\n      var _typeNode$interfaces;\n\n      return (\n        /* c8 ignore next */\n        (_typeNode$interfaces = typeNode.interfaces) !== null &&\n          _typeNode$interfaces !== void 0\n          ? _typeNode$interfaces\n          : []\n      );\n    })\n    .filter((ifaceNode) => ifaceNode.name.value === iface.name);\n}\n\nfunction getUnionMemberTypeNodes(union, typeName) {\n  const { astNode, extensionASTNodes } = union;\n  const nodes =\n    astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n  return nodes\n    .flatMap((unionNode) => {\n      var _unionNode$types;\n\n      return (\n        /* c8 ignore next */\n        (_unionNode$types = unionNode.types) !== null &&\n          _unionNode$types !== void 0\n          ? _unionNode$types\n          : []\n      );\n    })\n    .filter((typeNode) => typeNode.name.value === typeName);\n}\n\nfunction getDeprecatedDirectiveNode(definitionNode) {\n  var _definitionNode$direc;\n\n  return definitionNode === null || definitionNode === void 0\n    ? void 0\n    : (_definitionNode$direc = definitionNode.directives) === null ||\n      _definitionNode$direc === void 0\n    ? void 0\n    : _definitionNode$direc.find(\n        (node) => node.name.value === _directives_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLDeprecatedDirective.name,\n      );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC90eXBlL3ZhbGlkYXRlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQWlEO0FBQ1E7QUFDRDtBQUN3QjtBQWF0RDtBQUNpRDtBQUNqQjtBQUNkO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQSxFQUFFLHlEQUFZLFVBQVU7O0FBRXhCO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDBCQUEwQixpRUFBWTtBQUN0Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUksVUFBVSw2REFBWTtBQUMxQjs7QUFFQTtBQUNBLDJEQUEyRCw2REFBTztBQUNsRTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsUUFBUSxzRUFBdUI7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSx1QkFBdUIsNkRBQVk7QUFDbkM7O0FBRUE7QUFDQTtBQUNBLFdBQVcsNkRBQU8sZUFBZTtBQUNqQztBQUNBO0FBQ0EsUUFBUSx5RUFBMEI7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSwyQkFBMkIsNkRBQVk7QUFDdkM7O0FBRUE7QUFDQTtBQUNBLFdBQVcsNkRBQU8sbUJBQW1CO0FBQ3JDO0FBQ0E7QUFDQSxRQUFRLDZFQUE4QjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLDREQUFXO0FBQ3BCO0FBQ0EsdUNBQXVDLDZEQUFPLFlBQVk7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTixzQ0FBc0M7QUFDdEM7O0FBRUE7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEMsV0FBVyw0REFBVztBQUN0QjtBQUNBLDBCQUEwQixlQUFlLEdBQUcsU0FBUztBQUNyRCx3QkFBd0IsNkRBQU8sV0FBVztBQUMxQztBQUNBO0FBQ0E7O0FBRUEsVUFBVSxtRUFBa0I7QUFDNUI7O0FBRUE7QUFDQSxnQ0FBZ0MsZUFBZSxHQUFHLFNBQVM7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsVUFBVTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUyw0REFBVztBQUNwQjtBQUNBLGdEQUFnRCw2REFBTyxPQUFPO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU4sU0FBUyx1RUFBbUI7QUFDNUI7QUFDQTs7QUFFQSxRQUFRLDZEQUFZO0FBQ3BCO0FBQ0EscUNBQXFDOztBQUVyQztBQUNBLE1BQU0sU0FBUyxnRUFBZTtBQUM5QjtBQUNBLHFDQUFxQzs7QUFFckM7QUFDQSxNQUFNLFNBQVMsNERBQVc7QUFDMUI7QUFDQTtBQUNBLE1BQU0sU0FBUywyREFBVTtBQUN6QjtBQUNBO0FBQ0EsTUFBTSxTQUFTLGtFQUFpQjtBQUNoQztBQUNBLDBDQUEwQzs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrREFBa0Q7O0FBRWxEO0FBQ0EsZ0NBQWdDLFdBQVc7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtDQUFrQzs7QUFFbEMsU0FBUyw2REFBWTtBQUNyQjs7QUFFQTtBQUNBLHVCQUF1QixVQUFVLEdBQUcsWUFBWTtBQUNoRCxzQkFBc0IsNkRBQU8sYUFBYTtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQSxnQ0FBZ0M7O0FBRWhDLGtDQUFrQzs7QUFFbEMsV0FBVyw0REFBVztBQUN0Qjs7QUFFQTtBQUNBLHlCQUF5QixVQUFVLEdBQUcsV0FBVyxHQUFHLFFBQVE7QUFDNUQsNkJBQTZCLDZEQUFPLFdBQVc7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLG1FQUFrQjtBQUM1Qjs7QUFFQTtBQUNBLCtCQUErQixVQUFVLEdBQUcsV0FBVyxHQUFHLFFBQVE7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsU0FBUyxnRUFBZTtBQUN4QjtBQUNBLGdCQUFnQiw2REFBTyxRQUFRO0FBQy9CLGlDQUFpQyw2REFBTyxRQUFRO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0IsV0FBVztBQUMzQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCLFdBQVcscUJBQXFCLFlBQVk7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlDQUF5Qzs7QUFFekM7QUFDQTtBQUNBLCtDQUErQzs7QUFFL0M7QUFDQTtBQUNBLDJCQUEyQixXQUFXLEdBQUcsV0FBVyxlQUFlLFdBQVc7QUFDOUU7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBLFNBQVMsK0VBQWU7QUFDeEI7O0FBRUE7QUFDQSwyQkFBMkIsV0FBVyxHQUFHLFdBQVc7QUFDcEQsYUFBYSw2REFBTyxtQkFBbUIsTUFBTSxVQUFVLEdBQUcsV0FBVztBQUNyRSxxQkFBcUIsNkRBQU8saUJBQWlCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQSwwRUFBMEU7O0FBRTFFO0FBQ0E7QUFDQSxzQ0FBc0MsV0FBVyxHQUFHLFVBQVUsR0FBRyxRQUFRLGtCQUFrQixVQUFVLEdBQUcsV0FBVztBQUNuSDtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQSxXQUFXLDJFQUFXO0FBQ3RCOztBQUVBO0FBQ0Esc0NBQXNDLFdBQVcsR0FBRyxVQUFVLEdBQUcsUUFBUTtBQUN6RSw0QkFBNEIsNkRBQU8saUJBQWlCO0FBQ3BELGVBQWUsVUFBVSxHQUFHLFVBQVUsR0FBRyxRQUFRO0FBQ2pELGVBQWUsNkRBQU8sZUFBZTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLE1BQU07O0FBRU47QUFDQTtBQUNBOztBQUVBLHVCQUF1QixtRUFBa0I7QUFDekM7QUFDQSwwQkFBMEIsVUFBVSxHQUFHLFdBQVcsNkJBQTZCLFNBQVMsMkNBQTJDLFdBQVcsR0FBRyxVQUFVO0FBQzNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFdBQVcsbUJBQW1CLFlBQVk7QUFDOUQsb0JBQW9CLFdBQVcsaUJBQWlCLGlCQUFpQiwrQkFBK0IsV0FBVztBQUMzRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQixZQUFZO0FBQ2hDO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsWUFBWSx3QkFBd0IsaUJBQWlCO0FBQzNFO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLFNBQVMsNkRBQVk7QUFDckI7QUFDQSxzQkFBc0IsWUFBWTtBQUNsQywrQkFBK0IsNkRBQU8sYUFBYTtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDJCQUEyQixlQUFlO0FBQzFDO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQSxrQ0FBa0M7O0FBRWxDLFNBQVMsNERBQVc7QUFDcEI7O0FBRUE7QUFDQSx1QkFBdUIsY0FBYyxHQUFHLFlBQVk7QUFDcEQsc0JBQXNCLDZEQUFPLGFBQWE7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxRQUFRLHFFQUFvQjtBQUM1Qjs7QUFFQTtBQUNBLGdDQUFnQyxjQUFjLEdBQUcsWUFBWTtBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDOztBQUU1Qyx3QkFBd0I7O0FBRXhCO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSw4REFBYSxnQkFBZ0Isa0VBQWlCO0FBQ3hEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxlQUFlLHdEQUF3RCxRQUFRO0FBQzdIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSw2QkFBNkI7QUFDdkM7QUFDQSwyRUFBMkU7O0FBRTNFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0EsVUFBVSw2QkFBNkI7QUFDdkM7QUFDQSwyRUFBMkU7O0FBRTNFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLDRFQUErQjtBQUNyRTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3R5cGUvdmFsaWRhdGUubWpzPzU4ZGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBPcGVyYXRpb25UeXBlTm9kZSB9IGZyb20gJy4uL2xhbmd1YWdlL2FzdC5tanMnO1xuaW1wb3J0IHsgaXNFcXVhbFR5cGUsIGlzVHlwZVN1YlR5cGVPZiB9IGZyb20gJy4uL3V0aWxpdGllcy90eXBlQ29tcGFyYXRvcnMubWpzJztcbmltcG9ydCB7XG4gIGlzRW51bVR5cGUsXG4gIGlzSW5wdXRPYmplY3RUeXBlLFxuICBpc0lucHV0VHlwZSxcbiAgaXNJbnRlcmZhY2VUeXBlLFxuICBpc05hbWVkVHlwZSxcbiAgaXNOb25OdWxsVHlwZSxcbiAgaXNPYmplY3RUeXBlLFxuICBpc091dHB1dFR5cGUsXG4gIGlzUmVxdWlyZWRBcmd1bWVudCxcbiAgaXNSZXF1aXJlZElucHV0RmllbGQsXG4gIGlzVW5pb25UeXBlLFxufSBmcm9tICcuL2RlZmluaXRpb24ubWpzJztcbmltcG9ydCB7IEdyYXBoUUxEZXByZWNhdGVkRGlyZWN0aXZlLCBpc0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy5tanMnO1xuaW1wb3J0IHsgaXNJbnRyb3NwZWN0aW9uVHlwZSB9IGZyb20gJy4vaW50cm9zcGVjdGlvbi5tanMnO1xuaW1wb3J0IHsgYXNzZXJ0U2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEubWpzJztcbi8qKlxuICogSW1wbGVtZW50cyB0aGUgXCJUeXBlIFZhbGlkYXRpb25cIiBzdWItc2VjdGlvbnMgb2YgdGhlIHNwZWNpZmljYXRpb24nc1xuICogXCJUeXBlIFN5c3RlbVwiIHNlY3Rpb24uXG4gKlxuICogVmFsaWRhdGlvbiBydW5zIHN5bmNocm9ub3VzbHksIHJldHVybmluZyBhbiBhcnJheSBvZiBlbmNvdW50ZXJlZCBlcnJvcnMsIG9yXG4gKiBhbiBlbXB0eSBhcnJheSBpZiBubyBlcnJvcnMgd2VyZSBlbmNvdW50ZXJlZCBhbmQgdGhlIFNjaGVtYSBpcyB2YWxpZC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTY2hlbWEoc2NoZW1hKSB7XG4gIC8vIEZpcnN0IGNoZWNrIHRvIGVuc3VyZSB0aGUgcHJvdmlkZWQgdmFsdWUgaXMgaW4gZmFjdCBhIEdyYXBoUUxTY2hlbWEuXG4gIGFzc2VydFNjaGVtYShzY2hlbWEpOyAvLyBJZiB0aGlzIFNjaGVtYSBoYXMgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCwgcmV0dXJuIHRoZSBwcmV2aW91cyByZXN1bHRzLlxuXG4gIGlmIChzY2hlbWEuX192YWxpZGF0aW9uRXJyb3JzKSB7XG4gICAgcmV0dXJuIHNjaGVtYS5fX3ZhbGlkYXRpb25FcnJvcnM7XG4gIH0gLy8gVmFsaWRhdGUgdGhlIHNjaGVtYSwgcHJvZHVjaW5nIGEgbGlzdCBvZiBlcnJvcnMuXG5cbiAgY29uc3QgY29udGV4dCA9IG5ldyBTY2hlbWFWYWxpZGF0aW9uQ29udGV4dChzY2hlbWEpO1xuICB2YWxpZGF0ZVJvb3RUeXBlcyhjb250ZXh0KTtcbiAgdmFsaWRhdGVEaXJlY3RpdmVzKGNvbnRleHQpO1xuICB2YWxpZGF0ZVR5cGVzKGNvbnRleHQpOyAvLyBQZXJzaXN0IHRoZSByZXN1bHRzIG9mIHZhbGlkYXRpb24gYmVmb3JlIHJldHVybmluZyB0byBlbnN1cmUgdmFsaWRhdGlvblxuICAvLyBkb2VzIG5vdCBydW4gbXVsdGlwbGUgdGltZXMgZm9yIHRoaXMgc2NoZW1hLlxuXG4gIGNvbnN0IGVycm9ycyA9IGNvbnRleHQuZ2V0RXJyb3JzKCk7XG4gIHNjaGVtYS5fX3ZhbGlkYXRpb25FcnJvcnMgPSBlcnJvcnM7XG4gIHJldHVybiBlcnJvcnM7XG59XG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gd2hpY2ggYXNzZXJ0cyBhIHNjaGVtYSBpcyB2YWxpZCBieSB0aHJvd2luZyBhbiBlcnJvciBpZlxuICogaXQgaXMgaW52YWxpZC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0VmFsaWRTY2hlbWEoc2NoZW1hKSB7XG4gIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlU2NoZW1hKHNjaGVtYSk7XG5cbiAgaWYgKGVycm9ycy5sZW5ndGggIT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLm1hcCgoZXJyb3IpID0+IGVycm9yLm1lc3NhZ2UpLmpvaW4oJ1xcblxcbicpKTtcbiAgfVxufVxuXG5jbGFzcyBTY2hlbWFWYWxpZGF0aW9uQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKHNjaGVtYSkge1xuICAgIHRoaXMuX2Vycm9ycyA9IFtdO1xuICAgIHRoaXMuc2NoZW1hID0gc2NoZW1hO1xuICB9XG5cbiAgcmVwb3J0RXJyb3IobWVzc2FnZSwgbm9kZXMpIHtcbiAgICBjb25zdCBfbm9kZXMgPSBBcnJheS5pc0FycmF5KG5vZGVzKSA/IG5vZGVzLmZpbHRlcihCb29sZWFuKSA6IG5vZGVzO1xuXG4gICAgdGhpcy5fZXJyb3JzLnB1c2gobmV3IEdyYXBoUUxFcnJvcihtZXNzYWdlLCBfbm9kZXMpKTtcbiAgfVxuXG4gIGdldEVycm9ycygpIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JzO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUm9vdFR5cGVzKGNvbnRleHQpIHtcbiAgY29uc3Qgc2NoZW1hID0gY29udGV4dC5zY2hlbWE7XG4gIGNvbnN0IHF1ZXJ5VHlwZSA9IHNjaGVtYS5nZXRRdWVyeVR5cGUoKTtcblxuICBpZiAoIXF1ZXJ5VHlwZSkge1xuICAgIGNvbnRleHQucmVwb3J0RXJyb3IoJ1F1ZXJ5IHJvb3QgdHlwZSBtdXN0IGJlIHByb3ZpZGVkLicsIHNjaGVtYS5hc3ROb2RlKTtcbiAgfSBlbHNlIGlmICghaXNPYmplY3RUeXBlKHF1ZXJ5VHlwZSkpIHtcbiAgICB2YXIgX2dldE9wZXJhdGlvblR5cGVOb2RlO1xuXG4gICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgIGBRdWVyeSByb290IHR5cGUgbXVzdCBiZSBPYmplY3QgdHlwZSwgaXQgY2Fubm90IGJlICR7aW5zcGVjdChcbiAgICAgICAgcXVlcnlUeXBlLFxuICAgICAgKX0uYCxcbiAgICAgIChfZ2V0T3BlcmF0aW9uVHlwZU5vZGUgPSBnZXRPcGVyYXRpb25UeXBlTm9kZShcbiAgICAgICAgc2NoZW1hLFxuICAgICAgICBPcGVyYXRpb25UeXBlTm9kZS5RVUVSWSxcbiAgICAgICkpICE9PSBudWxsICYmIF9nZXRPcGVyYXRpb25UeXBlTm9kZSAhPT0gdm9pZCAwXG4gICAgICAgID8gX2dldE9wZXJhdGlvblR5cGVOb2RlXG4gICAgICAgIDogcXVlcnlUeXBlLmFzdE5vZGUsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IG11dGF0aW9uVHlwZSA9IHNjaGVtYS5nZXRNdXRhdGlvblR5cGUoKTtcblxuICBpZiAobXV0YXRpb25UeXBlICYmICFpc09iamVjdFR5cGUobXV0YXRpb25UeXBlKSkge1xuICAgIHZhciBfZ2V0T3BlcmF0aW9uVHlwZU5vZGUyO1xuXG4gICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICdNdXRhdGlvbiByb290IHR5cGUgbXVzdCBiZSBPYmplY3QgdHlwZSBpZiBwcm92aWRlZCwgaXQgY2Fubm90IGJlICcgK1xuICAgICAgICBgJHtpbnNwZWN0KG11dGF0aW9uVHlwZSl9LmAsXG4gICAgICAoX2dldE9wZXJhdGlvblR5cGVOb2RlMiA9IGdldE9wZXJhdGlvblR5cGVOb2RlKFxuICAgICAgICBzY2hlbWEsXG4gICAgICAgIE9wZXJhdGlvblR5cGVOb2RlLk1VVEFUSU9OLFxuICAgICAgKSkgIT09IG51bGwgJiYgX2dldE9wZXJhdGlvblR5cGVOb2RlMiAhPT0gdm9pZCAwXG4gICAgICAgID8gX2dldE9wZXJhdGlvblR5cGVOb2RlMlxuICAgICAgICA6IG11dGF0aW9uVHlwZS5hc3ROb2RlLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBzdWJzY3JpcHRpb25UeXBlID0gc2NoZW1hLmdldFN1YnNjcmlwdGlvblR5cGUoKTtcblxuICBpZiAoc3Vic2NyaXB0aW9uVHlwZSAmJiAhaXNPYmplY3RUeXBlKHN1YnNjcmlwdGlvblR5cGUpKSB7XG4gICAgdmFyIF9nZXRPcGVyYXRpb25UeXBlTm9kZTM7XG5cbiAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgJ1N1YnNjcmlwdGlvbiByb290IHR5cGUgbXVzdCBiZSBPYmplY3QgdHlwZSBpZiBwcm92aWRlZCwgaXQgY2Fubm90IGJlICcgK1xuICAgICAgICBgJHtpbnNwZWN0KHN1YnNjcmlwdGlvblR5cGUpfS5gLFxuICAgICAgKF9nZXRPcGVyYXRpb25UeXBlTm9kZTMgPSBnZXRPcGVyYXRpb25UeXBlTm9kZShcbiAgICAgICAgc2NoZW1hLFxuICAgICAgICBPcGVyYXRpb25UeXBlTm9kZS5TVUJTQ1JJUFRJT04sXG4gICAgICApKSAhPT0gbnVsbCAmJiBfZ2V0T3BlcmF0aW9uVHlwZU5vZGUzICE9PSB2b2lkIDBcbiAgICAgICAgPyBfZ2V0T3BlcmF0aW9uVHlwZU5vZGUzXG4gICAgICAgIDogc3Vic2NyaXB0aW9uVHlwZS5hc3ROb2RlLFxuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0T3BlcmF0aW9uVHlwZU5vZGUoc2NoZW1hLCBvcGVyYXRpb24pIHtcbiAgdmFyIF9mbGF0TWFwJGZpbmQ7XG5cbiAgcmV0dXJuIChfZmxhdE1hcCRmaW5kID0gW3NjaGVtYS5hc3ROb2RlLCAuLi5zY2hlbWEuZXh0ZW5zaW9uQVNUTm9kZXNdXG4gICAgLmZsYXRNYXAoXG4gICAgICAvLyBGSVhNRTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuICAgICAgKHNjaGVtYU5vZGUpID0+IHtcbiAgICAgICAgdmFyIF9zY2hlbWFOb2RlJG9wZXJhdGlvbjtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8qIGM4IGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgKF9zY2hlbWFOb2RlJG9wZXJhdGlvbiA9XG4gICAgICAgICAgICBzY2hlbWFOb2RlID09PSBudWxsIHx8IHNjaGVtYU5vZGUgPT09IHZvaWQgMFxuICAgICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgICA6IHNjaGVtYU5vZGUub3BlcmF0aW9uVHlwZXMpICE9PSBudWxsICYmXG4gICAgICAgICAgICBfc2NoZW1hTm9kZSRvcGVyYXRpb24gIT09IHZvaWQgMFxuICAgICAgICAgICAgPyBfc2NoZW1hTm9kZSRvcGVyYXRpb25cbiAgICAgICAgICAgIDogW11cbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgKVxuICAgIC5maW5kKChvcGVyYXRpb25Ob2RlKSA9PiBvcGVyYXRpb25Ob2RlLm9wZXJhdGlvbiA9PT0gb3BlcmF0aW9uKSkgPT09IG51bGwgfHxcbiAgICBfZmxhdE1hcCRmaW5kID09PSB2b2lkIDBcbiAgICA/IHZvaWQgMFxuICAgIDogX2ZsYXRNYXAkZmluZC50eXBlO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZURpcmVjdGl2ZXMoY29udGV4dCkge1xuICBmb3IgKGNvbnN0IGRpcmVjdGl2ZSBvZiBjb250ZXh0LnNjaGVtYS5nZXREaXJlY3RpdmVzKCkpIHtcbiAgICAvLyBFbnN1cmUgYWxsIGRpcmVjdGl2ZXMgYXJlIGluIGZhY3QgR3JhcGhRTCBkaXJlY3RpdmVzLlxuICAgIGlmICghaXNEaXJlY3RpdmUoZGlyZWN0aXZlKSkge1xuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgYEV4cGVjdGVkIGRpcmVjdGl2ZSBidXQgZ290OiAke2luc3BlY3QoZGlyZWN0aXZlKX0uYCxcbiAgICAgICAgZGlyZWN0aXZlID09PSBudWxsIHx8IGRpcmVjdGl2ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGlyZWN0aXZlLmFzdE5vZGUsXG4gICAgICApO1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyBFbnN1cmUgdGhleSBhcmUgbmFtZWQgY29ycmVjdGx5LlxuXG4gICAgdmFsaWRhdGVOYW1lKGNvbnRleHQsIGRpcmVjdGl2ZSk7IC8vIFRPRE86IEVuc3VyZSBwcm9wZXIgbG9jYXRpb25zLlxuICAgIC8vIEVuc3VyZSB0aGUgYXJndW1lbnRzIGFyZSB2YWxpZC5cblxuICAgIGZvciAoY29uc3QgYXJnIG9mIGRpcmVjdGl2ZS5hcmdzKSB7XG4gICAgICAvLyBFbnN1cmUgdGhleSBhcmUgbmFtZWQgY29ycmVjdGx5LlxuICAgICAgdmFsaWRhdGVOYW1lKGNvbnRleHQsIGFyZyk7IC8vIEVuc3VyZSB0aGUgdHlwZSBpcyBhbiBpbnB1dCB0eXBlLlxuXG4gICAgICBpZiAoIWlzSW5wdXRUeXBlKGFyZy50eXBlKSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIGBUaGUgdHlwZSBvZiBAJHtkaXJlY3RpdmUubmFtZX0oJHthcmcubmFtZX06KSBtdXN0IGJlIElucHV0IFR5cGUgYCArXG4gICAgICAgICAgICBgYnV0IGdvdDogJHtpbnNwZWN0KGFyZy50eXBlKX0uYCxcbiAgICAgICAgICBhcmcuYXN0Tm9kZSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzUmVxdWlyZWRBcmd1bWVudChhcmcpICYmIGFyZy5kZXByZWNhdGlvblJlYXNvbiAhPSBudWxsKSB7XG4gICAgICAgIHZhciBfYXJnJGFzdE5vZGU7XG5cbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBgUmVxdWlyZWQgYXJndW1lbnQgQCR7ZGlyZWN0aXZlLm5hbWV9KCR7YXJnLm5hbWV9OikgY2Fubm90IGJlIGRlcHJlY2F0ZWQuYCxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBnZXREZXByZWNhdGVkRGlyZWN0aXZlTm9kZShhcmcuYXN0Tm9kZSksXG4gICAgICAgICAgICAoX2FyZyRhc3ROb2RlID0gYXJnLmFzdE5vZGUpID09PSBudWxsIHx8IF9hcmckYXN0Tm9kZSA9PT0gdm9pZCAwXG4gICAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICAgIDogX2FyZyRhc3ROb2RlLnR5cGUsXG4gICAgICAgICAgXSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVOYW1lKGNvbnRleHQsIG5vZGUpIHtcbiAgLy8gRW5zdXJlIG5hbWVzIGFyZSB2YWxpZCwgaG93ZXZlciBpbnRyb3NwZWN0aW9uIHR5cGVzIG9wdCBvdXQuXG4gIGlmIChub2RlLm5hbWUuc3RhcnRzV2l0aCgnX18nKSkge1xuICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICBgTmFtZSBcIiR7bm9kZS5uYW1lfVwiIG11c3Qgbm90IGJlZ2luIHdpdGggXCJfX1wiLCB3aGljaCBpcyByZXNlcnZlZCBieSBHcmFwaFFMIGludHJvc3BlY3Rpb24uYCxcbiAgICAgIG5vZGUuYXN0Tm9kZSxcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlVHlwZXMoY29udGV4dCkge1xuICBjb25zdCB2YWxpZGF0ZUlucHV0T2JqZWN0Q2lyY3VsYXJSZWZzID1cbiAgICBjcmVhdGVJbnB1dE9iamVjdENpcmN1bGFyUmVmc1ZhbGlkYXRvcihjb250ZXh0KTtcbiAgY29uc3QgdHlwZU1hcCA9IGNvbnRleHQuc2NoZW1hLmdldFR5cGVNYXAoKTtcblxuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LnZhbHVlcyh0eXBlTWFwKSkge1xuICAgIC8vIEVuc3VyZSBhbGwgcHJvdmlkZWQgdHlwZXMgYXJlIGluIGZhY3QgR3JhcGhRTCB0eXBlLlxuICAgIGlmICghaXNOYW1lZFR5cGUodHlwZSkpIHtcbiAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgIGBFeHBlY3RlZCBHcmFwaFFMIG5hbWVkIHR5cGUgYnV0IGdvdDogJHtpbnNwZWN0KHR5cGUpfS5gLFxuICAgICAgICB0eXBlLmFzdE5vZGUsXG4gICAgICApO1xuICAgICAgY29udGludWU7XG4gICAgfSAvLyBFbnN1cmUgaXQgaXMgbmFtZWQgY29ycmVjdGx5IChleGNsdWRpbmcgaW50cm9zcGVjdGlvbiB0eXBlcykuXG5cbiAgICBpZiAoIWlzSW50cm9zcGVjdGlvblR5cGUodHlwZSkpIHtcbiAgICAgIHZhbGlkYXRlTmFtZShjb250ZXh0LCB0eXBlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgICAvLyBFbnN1cmUgZmllbGRzIGFyZSB2YWxpZFxuICAgICAgdmFsaWRhdGVGaWVsZHMoY29udGV4dCwgdHlwZSk7IC8vIEVuc3VyZSBvYmplY3RzIGltcGxlbWVudCB0aGUgaW50ZXJmYWNlcyB0aGV5IGNsYWltIHRvLlxuXG4gICAgICB2YWxpZGF0ZUludGVyZmFjZXMoY29udGV4dCwgdHlwZSk7XG4gICAgfSBlbHNlIGlmIChpc0ludGVyZmFjZVR5cGUodHlwZSkpIHtcbiAgICAgIC8vIEVuc3VyZSBmaWVsZHMgYXJlIHZhbGlkLlxuICAgICAgdmFsaWRhdGVGaWVsZHMoY29udGV4dCwgdHlwZSk7IC8vIEVuc3VyZSBpbnRlcmZhY2VzIGltcGxlbWVudCB0aGUgaW50ZXJmYWNlcyB0aGV5IGNsYWltIHRvLlxuXG4gICAgICB2YWxpZGF0ZUludGVyZmFjZXMoY29udGV4dCwgdHlwZSk7XG4gICAgfSBlbHNlIGlmIChpc1VuaW9uVHlwZSh0eXBlKSkge1xuICAgICAgLy8gRW5zdXJlIFVuaW9ucyBpbmNsdWRlIHZhbGlkIG1lbWJlciB0eXBlcy5cbiAgICAgIHZhbGlkYXRlVW5pb25NZW1iZXJzKGNvbnRleHQsIHR5cGUpO1xuICAgIH0gZWxzZSBpZiAoaXNFbnVtVHlwZSh0eXBlKSkge1xuICAgICAgLy8gRW5zdXJlIEVudW1zIGhhdmUgdmFsaWQgdmFsdWVzLlxuICAgICAgdmFsaWRhdGVFbnVtVmFsdWVzKGNvbnRleHQsIHR5cGUpO1xuICAgIH0gZWxzZSBpZiAoaXNJbnB1dE9iamVjdFR5cGUodHlwZSkpIHtcbiAgICAgIC8vIEVuc3VyZSBJbnB1dCBPYmplY3QgZmllbGRzIGFyZSB2YWxpZC5cbiAgICAgIHZhbGlkYXRlSW5wdXRGaWVsZHMoY29udGV4dCwgdHlwZSk7IC8vIEVuc3VyZSBJbnB1dCBPYmplY3RzIGRvIG5vdCBjb250YWluIG5vbi1udWxsYWJsZSBjaXJjdWxhciByZWZlcmVuY2VzXG5cbiAgICAgIHZhbGlkYXRlSW5wdXRPYmplY3RDaXJjdWxhclJlZnModHlwZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRmllbGRzKGNvbnRleHQsIHR5cGUpIHtcbiAgY29uc3QgZmllbGRzID0gT2JqZWN0LnZhbHVlcyh0eXBlLmdldEZpZWxkcygpKTsgLy8gT2JqZWN0cyBhbmQgSW50ZXJmYWNlcyBib3RoIG11c3QgZGVmaW5lIG9uZSBvciBtb3JlIGZpZWxkcy5cblxuICBpZiAoZmllbGRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnRleHQucmVwb3J0RXJyb3IoYFR5cGUgJHt0eXBlLm5hbWV9IG11c3QgZGVmaW5lIG9uZSBvciBtb3JlIGZpZWxkcy5gLCBbXG4gICAgICB0eXBlLmFzdE5vZGUsXG4gICAgICAuLi50eXBlLmV4dGVuc2lvbkFTVE5vZGVzLFxuICAgIF0pO1xuICB9XG5cbiAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICAvLyBFbnN1cmUgdGhleSBhcmUgbmFtZWQgY29ycmVjdGx5LlxuICAgIHZhbGlkYXRlTmFtZShjb250ZXh0LCBmaWVsZCk7IC8vIEVuc3VyZSB0aGUgdHlwZSBpcyBhbiBvdXRwdXQgdHlwZVxuXG4gICAgaWYgKCFpc091dHB1dFR5cGUoZmllbGQudHlwZSkpIHtcbiAgICAgIHZhciBfZmllbGQkYXN0Tm9kZTtcblxuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgYFRoZSB0eXBlIG9mICR7dHlwZS5uYW1lfS4ke2ZpZWxkLm5hbWV9IG11c3QgYmUgT3V0cHV0IFR5cGUgYCArXG4gICAgICAgICAgYGJ1dCBnb3Q6ICR7aW5zcGVjdChmaWVsZC50eXBlKX0uYCxcbiAgICAgICAgKF9maWVsZCRhc3ROb2RlID0gZmllbGQuYXN0Tm9kZSkgPT09IG51bGwgfHwgX2ZpZWxkJGFzdE5vZGUgPT09IHZvaWQgMFxuICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgOiBfZmllbGQkYXN0Tm9kZS50eXBlLFxuICAgICAgKTtcbiAgICB9IC8vIEVuc3VyZSB0aGUgYXJndW1lbnRzIGFyZSB2YWxpZFxuXG4gICAgZm9yIChjb25zdCBhcmcgb2YgZmllbGQuYXJncykge1xuICAgICAgY29uc3QgYXJnTmFtZSA9IGFyZy5uYW1lOyAvLyBFbnN1cmUgdGhleSBhcmUgbmFtZWQgY29ycmVjdGx5LlxuXG4gICAgICB2YWxpZGF0ZU5hbWUoY29udGV4dCwgYXJnKTsgLy8gRW5zdXJlIHRoZSB0eXBlIGlzIGFuIGlucHV0IHR5cGVcblxuICAgICAgaWYgKCFpc0lucHV0VHlwZShhcmcudHlwZSkpIHtcbiAgICAgICAgdmFyIF9hcmckYXN0Tm9kZTI7XG5cbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBgVGhlIHR5cGUgb2YgJHt0eXBlLm5hbWV9LiR7ZmllbGQubmFtZX0oJHthcmdOYW1lfTopIG11c3QgYmUgSW5wdXQgYCArXG4gICAgICAgICAgICBgVHlwZSBidXQgZ290OiAke2luc3BlY3QoYXJnLnR5cGUpfS5gLFxuICAgICAgICAgIChfYXJnJGFzdE5vZGUyID0gYXJnLmFzdE5vZGUpID09PSBudWxsIHx8IF9hcmckYXN0Tm9kZTIgPT09IHZvaWQgMFxuICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgIDogX2FyZyRhc3ROb2RlMi50eXBlLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNSZXF1aXJlZEFyZ3VtZW50KGFyZykgJiYgYXJnLmRlcHJlY2F0aW9uUmVhc29uICE9IG51bGwpIHtcbiAgICAgICAgdmFyIF9hcmckYXN0Tm9kZTM7XG5cbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBgUmVxdWlyZWQgYXJndW1lbnQgJHt0eXBlLm5hbWV9LiR7ZmllbGQubmFtZX0oJHthcmdOYW1lfTopIGNhbm5vdCBiZSBkZXByZWNhdGVkLmAsXG4gICAgICAgICAgW1xuICAgICAgICAgICAgZ2V0RGVwcmVjYXRlZERpcmVjdGl2ZU5vZGUoYXJnLmFzdE5vZGUpLFxuICAgICAgICAgICAgKF9hcmckYXN0Tm9kZTMgPSBhcmcuYXN0Tm9kZSkgPT09IG51bGwgfHwgX2FyZyRhc3ROb2RlMyA9PT0gdm9pZCAwXG4gICAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICAgIDogX2FyZyRhc3ROb2RlMy50eXBlLFxuICAgICAgICAgIF0sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlSW50ZXJmYWNlcyhjb250ZXh0LCB0eXBlKSB7XG4gIGNvbnN0IGlmYWNlVHlwZU5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKGNvbnN0IGlmYWNlIG9mIHR5cGUuZ2V0SW50ZXJmYWNlcygpKSB7XG4gICAgaWYgKCFpc0ludGVyZmFjZVR5cGUoaWZhY2UpKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICBgVHlwZSAke2luc3BlY3QodHlwZSl9IG11c3Qgb25seSBpbXBsZW1lbnQgSW50ZXJmYWNlIHR5cGVzLCBgICtcbiAgICAgICAgICBgaXQgY2Fubm90IGltcGxlbWVudCAke2luc3BlY3QoaWZhY2UpfS5gLFxuICAgICAgICBnZXRBbGxJbXBsZW1lbnRzSW50ZXJmYWNlTm9kZXModHlwZSwgaWZhY2UpLFxuICAgICAgKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSBpZmFjZSkge1xuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgYFR5cGUgJHt0eXBlLm5hbWV9IGNhbm5vdCBpbXBsZW1lbnQgaXRzZWxmIGJlY2F1c2UgaXQgd291bGQgY3JlYXRlIGEgY2lyY3VsYXIgcmVmZXJlbmNlLmAsXG4gICAgICAgIGdldEFsbEltcGxlbWVudHNJbnRlcmZhY2VOb2Rlcyh0eXBlLCBpZmFjZSksXG4gICAgICApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGlmYWNlVHlwZU5hbWVzW2lmYWNlLm5hbWVdKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICBgVHlwZSAke3R5cGUubmFtZX0gY2FuIG9ubHkgaW1wbGVtZW50ICR7aWZhY2UubmFtZX0gb25jZS5gLFxuICAgICAgICBnZXRBbGxJbXBsZW1lbnRzSW50ZXJmYWNlTm9kZXModHlwZSwgaWZhY2UpLFxuICAgICAgKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmYWNlVHlwZU5hbWVzW2lmYWNlLm5hbWVdID0gdHJ1ZTtcbiAgICB2YWxpZGF0ZVR5cGVJbXBsZW1lbnRzQW5jZXN0b3JzKGNvbnRleHQsIHR5cGUsIGlmYWNlKTtcbiAgICB2YWxpZGF0ZVR5cGVJbXBsZW1lbnRzSW50ZXJmYWNlKGNvbnRleHQsIHR5cGUsIGlmYWNlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVR5cGVJbXBsZW1lbnRzSW50ZXJmYWNlKGNvbnRleHQsIHR5cGUsIGlmYWNlKSB7XG4gIGNvbnN0IHR5cGVGaWVsZE1hcCA9IHR5cGUuZ2V0RmllbGRzKCk7IC8vIEFzc2VydCBlYWNoIGludGVyZmFjZSBmaWVsZCBpcyBpbXBsZW1lbnRlZC5cblxuICBmb3IgKGNvbnN0IGlmYWNlRmllbGQgb2YgT2JqZWN0LnZhbHVlcyhpZmFjZS5nZXRGaWVsZHMoKSkpIHtcbiAgICBjb25zdCBmaWVsZE5hbWUgPSBpZmFjZUZpZWxkLm5hbWU7XG4gICAgY29uc3QgdHlwZUZpZWxkID0gdHlwZUZpZWxkTWFwW2ZpZWxkTmFtZV07IC8vIEFzc2VydCBpbnRlcmZhY2UgZmllbGQgZXhpc3RzIG9uIHR5cGUuXG5cbiAgICBpZiAoIXR5cGVGaWVsZCkge1xuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgYEludGVyZmFjZSBmaWVsZCAke2lmYWNlLm5hbWV9LiR7ZmllbGROYW1lfSBleHBlY3RlZCBidXQgJHt0eXBlLm5hbWV9IGRvZXMgbm90IHByb3ZpZGUgaXQuYCxcbiAgICAgICAgW2lmYWNlRmllbGQuYXN0Tm9kZSwgdHlwZS5hc3ROb2RlLCAuLi50eXBlLmV4dGVuc2lvbkFTVE5vZGVzXSxcbiAgICAgICk7XG4gICAgICBjb250aW51ZTtcbiAgICB9IC8vIEFzc2VydCBpbnRlcmZhY2UgZmllbGQgdHlwZSBpcyBzYXRpc2ZpZWQgYnkgdHlwZSBmaWVsZCB0eXBlLCBieSBiZWluZ1xuICAgIC8vIGEgdmFsaWQgc3VidHlwZS4gKGNvdmFyaWFudClcblxuICAgIGlmICghaXNUeXBlU3ViVHlwZU9mKGNvbnRleHQuc2NoZW1hLCB0eXBlRmllbGQudHlwZSwgaWZhY2VGaWVsZC50eXBlKSkge1xuICAgICAgdmFyIF9pZmFjZUZpZWxkJGFzdE5vZGUsIF90eXBlRmllbGQkYXN0Tm9kZTtcblxuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgYEludGVyZmFjZSBmaWVsZCAke2lmYWNlLm5hbWV9LiR7ZmllbGROYW1lfSBleHBlY3RzIHR5cGUgYCArXG4gICAgICAgICAgYCR7aW5zcGVjdChpZmFjZUZpZWxkLnR5cGUpfSBidXQgJHt0eXBlLm5hbWV9LiR7ZmllbGROYW1lfSBgICtcbiAgICAgICAgICBgaXMgdHlwZSAke2luc3BlY3QodHlwZUZpZWxkLnR5cGUpfS5gLFxuICAgICAgICBbXG4gICAgICAgICAgKF9pZmFjZUZpZWxkJGFzdE5vZGUgPSBpZmFjZUZpZWxkLmFzdE5vZGUpID09PSBudWxsIHx8XG4gICAgICAgICAgX2lmYWNlRmllbGQkYXN0Tm9kZSA9PT0gdm9pZCAwXG4gICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgOiBfaWZhY2VGaWVsZCRhc3ROb2RlLnR5cGUsXG4gICAgICAgICAgKF90eXBlRmllbGQkYXN0Tm9kZSA9IHR5cGVGaWVsZC5hc3ROb2RlKSA9PT0gbnVsbCB8fFxuICAgICAgICAgIF90eXBlRmllbGQkYXN0Tm9kZSA9PT0gdm9pZCAwXG4gICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgOiBfdHlwZUZpZWxkJGFzdE5vZGUudHlwZSxcbiAgICAgICAgXSxcbiAgICAgICk7XG4gICAgfSAvLyBBc3NlcnQgZWFjaCBpbnRlcmZhY2UgZmllbGQgYXJnIGlzIGltcGxlbWVudGVkLlxuXG4gICAgZm9yIChjb25zdCBpZmFjZUFyZyBvZiBpZmFjZUZpZWxkLmFyZ3MpIHtcbiAgICAgIGNvbnN0IGFyZ05hbWUgPSBpZmFjZUFyZy5uYW1lO1xuICAgICAgY29uc3QgdHlwZUFyZyA9IHR5cGVGaWVsZC5hcmdzLmZpbmQoKGFyZykgPT4gYXJnLm5hbWUgPT09IGFyZ05hbWUpOyAvLyBBc3NlcnQgaW50ZXJmYWNlIGZpZWxkIGFyZyBleGlzdHMgb24gb2JqZWN0IGZpZWxkLlxuXG4gICAgICBpZiAoIXR5cGVBcmcpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBgSW50ZXJmYWNlIGZpZWxkIGFyZ3VtZW50ICR7aWZhY2UubmFtZX0uJHtmaWVsZE5hbWV9KCR7YXJnTmFtZX06KSBleHBlY3RlZCBidXQgJHt0eXBlLm5hbWV9LiR7ZmllbGROYW1lfSBkb2VzIG5vdCBwcm92aWRlIGl0LmAsXG4gICAgICAgICAgW2lmYWNlQXJnLmFzdE5vZGUsIHR5cGVGaWVsZC5hc3ROb2RlXSxcbiAgICAgICAgKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIEFzc2VydCBpbnRlcmZhY2UgZmllbGQgYXJnIHR5cGUgbWF0Y2hlcyBvYmplY3QgZmllbGQgYXJnIHR5cGUuXG4gICAgICAvLyAoaW52YXJpYW50KVxuICAgICAgLy8gVE9ETzogY2hhbmdlIHRvIGNvbnRyYXZhcmlhbnQ/XG5cbiAgICAgIGlmICghaXNFcXVhbFR5cGUoaWZhY2VBcmcudHlwZSwgdHlwZUFyZy50eXBlKSkge1xuICAgICAgICB2YXIgX2lmYWNlQXJnJGFzdE5vZGUsIF90eXBlQXJnJGFzdE5vZGU7XG5cbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBgSW50ZXJmYWNlIGZpZWxkIGFyZ3VtZW50ICR7aWZhY2UubmFtZX0uJHtmaWVsZE5hbWV9KCR7YXJnTmFtZX06KSBgICtcbiAgICAgICAgICAgIGBleHBlY3RzIHR5cGUgJHtpbnNwZWN0KGlmYWNlQXJnLnR5cGUpfSBidXQgYCArXG4gICAgICAgICAgICBgJHt0eXBlLm5hbWV9LiR7ZmllbGROYW1lfSgke2FyZ05hbWV9OikgaXMgdHlwZSBgICtcbiAgICAgICAgICAgIGAke2luc3BlY3QodHlwZUFyZy50eXBlKX0uYCxcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoX2lmYWNlQXJnJGFzdE5vZGUgPSBpZmFjZUFyZy5hc3ROb2RlKSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgX2lmYWNlQXJnJGFzdE5vZGUgPT09IHZvaWQgMFxuICAgICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgICA6IF9pZmFjZUFyZyRhc3ROb2RlLnR5cGUsXG4gICAgICAgICAgICAoX3R5cGVBcmckYXN0Tm9kZSA9IHR5cGVBcmcuYXN0Tm9kZSkgPT09IG51bGwgfHxcbiAgICAgICAgICAgIF90eXBlQXJnJGFzdE5vZGUgPT09IHZvaWQgMFxuICAgICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgICA6IF90eXBlQXJnJGFzdE5vZGUudHlwZSxcbiAgICAgICAgICBdLFxuICAgICAgICApO1xuICAgICAgfSAvLyBUT0RPOiB2YWxpZGF0ZSBkZWZhdWx0IHZhbHVlcz9cbiAgICB9IC8vIEFzc2VydCBhZGRpdGlvbmFsIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSByZXF1aXJlZC5cblxuICAgIGZvciAoY29uc3QgdHlwZUFyZyBvZiB0eXBlRmllbGQuYXJncykge1xuICAgICAgY29uc3QgYXJnTmFtZSA9IHR5cGVBcmcubmFtZTtcbiAgICAgIGNvbnN0IGlmYWNlQXJnID0gaWZhY2VGaWVsZC5hcmdzLmZpbmQoKGFyZykgPT4gYXJnLm5hbWUgPT09IGFyZ05hbWUpO1xuXG4gICAgICBpZiAoIWlmYWNlQXJnICYmIGlzUmVxdWlyZWRBcmd1bWVudCh0eXBlQXJnKSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIGBPYmplY3QgZmllbGQgJHt0eXBlLm5hbWV9LiR7ZmllbGROYW1lfSBpbmNsdWRlcyByZXF1aXJlZCBhcmd1bWVudCAke2FyZ05hbWV9IHRoYXQgaXMgbWlzc2luZyBmcm9tIHRoZSBJbnRlcmZhY2UgZmllbGQgJHtpZmFjZS5uYW1lfS4ke2ZpZWxkTmFtZX0uYCxcbiAgICAgICAgICBbdHlwZUFyZy5hc3ROb2RlLCBpZmFjZUZpZWxkLmFzdE5vZGVdLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVR5cGVJbXBsZW1lbnRzQW5jZXN0b3JzKGNvbnRleHQsIHR5cGUsIGlmYWNlKSB7XG4gIGNvbnN0IGlmYWNlSW50ZXJmYWNlcyA9IHR5cGUuZ2V0SW50ZXJmYWNlcygpO1xuXG4gIGZvciAoY29uc3QgdHJhbnNpdGl2ZSBvZiBpZmFjZS5nZXRJbnRlcmZhY2VzKCkpIHtcbiAgICBpZiAoIWlmYWNlSW50ZXJmYWNlcy5pbmNsdWRlcyh0cmFuc2l0aXZlKSkge1xuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgdHJhbnNpdGl2ZSA9PT0gdHlwZVxuICAgICAgICAgID8gYFR5cGUgJHt0eXBlLm5hbWV9IGNhbm5vdCBpbXBsZW1lbnQgJHtpZmFjZS5uYW1lfSBiZWNhdXNlIGl0IHdvdWxkIGNyZWF0ZSBhIGNpcmN1bGFyIHJlZmVyZW5jZS5gXG4gICAgICAgICAgOiBgVHlwZSAke3R5cGUubmFtZX0gbXVzdCBpbXBsZW1lbnQgJHt0cmFuc2l0aXZlLm5hbWV9IGJlY2F1c2UgaXQgaXMgaW1wbGVtZW50ZWQgYnkgJHtpZmFjZS5uYW1lfS5gLFxuICAgICAgICBbXG4gICAgICAgICAgLi4uZ2V0QWxsSW1wbGVtZW50c0ludGVyZmFjZU5vZGVzKGlmYWNlLCB0cmFuc2l0aXZlKSxcbiAgICAgICAgICAuLi5nZXRBbGxJbXBsZW1lbnRzSW50ZXJmYWNlTm9kZXModHlwZSwgaWZhY2UpLFxuICAgICAgICBdLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVVbmlvbk1lbWJlcnMoY29udGV4dCwgdW5pb24pIHtcbiAgY29uc3QgbWVtYmVyVHlwZXMgPSB1bmlvbi5nZXRUeXBlcygpO1xuXG4gIGlmIChtZW1iZXJUeXBlcy5sZW5ndGggPT09IDApIHtcbiAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgYFVuaW9uIHR5cGUgJHt1bmlvbi5uYW1lfSBtdXN0IGRlZmluZSBvbmUgb3IgbW9yZSBtZW1iZXIgdHlwZXMuYCxcbiAgICAgIFt1bmlvbi5hc3ROb2RlLCAuLi51bmlvbi5leHRlbnNpb25BU1ROb2Rlc10sXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGluY2x1ZGVkVHlwZU5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKGNvbnN0IG1lbWJlclR5cGUgb2YgbWVtYmVyVHlwZXMpIHtcbiAgICBpZiAoaW5jbHVkZWRUeXBlTmFtZXNbbWVtYmVyVHlwZS5uYW1lXSkge1xuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgYFVuaW9uIHR5cGUgJHt1bmlvbi5uYW1lfSBjYW4gb25seSBpbmNsdWRlIHR5cGUgJHttZW1iZXJUeXBlLm5hbWV9IG9uY2UuYCxcbiAgICAgICAgZ2V0VW5pb25NZW1iZXJUeXBlTm9kZXModW5pb24sIG1lbWJlclR5cGUubmFtZSksXG4gICAgICApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaW5jbHVkZWRUeXBlTmFtZXNbbWVtYmVyVHlwZS5uYW1lXSA9IHRydWU7XG5cbiAgICBpZiAoIWlzT2JqZWN0VHlwZShtZW1iZXJUeXBlKSkge1xuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgYFVuaW9uIHR5cGUgJHt1bmlvbi5uYW1lfSBjYW4gb25seSBpbmNsdWRlIE9iamVjdCB0eXBlcywgYCArXG4gICAgICAgICAgYGl0IGNhbm5vdCBpbmNsdWRlICR7aW5zcGVjdChtZW1iZXJUeXBlKX0uYCxcbiAgICAgICAgZ2V0VW5pb25NZW1iZXJUeXBlTm9kZXModW5pb24sIFN0cmluZyhtZW1iZXJUeXBlKSksXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUVudW1WYWx1ZXMoY29udGV4dCwgZW51bVR5cGUpIHtcbiAgY29uc3QgZW51bVZhbHVlcyA9IGVudW1UeXBlLmdldFZhbHVlcygpO1xuXG4gIGlmIChlbnVtVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICBgRW51bSB0eXBlICR7ZW51bVR5cGUubmFtZX0gbXVzdCBkZWZpbmUgb25lIG9yIG1vcmUgdmFsdWVzLmAsXG4gICAgICBbZW51bVR5cGUuYXN0Tm9kZSwgLi4uZW51bVR5cGUuZXh0ZW5zaW9uQVNUTm9kZXNdLFxuICAgICk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGVudW1WYWx1ZSBvZiBlbnVtVmFsdWVzKSB7XG4gICAgLy8gRW5zdXJlIHZhbGlkIG5hbWUuXG4gICAgdmFsaWRhdGVOYW1lKGNvbnRleHQsIGVudW1WYWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVJbnB1dEZpZWxkcyhjb250ZXh0LCBpbnB1dE9iaikge1xuICBjb25zdCBmaWVsZHMgPSBPYmplY3QudmFsdWVzKGlucHV0T2JqLmdldEZpZWxkcygpKTtcblxuICBpZiAoZmllbGRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICBgSW5wdXQgT2JqZWN0IHR5cGUgJHtpbnB1dE9iai5uYW1lfSBtdXN0IGRlZmluZSBvbmUgb3IgbW9yZSBmaWVsZHMuYCxcbiAgICAgIFtpbnB1dE9iai5hc3ROb2RlLCAuLi5pbnB1dE9iai5leHRlbnNpb25BU1ROb2Rlc10sXG4gICAgKTtcbiAgfSAvLyBFbnN1cmUgdGhlIGFyZ3VtZW50cyBhcmUgdmFsaWRcblxuICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgIC8vIEVuc3VyZSB0aGV5IGFyZSBuYW1lZCBjb3JyZWN0bHkuXG4gICAgdmFsaWRhdGVOYW1lKGNvbnRleHQsIGZpZWxkKTsgLy8gRW5zdXJlIHRoZSB0eXBlIGlzIGFuIGlucHV0IHR5cGVcblxuICAgIGlmICghaXNJbnB1dFR5cGUoZmllbGQudHlwZSkpIHtcbiAgICAgIHZhciBfZmllbGQkYXN0Tm9kZTI7XG5cbiAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgIGBUaGUgdHlwZSBvZiAke2lucHV0T2JqLm5hbWV9LiR7ZmllbGQubmFtZX0gbXVzdCBiZSBJbnB1dCBUeXBlIGAgK1xuICAgICAgICAgIGBidXQgZ290OiAke2luc3BlY3QoZmllbGQudHlwZSl9LmAsXG4gICAgICAgIChfZmllbGQkYXN0Tm9kZTIgPSBmaWVsZC5hc3ROb2RlKSA9PT0gbnVsbCB8fCBfZmllbGQkYXN0Tm9kZTIgPT09IHZvaWQgMFxuICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgOiBfZmllbGQkYXN0Tm9kZTIudHlwZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGlzUmVxdWlyZWRJbnB1dEZpZWxkKGZpZWxkKSAmJiBmaWVsZC5kZXByZWNhdGlvblJlYXNvbiAhPSBudWxsKSB7XG4gICAgICB2YXIgX2ZpZWxkJGFzdE5vZGUzO1xuXG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICBgUmVxdWlyZWQgaW5wdXQgZmllbGQgJHtpbnB1dE9iai5uYW1lfS4ke2ZpZWxkLm5hbWV9IGNhbm5vdCBiZSBkZXByZWNhdGVkLmAsXG4gICAgICAgIFtcbiAgICAgICAgICBnZXREZXByZWNhdGVkRGlyZWN0aXZlTm9kZShmaWVsZC5hc3ROb2RlKSxcbiAgICAgICAgICAoX2ZpZWxkJGFzdE5vZGUzID0gZmllbGQuYXN0Tm9kZSkgPT09IG51bGwgfHxcbiAgICAgICAgICBfZmllbGQkYXN0Tm9kZTMgPT09IHZvaWQgMFxuICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgIDogX2ZpZWxkJGFzdE5vZGUzLnR5cGUsXG4gICAgICAgIF0sXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVJbnB1dE9iamVjdENpcmN1bGFyUmVmc1ZhbGlkYXRvcihjb250ZXh0KSB7XG4gIC8vIE1vZGlmaWVkIGNvcHkgb2YgYWxnb3JpdGhtIGZyb20gJ3NyYy92YWxpZGF0aW9uL3J1bGVzL05vRnJhZ21lbnRDeWNsZXMuanMnLlxuICAvLyBUcmFja3MgYWxyZWFkeSB2aXNpdGVkIHR5cGVzIHRvIG1haW50YWluIE8oTikgYW5kIHRvIGVuc3VyZSB0aGF0IGN5Y2xlc1xuICAvLyBhcmUgbm90IHJlZHVuZGFudGx5IHJlcG9ydGVkLlxuICBjb25zdCB2aXNpdGVkVHlwZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpOyAvLyBBcnJheSBvZiB0eXBlcyBub2RlcyB1c2VkIHRvIHByb2R1Y2UgbWVhbmluZ2Z1bCBlcnJvcnNcblxuICBjb25zdCBmaWVsZFBhdGggPSBbXTsgLy8gUG9zaXRpb24gaW4gdGhlIHR5cGUgcGF0aFxuXG4gIGNvbnN0IGZpZWxkUGF0aEluZGV4QnlUeXBlTmFtZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiBkZXRlY3RDeWNsZVJlY3Vyc2l2ZTsgLy8gVGhpcyBkb2VzIGEgc3RyYWlnaHQtZm9yd2FyZCBERlMgdG8gZmluZCBjeWNsZXMuXG4gIC8vIEl0IGRvZXMgbm90IHRlcm1pbmF0ZSB3aGVuIGEgY3ljbGUgd2FzIGZvdW5kIGJ1dCBjb250aW51ZXMgdG8gZXhwbG9yZVxuICAvLyB0aGUgZ3JhcGggdG8gZmluZCBhbGwgcG9zc2libGUgY3ljbGVzLlxuXG4gIGZ1bmN0aW9uIGRldGVjdEN5Y2xlUmVjdXJzaXZlKGlucHV0T2JqKSB7XG4gICAgaWYgKHZpc2l0ZWRUeXBlc1tpbnB1dE9iai5uYW1lXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZpc2l0ZWRUeXBlc1tpbnB1dE9iai5uYW1lXSA9IHRydWU7XG4gICAgZmllbGRQYXRoSW5kZXhCeVR5cGVOYW1lW2lucHV0T2JqLm5hbWVdID0gZmllbGRQYXRoLmxlbmd0aDtcbiAgICBjb25zdCBmaWVsZHMgPSBPYmplY3QudmFsdWVzKGlucHV0T2JqLmdldEZpZWxkcygpKTtcblxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgICBpZiAoaXNOb25OdWxsVHlwZShmaWVsZC50eXBlKSAmJiBpc0lucHV0T2JqZWN0VHlwZShmaWVsZC50eXBlLm9mVHlwZSkpIHtcbiAgICAgICAgY29uc3QgZmllbGRUeXBlID0gZmllbGQudHlwZS5vZlR5cGU7XG4gICAgICAgIGNvbnN0IGN5Y2xlSW5kZXggPSBmaWVsZFBhdGhJbmRleEJ5VHlwZU5hbWVbZmllbGRUeXBlLm5hbWVdO1xuICAgICAgICBmaWVsZFBhdGgucHVzaChmaWVsZCk7XG5cbiAgICAgICAgaWYgKGN5Y2xlSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRldGVjdEN5Y2xlUmVjdXJzaXZlKGZpZWxkVHlwZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgY3ljbGVQYXRoID0gZmllbGRQYXRoLnNsaWNlKGN5Y2xlSW5kZXgpO1xuICAgICAgICAgIGNvbnN0IHBhdGhTdHIgPSBjeWNsZVBhdGgubWFwKChmaWVsZE9iaikgPT4gZmllbGRPYmoubmFtZSkuam9pbignLicpO1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgICBgQ2Fubm90IHJlZmVyZW5jZSBJbnB1dCBPYmplY3QgXCIke2ZpZWxkVHlwZS5uYW1lfVwiIHdpdGhpbiBpdHNlbGYgdGhyb3VnaCBhIHNlcmllcyBvZiBub24tbnVsbCBmaWVsZHM6IFwiJHtwYXRoU3RyfVwiLmAsXG4gICAgICAgICAgICBjeWNsZVBhdGgubWFwKChmaWVsZE9iaikgPT4gZmllbGRPYmouYXN0Tm9kZSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZpZWxkUGF0aC5wb3AoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmaWVsZFBhdGhJbmRleEJ5VHlwZU5hbWVbaW5wdXRPYmoubmFtZV0gPSB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0QWxsSW1wbGVtZW50c0ludGVyZmFjZU5vZGVzKHR5cGUsIGlmYWNlKSB7XG4gIGNvbnN0IHsgYXN0Tm9kZSwgZXh0ZW5zaW9uQVNUTm9kZXMgfSA9IHR5cGU7XG4gIGNvbnN0IG5vZGVzID1cbiAgICBhc3ROb2RlICE9IG51bGwgPyBbYXN0Tm9kZSwgLi4uZXh0ZW5zaW9uQVNUTm9kZXNdIDogZXh0ZW5zaW9uQVNUTm9kZXM7IC8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzXG5cbiAgcmV0dXJuIG5vZGVzXG4gICAgLmZsYXRNYXAoKHR5cGVOb2RlKSA9PiB7XG4gICAgICB2YXIgX3R5cGVOb2RlJGludGVyZmFjZXM7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIC8qIGM4IGlnbm9yZSBuZXh0ICovXG4gICAgICAgIChfdHlwZU5vZGUkaW50ZXJmYWNlcyA9IHR5cGVOb2RlLmludGVyZmFjZXMpICE9PSBudWxsICYmXG4gICAgICAgICAgX3R5cGVOb2RlJGludGVyZmFjZXMgIT09IHZvaWQgMFxuICAgICAgICAgID8gX3R5cGVOb2RlJGludGVyZmFjZXNcbiAgICAgICAgICA6IFtdXG4gICAgICApO1xuICAgIH0pXG4gICAgLmZpbHRlcigoaWZhY2VOb2RlKSA9PiBpZmFjZU5vZGUubmFtZS52YWx1ZSA9PT0gaWZhY2UubmFtZSk7XG59XG5cbmZ1bmN0aW9uIGdldFVuaW9uTWVtYmVyVHlwZU5vZGVzKHVuaW9uLCB0eXBlTmFtZSkge1xuICBjb25zdCB7IGFzdE5vZGUsIGV4dGVuc2lvbkFTVE5vZGVzIH0gPSB1bmlvbjtcbiAgY29uc3Qgbm9kZXMgPVxuICAgIGFzdE5vZGUgIT0gbnVsbCA/IFthc3ROb2RlLCAuLi5leHRlbnNpb25BU1ROb2Rlc10gOiBleHRlbnNpb25BU1ROb2RlczsgLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcblxuICByZXR1cm4gbm9kZXNcbiAgICAuZmxhdE1hcCgodW5pb25Ob2RlKSA9PiB7XG4gICAgICB2YXIgX3VuaW9uTm9kZSR0eXBlcztcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgLyogYzggaWdub3JlIG5leHQgKi9cbiAgICAgICAgKF91bmlvbk5vZGUkdHlwZXMgPSB1bmlvbk5vZGUudHlwZXMpICE9PSBudWxsICYmXG4gICAgICAgICAgX3VuaW9uTm9kZSR0eXBlcyAhPT0gdm9pZCAwXG4gICAgICAgICAgPyBfdW5pb25Ob2RlJHR5cGVzXG4gICAgICAgICAgOiBbXVxuICAgICAgKTtcbiAgICB9KVxuICAgIC5maWx0ZXIoKHR5cGVOb2RlKSA9PiB0eXBlTm9kZS5uYW1lLnZhbHVlID09PSB0eXBlTmFtZSk7XG59XG5cbmZ1bmN0aW9uIGdldERlcHJlY2F0ZWREaXJlY3RpdmVOb2RlKGRlZmluaXRpb25Ob2RlKSB7XG4gIHZhciBfZGVmaW5pdGlvbk5vZGUkZGlyZWM7XG5cbiAgcmV0dXJuIGRlZmluaXRpb25Ob2RlID09PSBudWxsIHx8IGRlZmluaXRpb25Ob2RlID09PSB2b2lkIDBcbiAgICA/IHZvaWQgMFxuICAgIDogKF9kZWZpbml0aW9uTm9kZSRkaXJlYyA9IGRlZmluaXRpb25Ob2RlLmRpcmVjdGl2ZXMpID09PSBudWxsIHx8XG4gICAgICBfZGVmaW5pdGlvbk5vZGUkZGlyZWMgPT09IHZvaWQgMFxuICAgID8gdm9pZCAwXG4gICAgOiBfZGVmaW5pdGlvbk5vZGUkZGlyZWMuZmluZChcbiAgICAgICAgKG5vZGUpID0+IG5vZGUubmFtZS52YWx1ZSA9PT0gR3JhcGhRTERlcHJlY2F0ZWREaXJlY3RpdmUubmFtZSxcbiAgICAgICk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/type/validate.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/TypeInfo.mjs":
/*!*****************************************************!*\
  !*** ./node_modules/graphql/utilities/TypeInfo.mjs ***!
  \*****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TypeInfo\": function() { return /* binding */ TypeInfo; },\n/* harmony export */   \"visitWithTypeInfo\": function() { return /* binding */ visitWithTypeInfo; }\n/* harmony export */ });\n/* harmony import */ var _language_ast_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../language/ast.mjs */ \"./node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_visitor_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../language/visitor.mjs */ \"./node_modules/graphql/language/visitor.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../type/introspection.mjs */ \"./node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typeFromAST.mjs */ \"./node_modules/graphql/utilities/typeFromAST.mjs\");\n\n\n\n\n\n\n/**\n * TypeInfo is a utility class which, given a GraphQL schema, can keep track\n * of the current field and type definitions at any point in a GraphQL document\n * AST during a recursive descent by calling `enter(node)` and `leave(node)`.\n */\n\nclass TypeInfo {\n  constructor(\n    schema,\n    /**\n     * Initial type may be provided in rare cases to facilitate traversals\n     *  beginning somewhere other than documents.\n     */\n    initialType,\n    /** @deprecated will be removed in 17.0.0 */\n    getFieldDefFn,\n  ) {\n    this._schema = schema;\n    this._typeStack = [];\n    this._parentTypeStack = [];\n    this._inputTypeStack = [];\n    this._fieldDefStack = [];\n    this._defaultValueStack = [];\n    this._directive = null;\n    this._argument = null;\n    this._enumValue = null;\n    this._getFieldDef =\n      getFieldDefFn !== null && getFieldDefFn !== void 0\n        ? getFieldDefFn\n        : getFieldDef;\n\n    if (initialType) {\n      if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInputType)(initialType)) {\n        this._inputTypeStack.push(initialType);\n      }\n\n      if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isCompositeType)(initialType)) {\n        this._parentTypeStack.push(initialType);\n      }\n\n      if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isOutputType)(initialType)) {\n        this._typeStack.push(initialType);\n      }\n    }\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'TypeInfo';\n  }\n\n  getType() {\n    if (this._typeStack.length > 0) {\n      return this._typeStack[this._typeStack.length - 1];\n    }\n  }\n\n  getParentType() {\n    if (this._parentTypeStack.length > 0) {\n      return this._parentTypeStack[this._parentTypeStack.length - 1];\n    }\n  }\n\n  getInputType() {\n    if (this._inputTypeStack.length > 0) {\n      return this._inputTypeStack[this._inputTypeStack.length - 1];\n    }\n  }\n\n  getParentInputType() {\n    if (this._inputTypeStack.length > 1) {\n      return this._inputTypeStack[this._inputTypeStack.length - 2];\n    }\n  }\n\n  getFieldDef() {\n    if (this._fieldDefStack.length > 0) {\n      return this._fieldDefStack[this._fieldDefStack.length - 1];\n    }\n  }\n\n  getDefaultValue() {\n    if (this._defaultValueStack.length > 0) {\n      return this._defaultValueStack[this._defaultValueStack.length - 1];\n    }\n  }\n\n  getDirective() {\n    return this._directive;\n  }\n\n  getArgument() {\n    return this._argument;\n  }\n\n  getEnumValue() {\n    return this._enumValue;\n  }\n\n  enter(node) {\n    const schema = this._schema; // Note: many of the types below are explicitly typed as \"unknown\" to drop\n    // any assumptions of a valid schema to ensure runtime types are properly\n    // checked before continuing since TypeInfo is used as part of validation\n    // which occurs before guarantees of schema and document validity.\n\n    switch (node.kind) {\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.SELECTION_SET: {\n        const namedType = (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.getNamedType)(this.getType());\n\n        this._parentTypeStack.push(\n          (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isCompositeType)(namedType) ? namedType : undefined,\n        );\n\n        break;\n      }\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.FIELD: {\n        const parentType = this.getParentType();\n        let fieldDef;\n        let fieldType;\n\n        if (parentType) {\n          fieldDef = this._getFieldDef(schema, parentType, node);\n\n          if (fieldDef) {\n            fieldType = fieldDef.type;\n          }\n        }\n\n        this._fieldDefStack.push(fieldDef);\n\n        this._typeStack.push((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isOutputType)(fieldType) ? fieldType : undefined);\n\n        break;\n      }\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.DIRECTIVE:\n        this._directive = schema.getDirective(node.name.value);\n        break;\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.OPERATION_DEFINITION: {\n        const rootType = schema.getRootType(node.operation);\n\n        this._typeStack.push((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isObjectType)(rootType) ? rootType : undefined);\n\n        break;\n      }\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.INLINE_FRAGMENT:\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.FRAGMENT_DEFINITION: {\n        const typeConditionAST = node.typeCondition;\n        const outputType = typeConditionAST\n          ? (0,_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_2__.typeFromAST)(schema, typeConditionAST)\n          : (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.getNamedType)(this.getType());\n\n        this._typeStack.push((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isOutputType)(outputType) ? outputType : undefined);\n\n        break;\n      }\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.VARIABLE_DEFINITION: {\n        const inputType = (0,_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_2__.typeFromAST)(schema, node.type);\n\n        this._inputTypeStack.push(\n          (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInputType)(inputType) ? inputType : undefined,\n        );\n\n        break;\n      }\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.ARGUMENT: {\n        var _this$getDirective;\n\n        let argDef;\n        let argType;\n        const fieldOrDirective =\n          (_this$getDirective = this.getDirective()) !== null &&\n          _this$getDirective !== void 0\n            ? _this$getDirective\n            : this.getFieldDef();\n\n        if (fieldOrDirective) {\n          argDef = fieldOrDirective.args.find(\n            (arg) => arg.name === node.name.value,\n          );\n\n          if (argDef) {\n            argType = argDef.type;\n          }\n        }\n\n        this._argument = argDef;\n\n        this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);\n\n        this._inputTypeStack.push((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInputType)(argType) ? argType : undefined);\n\n        break;\n      }\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.LIST: {\n        const listType = (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.getNullableType)(this.getInputType());\n        const itemType = (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isListType)(listType) ? listType.ofType : listType; // List positions never have a default value.\n\n        this._defaultValueStack.push(undefined);\n\n        this._inputTypeStack.push((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInputType)(itemType) ? itemType : undefined);\n\n        break;\n      }\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.OBJECT_FIELD: {\n        const objectType = (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.getNamedType)(this.getInputType());\n        let inputFieldType;\n        let inputField;\n\n        if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInputObjectType)(objectType)) {\n          inputField = objectType.getFields()[node.name.value];\n\n          if (inputField) {\n            inputFieldType = inputField.type;\n          }\n        }\n\n        this._defaultValueStack.push(\n          inputField ? inputField.defaultValue : undefined,\n        );\n\n        this._inputTypeStack.push(\n          (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInputType)(inputFieldType) ? inputFieldType : undefined,\n        );\n\n        break;\n      }\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.ENUM: {\n        const enumType = (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.getNamedType)(this.getInputType());\n        let enumValue;\n\n        if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isEnumType)(enumType)) {\n          enumValue = enumType.getValue(node.value);\n        }\n\n        this._enumValue = enumValue;\n        break;\n      }\n\n      default: // Ignore other nodes\n    }\n  }\n\n  leave(node) {\n    switch (node.kind) {\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.SELECTION_SET:\n        this._parentTypeStack.pop();\n\n        break;\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.FIELD:\n        this._fieldDefStack.pop();\n\n        this._typeStack.pop();\n\n        break;\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.DIRECTIVE:\n        this._directive = null;\n        break;\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.OPERATION_DEFINITION:\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.INLINE_FRAGMENT:\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.FRAGMENT_DEFINITION:\n        this._typeStack.pop();\n\n        break;\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.VARIABLE_DEFINITION:\n        this._inputTypeStack.pop();\n\n        break;\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.ARGUMENT:\n        this._argument = null;\n\n        this._defaultValueStack.pop();\n\n        this._inputTypeStack.pop();\n\n        break;\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.LIST:\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.OBJECT_FIELD:\n        this._defaultValueStack.pop();\n\n        this._inputTypeStack.pop();\n\n        break;\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.ENUM:\n        this._enumValue = null;\n        break;\n\n      default: // Ignore other nodes\n    }\n  }\n}\n\n/**\n * Not exactly the same as the executor's definition of getFieldDef, in this\n * statically evaluated environment we do not always have an Object type,\n * and need to handle Interface and Union types.\n */\nfunction getFieldDef(schema, parentType, fieldNode) {\n  const name = fieldNode.name.value;\n\n  if (\n    name === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_3__.SchemaMetaFieldDef.name &&\n    schema.getQueryType() === parentType\n  ) {\n    return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_3__.SchemaMetaFieldDef;\n  }\n\n  if (name === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_3__.TypeMetaFieldDef.name && schema.getQueryType() === parentType) {\n    return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_3__.TypeMetaFieldDef;\n  }\n\n  if (name === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_3__.TypeNameMetaFieldDef.name && (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isCompositeType)(parentType)) {\n    return _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_3__.TypeNameMetaFieldDef;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isObjectType)(parentType) || (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInterfaceType)(parentType)) {\n    return parentType.getFields()[name];\n  }\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\nfunction visitWithTypeInfo(typeInfo, visitor) {\n  return {\n    enter(...args) {\n      const node = args[0];\n      typeInfo.enter(node);\n      const fn = (0,_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_4__.getEnterLeaveForKind)(visitor, node.kind).enter;\n\n      if (fn) {\n        const result = fn.apply(visitor, args);\n\n        if (result !== undefined) {\n          typeInfo.leave(node);\n\n          if ((0,_language_ast_mjs__WEBPACK_IMPORTED_MODULE_5__.isNode)(result)) {\n            typeInfo.enter(result);\n          }\n        }\n\n        return result;\n      }\n    },\n\n    leave(...args) {\n      const node = args[0];\n      const fn = (0,_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_4__.getEnterLeaveForKind)(visitor, node.kind).leave;\n      let result;\n\n      if (fn) {\n        result = fn.apply(visitor, args);\n      }\n\n      typeInfo.leave(node);\n      return result;\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvVHlwZUluZm8ubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQTZDO0FBQ0E7QUFDa0I7QUFZL0I7QUFLRztBQUNhO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSxpRUFBVztBQUNyQjtBQUNBOztBQUVBLFVBQVUscUVBQWU7QUFDekI7QUFDQTs7QUFFQSxVQUFVLGtFQUFZO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLG1FQUFrQjtBQUM3QiwwQkFBMEIsa0VBQVk7O0FBRXRDO0FBQ0EsVUFBVSxxRUFBZTtBQUN6Qjs7QUFFQTtBQUNBOztBQUVBLFdBQVcsMkRBQVU7QUFDckI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsNkJBQTZCLGtFQUFZOztBQUV6QztBQUNBOztBQUVBLFdBQVcsK0RBQWM7QUFDekI7QUFDQTs7QUFFQSxXQUFXLDBFQUF5QjtBQUNwQzs7QUFFQSw2QkFBNkIsa0VBQVk7O0FBRXpDO0FBQ0E7O0FBRUEsV0FBVyxxRUFBb0I7QUFDL0IsV0FBVyx5RUFBd0I7QUFDbkM7QUFDQTtBQUNBLFlBQVksNkRBQVc7QUFDdkIsWUFBWSxrRUFBWTs7QUFFeEIsNkJBQTZCLGtFQUFZOztBQUV6QztBQUNBOztBQUVBLFdBQVcseUVBQXdCO0FBQ25DLDBCQUEwQiw2REFBVzs7QUFFckM7QUFDQSxVQUFVLGlFQUFXO0FBQ3JCOztBQUVBO0FBQ0E7O0FBRUEsV0FBVyw4REFBYTtBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQSxrQ0FBa0MsaUVBQVc7O0FBRTdDO0FBQ0E7O0FBRUEsV0FBVywwREFBUztBQUNwQix5QkFBeUIscUVBQWU7QUFDeEMseUJBQXlCLGdFQUFVLHlDQUF5Qzs7QUFFNUU7O0FBRUEsa0NBQWtDLGlFQUFXOztBQUU3QztBQUNBOztBQUVBLFdBQVcsa0VBQWlCO0FBQzVCLDJCQUEyQixrRUFBWTtBQUN2QztBQUNBOztBQUVBLFlBQVksdUVBQWlCO0FBQzdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBQVUsaUVBQVc7QUFDckI7O0FBRUE7QUFDQTs7QUFFQSxXQUFXLDBEQUFTO0FBQ3BCLHlCQUF5QixrRUFBWTtBQUNyQzs7QUFFQSxZQUFZLGdFQUFVO0FBQ3RCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxtRUFBa0I7QUFDN0I7O0FBRUE7O0FBRUEsV0FBVywyREFBVTtBQUNyQjs7QUFFQTs7QUFFQTs7QUFFQSxXQUFXLCtEQUFjO0FBQ3pCO0FBQ0E7O0FBRUEsV0FBVywwRUFBeUI7QUFDcEMsV0FBVyxxRUFBb0I7QUFDL0IsV0FBVyx5RUFBd0I7QUFDbkM7O0FBRUE7O0FBRUEsV0FBVyx5RUFBd0I7QUFDbkM7O0FBRUE7O0FBRUEsV0FBVyw4REFBYTtBQUN4Qjs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQSxXQUFXLDBEQUFTO0FBQ3BCLFdBQVcsa0VBQWlCO0FBQzVCOztBQUVBOztBQUVBOztBQUVBLFdBQVcsMERBQVM7QUFDcEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGFBQWEsNEVBQXVCO0FBQ3BDO0FBQ0E7QUFDQSxXQUFXLHVFQUFrQjtBQUM3Qjs7QUFFQSxlQUFlLDBFQUFxQjtBQUNwQyxXQUFXLHFFQUFnQjtBQUMzQjs7QUFFQSxlQUFlLDhFQUF5QixJQUFJLHFFQUFlO0FBQzNELFdBQVcseUVBQW9CO0FBQy9COztBQUVBLE1BQU0sa0VBQVksZ0JBQWdCLHFFQUFlO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkVBQW9COztBQUVyQztBQUNBOztBQUVBO0FBQ0E7O0FBRUEsY0FBYyx5REFBTTtBQUNwQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLGlCQUFpQiwyRUFBb0I7QUFDckM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvVHlwZUluZm8ubWpzP2NmYjAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOb2RlIH0gZnJvbSAnLi4vbGFuZ3VhZ2UvYXN0Lm1qcyc7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbmltcG9ydCB7IGdldEVudGVyTGVhdmVGb3JLaW5kIH0gZnJvbSAnLi4vbGFuZ3VhZ2UvdmlzaXRvci5tanMnO1xuaW1wb3J0IHtcbiAgZ2V0TmFtZWRUeXBlLFxuICBnZXROdWxsYWJsZVR5cGUsXG4gIGlzQ29tcG9zaXRlVHlwZSxcbiAgaXNFbnVtVHlwZSxcbiAgaXNJbnB1dE9iamVjdFR5cGUsXG4gIGlzSW5wdXRUeXBlLFxuICBpc0ludGVyZmFjZVR5cGUsXG4gIGlzTGlzdFR5cGUsXG4gIGlzT2JqZWN0VHlwZSxcbiAgaXNPdXRwdXRUeXBlLFxufSBmcm9tICcuLi90eXBlL2RlZmluaXRpb24ubWpzJztcbmltcG9ydCB7XG4gIFNjaGVtYU1ldGFGaWVsZERlZixcbiAgVHlwZU1ldGFGaWVsZERlZixcbiAgVHlwZU5hbWVNZXRhRmllbGREZWYsXG59IGZyb20gJy4uL3R5cGUvaW50cm9zcGVjdGlvbi5tanMnO1xuaW1wb3J0IHsgdHlwZUZyb21BU1QgfSBmcm9tICcuL3R5cGVGcm9tQVNULm1qcyc7XG4vKipcbiAqIFR5cGVJbmZvIGlzIGEgdXRpbGl0eSBjbGFzcyB3aGljaCwgZ2l2ZW4gYSBHcmFwaFFMIHNjaGVtYSwgY2FuIGtlZXAgdHJhY2tcbiAqIG9mIHRoZSBjdXJyZW50IGZpZWxkIGFuZCB0eXBlIGRlZmluaXRpb25zIGF0IGFueSBwb2ludCBpbiBhIEdyYXBoUUwgZG9jdW1lbnRcbiAqIEFTVCBkdXJpbmcgYSByZWN1cnNpdmUgZGVzY2VudCBieSBjYWxsaW5nIGBlbnRlcihub2RlKWAgYW5kIGBsZWF2ZShub2RlKWAuXG4gKi9cblxuZXhwb3J0IGNsYXNzIFR5cGVJbmZvIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NoZW1hLFxuICAgIC8qKlxuICAgICAqIEluaXRpYWwgdHlwZSBtYXkgYmUgcHJvdmlkZWQgaW4gcmFyZSBjYXNlcyB0byBmYWNpbGl0YXRlIHRyYXZlcnNhbHNcbiAgICAgKiAgYmVnaW5uaW5nIHNvbWV3aGVyZSBvdGhlciB0aGFuIGRvY3VtZW50cy5cbiAgICAgKi9cbiAgICBpbml0aWFsVHlwZSxcbiAgICAvKiogQGRlcHJlY2F0ZWQgd2lsbCBiZSByZW1vdmVkIGluIDE3LjAuMCAqL1xuICAgIGdldEZpZWxkRGVmRm4sXG4gICkge1xuICAgIHRoaXMuX3NjaGVtYSA9IHNjaGVtYTtcbiAgICB0aGlzLl90eXBlU3RhY2sgPSBbXTtcbiAgICB0aGlzLl9wYXJlbnRUeXBlU3RhY2sgPSBbXTtcbiAgICB0aGlzLl9pbnB1dFR5cGVTdGFjayA9IFtdO1xuICAgIHRoaXMuX2ZpZWxkRGVmU3RhY2sgPSBbXTtcbiAgICB0aGlzLl9kZWZhdWx0VmFsdWVTdGFjayA9IFtdO1xuICAgIHRoaXMuX2RpcmVjdGl2ZSA9IG51bGw7XG4gICAgdGhpcy5fYXJndW1lbnQgPSBudWxsO1xuICAgIHRoaXMuX2VudW1WYWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fZ2V0RmllbGREZWYgPVxuICAgICAgZ2V0RmllbGREZWZGbiAhPT0gbnVsbCAmJiBnZXRGaWVsZERlZkZuICE9PSB2b2lkIDBcbiAgICAgICAgPyBnZXRGaWVsZERlZkZuXG4gICAgICAgIDogZ2V0RmllbGREZWY7XG5cbiAgICBpZiAoaW5pdGlhbFR5cGUpIHtcbiAgICAgIGlmIChpc0lucHV0VHlwZShpbml0aWFsVHlwZSkpIHtcbiAgICAgICAgdGhpcy5faW5wdXRUeXBlU3RhY2sucHVzaChpbml0aWFsVHlwZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0NvbXBvc2l0ZVR5cGUoaW5pdGlhbFR5cGUpKSB7XG4gICAgICAgIHRoaXMuX3BhcmVudFR5cGVTdGFjay5wdXNoKGluaXRpYWxUeXBlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzT3V0cHV0VHlwZShpbml0aWFsVHlwZSkpIHtcbiAgICAgICAgdGhpcy5fdHlwZVN0YWNrLnB1c2goaW5pdGlhbFR5cGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gJ1R5cGVJbmZvJztcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgaWYgKHRoaXMuX3R5cGVTdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHlwZVN0YWNrW3RoaXMuX3R5cGVTdGFjay5sZW5ndGggLSAxXTtcbiAgICB9XG4gIH1cblxuICBnZXRQYXJlbnRUeXBlKCkge1xuICAgIGlmICh0aGlzLl9wYXJlbnRUeXBlU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudFR5cGVTdGFja1t0aGlzLl9wYXJlbnRUeXBlU3RhY2subGVuZ3RoIC0gMV07XG4gICAgfVxuICB9XG5cbiAgZ2V0SW5wdXRUeXBlKCkge1xuICAgIGlmICh0aGlzLl9pbnB1dFR5cGVTdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5wdXRUeXBlU3RhY2tbdGhpcy5faW5wdXRUeXBlU3RhY2subGVuZ3RoIC0gMV07XG4gICAgfVxuICB9XG5cbiAgZ2V0UGFyZW50SW5wdXRUeXBlKCkge1xuICAgIGlmICh0aGlzLl9pbnB1dFR5cGVTdGFjay5sZW5ndGggPiAxKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5wdXRUeXBlU3RhY2tbdGhpcy5faW5wdXRUeXBlU3RhY2subGVuZ3RoIC0gMl07XG4gICAgfVxuICB9XG5cbiAgZ2V0RmllbGREZWYoKSB7XG4gICAgaWYgKHRoaXMuX2ZpZWxkRGVmU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkRGVmU3RhY2tbdGhpcy5fZmllbGREZWZTdGFjay5sZW5ndGggLSAxXTtcbiAgICB9XG4gIH1cblxuICBnZXREZWZhdWx0VmFsdWUoKSB7XG4gICAgaWYgKHRoaXMuX2RlZmF1bHRWYWx1ZVN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmFsdWVTdGFja1t0aGlzLl9kZWZhdWx0VmFsdWVTdGFjay5sZW5ndGggLSAxXTtcbiAgICB9XG4gIH1cblxuICBnZXREaXJlY3RpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RpcmVjdGl2ZTtcbiAgfVxuXG4gIGdldEFyZ3VtZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9hcmd1bWVudDtcbiAgfVxuXG4gIGdldEVudW1WYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW51bVZhbHVlO1xuICB9XG5cbiAgZW50ZXIobm9kZSkge1xuICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMuX3NjaGVtYTsgLy8gTm90ZTogbWFueSBvZiB0aGUgdHlwZXMgYmVsb3cgYXJlIGV4cGxpY2l0bHkgdHlwZWQgYXMgXCJ1bmtub3duXCIgdG8gZHJvcFxuICAgIC8vIGFueSBhc3N1bXB0aW9ucyBvZiBhIHZhbGlkIHNjaGVtYSB0byBlbnN1cmUgcnVudGltZSB0eXBlcyBhcmUgcHJvcGVybHlcbiAgICAvLyBjaGVja2VkIGJlZm9yZSBjb250aW51aW5nIHNpbmNlIFR5cGVJbmZvIGlzIHVzZWQgYXMgcGFydCBvZiB2YWxpZGF0aW9uXG4gICAgLy8gd2hpY2ggb2NjdXJzIGJlZm9yZSBndWFyYW50ZWVzIG9mIHNjaGVtYSBhbmQgZG9jdW1lbnQgdmFsaWRpdHkuXG5cbiAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgY2FzZSBLaW5kLlNFTEVDVElPTl9TRVQ6IHtcbiAgICAgICAgY29uc3QgbmFtZWRUeXBlID0gZ2V0TmFtZWRUeXBlKHRoaXMuZ2V0VHlwZSgpKTtcblxuICAgICAgICB0aGlzLl9wYXJlbnRUeXBlU3RhY2sucHVzaChcbiAgICAgICAgICBpc0NvbXBvc2l0ZVR5cGUobmFtZWRUeXBlKSA/IG5hbWVkVHlwZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBLaW5kLkZJRUxEOiB7XG4gICAgICAgIGNvbnN0IHBhcmVudFR5cGUgPSB0aGlzLmdldFBhcmVudFR5cGUoKTtcbiAgICAgICAgbGV0IGZpZWxkRGVmO1xuICAgICAgICBsZXQgZmllbGRUeXBlO1xuXG4gICAgICAgIGlmIChwYXJlbnRUeXBlKSB7XG4gICAgICAgICAgZmllbGREZWYgPSB0aGlzLl9nZXRGaWVsZERlZihzY2hlbWEsIHBhcmVudFR5cGUsIG5vZGUpO1xuXG4gICAgICAgICAgaWYgKGZpZWxkRGVmKSB7XG4gICAgICAgICAgICBmaWVsZFR5cGUgPSBmaWVsZERlZi50eXBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2ZpZWxkRGVmU3RhY2sucHVzaChmaWVsZERlZik7XG5cbiAgICAgICAgdGhpcy5fdHlwZVN0YWNrLnB1c2goaXNPdXRwdXRUeXBlKGZpZWxkVHlwZSkgPyBmaWVsZFR5cGUgOiB1bmRlZmluZWQpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuRElSRUNUSVZFOlxuICAgICAgICB0aGlzLl9kaXJlY3RpdmUgPSBzY2hlbWEuZ2V0RGlyZWN0aXZlKG5vZGUubmFtZS52YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEtpbmQuT1BFUkFUSU9OX0RFRklOSVRJT046IHtcbiAgICAgICAgY29uc3Qgcm9vdFR5cGUgPSBzY2hlbWEuZ2V0Um9vdFR5cGUobm9kZS5vcGVyYXRpb24pO1xuXG4gICAgICAgIHRoaXMuX3R5cGVTdGFjay5wdXNoKGlzT2JqZWN0VHlwZShyb290VHlwZSkgPyByb290VHlwZSA6IHVuZGVmaW5lZCk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgS2luZC5JTkxJTkVfRlJBR01FTlQ6XG4gICAgICBjYXNlIEtpbmQuRlJBR01FTlRfREVGSU5JVElPTjoge1xuICAgICAgICBjb25zdCB0eXBlQ29uZGl0aW9uQVNUID0gbm9kZS50eXBlQ29uZGl0aW9uO1xuICAgICAgICBjb25zdCBvdXRwdXRUeXBlID0gdHlwZUNvbmRpdGlvbkFTVFxuICAgICAgICAgID8gdHlwZUZyb21BU1Qoc2NoZW1hLCB0eXBlQ29uZGl0aW9uQVNUKVxuICAgICAgICAgIDogZ2V0TmFtZWRUeXBlKHRoaXMuZ2V0VHlwZSgpKTtcblxuICAgICAgICB0aGlzLl90eXBlU3RhY2sucHVzaChpc091dHB1dFR5cGUob3V0cHV0VHlwZSkgPyBvdXRwdXRUeXBlIDogdW5kZWZpbmVkKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBLaW5kLlZBUklBQkxFX0RFRklOSVRJT046IHtcbiAgICAgICAgY29uc3QgaW5wdXRUeXBlID0gdHlwZUZyb21BU1Qoc2NoZW1hLCBub2RlLnR5cGUpO1xuXG4gICAgICAgIHRoaXMuX2lucHV0VHlwZVN0YWNrLnB1c2goXG4gICAgICAgICAgaXNJbnB1dFR5cGUoaW5wdXRUeXBlKSA/IGlucHV0VHlwZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBLaW5kLkFSR1VNRU5UOiB7XG4gICAgICAgIHZhciBfdGhpcyRnZXREaXJlY3RpdmU7XG5cbiAgICAgICAgbGV0IGFyZ0RlZjtcbiAgICAgICAgbGV0IGFyZ1R5cGU7XG4gICAgICAgIGNvbnN0IGZpZWxkT3JEaXJlY3RpdmUgPVxuICAgICAgICAgIChfdGhpcyRnZXREaXJlY3RpdmUgPSB0aGlzLmdldERpcmVjdGl2ZSgpKSAhPT0gbnVsbCAmJlxuICAgICAgICAgIF90aGlzJGdldERpcmVjdGl2ZSAhPT0gdm9pZCAwXG4gICAgICAgICAgICA/IF90aGlzJGdldERpcmVjdGl2ZVxuICAgICAgICAgICAgOiB0aGlzLmdldEZpZWxkRGVmKCk7XG5cbiAgICAgICAgaWYgKGZpZWxkT3JEaXJlY3RpdmUpIHtcbiAgICAgICAgICBhcmdEZWYgPSBmaWVsZE9yRGlyZWN0aXZlLmFyZ3MuZmluZChcbiAgICAgICAgICAgIChhcmcpID0+IGFyZy5uYW1lID09PSBub2RlLm5hbWUudmFsdWUsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChhcmdEZWYpIHtcbiAgICAgICAgICAgIGFyZ1R5cGUgPSBhcmdEZWYudHlwZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9hcmd1bWVudCA9IGFyZ0RlZjtcblxuICAgICAgICB0aGlzLl9kZWZhdWx0VmFsdWVTdGFjay5wdXNoKGFyZ0RlZiA/IGFyZ0RlZi5kZWZhdWx0VmFsdWUgOiB1bmRlZmluZWQpO1xuXG4gICAgICAgIHRoaXMuX2lucHV0VHlwZVN0YWNrLnB1c2goaXNJbnB1dFR5cGUoYXJnVHlwZSkgPyBhcmdUeXBlIDogdW5kZWZpbmVkKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBLaW5kLkxJU1Q6IHtcbiAgICAgICAgY29uc3QgbGlzdFR5cGUgPSBnZXROdWxsYWJsZVR5cGUodGhpcy5nZXRJbnB1dFR5cGUoKSk7XG4gICAgICAgIGNvbnN0IGl0ZW1UeXBlID0gaXNMaXN0VHlwZShsaXN0VHlwZSkgPyBsaXN0VHlwZS5vZlR5cGUgOiBsaXN0VHlwZTsgLy8gTGlzdCBwb3NpdGlvbnMgbmV2ZXIgaGF2ZSBhIGRlZmF1bHQgdmFsdWUuXG5cbiAgICAgICAgdGhpcy5fZGVmYXVsdFZhbHVlU3RhY2sucHVzaCh1bmRlZmluZWQpO1xuXG4gICAgICAgIHRoaXMuX2lucHV0VHlwZVN0YWNrLnB1c2goaXNJbnB1dFR5cGUoaXRlbVR5cGUpID8gaXRlbVR5cGUgOiB1bmRlZmluZWQpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuT0JKRUNUX0ZJRUxEOiB7XG4gICAgICAgIGNvbnN0IG9iamVjdFR5cGUgPSBnZXROYW1lZFR5cGUodGhpcy5nZXRJbnB1dFR5cGUoKSk7XG4gICAgICAgIGxldCBpbnB1dEZpZWxkVHlwZTtcbiAgICAgICAgbGV0IGlucHV0RmllbGQ7XG5cbiAgICAgICAgaWYgKGlzSW5wdXRPYmplY3RUeXBlKG9iamVjdFR5cGUpKSB7XG4gICAgICAgICAgaW5wdXRGaWVsZCA9IG9iamVjdFR5cGUuZ2V0RmllbGRzKClbbm9kZS5uYW1lLnZhbHVlXTtcblxuICAgICAgICAgIGlmIChpbnB1dEZpZWxkKSB7XG4gICAgICAgICAgICBpbnB1dEZpZWxkVHlwZSA9IGlucHV0RmllbGQudHlwZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kZWZhdWx0VmFsdWVTdGFjay5wdXNoKFxuICAgICAgICAgIGlucHV0RmllbGQgPyBpbnB1dEZpZWxkLmRlZmF1bHRWYWx1ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9pbnB1dFR5cGVTdGFjay5wdXNoKFxuICAgICAgICAgIGlzSW5wdXRUeXBlKGlucHV0RmllbGRUeXBlKSA/IGlucHV0RmllbGRUeXBlIDogdW5kZWZpbmVkLFxuICAgICAgICApO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuRU5VTToge1xuICAgICAgICBjb25zdCBlbnVtVHlwZSA9IGdldE5hbWVkVHlwZSh0aGlzLmdldElucHV0VHlwZSgpKTtcbiAgICAgICAgbGV0IGVudW1WYWx1ZTtcblxuICAgICAgICBpZiAoaXNFbnVtVHlwZShlbnVtVHlwZSkpIHtcbiAgICAgICAgICBlbnVtVmFsdWUgPSBlbnVtVHlwZS5nZXRWYWx1ZShub2RlLnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2VudW1WYWx1ZSA9IGVudW1WYWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6IC8vIElnbm9yZSBvdGhlciBub2Rlc1xuICAgIH1cbiAgfVxuXG4gIGxlYXZlKG5vZGUpIHtcbiAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgY2FzZSBLaW5kLlNFTEVDVElPTl9TRVQ6XG4gICAgICAgIHRoaXMuX3BhcmVudFR5cGVTdGFjay5wb3AoKTtcblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBLaW5kLkZJRUxEOlxuICAgICAgICB0aGlzLl9maWVsZERlZlN0YWNrLnBvcCgpO1xuXG4gICAgICAgIHRoaXMuX3R5cGVTdGFjay5wb3AoKTtcblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBLaW5kLkRJUkVDVElWRTpcbiAgICAgICAgdGhpcy5fZGlyZWN0aXZlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgS2luZC5PUEVSQVRJT05fREVGSU5JVElPTjpcbiAgICAgIGNhc2UgS2luZC5JTkxJTkVfRlJBR01FTlQ6XG4gICAgICBjYXNlIEtpbmQuRlJBR01FTlRfREVGSU5JVElPTjpcbiAgICAgICAgdGhpcy5fdHlwZVN0YWNrLnBvcCgpO1xuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEtpbmQuVkFSSUFCTEVfREVGSU5JVElPTjpcbiAgICAgICAgdGhpcy5faW5wdXRUeXBlU3RhY2sucG9wKCk7XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgS2luZC5BUkdVTUVOVDpcbiAgICAgICAgdGhpcy5fYXJndW1lbnQgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZVN0YWNrLnBvcCgpO1xuXG4gICAgICAgIHRoaXMuX2lucHV0VHlwZVN0YWNrLnBvcCgpO1xuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEtpbmQuTElTVDpcbiAgICAgIGNhc2UgS2luZC5PQkpFQ1RfRklFTEQ6XG4gICAgICAgIHRoaXMuX2RlZmF1bHRWYWx1ZVN0YWNrLnBvcCgpO1xuXG4gICAgICAgIHRoaXMuX2lucHV0VHlwZVN0YWNrLnBvcCgpO1xuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEtpbmQuRU5VTTpcbiAgICAgICAgdGhpcy5fZW51bVZhbHVlID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6IC8vIElnbm9yZSBvdGhlciBub2Rlc1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIE5vdCBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSBleGVjdXRvcidzIGRlZmluaXRpb24gb2YgZ2V0RmllbGREZWYsIGluIHRoaXNcbiAqIHN0YXRpY2FsbHkgZXZhbHVhdGVkIGVudmlyb25tZW50IHdlIGRvIG5vdCBhbHdheXMgaGF2ZSBhbiBPYmplY3QgdHlwZSxcbiAqIGFuZCBuZWVkIHRvIGhhbmRsZSBJbnRlcmZhY2UgYW5kIFVuaW9uIHR5cGVzLlxuICovXG5mdW5jdGlvbiBnZXRGaWVsZERlZihzY2hlbWEsIHBhcmVudFR5cGUsIGZpZWxkTm9kZSkge1xuICBjb25zdCBuYW1lID0gZmllbGROb2RlLm5hbWUudmFsdWU7XG5cbiAgaWYgKFxuICAgIG5hbWUgPT09IFNjaGVtYU1ldGFGaWVsZERlZi5uYW1lICYmXG4gICAgc2NoZW1hLmdldFF1ZXJ5VHlwZSgpID09PSBwYXJlbnRUeXBlXG4gICkge1xuICAgIHJldHVybiBTY2hlbWFNZXRhRmllbGREZWY7XG4gIH1cblxuICBpZiAobmFtZSA9PT0gVHlwZU1ldGFGaWVsZERlZi5uYW1lICYmIHNjaGVtYS5nZXRRdWVyeVR5cGUoKSA9PT0gcGFyZW50VHlwZSkge1xuICAgIHJldHVybiBUeXBlTWV0YUZpZWxkRGVmO1xuICB9XG5cbiAgaWYgKG5hbWUgPT09IFR5cGVOYW1lTWV0YUZpZWxkRGVmLm5hbWUgJiYgaXNDb21wb3NpdGVUeXBlKHBhcmVudFR5cGUpKSB7XG4gICAgcmV0dXJuIFR5cGVOYW1lTWV0YUZpZWxkRGVmO1xuICB9XG5cbiAgaWYgKGlzT2JqZWN0VHlwZShwYXJlbnRUeXBlKSB8fCBpc0ludGVyZmFjZVR5cGUocGFyZW50VHlwZSkpIHtcbiAgICByZXR1cm4gcGFyZW50VHlwZS5nZXRGaWVsZHMoKVtuYW1lXTtcbiAgfVxufVxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHZpc2l0b3IgaW5zdGFuY2Ugd2hpY2ggbWFpbnRhaW5zIGEgcHJvdmlkZWQgVHlwZUluZm8gaW5zdGFuY2VcbiAqIGFsb25nIHdpdGggdmlzaXRpbmcgdmlzaXRvci5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdmlzaXRXaXRoVHlwZUluZm8odHlwZUluZm8sIHZpc2l0b3IpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnRlciguLi5hcmdzKSB7XG4gICAgICBjb25zdCBub2RlID0gYXJnc1swXTtcbiAgICAgIHR5cGVJbmZvLmVudGVyKG5vZGUpO1xuICAgICAgY29uc3QgZm4gPSBnZXRFbnRlckxlYXZlRm9yS2luZCh2aXNpdG9yLCBub2RlLmtpbmQpLmVudGVyO1xuXG4gICAgICBpZiAoZm4pIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZm4uYXBwbHkodmlzaXRvciwgYXJncyk7XG5cbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdHlwZUluZm8ubGVhdmUobm9kZSk7XG5cbiAgICAgICAgICBpZiAoaXNOb2RlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgIHR5cGVJbmZvLmVudGVyKHJlc3VsdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgbGVhdmUoLi4uYXJncykge1xuICAgICAgY29uc3Qgbm9kZSA9IGFyZ3NbMF07XG4gICAgICBjb25zdCBmbiA9IGdldEVudGVyTGVhdmVGb3JLaW5kKHZpc2l0b3IsIG5vZGUua2luZCkubGVhdmU7XG4gICAgICBsZXQgcmVzdWx0O1xuXG4gICAgICBpZiAoZm4pIHtcbiAgICAgICAgcmVzdWx0ID0gZm4uYXBwbHkodmlzaXRvciwgYXJncyk7XG4gICAgICB9XG5cbiAgICAgIHR5cGVJbmZvLmxlYXZlKG5vZGUpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/TypeInfo.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/assertValidName.mjs":
/*!************************************************************!*\
  !*** ./node_modules/graphql/utilities/assertValidName.mjs ***!
  \************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"assertValidName\": function() { return /* binding */ assertValidName; },\n/* harmony export */   \"isValidNameError\": function() { return /* binding */ isValidNameError; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"./node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_assertName_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../type/assertName.mjs */ \"./node_modules/graphql/type/assertName.mjs\");\n\n\n\n/* c8 ignore start */\n\n/**\n * Upholds the spec rules about naming.\n * @deprecated Please use `assertName` instead. Will be removed in v17\n */\n\nfunction assertValidName(name) {\n  const error = isValidNameError(name);\n\n  if (error) {\n    throw error;\n  }\n\n  return name;\n}\n/**\n * Returns an Error if a name is invalid.\n * @deprecated Please use `assertName` instead. Will be removed in v17\n */\n\nfunction isValidNameError(name) {\n  typeof name === 'string' || (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_0__.devAssert)(false, 'Expected name to be a string.');\n\n  if (name.startsWith('__')) {\n    return new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n      `Name \"${name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n    );\n  }\n\n  try {\n    (0,_type_assertName_mjs__WEBPACK_IMPORTED_MODULE_2__.assertName)(name);\n  } catch (error) {\n    return error;\n  }\n}\n/* c8 ignore stop */\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvYXNzZXJ0VmFsaWROYW1lLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFxRDtBQUNJO0FBQ0w7QUFDcEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1AsOEJBQThCLGlFQUFTOztBQUV2QztBQUNBLGVBQWUsaUVBQVk7QUFDM0IsZUFBZSxLQUFLO0FBQ3BCO0FBQ0E7O0FBRUE7QUFDQSxJQUFJLGdFQUFVO0FBQ2QsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9hc3NlcnRWYWxpZE5hbWUubWpzPzYyMDMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGV2QXNzZXJ0IH0gZnJvbSAnLi4vanN1dGlscy9kZXZBc3NlcnQubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgYXNzZXJ0TmFtZSB9IGZyb20gJy4uL3R5cGUvYXNzZXJ0TmFtZS5tanMnO1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5cbi8qKlxuICogVXBob2xkcyB0aGUgc3BlYyBydWxlcyBhYm91dCBuYW1pbmcuXG4gKiBAZGVwcmVjYXRlZCBQbGVhc2UgdXNlIGBhc3NlcnROYW1lYCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjE3XG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFZhbGlkTmFtZShuYW1lKSB7XG4gIGNvbnN0IGVycm9yID0gaXNWYWxpZE5hbWVFcnJvcihuYW1lKTtcblxuICBpZiAoZXJyb3IpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIHJldHVybiBuYW1lO1xufVxuLyoqXG4gKiBSZXR1cm5zIGFuIEVycm9yIGlmIGEgbmFtZSBpcyBpbnZhbGlkLlxuICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSBgYXNzZXJ0TmFtZWAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHYxN1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTmFtZUVycm9yKG5hbWUpIHtcbiAgdHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnIHx8IGRldkFzc2VydChmYWxzZSwgJ0V4cGVjdGVkIG5hbWUgdG8gYmUgYSBzdHJpbmcuJyk7XG5cbiAgaWYgKG5hbWUuc3RhcnRzV2l0aCgnX18nKSkge1xuICAgIHJldHVybiBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgYE5hbWUgXCIke25hbWV9XCIgbXVzdCBub3QgYmVnaW4gd2l0aCBcIl9fXCIsIHdoaWNoIGlzIHJlc2VydmVkIGJ5IEdyYXBoUUwgaW50cm9zcGVjdGlvbi5gLFxuICAgICk7XG4gIH1cblxuICB0cnkge1xuICAgIGFzc2VydE5hbWUobmFtZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGVycm9yO1xuICB9XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/assertValidName.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/astFromValue.mjs":
/*!*********************************************************!*\
  !*** ./node_modules/graphql/utilities/astFromValue.mjs ***!
  \*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"astFromValue\": function() { return /* binding */ astFromValue; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"./node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_isIterableObject_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/isIterableObject.mjs */ \"./node_modules/graphql/jsutils/isIterableObject.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"./node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../type/scalars.mjs */ \"./node_modules/graphql/type/scalars.mjs\");\n\n\n\n\n\n\n\n/**\n * Produces a GraphQL Value AST given a JavaScript object.\n * Function will match JavaScript/JSON values to GraphQL AST schema format\n * by using suggested GraphQLInputType. For example:\n *\n *     astFromValue(\"value\", GraphQLString)\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * JavaScript values.\n *\n * | JSON Value    | GraphQL Value        |\n * | ------------- | -------------------- |\n * | Object        | Input Object         |\n * | Array         | List                 |\n * | Boolean       | Boolean              |\n * | String        | String / Enum Value  |\n * | Number        | Int / Float          |\n * | Unknown       | Enum Value           |\n * | null          | NullValue            |\n *\n */\n\nfunction astFromValue(value, type) {\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isNonNullType)(type)) {\n    const astValue = astFromValue(value, type.ofType);\n\n    if (\n      (astValue === null || astValue === void 0 ? void 0 : astValue.kind) ===\n      _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.NULL\n    ) {\n      return null;\n    }\n\n    return astValue;\n  } // only explicit null, not undefined, NaN\n\n  if (value === null) {\n    return {\n      kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.NULL,\n    };\n  } // undefined\n\n  if (value === undefined) {\n    return null;\n  } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n  // the value is not an array, convert the value using the list's item type.\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isListType)(type)) {\n    const itemType = type.ofType;\n\n    if ((0,_jsutils_isIterableObject_mjs__WEBPACK_IMPORTED_MODULE_2__.isIterableObject)(value)) {\n      const valuesNodes = [];\n\n      for (const item of value) {\n        const itemNode = astFromValue(item, itemType);\n\n        if (itemNode != null) {\n          valuesNodes.push(itemNode);\n        }\n      }\n\n      return {\n        kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.LIST,\n        values: valuesNodes,\n      };\n    }\n\n    return astFromValue(value, itemType);\n  } // Populate the fields of the input object by creating ASTs from each value\n  // in the JavaScript object according to the fields in the input type.\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInputObjectType)(type)) {\n    if (!(0,_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_3__.isObjectLike)(value)) {\n      return null;\n    }\n\n    const fieldNodes = [];\n\n    for (const field of Object.values(type.getFields())) {\n      const fieldValue = astFromValue(value[field.name], field.type);\n\n      if (fieldValue) {\n        fieldNodes.push({\n          kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.OBJECT_FIELD,\n          name: {\n            kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.NAME,\n            value: field.name,\n          },\n          value: fieldValue,\n        });\n      }\n    }\n\n    return {\n      kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.OBJECT,\n      fields: fieldNodes,\n    };\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isLeafType)(type)) {\n    // Since value is an internally represented value, it must be serialized\n    // to an externally represented value before converting into an AST.\n    const serialized = type.serialize(value);\n\n    if (serialized == null) {\n      return null;\n    } // Others serialize based on their corresponding JavaScript scalar types.\n\n    if (typeof serialized === 'boolean') {\n      return {\n        kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.BOOLEAN,\n        value: serialized,\n      };\n    } // JavaScript numbers can be Int or Float values.\n\n    if (typeof serialized === 'number' && Number.isFinite(serialized)) {\n      const stringNum = String(serialized);\n      return integerStringRegExp.test(stringNum)\n        ? {\n            kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.INT,\n            value: stringNum,\n          }\n        : {\n            kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.FLOAT,\n            value: stringNum,\n          };\n    }\n\n    if (typeof serialized === 'string') {\n      // Enum types use Enum literals.\n      if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isEnumType)(type)) {\n        return {\n          kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.ENUM,\n          value: serialized,\n        };\n      } // ID types can use Int literals.\n\n      if (type === _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_4__.GraphQLID && integerStringRegExp.test(serialized)) {\n        return {\n          kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.INT,\n          value: serialized,\n        };\n      }\n\n      return {\n        kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.STRING,\n        value: serialized,\n      };\n    }\n\n    throw new TypeError(`Cannot convert value to AST: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_5__.inspect)(serialized)}.`);\n  }\n  /* c8 ignore next 3 */\n  // Not reachable, all possible types have been considered.\n\n   false || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_6__.invariant)(false, 'Unexpected input type: ' + (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_5__.inspect)(type));\n}\n/**\n * IntValue:\n *   - NegativeSign? 0\n *   - NegativeSign? NonZeroDigit ( Digit+ )?\n */\n\nconst integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvYXN0RnJvbVZhbHVlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFpRDtBQUNJO0FBQ2M7QUFDUjtBQUNkO0FBT2I7QUFDZ0I7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1AsTUFBTSxtRUFBYTtBQUNuQjs7QUFFQTtBQUNBO0FBQ0EsTUFBTSwwREFBUztBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBLFlBQVksMERBQVM7QUFDckI7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUEsTUFBTSxnRUFBVTtBQUNoQjs7QUFFQSxRQUFRLCtFQUFnQjtBQUN4Qjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsY0FBYywwREFBUztBQUN2QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7O0FBRUEsTUFBTSx1RUFBaUI7QUFDdkIsU0FBUyx1RUFBWTtBQUNyQjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQixrRUFBaUI7QUFDakM7QUFDQSxrQkFBa0IsMERBQVM7QUFDM0I7QUFDQSxXQUFXO0FBQ1g7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBLFlBQVksNERBQVc7QUFDdkI7QUFDQTtBQUNBOztBQUVBLE1BQU0sZ0VBQVU7QUFDaEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQSxjQUFjLDZEQUFZO0FBQzFCO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLHlEQUFRO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQiwyREFBVTtBQUM1QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVUsZ0VBQVU7QUFDcEI7QUFDQSxnQkFBZ0IsMERBQVM7QUFDekI7QUFDQTtBQUNBLFFBQVE7O0FBRVIsbUJBQW1CLHdEQUFTO0FBQzVCO0FBQ0EsZ0JBQWdCLHlEQUFRO0FBQ3hCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGNBQWMsNERBQVc7QUFDekI7QUFDQTtBQUNBOztBQUVBLHdEQUF3RCw2REFBTyxhQUFhO0FBQzVFO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLE1BQUssSUFBSSxpRUFBUyxvQ0FBb0MsNkRBQU87QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9hc3RGcm9tVmFsdWUubWpzPzJhYTgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSAnLi4vanN1dGlscy9pbnZhcmlhbnQubWpzJztcbmltcG9ydCB7IGlzSXRlcmFibGVPYmplY3QgfSBmcm9tICcuLi9qc3V0aWxzL2lzSXRlcmFibGVPYmplY3QubWpzJztcbmltcG9ydCB7IGlzT2JqZWN0TGlrZSB9IGZyb20gJy4uL2pzdXRpbHMvaXNPYmplY3RMaWtlLm1qcyc7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbmltcG9ydCB7XG4gIGlzRW51bVR5cGUsXG4gIGlzSW5wdXRPYmplY3RUeXBlLFxuICBpc0xlYWZUeXBlLFxuICBpc0xpc3RUeXBlLFxuICBpc05vbk51bGxUeXBlLFxufSBmcm9tICcuLi90eXBlL2RlZmluaXRpb24ubWpzJztcbmltcG9ydCB7IEdyYXBoUUxJRCB9IGZyb20gJy4uL3R5cGUvc2NhbGFycy5tanMnO1xuLyoqXG4gKiBQcm9kdWNlcyBhIEdyYXBoUUwgVmFsdWUgQVNUIGdpdmVuIGEgSmF2YVNjcmlwdCBvYmplY3QuXG4gKiBGdW5jdGlvbiB3aWxsIG1hdGNoIEphdmFTY3JpcHQvSlNPTiB2YWx1ZXMgdG8gR3JhcGhRTCBBU1Qgc2NoZW1hIGZvcm1hdFxuICogYnkgdXNpbmcgc3VnZ2VzdGVkIEdyYXBoUUxJbnB1dFR5cGUuIEZvciBleGFtcGxlOlxuICpcbiAqICAgICBhc3RGcm9tVmFsdWUoXCJ2YWx1ZVwiLCBHcmFwaFFMU3RyaW5nKVxuICpcbiAqIEEgR3JhcGhRTCB0eXBlIG11c3QgYmUgcHJvdmlkZWQsIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBpbnRlcnByZXQgZGlmZmVyZW50XG4gKiBKYXZhU2NyaXB0IHZhbHVlcy5cbiAqXG4gKiB8IEpTT04gVmFsdWUgICAgfCBHcmFwaFFMIFZhbHVlICAgICAgICB8XG4gKiB8IC0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLSB8XG4gKiB8IE9iamVjdCAgICAgICAgfCBJbnB1dCBPYmplY3QgICAgICAgICB8XG4gKiB8IEFycmF5ICAgICAgICAgfCBMaXN0ICAgICAgICAgICAgICAgICB8XG4gKiB8IEJvb2xlYW4gICAgICAgfCBCb29sZWFuICAgICAgICAgICAgICB8XG4gKiB8IFN0cmluZyAgICAgICAgfCBTdHJpbmcgLyBFbnVtIFZhbHVlICB8XG4gKiB8IE51bWJlciAgICAgICAgfCBJbnQgLyBGbG9hdCAgICAgICAgICB8XG4gKiB8IFVua25vd24gICAgICAgfCBFbnVtIFZhbHVlICAgICAgICAgICB8XG4gKiB8IG51bGwgICAgICAgICAgfCBOdWxsVmFsdWUgICAgICAgICAgICB8XG4gKlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3RGcm9tVmFsdWUodmFsdWUsIHR5cGUpIHtcbiAgaWYgKGlzTm9uTnVsbFR5cGUodHlwZSkpIHtcbiAgICBjb25zdCBhc3RWYWx1ZSA9IGFzdEZyb21WYWx1ZSh2YWx1ZSwgdHlwZS5vZlR5cGUpO1xuXG4gICAgaWYgKFxuICAgICAgKGFzdFZhbHVlID09PSBudWxsIHx8IGFzdFZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhc3RWYWx1ZS5raW5kKSA9PT1cbiAgICAgIEtpbmQuTlVMTFxuICAgICkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzdFZhbHVlO1xuICB9IC8vIG9ubHkgZXhwbGljaXQgbnVsbCwgbm90IHVuZGVmaW5lZCwgTmFOXG5cbiAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IEtpbmQuTlVMTCxcbiAgICB9O1xuICB9IC8vIHVuZGVmaW5lZFxuXG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gQ29udmVydCBKYXZhU2NyaXB0IGFycmF5IHRvIEdyYXBoUUwgbGlzdC4gSWYgdGhlIEdyYXBoUUxUeXBlIGlzIGEgbGlzdCwgYnV0XG4gIC8vIHRoZSB2YWx1ZSBpcyBub3QgYW4gYXJyYXksIGNvbnZlcnQgdGhlIHZhbHVlIHVzaW5nIHRoZSBsaXN0J3MgaXRlbSB0eXBlLlxuXG4gIGlmIChpc0xpc3RUeXBlKHR5cGUpKSB7XG4gICAgY29uc3QgaXRlbVR5cGUgPSB0eXBlLm9mVHlwZTtcblxuICAgIGlmIChpc0l0ZXJhYmxlT2JqZWN0KHZhbHVlKSkge1xuICAgICAgY29uc3QgdmFsdWVzTm9kZXMgPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1Ob2RlID0gYXN0RnJvbVZhbHVlKGl0ZW0sIGl0ZW1UeXBlKTtcblxuICAgICAgICBpZiAoaXRlbU5vZGUgIT0gbnVsbCkge1xuICAgICAgICAgIHZhbHVlc05vZGVzLnB1c2goaXRlbU5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6IEtpbmQuTElTVCxcbiAgICAgICAgdmFsdWVzOiB2YWx1ZXNOb2RlcyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzdEZyb21WYWx1ZSh2YWx1ZSwgaXRlbVR5cGUpO1xuICB9IC8vIFBvcHVsYXRlIHRoZSBmaWVsZHMgb2YgdGhlIGlucHV0IG9iamVjdCBieSBjcmVhdGluZyBBU1RzIGZyb20gZWFjaCB2YWx1ZVxuICAvLyBpbiB0aGUgSmF2YVNjcmlwdCBvYmplY3QgYWNjb3JkaW5nIHRvIHRoZSBmaWVsZHMgaW4gdGhlIGlucHV0IHR5cGUuXG5cbiAgaWYgKGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgaWYgKCFpc09iamVjdExpa2UodmFsdWUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZE5vZGVzID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIE9iamVjdC52YWx1ZXModHlwZS5nZXRGaWVsZHMoKSkpIHtcbiAgICAgIGNvbnN0IGZpZWxkVmFsdWUgPSBhc3RGcm9tVmFsdWUodmFsdWVbZmllbGQubmFtZV0sIGZpZWxkLnR5cGUpO1xuXG4gICAgICBpZiAoZmllbGRWYWx1ZSkge1xuICAgICAgICBmaWVsZE5vZGVzLnB1c2goe1xuICAgICAgICAgIGtpbmQ6IEtpbmQuT0JKRUNUX0ZJRUxELFxuICAgICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgIGtpbmQ6IEtpbmQuTkFNRSxcbiAgICAgICAgICAgIHZhbHVlOiBmaWVsZC5uYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdmFsdWU6IGZpZWxkVmFsdWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBraW5kOiBLaW5kLk9CSkVDVCxcbiAgICAgIGZpZWxkczogZmllbGROb2RlcyxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGlzTGVhZlR5cGUodHlwZSkpIHtcbiAgICAvLyBTaW5jZSB2YWx1ZSBpcyBhbiBpbnRlcm5hbGx5IHJlcHJlc2VudGVkIHZhbHVlLCBpdCBtdXN0IGJlIHNlcmlhbGl6ZWRcbiAgICAvLyB0byBhbiBleHRlcm5hbGx5IHJlcHJlc2VudGVkIHZhbHVlIGJlZm9yZSBjb252ZXJ0aW5nIGludG8gYW4gQVNULlxuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSB0eXBlLnNlcmlhbGl6ZSh2YWx1ZSk7XG5cbiAgICBpZiAoc2VyaWFsaXplZCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IC8vIE90aGVycyBzZXJpYWxpemUgYmFzZWQgb24gdGhlaXIgY29ycmVzcG9uZGluZyBKYXZhU2NyaXB0IHNjYWxhciB0eXBlcy5cblxuICAgIGlmICh0eXBlb2Ygc2VyaWFsaXplZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBraW5kOiBLaW5kLkJPT0xFQU4sXG4gICAgICAgIHZhbHVlOiBzZXJpYWxpemVkLFxuICAgICAgfTtcbiAgICB9IC8vIEphdmFTY3JpcHQgbnVtYmVycyBjYW4gYmUgSW50IG9yIEZsb2F0IHZhbHVlcy5cblxuICAgIGlmICh0eXBlb2Ygc2VyaWFsaXplZCA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzRmluaXRlKHNlcmlhbGl6ZWQpKSB7XG4gICAgICBjb25zdCBzdHJpbmdOdW0gPSBTdHJpbmcoc2VyaWFsaXplZCk7XG4gICAgICByZXR1cm4gaW50ZWdlclN0cmluZ1JlZ0V4cC50ZXN0KHN0cmluZ051bSlcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBraW5kOiBLaW5kLklOVCxcbiAgICAgICAgICAgIHZhbHVlOiBzdHJpbmdOdW0sXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIGtpbmQ6IEtpbmQuRkxPQVQsXG4gICAgICAgICAgICB2YWx1ZTogc3RyaW5nTnVtLFxuICAgICAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBzZXJpYWxpemVkID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gRW51bSB0eXBlcyB1c2UgRW51bSBsaXRlcmFscy5cbiAgICAgIGlmIChpc0VudW1UeXBlKHR5cGUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAga2luZDogS2luZC5FTlVNLFxuICAgICAgICAgIHZhbHVlOiBzZXJpYWxpemVkLFxuICAgICAgICB9O1xuICAgICAgfSAvLyBJRCB0eXBlcyBjYW4gdXNlIEludCBsaXRlcmFscy5cblxuICAgICAgaWYgKHR5cGUgPT09IEdyYXBoUUxJRCAmJiBpbnRlZ2VyU3RyaW5nUmVnRXhwLnRlc3Qoc2VyaWFsaXplZCkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBraW5kOiBLaW5kLklOVCxcbiAgICAgICAgICB2YWx1ZTogc2VyaWFsaXplZCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2luZDogS2luZC5TVFJJTkcsXG4gICAgICAgIHZhbHVlOiBzZXJpYWxpemVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBDYW5ub3QgY29udmVydCB2YWx1ZSB0byBBU1Q6ICR7aW5zcGVjdChzZXJpYWxpemVkKX0uYCk7XG4gIH1cbiAgLyogYzggaWdub3JlIG5leHQgMyAqL1xuICAvLyBOb3QgcmVhY2hhYmxlLCBhbGwgcG9zc2libGUgdHlwZXMgaGF2ZSBiZWVuIGNvbnNpZGVyZWQuXG5cbiAgZmFsc2UgfHwgaW52YXJpYW50KGZhbHNlLCAnVW5leHBlY3RlZCBpbnB1dCB0eXBlOiAnICsgaW5zcGVjdCh0eXBlKSk7XG59XG4vKipcbiAqIEludFZhbHVlOlxuICogICAtIE5lZ2F0aXZlU2lnbj8gMFxuICogICAtIE5lZ2F0aXZlU2lnbj8gTm9uWmVyb0RpZ2l0ICggRGlnaXQrICk/XG4gKi9cblxuY29uc3QgaW50ZWdlclN0cmluZ1JlZ0V4cCA9IC9eLT8oPzowfFsxLTldWzAtOV0qKSQvO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/astFromValue.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/buildASTSchema.mjs":
/*!***********************************************************!*\
  !*** ./node_modules/graphql/utilities/buildASTSchema.mjs ***!
  \***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"buildASTSchema\": function() { return /* binding */ buildASTSchema; },\n/* harmony export */   \"buildSchema\": function() { return /* binding */ buildSchema; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"./node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_parser_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../language/parser.mjs */ \"./node_modules/graphql/language/parser.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../type/directives.mjs */ \"./node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _type_schema_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../type/schema.mjs */ \"./node_modules/graphql/type/schema.mjs\");\n/* harmony import */ var _validation_validate_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../validation/validate.mjs */ \"./node_modules/graphql/validation/validate.mjs\");\n/* harmony import */ var _extendSchema_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./extendSchema.mjs */ \"./node_modules/graphql/utilities/extendSchema.mjs\");\n\n\n\n\n\n\n\n\n/**\n * This takes the ast of a schema document produced by the parse function in\n * src/language/parser.js.\n *\n * If no schema definition is provided, then it will look for types named Query,\n * Mutation and Subscription.\n *\n * Given that AST it constructs a GraphQLSchema. The resulting schema\n * has no resolve methods, so execution will use default resolvers.\n */\nfunction buildASTSchema(documentAST, options) {\n  (documentAST != null && documentAST.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.DOCUMENT) ||\n    (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_1__.devAssert)(false, 'Must provide valid Document AST.');\n\n  if (\n    (options === null || options === void 0 ? void 0 : options.assumeValid) !==\n      true &&\n    (options === null || options === void 0\n      ? void 0\n      : options.assumeValidSDL) !== true\n  ) {\n    (0,_validation_validate_mjs__WEBPACK_IMPORTED_MODULE_2__.assertValidSDL)(documentAST);\n  }\n\n  const emptySchemaConfig = {\n    description: undefined,\n    types: [],\n    directives: [],\n    extensions: Object.create(null),\n    extensionASTNodes: [],\n    assumeValid: false,\n  };\n  const config = (0,_extendSchema_mjs__WEBPACK_IMPORTED_MODULE_3__.extendSchemaImpl)(emptySchemaConfig, documentAST, options);\n\n  if (config.astNode == null) {\n    for (const type of config.types) {\n      switch (type.name) {\n        // Note: While this could make early assertions to get the correctly\n        // typed values below, that would throw immediately while type system\n        // validation with validateSchema() will produce more actionable results.\n        case 'Query':\n          // @ts-expect-error validated in `validateSchema`\n          config.query = type;\n          break;\n\n        case 'Mutation':\n          // @ts-expect-error validated in `validateSchema`\n          config.mutation = type;\n          break;\n\n        case 'Subscription':\n          // @ts-expect-error validated in `validateSchema`\n          config.subscription = type;\n          break;\n      }\n    }\n  }\n\n  const directives = [\n    ...config.directives, // If specified directives were not explicitly declared, add them.\n    ..._type_directives_mjs__WEBPACK_IMPORTED_MODULE_4__.specifiedDirectives.filter((stdDirective) =>\n      config.directives.every(\n        (directive) => directive.name !== stdDirective.name,\n      ),\n    ),\n  ];\n  return new _type_schema_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLSchema({ ...config, directives });\n}\n/**\n * A helper function to build a GraphQLSchema directly from a source\n * document.\n */\n\nfunction buildSchema(source, options) {\n  const document = (0,_language_parser_mjs__WEBPACK_IMPORTED_MODULE_6__.parse)(source, {\n    noLocation:\n      options === null || options === void 0 ? void 0 : options.noLocation,\n    allowLegacyFragmentVariables:\n      options === null || options === void 0\n        ? void 0\n        : options.allowLegacyFragmentVariables,\n  });\n  return buildASTSchema(document, {\n    assumeValidSDL:\n      options === null || options === void 0 ? void 0 : options.assumeValidSDL,\n    assumeValid:\n      options === null || options === void 0 ? void 0 : options.assumeValid,\n  });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvYnVpbGRBU1RTY2hlbWEubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFxRDtBQUNSO0FBQ0U7QUFDYztBQUNWO0FBQ1M7QUFDTjs7QUFFdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLCtDQUErQyw4REFBYTtBQUM1RCxJQUFJLGlFQUFTOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSx3RUFBYztBQUNsQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1FQUFnQjs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU8sNEVBQTBCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDJEQUFhLEdBQUcsdUJBQXVCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUCxtQkFBbUIsMkRBQUs7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2J1aWxkQVNUU2NoZW1hLm1qcz83NWVmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRldkFzc2VydCB9IGZyb20gJy4uL2pzdXRpbHMvZGV2QXNzZXJ0Lm1qcyc7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbmltcG9ydCB7IHBhcnNlIH0gZnJvbSAnLi4vbGFuZ3VhZ2UvcGFyc2VyLm1qcyc7XG5pbXBvcnQgeyBzcGVjaWZpZWREaXJlY3RpdmVzIH0gZnJvbSAnLi4vdHlwZS9kaXJlY3RpdmVzLm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMU2NoZW1hIH0gZnJvbSAnLi4vdHlwZS9zY2hlbWEubWpzJztcbmltcG9ydCB7IGFzc2VydFZhbGlkU0RMIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi92YWxpZGF0ZS5tanMnO1xuaW1wb3J0IHsgZXh0ZW5kU2NoZW1hSW1wbCB9IGZyb20gJy4vZXh0ZW5kU2NoZW1hLm1qcyc7XG5cbi8qKlxuICogVGhpcyB0YWtlcyB0aGUgYXN0IG9mIGEgc2NoZW1hIGRvY3VtZW50IHByb2R1Y2VkIGJ5IHRoZSBwYXJzZSBmdW5jdGlvbiBpblxuICogc3JjL2xhbmd1YWdlL3BhcnNlci5qcy5cbiAqXG4gKiBJZiBubyBzY2hlbWEgZGVmaW5pdGlvbiBpcyBwcm92aWRlZCwgdGhlbiBpdCB3aWxsIGxvb2sgZm9yIHR5cGVzIG5hbWVkIFF1ZXJ5LFxuICogTXV0YXRpb24gYW5kIFN1YnNjcmlwdGlvbi5cbiAqXG4gKiBHaXZlbiB0aGF0IEFTVCBpdCBjb25zdHJ1Y3RzIGEgR3JhcGhRTFNjaGVtYS4gVGhlIHJlc3VsdGluZyBzY2hlbWFcbiAqIGhhcyBubyByZXNvbHZlIG1ldGhvZHMsIHNvIGV4ZWN1dGlvbiB3aWxsIHVzZSBkZWZhdWx0IHJlc29sdmVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQVNUU2NoZW1hKGRvY3VtZW50QVNULCBvcHRpb25zKSB7XG4gIChkb2N1bWVudEFTVCAhPSBudWxsICYmIGRvY3VtZW50QVNULmtpbmQgPT09IEtpbmQuRE9DVU1FTlQpIHx8XG4gICAgZGV2QXNzZXJ0KGZhbHNlLCAnTXVzdCBwcm92aWRlIHZhbGlkIERvY3VtZW50IEFTVC4nKTtcblxuICBpZiAoXG4gICAgKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5hc3N1bWVWYWxpZCkgIT09XG4gICAgICB0cnVlICYmXG4gICAgKG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwXG4gICAgICA/IHZvaWQgMFxuICAgICAgOiBvcHRpb25zLmFzc3VtZVZhbGlkU0RMKSAhPT0gdHJ1ZVxuICApIHtcbiAgICBhc3NlcnRWYWxpZFNETChkb2N1bWVudEFTVCk7XG4gIH1cblxuICBjb25zdCBlbXB0eVNjaGVtYUNvbmZpZyA9IHtcbiAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLFxuICAgIHR5cGVzOiBbXSxcbiAgICBkaXJlY3RpdmVzOiBbXSxcbiAgICBleHRlbnNpb25zOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuICAgIGV4dGVuc2lvbkFTVE5vZGVzOiBbXSxcbiAgICBhc3N1bWVWYWxpZDogZmFsc2UsXG4gIH07XG4gIGNvbnN0IGNvbmZpZyA9IGV4dGVuZFNjaGVtYUltcGwoZW1wdHlTY2hlbWFDb25maWcsIGRvY3VtZW50QVNULCBvcHRpb25zKTtcblxuICBpZiAoY29uZmlnLmFzdE5vZGUgPT0gbnVsbCkge1xuICAgIGZvciAoY29uc3QgdHlwZSBvZiBjb25maWcudHlwZXMpIHtcbiAgICAgIHN3aXRjaCAodHlwZS5uYW1lKSB7XG4gICAgICAgIC8vIE5vdGU6IFdoaWxlIHRoaXMgY291bGQgbWFrZSBlYXJseSBhc3NlcnRpb25zIHRvIGdldCB0aGUgY29ycmVjdGx5XG4gICAgICAgIC8vIHR5cGVkIHZhbHVlcyBiZWxvdywgdGhhdCB3b3VsZCB0aHJvdyBpbW1lZGlhdGVseSB3aGlsZSB0eXBlIHN5c3RlbVxuICAgICAgICAvLyB2YWxpZGF0aW9uIHdpdGggdmFsaWRhdGVTY2hlbWEoKSB3aWxsIHByb2R1Y2UgbW9yZSBhY3Rpb25hYmxlIHJlc3VsdHMuXG4gICAgICAgIGNhc2UgJ1F1ZXJ5JzpcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHZhbGlkYXRlZCBpbiBgdmFsaWRhdGVTY2hlbWFgXG4gICAgICAgICAgY29uZmlnLnF1ZXJ5ID0gdHlwZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdNdXRhdGlvbic6XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciB2YWxpZGF0ZWQgaW4gYHZhbGlkYXRlU2NoZW1hYFxuICAgICAgICAgIGNvbmZpZy5tdXRhdGlvbiA9IHR5cGU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnU3Vic2NyaXB0aW9uJzpcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHZhbGlkYXRlZCBpbiBgdmFsaWRhdGVTY2hlbWFgXG4gICAgICAgICAgY29uZmlnLnN1YnNjcmlwdGlvbiA9IHR5cGU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZGlyZWN0aXZlcyA9IFtcbiAgICAuLi5jb25maWcuZGlyZWN0aXZlcywgLy8gSWYgc3BlY2lmaWVkIGRpcmVjdGl2ZXMgd2VyZSBub3QgZXhwbGljaXRseSBkZWNsYXJlZCwgYWRkIHRoZW0uXG4gICAgLi4uc3BlY2lmaWVkRGlyZWN0aXZlcy5maWx0ZXIoKHN0ZERpcmVjdGl2ZSkgPT5cbiAgICAgIGNvbmZpZy5kaXJlY3RpdmVzLmV2ZXJ5KFxuICAgICAgICAoZGlyZWN0aXZlKSA9PiBkaXJlY3RpdmUubmFtZSAhPT0gc3RkRGlyZWN0aXZlLm5hbWUsXG4gICAgICApLFxuICAgICksXG4gIF07XG4gIHJldHVybiBuZXcgR3JhcGhRTFNjaGVtYSh7IC4uLmNvbmZpZywgZGlyZWN0aXZlcyB9KTtcbn1cbi8qKlxuICogQSBoZWxwZXIgZnVuY3Rpb24gdG8gYnVpbGQgYSBHcmFwaFFMU2NoZW1hIGRpcmVjdGx5IGZyb20gYSBzb3VyY2VcbiAqIGRvY3VtZW50LlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNjaGVtYShzb3VyY2UsIG9wdGlvbnMpIHtcbiAgY29uc3QgZG9jdW1lbnQgPSBwYXJzZShzb3VyY2UsIHtcbiAgICBub0xvY2F0aW9uOlxuICAgICAgb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLm5vTG9jYXRpb24sXG4gICAgYWxsb3dMZWdhY3lGcmFnbWVudFZhcmlhYmxlczpcbiAgICAgIG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwXG4gICAgICAgID8gdm9pZCAwXG4gICAgICAgIDogb3B0aW9ucy5hbGxvd0xlZ2FjeUZyYWdtZW50VmFyaWFibGVzLFxuICB9KTtcbiAgcmV0dXJuIGJ1aWxkQVNUU2NoZW1hKGRvY3VtZW50LCB7XG4gICAgYXNzdW1lVmFsaWRTREw6XG4gICAgICBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuYXNzdW1lVmFsaWRTREwsXG4gICAgYXNzdW1lVmFsaWQ6XG4gICAgICBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuYXNzdW1lVmFsaWQsXG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/buildASTSchema.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/buildClientSchema.mjs":
/*!**************************************************************!*\
  !*** ./node_modules/graphql/utilities/buildClientSchema.mjs ***!
  \**************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"buildClientSchema\": function() { return /* binding */ buildClientSchema; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"./node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"./node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/keyValMap.mjs */ \"./node_modules/graphql/jsutils/keyValMap.mjs\");\n/* harmony import */ var _language_parser_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../language/parser.mjs */ \"./node_modules/graphql/language/parser.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../type/directives.mjs */ \"./node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../type/introspection.mjs */ \"./node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../type/scalars.mjs */ \"./node_modules/graphql/type/scalars.mjs\");\n/* harmony import */ var _type_schema_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../type/schema.mjs */ \"./node_modules/graphql/type/schema.mjs\");\n/* harmony import */ var _valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./valueFromAST.mjs */ \"./node_modules/graphql/utilities/valueFromAST.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Build a GraphQLSchema for use by client tools.\n *\n * Given the result of a client running the introspection query, creates and\n * returns a GraphQLSchema instance which can be then used with all graphql-js\n * tools, but cannot be used to execute a query, as introspection does not\n * represent the \"resolver\", \"parse\" or \"serialize\" functions or any other\n * server-internal mechanisms.\n *\n * This function expects a complete introspection result. Don't forget to check\n * the \"errors\" field of a server response before calling this function.\n */\n\nfunction buildClientSchema(introspection, options) {\n  ((0,_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_0__.isObjectLike)(introspection) && (0,_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_0__.isObjectLike)(introspection.__schema)) ||\n    (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_1__.devAssert)(\n      false,\n      `Invalid or incomplete introspection result. Ensure that you are passing \"data\" property of introspection response and no \"errors\" was returned alongside: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(\n        introspection,\n      )}.`,\n    ); // Get the schema from the introspection result.\n\n  const schemaIntrospection = introspection.__schema; // Iterate through all types, getting the type definition for each.\n\n  const typeMap = (0,_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_3__.keyValMap)(\n    schemaIntrospection.types,\n    (typeIntrospection) => typeIntrospection.name,\n    (typeIntrospection) => buildType(typeIntrospection),\n  ); // Include standard types only if they are used.\n\n  for (const stdType of [..._type_scalars_mjs__WEBPACK_IMPORTED_MODULE_4__.specifiedScalarTypes, ..._type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__.introspectionTypes]) {\n    if (typeMap[stdType.name]) {\n      typeMap[stdType.name] = stdType;\n    }\n  } // Get the root Query, Mutation, and Subscription types.\n\n  const queryType = schemaIntrospection.queryType\n    ? getObjectType(schemaIntrospection.queryType)\n    : null;\n  const mutationType = schemaIntrospection.mutationType\n    ? getObjectType(schemaIntrospection.mutationType)\n    : null;\n  const subscriptionType = schemaIntrospection.subscriptionType\n    ? getObjectType(schemaIntrospection.subscriptionType)\n    : null; // Get the directives supported by Introspection, assuming empty-set if\n  // directives were not queried for.\n\n  const directives = schemaIntrospection.directives\n    ? schemaIntrospection.directives.map(buildDirective)\n    : []; // Then produce and return a Schema with these types.\n\n  return new _type_schema_mjs__WEBPACK_IMPORTED_MODULE_6__.GraphQLSchema({\n    description: schemaIntrospection.description,\n    query: queryType,\n    mutation: mutationType,\n    subscription: subscriptionType,\n    types: Object.values(typeMap),\n    directives,\n    assumeValid:\n      options === null || options === void 0 ? void 0 : options.assumeValid,\n  }); // Given a type reference in introspection, return the GraphQLType instance.\n  // preferring cached instances before building new instances.\n\n  function getType(typeRef) {\n    if (typeRef.kind === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__.TypeKind.LIST) {\n      const itemRef = typeRef.ofType;\n\n      if (!itemRef) {\n        throw new Error('Decorated type deeper than introspection query.');\n      }\n\n      return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLList(getType(itemRef));\n    }\n\n    if (typeRef.kind === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__.TypeKind.NON_NULL) {\n      const nullableRef = typeRef.ofType;\n\n      if (!nullableRef) {\n        throw new Error('Decorated type deeper than introspection query.');\n      }\n\n      const nullableType = getType(nullableRef);\n      return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLNonNull((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.assertNullableType)(nullableType));\n    }\n\n    return getNamedType(typeRef);\n  }\n\n  function getNamedType(typeRef) {\n    const typeName = typeRef.name;\n\n    if (!typeName) {\n      throw new Error(`Unknown type reference: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(typeRef)}.`);\n    }\n\n    const type = typeMap[typeName];\n\n    if (!type) {\n      throw new Error(\n        `Invalid or incomplete schema, unknown type: ${typeName}. Ensure that a full introspection query is used in order to build a client schema.`,\n      );\n    }\n\n    return type;\n  }\n\n  function getObjectType(typeRef) {\n    return (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.assertObjectType)(getNamedType(typeRef));\n  }\n\n  function getInterfaceType(typeRef) {\n    return (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.assertInterfaceType)(getNamedType(typeRef));\n  } // Given a type's introspection result, construct the correct\n  // GraphQLType instance.\n\n  function buildType(type) {\n    // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n    if (type != null && type.name != null && type.kind != null) {\n      // FIXME: Properly type IntrospectionType, it's a breaking change so fix in v17\n      // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n      switch (type.kind) {\n        case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__.TypeKind.SCALAR:\n          return buildScalarDef(type);\n\n        case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__.TypeKind.OBJECT:\n          return buildObjectDef(type);\n\n        case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__.TypeKind.INTERFACE:\n          return buildInterfaceDef(type);\n\n        case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__.TypeKind.UNION:\n          return buildUnionDef(type);\n\n        case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__.TypeKind.ENUM:\n          return buildEnumDef(type);\n\n        case _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__.TypeKind.INPUT_OBJECT:\n          return buildInputObjectDef(type);\n      }\n    }\n\n    const typeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(type);\n    throw new Error(\n      `Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: ${typeStr}.`,\n    );\n  }\n\n  function buildScalarDef(scalarIntrospection) {\n    return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLScalarType({\n      name: scalarIntrospection.name,\n      description: scalarIntrospection.description,\n      specifiedByURL: scalarIntrospection.specifiedByURL,\n    });\n  }\n\n  function buildImplementationsList(implementingIntrospection) {\n    // TODO: Temporary workaround until GraphQL ecosystem will fully support\n    // 'interfaces' on interface types.\n    if (\n      implementingIntrospection.interfaces === null &&\n      implementingIntrospection.kind === _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__.TypeKind.INTERFACE\n    ) {\n      return [];\n    }\n\n    if (!implementingIntrospection.interfaces) {\n      const implementingIntrospectionStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(implementingIntrospection);\n      throw new Error(\n        `Introspection result missing interfaces: ${implementingIntrospectionStr}.`,\n      );\n    }\n\n    return implementingIntrospection.interfaces.map(getInterfaceType);\n  }\n\n  function buildObjectDef(objectIntrospection) {\n    return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLObjectType({\n      name: objectIntrospection.name,\n      description: objectIntrospection.description,\n      interfaces: () => buildImplementationsList(objectIntrospection),\n      fields: () => buildFieldDefMap(objectIntrospection),\n    });\n  }\n\n  function buildInterfaceDef(interfaceIntrospection) {\n    return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLInterfaceType({\n      name: interfaceIntrospection.name,\n      description: interfaceIntrospection.description,\n      interfaces: () => buildImplementationsList(interfaceIntrospection),\n      fields: () => buildFieldDefMap(interfaceIntrospection),\n    });\n  }\n\n  function buildUnionDef(unionIntrospection) {\n    if (!unionIntrospection.possibleTypes) {\n      const unionIntrospectionStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(unionIntrospection);\n      throw new Error(\n        `Introspection result missing possibleTypes: ${unionIntrospectionStr}.`,\n      );\n    }\n\n    return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLUnionType({\n      name: unionIntrospection.name,\n      description: unionIntrospection.description,\n      types: () => unionIntrospection.possibleTypes.map(getObjectType),\n    });\n  }\n\n  function buildEnumDef(enumIntrospection) {\n    if (!enumIntrospection.enumValues) {\n      const enumIntrospectionStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(enumIntrospection);\n      throw new Error(\n        `Introspection result missing enumValues: ${enumIntrospectionStr}.`,\n      );\n    }\n\n    return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLEnumType({\n      name: enumIntrospection.name,\n      description: enumIntrospection.description,\n      values: (0,_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_3__.keyValMap)(\n        enumIntrospection.enumValues,\n        (valueIntrospection) => valueIntrospection.name,\n        (valueIntrospection) => ({\n          description: valueIntrospection.description,\n          deprecationReason: valueIntrospection.deprecationReason,\n        }),\n      ),\n    });\n  }\n\n  function buildInputObjectDef(inputObjectIntrospection) {\n    if (!inputObjectIntrospection.inputFields) {\n      const inputObjectIntrospectionStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(inputObjectIntrospection);\n      throw new Error(\n        `Introspection result missing inputFields: ${inputObjectIntrospectionStr}.`,\n      );\n    }\n\n    return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.GraphQLInputObjectType({\n      name: inputObjectIntrospection.name,\n      description: inputObjectIntrospection.description,\n      fields: () => buildInputValueDefMap(inputObjectIntrospection.inputFields),\n    });\n  }\n\n  function buildFieldDefMap(typeIntrospection) {\n    if (!typeIntrospection.fields) {\n      throw new Error(\n        `Introspection result missing fields: ${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(typeIntrospection)}.`,\n      );\n    }\n\n    return (0,_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_3__.keyValMap)(\n      typeIntrospection.fields,\n      (fieldIntrospection) => fieldIntrospection.name,\n      buildField,\n    );\n  }\n\n  function buildField(fieldIntrospection) {\n    const type = getType(fieldIntrospection.type);\n\n    if (!(0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.isOutputType)(type)) {\n      const typeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(type);\n      throw new Error(\n        `Introspection must provide output type for fields, but received: ${typeStr}.`,\n      );\n    }\n\n    if (!fieldIntrospection.args) {\n      const fieldIntrospectionStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(fieldIntrospection);\n      throw new Error(\n        `Introspection result missing field args: ${fieldIntrospectionStr}.`,\n      );\n    }\n\n    return {\n      description: fieldIntrospection.description,\n      deprecationReason: fieldIntrospection.deprecationReason,\n      type,\n      args: buildInputValueDefMap(fieldIntrospection.args),\n    };\n  }\n\n  function buildInputValueDefMap(inputValueIntrospections) {\n    return (0,_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_3__.keyValMap)(\n      inputValueIntrospections,\n      (inputValue) => inputValue.name,\n      buildInputValue,\n    );\n  }\n\n  function buildInputValue(inputValueIntrospection) {\n    const type = getType(inputValueIntrospection.type);\n\n    if (!(0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_7__.isInputType)(type)) {\n      const typeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(type);\n      throw new Error(\n        `Introspection must provide input type for arguments, but received: ${typeStr}.`,\n      );\n    }\n\n    const defaultValue =\n      inputValueIntrospection.defaultValue != null\n        ? (0,_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_8__.valueFromAST)((0,_language_parser_mjs__WEBPACK_IMPORTED_MODULE_9__.parseValue)(inputValueIntrospection.defaultValue), type)\n        : undefined;\n    return {\n      description: inputValueIntrospection.description,\n      type,\n      defaultValue,\n      deprecationReason: inputValueIntrospection.deprecationReason,\n    };\n  }\n\n  function buildDirective(directiveIntrospection) {\n    if (!directiveIntrospection.args) {\n      const directiveIntrospectionStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(directiveIntrospection);\n      throw new Error(\n        `Introspection result missing directive args: ${directiveIntrospectionStr}.`,\n      );\n    }\n\n    if (!directiveIntrospection.locations) {\n      const directiveIntrospectionStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(directiveIntrospection);\n      throw new Error(\n        `Introspection result missing directive locations: ${directiveIntrospectionStr}.`,\n      );\n    }\n\n    return new _type_directives_mjs__WEBPACK_IMPORTED_MODULE_10__.GraphQLDirective({\n      name: directiveIntrospection.name,\n      description: directiveIntrospection.description,\n      isRepeatable: directiveIntrospection.isRepeatable,\n      locations: directiveIntrospection.locations.slice(),\n      args: buildInputValueDefMap(directiveIntrospection.args),\n    });\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvYnVpbGRDbGllbnRTY2hlbWEubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFxRDtBQUNKO0FBQ1U7QUFDTjtBQUNEO0FBZXBCO0FBQzBCO0FBQ2U7QUFDZDtBQUNSO0FBQ0Q7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1AsR0FBRyx1RUFBWSxtQkFBbUIsdUVBQVk7QUFDOUMsSUFBSSxpRUFBUztBQUNiO0FBQ0EsbUtBQW1LLDZEQUFPO0FBQzFLO0FBQ0EsUUFBUTtBQUNSLE9BQU87O0FBRVAsc0RBQXNEOztBQUV0RCxrQkFBa0IsaUVBQVM7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTCw0QkFBNEIsbUVBQW9CLEtBQUssdUVBQWtCO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0EsVUFBVTs7QUFFVixhQUFhLDJEQUFhO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEdBQUc7QUFDTjs7QUFFQTtBQUNBLHlCQUF5QixrRUFBYTtBQUN0Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLDZEQUFXO0FBQzVCOztBQUVBLHlCQUF5QixzRUFBaUI7QUFDMUM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLGdFQUFjLENBQUMsd0VBQWtCO0FBQ2xEOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGlEQUFpRCw2REFBTyxVQUFVO0FBQ2xFOztBQUVBOztBQUVBO0FBQ0E7QUFDQSx1REFBdUQsU0FBUztBQUNoRTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLHNFQUFnQjtBQUMzQjs7QUFFQTtBQUNBLFdBQVcseUVBQW1CO0FBQzlCLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLG9FQUFlO0FBQzVCOztBQUVBLGFBQWEsb0VBQWU7QUFDNUI7O0FBRUEsYUFBYSx1RUFBa0I7QUFDL0I7O0FBRUEsYUFBYSxtRUFBYztBQUMzQjs7QUFFQSxhQUFhLGtFQUFhO0FBQzFCOztBQUVBLGFBQWEsMEVBQXFCO0FBQ2xDO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsNkRBQU87QUFDM0I7QUFDQSx1SUFBdUksUUFBUTtBQUMvSTtBQUNBOztBQUVBO0FBQ0EsZUFBZSxtRUFBaUI7QUFDaEM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsdUVBQWtCO0FBQzNEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDJDQUEyQyw2REFBTztBQUNsRDtBQUNBLG9EQUFvRCw2QkFBNkI7QUFDakY7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsZUFBZSxtRUFBaUI7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxlQUFlLHNFQUFvQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0Esb0NBQW9DLDZEQUFPO0FBQzNDO0FBQ0EsdURBQXVELHNCQUFzQjtBQUM3RTtBQUNBOztBQUVBLGVBQWUsa0VBQWdCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsbUNBQW1DLDZEQUFPO0FBQzFDO0FBQ0Esb0RBQW9ELHFCQUFxQjtBQUN6RTtBQUNBOztBQUVBLGVBQWUsaUVBQWU7QUFDOUI7QUFDQTtBQUNBLGNBQWMsaUVBQVM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0EsMENBQTBDLDZEQUFPO0FBQ2pEO0FBQ0EscURBQXFELDRCQUE0QjtBQUNqRjtBQUNBOztBQUVBLGVBQWUsd0VBQXNCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsNkRBQU8sb0JBQW9CO0FBQzNFO0FBQ0E7O0FBRUEsV0FBVyxpRUFBUztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsU0FBUyxrRUFBWTtBQUNyQixzQkFBc0IsNkRBQU87QUFDN0I7QUFDQSw0RUFBNEUsUUFBUTtBQUNwRjtBQUNBOztBQUVBO0FBQ0Esb0NBQW9DLDZEQUFPO0FBQzNDO0FBQ0Esb0RBQW9ELHNCQUFzQjtBQUMxRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxpRUFBUztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsU0FBUyxpRUFBVztBQUNwQixzQkFBc0IsNkRBQU87QUFDN0I7QUFDQSw4RUFBOEUsUUFBUTtBQUN0RjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVLCtEQUFZLENBQUMsZ0VBQVU7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esd0NBQXdDLDZEQUFPO0FBQy9DO0FBQ0Esd0RBQXdELDBCQUEwQjtBQUNsRjtBQUNBOztBQUVBO0FBQ0Esd0NBQXdDLDZEQUFPO0FBQy9DO0FBQ0EsNkRBQTZELDBCQUEwQjtBQUN2RjtBQUNBOztBQUVBLGVBQWUsbUVBQWdCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvYnVpbGRDbGllbnRTY2hlbWEubWpzP2Y1NTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGV2QXNzZXJ0IH0gZnJvbSAnLi4vanN1dGlscy9kZXZBc3NlcnQubWpzJztcbmltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IGlzT2JqZWN0TGlrZSB9IGZyb20gJy4uL2pzdXRpbHMvaXNPYmplY3RMaWtlLm1qcyc7XG5pbXBvcnQgeyBrZXlWYWxNYXAgfSBmcm9tICcuLi9qc3V0aWxzL2tleVZhbE1hcC5tanMnO1xuaW1wb3J0IHsgcGFyc2VWYWx1ZSB9IGZyb20gJy4uL2xhbmd1YWdlL3BhcnNlci5tanMnO1xuaW1wb3J0IHtcbiAgYXNzZXJ0SW50ZXJmYWNlVHlwZSxcbiAgYXNzZXJ0TnVsbGFibGVUeXBlLFxuICBhc3NlcnRPYmplY3RUeXBlLFxuICBHcmFwaFFMRW51bVR5cGUsXG4gIEdyYXBoUUxJbnB1dE9iamVjdFR5cGUsXG4gIEdyYXBoUUxJbnRlcmZhY2VUeXBlLFxuICBHcmFwaFFMTGlzdCxcbiAgR3JhcGhRTE5vbk51bGwsXG4gIEdyYXBoUUxPYmplY3RUeXBlLFxuICBHcmFwaFFMU2NhbGFyVHlwZSxcbiAgR3JhcGhRTFVuaW9uVHlwZSxcbiAgaXNJbnB1dFR5cGUsXG4gIGlzT3V0cHV0VHlwZSxcbn0gZnJvbSAnLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMRGlyZWN0aXZlIH0gZnJvbSAnLi4vdHlwZS9kaXJlY3RpdmVzLm1qcyc7XG5pbXBvcnQgeyBpbnRyb3NwZWN0aW9uVHlwZXMsIFR5cGVLaW5kIH0gZnJvbSAnLi4vdHlwZS9pbnRyb3NwZWN0aW9uLm1qcyc7XG5pbXBvcnQgeyBzcGVjaWZpZWRTY2FsYXJUeXBlcyB9IGZyb20gJy4uL3R5cGUvc2NhbGFycy5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTFNjaGVtYSB9IGZyb20gJy4uL3R5cGUvc2NoZW1hLm1qcyc7XG5pbXBvcnQgeyB2YWx1ZUZyb21BU1QgfSBmcm9tICcuL3ZhbHVlRnJvbUFTVC5tanMnO1xuLyoqXG4gKiBCdWlsZCBhIEdyYXBoUUxTY2hlbWEgZm9yIHVzZSBieSBjbGllbnQgdG9vbHMuXG4gKlxuICogR2l2ZW4gdGhlIHJlc3VsdCBvZiBhIGNsaWVudCBydW5uaW5nIHRoZSBpbnRyb3NwZWN0aW9uIHF1ZXJ5LCBjcmVhdGVzIGFuZFxuICogcmV0dXJucyBhIEdyYXBoUUxTY2hlbWEgaW5zdGFuY2Ugd2hpY2ggY2FuIGJlIHRoZW4gdXNlZCB3aXRoIGFsbCBncmFwaHFsLWpzXG4gKiB0b29scywgYnV0IGNhbm5vdCBiZSB1c2VkIHRvIGV4ZWN1dGUgYSBxdWVyeSwgYXMgaW50cm9zcGVjdGlvbiBkb2VzIG5vdFxuICogcmVwcmVzZW50IHRoZSBcInJlc29sdmVyXCIsIFwicGFyc2VcIiBvciBcInNlcmlhbGl6ZVwiIGZ1bmN0aW9ucyBvciBhbnkgb3RoZXJcbiAqIHNlcnZlci1pbnRlcm5hbCBtZWNoYW5pc21zLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gZXhwZWN0cyBhIGNvbXBsZXRlIGludHJvc3BlY3Rpb24gcmVzdWx0LiBEb24ndCBmb3JnZXQgdG8gY2hlY2tcbiAqIHRoZSBcImVycm9yc1wiIGZpZWxkIG9mIGEgc2VydmVyIHJlc3BvbnNlIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQ2xpZW50U2NoZW1hKGludHJvc3BlY3Rpb24sIG9wdGlvbnMpIHtcbiAgKGlzT2JqZWN0TGlrZShpbnRyb3NwZWN0aW9uKSAmJiBpc09iamVjdExpa2UoaW50cm9zcGVjdGlvbi5fX3NjaGVtYSkpIHx8XG4gICAgZGV2QXNzZXJ0KFxuICAgICAgZmFsc2UsXG4gICAgICBgSW52YWxpZCBvciBpbmNvbXBsZXRlIGludHJvc3BlY3Rpb24gcmVzdWx0LiBFbnN1cmUgdGhhdCB5b3UgYXJlIHBhc3NpbmcgXCJkYXRhXCIgcHJvcGVydHkgb2YgaW50cm9zcGVjdGlvbiByZXNwb25zZSBhbmQgbm8gXCJlcnJvcnNcIiB3YXMgcmV0dXJuZWQgYWxvbmdzaWRlOiAke2luc3BlY3QoXG4gICAgICAgIGludHJvc3BlY3Rpb24sXG4gICAgICApfS5gLFxuICAgICk7IC8vIEdldCB0aGUgc2NoZW1hIGZyb20gdGhlIGludHJvc3BlY3Rpb24gcmVzdWx0LlxuXG4gIGNvbnN0IHNjaGVtYUludHJvc3BlY3Rpb24gPSBpbnRyb3NwZWN0aW9uLl9fc2NoZW1hOyAvLyBJdGVyYXRlIHRocm91Z2ggYWxsIHR5cGVzLCBnZXR0aW5nIHRoZSB0eXBlIGRlZmluaXRpb24gZm9yIGVhY2guXG5cbiAgY29uc3QgdHlwZU1hcCA9IGtleVZhbE1hcChcbiAgICBzY2hlbWFJbnRyb3NwZWN0aW9uLnR5cGVzLFxuICAgICh0eXBlSW50cm9zcGVjdGlvbikgPT4gdHlwZUludHJvc3BlY3Rpb24ubmFtZSxcbiAgICAodHlwZUludHJvc3BlY3Rpb24pID0+IGJ1aWxkVHlwZSh0eXBlSW50cm9zcGVjdGlvbiksXG4gICk7IC8vIEluY2x1ZGUgc3RhbmRhcmQgdHlwZXMgb25seSBpZiB0aGV5IGFyZSB1c2VkLlxuXG4gIGZvciAoY29uc3Qgc3RkVHlwZSBvZiBbLi4uc3BlY2lmaWVkU2NhbGFyVHlwZXMsIC4uLmludHJvc3BlY3Rpb25UeXBlc10pIHtcbiAgICBpZiAodHlwZU1hcFtzdGRUeXBlLm5hbWVdKSB7XG4gICAgICB0eXBlTWFwW3N0ZFR5cGUubmFtZV0gPSBzdGRUeXBlO1xuICAgIH1cbiAgfSAvLyBHZXQgdGhlIHJvb3QgUXVlcnksIE11dGF0aW9uLCBhbmQgU3Vic2NyaXB0aW9uIHR5cGVzLlxuXG4gIGNvbnN0IHF1ZXJ5VHlwZSA9IHNjaGVtYUludHJvc3BlY3Rpb24ucXVlcnlUeXBlXG4gICAgPyBnZXRPYmplY3RUeXBlKHNjaGVtYUludHJvc3BlY3Rpb24ucXVlcnlUeXBlKVxuICAgIDogbnVsbDtcbiAgY29uc3QgbXV0YXRpb25UeXBlID0gc2NoZW1hSW50cm9zcGVjdGlvbi5tdXRhdGlvblR5cGVcbiAgICA/IGdldE9iamVjdFR5cGUoc2NoZW1hSW50cm9zcGVjdGlvbi5tdXRhdGlvblR5cGUpXG4gICAgOiBudWxsO1xuICBjb25zdCBzdWJzY3JpcHRpb25UeXBlID0gc2NoZW1hSW50cm9zcGVjdGlvbi5zdWJzY3JpcHRpb25UeXBlXG4gICAgPyBnZXRPYmplY3RUeXBlKHNjaGVtYUludHJvc3BlY3Rpb24uc3Vic2NyaXB0aW9uVHlwZSlcbiAgICA6IG51bGw7IC8vIEdldCB0aGUgZGlyZWN0aXZlcyBzdXBwb3J0ZWQgYnkgSW50cm9zcGVjdGlvbiwgYXNzdW1pbmcgZW1wdHktc2V0IGlmXG4gIC8vIGRpcmVjdGl2ZXMgd2VyZSBub3QgcXVlcmllZCBmb3IuXG5cbiAgY29uc3QgZGlyZWN0aXZlcyA9IHNjaGVtYUludHJvc3BlY3Rpb24uZGlyZWN0aXZlc1xuICAgID8gc2NoZW1hSW50cm9zcGVjdGlvbi5kaXJlY3RpdmVzLm1hcChidWlsZERpcmVjdGl2ZSlcbiAgICA6IFtdOyAvLyBUaGVuIHByb2R1Y2UgYW5kIHJldHVybiBhIFNjaGVtYSB3aXRoIHRoZXNlIHR5cGVzLlxuXG4gIHJldHVybiBuZXcgR3JhcGhRTFNjaGVtYSh7XG4gICAgZGVzY3JpcHRpb246IHNjaGVtYUludHJvc3BlY3Rpb24uZGVzY3JpcHRpb24sXG4gICAgcXVlcnk6IHF1ZXJ5VHlwZSxcbiAgICBtdXRhdGlvbjogbXV0YXRpb25UeXBlLFxuICAgIHN1YnNjcmlwdGlvbjogc3Vic2NyaXB0aW9uVHlwZSxcbiAgICB0eXBlczogT2JqZWN0LnZhbHVlcyh0eXBlTWFwKSxcbiAgICBkaXJlY3RpdmVzLFxuICAgIGFzc3VtZVZhbGlkOlxuICAgICAgb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmFzc3VtZVZhbGlkLFxuICB9KTsgLy8gR2l2ZW4gYSB0eXBlIHJlZmVyZW5jZSBpbiBpbnRyb3NwZWN0aW9uLCByZXR1cm4gdGhlIEdyYXBoUUxUeXBlIGluc3RhbmNlLlxuICAvLyBwcmVmZXJyaW5nIGNhY2hlZCBpbnN0YW5jZXMgYmVmb3JlIGJ1aWxkaW5nIG5ldyBpbnN0YW5jZXMuXG5cbiAgZnVuY3Rpb24gZ2V0VHlwZSh0eXBlUmVmKSB7XG4gICAgaWYgKHR5cGVSZWYua2luZCA9PT0gVHlwZUtpbmQuTElTVCkge1xuICAgICAgY29uc3QgaXRlbVJlZiA9IHR5cGVSZWYub2ZUeXBlO1xuXG4gICAgICBpZiAoIWl0ZW1SZWYpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEZWNvcmF0ZWQgdHlwZSBkZWVwZXIgdGhhbiBpbnRyb3NwZWN0aW9uIHF1ZXJ5LicpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IEdyYXBoUUxMaXN0KGdldFR5cGUoaXRlbVJlZikpO1xuICAgIH1cblxuICAgIGlmICh0eXBlUmVmLmtpbmQgPT09IFR5cGVLaW5kLk5PTl9OVUxMKSB7XG4gICAgICBjb25zdCBudWxsYWJsZVJlZiA9IHR5cGVSZWYub2ZUeXBlO1xuXG4gICAgICBpZiAoIW51bGxhYmxlUmVmKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGVjb3JhdGVkIHR5cGUgZGVlcGVyIHRoYW4gaW50cm9zcGVjdGlvbiBxdWVyeS4nKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbnVsbGFibGVUeXBlID0gZ2V0VHlwZShudWxsYWJsZVJlZik7XG4gICAgICByZXR1cm4gbmV3IEdyYXBoUUxOb25OdWxsKGFzc2VydE51bGxhYmxlVHlwZShudWxsYWJsZVR5cGUpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0TmFtZWRUeXBlKHR5cGVSZWYpO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TmFtZWRUeXBlKHR5cGVSZWYpIHtcbiAgICBjb25zdCB0eXBlTmFtZSA9IHR5cGVSZWYubmFtZTtcblxuICAgIGlmICghdHlwZU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0eXBlIHJlZmVyZW5jZTogJHtpbnNwZWN0KHR5cGVSZWYpfS5gKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlID0gdHlwZU1hcFt0eXBlTmFtZV07XG5cbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludmFsaWQgb3IgaW5jb21wbGV0ZSBzY2hlbWEsIHVua25vd24gdHlwZTogJHt0eXBlTmFtZX0uIEVuc3VyZSB0aGF0IGEgZnVsbCBpbnRyb3NwZWN0aW9uIHF1ZXJ5IGlzIHVzZWQgaW4gb3JkZXIgdG8gYnVpbGQgYSBjbGllbnQgc2NoZW1hLmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0T2JqZWN0VHlwZSh0eXBlUmVmKSB7XG4gICAgcmV0dXJuIGFzc2VydE9iamVjdFR5cGUoZ2V0TmFtZWRUeXBlKHR5cGVSZWYpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEludGVyZmFjZVR5cGUodHlwZVJlZikge1xuICAgIHJldHVybiBhc3NlcnRJbnRlcmZhY2VUeXBlKGdldE5hbWVkVHlwZSh0eXBlUmVmKSk7XG4gIH0gLy8gR2l2ZW4gYSB0eXBlJ3MgaW50cm9zcGVjdGlvbiByZXN1bHQsIGNvbnN0cnVjdCB0aGUgY29ycmVjdFxuICAvLyBHcmFwaFFMVHlwZSBpbnN0YW5jZS5cblxuICBmdW5jdGlvbiBidWlsZFR5cGUodHlwZSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLW9wdGlvbmFsLWNoYWluXG4gICAgaWYgKHR5cGUgIT0gbnVsbCAmJiB0eXBlLm5hbWUgIT0gbnVsbCAmJiB0eXBlLmtpbmQgIT0gbnVsbCkge1xuICAgICAgLy8gRklYTUU6IFByb3Blcmx5IHR5cGUgSW50cm9zcGVjdGlvblR5cGUsIGl0J3MgYSBicmVha2luZyBjaGFuZ2Ugc28gZml4IGluIHYxN1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9zd2l0Y2gtZXhoYXVzdGl2ZW5lc3MtY2hlY2tcbiAgICAgIHN3aXRjaCAodHlwZS5raW5kKSB7XG4gICAgICAgIGNhc2UgVHlwZUtpbmQuU0NBTEFSOlxuICAgICAgICAgIHJldHVybiBidWlsZFNjYWxhckRlZih0eXBlKTtcblxuICAgICAgICBjYXNlIFR5cGVLaW5kLk9CSkVDVDpcbiAgICAgICAgICByZXR1cm4gYnVpbGRPYmplY3REZWYodHlwZSk7XG5cbiAgICAgICAgY2FzZSBUeXBlS2luZC5JTlRFUkZBQ0U6XG4gICAgICAgICAgcmV0dXJuIGJ1aWxkSW50ZXJmYWNlRGVmKHR5cGUpO1xuXG4gICAgICAgIGNhc2UgVHlwZUtpbmQuVU5JT046XG4gICAgICAgICAgcmV0dXJuIGJ1aWxkVW5pb25EZWYodHlwZSk7XG5cbiAgICAgICAgY2FzZSBUeXBlS2luZC5FTlVNOlxuICAgICAgICAgIHJldHVybiBidWlsZEVudW1EZWYodHlwZSk7XG5cbiAgICAgICAgY2FzZSBUeXBlS2luZC5JTlBVVF9PQkpFQ1Q6XG4gICAgICAgICAgcmV0dXJuIGJ1aWxkSW5wdXRPYmplY3REZWYodHlwZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZVN0ciA9IGluc3BlY3QodHlwZSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgb3IgaW5jb21wbGV0ZSBpbnRyb3NwZWN0aW9uIHJlc3VsdC4gRW5zdXJlIHRoYXQgYSBmdWxsIGludHJvc3BlY3Rpb24gcXVlcnkgaXMgdXNlZCBpbiBvcmRlciB0byBidWlsZCBhIGNsaWVudCBzY2hlbWE6ICR7dHlwZVN0cn0uYCxcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRTY2FsYXJEZWYoc2NhbGFySW50cm9zcGVjdGlvbikge1xuICAgIHJldHVybiBuZXcgR3JhcGhRTFNjYWxhclR5cGUoe1xuICAgICAgbmFtZTogc2NhbGFySW50cm9zcGVjdGlvbi5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHNjYWxhckludHJvc3BlY3Rpb24uZGVzY3JpcHRpb24sXG4gICAgICBzcGVjaWZpZWRCeVVSTDogc2NhbGFySW50cm9zcGVjdGlvbi5zcGVjaWZpZWRCeVVSTCxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkSW1wbGVtZW50YXRpb25zTGlzdChpbXBsZW1lbnRpbmdJbnRyb3NwZWN0aW9uKSB7XG4gICAgLy8gVE9ETzogVGVtcG9yYXJ5IHdvcmthcm91bmQgdW50aWwgR3JhcGhRTCBlY29zeXN0ZW0gd2lsbCBmdWxseSBzdXBwb3J0XG4gICAgLy8gJ2ludGVyZmFjZXMnIG9uIGludGVyZmFjZSB0eXBlcy5cbiAgICBpZiAoXG4gICAgICBpbXBsZW1lbnRpbmdJbnRyb3NwZWN0aW9uLmludGVyZmFjZXMgPT09IG51bGwgJiZcbiAgICAgIGltcGxlbWVudGluZ0ludHJvc3BlY3Rpb24ua2luZCA9PT0gVHlwZUtpbmQuSU5URVJGQUNFXG4gICAgKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaWYgKCFpbXBsZW1lbnRpbmdJbnRyb3NwZWN0aW9uLmludGVyZmFjZXMpIHtcbiAgICAgIGNvbnN0IGltcGxlbWVudGluZ0ludHJvc3BlY3Rpb25TdHIgPSBpbnNwZWN0KGltcGxlbWVudGluZ0ludHJvc3BlY3Rpb24pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW50cm9zcGVjdGlvbiByZXN1bHQgbWlzc2luZyBpbnRlcmZhY2VzOiAke2ltcGxlbWVudGluZ0ludHJvc3BlY3Rpb25TdHJ9LmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBpbXBsZW1lbnRpbmdJbnRyb3NwZWN0aW9uLmludGVyZmFjZXMubWFwKGdldEludGVyZmFjZVR5cGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRPYmplY3REZWYob2JqZWN0SW50cm9zcGVjdGlvbikge1xuICAgIHJldHVybiBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICAgICAgbmFtZTogb2JqZWN0SW50cm9zcGVjdGlvbi5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IG9iamVjdEludHJvc3BlY3Rpb24uZGVzY3JpcHRpb24sXG4gICAgICBpbnRlcmZhY2VzOiAoKSA9PiBidWlsZEltcGxlbWVudGF0aW9uc0xpc3Qob2JqZWN0SW50cm9zcGVjdGlvbiksXG4gICAgICBmaWVsZHM6ICgpID0+IGJ1aWxkRmllbGREZWZNYXAob2JqZWN0SW50cm9zcGVjdGlvbiksXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZEludGVyZmFjZURlZihpbnRlcmZhY2VJbnRyb3NwZWN0aW9uKSB7XG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMSW50ZXJmYWNlVHlwZSh7XG4gICAgICBuYW1lOiBpbnRlcmZhY2VJbnRyb3NwZWN0aW9uLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogaW50ZXJmYWNlSW50cm9zcGVjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIGludGVyZmFjZXM6ICgpID0+IGJ1aWxkSW1wbGVtZW50YXRpb25zTGlzdChpbnRlcmZhY2VJbnRyb3NwZWN0aW9uKSxcbiAgICAgIGZpZWxkczogKCkgPT4gYnVpbGRGaWVsZERlZk1hcChpbnRlcmZhY2VJbnRyb3NwZWN0aW9uKSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkVW5pb25EZWYodW5pb25JbnRyb3NwZWN0aW9uKSB7XG4gICAgaWYgKCF1bmlvbkludHJvc3BlY3Rpb24ucG9zc2libGVUeXBlcykge1xuICAgICAgY29uc3QgdW5pb25JbnRyb3NwZWN0aW9uU3RyID0gaW5zcGVjdCh1bmlvbkludHJvc3BlY3Rpb24pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW50cm9zcGVjdGlvbiByZXN1bHQgbWlzc2luZyBwb3NzaWJsZVR5cGVzOiAke3VuaW9uSW50cm9zcGVjdGlvblN0cn0uYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMVW5pb25UeXBlKHtcbiAgICAgIG5hbWU6IHVuaW9uSW50cm9zcGVjdGlvbi5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHVuaW9uSW50cm9zcGVjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIHR5cGVzOiAoKSA9PiB1bmlvbkludHJvc3BlY3Rpb24ucG9zc2libGVUeXBlcy5tYXAoZ2V0T2JqZWN0VHlwZSksXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZEVudW1EZWYoZW51bUludHJvc3BlY3Rpb24pIHtcbiAgICBpZiAoIWVudW1JbnRyb3NwZWN0aW9uLmVudW1WYWx1ZXMpIHtcbiAgICAgIGNvbnN0IGVudW1JbnRyb3NwZWN0aW9uU3RyID0gaW5zcGVjdChlbnVtSW50cm9zcGVjdGlvbik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnRyb3NwZWN0aW9uIHJlc3VsdCBtaXNzaW5nIGVudW1WYWx1ZXM6ICR7ZW51bUludHJvc3BlY3Rpb25TdHJ9LmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgR3JhcGhRTEVudW1UeXBlKHtcbiAgICAgIG5hbWU6IGVudW1JbnRyb3NwZWN0aW9uLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogZW51bUludHJvc3BlY3Rpb24uZGVzY3JpcHRpb24sXG4gICAgICB2YWx1ZXM6IGtleVZhbE1hcChcbiAgICAgICAgZW51bUludHJvc3BlY3Rpb24uZW51bVZhbHVlcyxcbiAgICAgICAgKHZhbHVlSW50cm9zcGVjdGlvbikgPT4gdmFsdWVJbnRyb3NwZWN0aW9uLm5hbWUsXG4gICAgICAgICh2YWx1ZUludHJvc3BlY3Rpb24pID0+ICh7XG4gICAgICAgICAgZGVzY3JpcHRpb246IHZhbHVlSW50cm9zcGVjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICBkZXByZWNhdGlvblJlYXNvbjogdmFsdWVJbnRyb3NwZWN0aW9uLmRlcHJlY2F0aW9uUmVhc29uLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZElucHV0T2JqZWN0RGVmKGlucHV0T2JqZWN0SW50cm9zcGVjdGlvbikge1xuICAgIGlmICghaW5wdXRPYmplY3RJbnRyb3NwZWN0aW9uLmlucHV0RmllbGRzKSB7XG4gICAgICBjb25zdCBpbnB1dE9iamVjdEludHJvc3BlY3Rpb25TdHIgPSBpbnNwZWN0KGlucHV0T2JqZWN0SW50cm9zcGVjdGlvbik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnRyb3NwZWN0aW9uIHJlc3VsdCBtaXNzaW5nIGlucHV0RmllbGRzOiAke2lucHV0T2JqZWN0SW50cm9zcGVjdGlvblN0cn0uYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMSW5wdXRPYmplY3RUeXBlKHtcbiAgICAgIG5hbWU6IGlucHV0T2JqZWN0SW50cm9zcGVjdGlvbi5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGlucHV0T2JqZWN0SW50cm9zcGVjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIGZpZWxkczogKCkgPT4gYnVpbGRJbnB1dFZhbHVlRGVmTWFwKGlucHV0T2JqZWN0SW50cm9zcGVjdGlvbi5pbnB1dEZpZWxkcyksXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZEZpZWxkRGVmTWFwKHR5cGVJbnRyb3NwZWN0aW9uKSB7XG4gICAgaWYgKCF0eXBlSW50cm9zcGVjdGlvbi5maWVsZHMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludHJvc3BlY3Rpb24gcmVzdWx0IG1pc3NpbmcgZmllbGRzOiAke2luc3BlY3QodHlwZUludHJvc3BlY3Rpb24pfS5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4ga2V5VmFsTWFwKFxuICAgICAgdHlwZUludHJvc3BlY3Rpb24uZmllbGRzLFxuICAgICAgKGZpZWxkSW50cm9zcGVjdGlvbikgPT4gZmllbGRJbnRyb3NwZWN0aW9uLm5hbWUsXG4gICAgICBidWlsZEZpZWxkLFxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZEZpZWxkKGZpZWxkSW50cm9zcGVjdGlvbikge1xuICAgIGNvbnN0IHR5cGUgPSBnZXRUeXBlKGZpZWxkSW50cm9zcGVjdGlvbi50eXBlKTtcblxuICAgIGlmICghaXNPdXRwdXRUeXBlKHR5cGUpKSB7XG4gICAgICBjb25zdCB0eXBlU3RyID0gaW5zcGVjdCh0eXBlKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEludHJvc3BlY3Rpb24gbXVzdCBwcm92aWRlIG91dHB1dCB0eXBlIGZvciBmaWVsZHMsIGJ1dCByZWNlaXZlZDogJHt0eXBlU3RyfS5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIWZpZWxkSW50cm9zcGVjdGlvbi5hcmdzKSB7XG4gICAgICBjb25zdCBmaWVsZEludHJvc3BlY3Rpb25TdHIgPSBpbnNwZWN0KGZpZWxkSW50cm9zcGVjdGlvbik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnRyb3NwZWN0aW9uIHJlc3VsdCBtaXNzaW5nIGZpZWxkIGFyZ3M6ICR7ZmllbGRJbnRyb3NwZWN0aW9uU3RyfS5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGVzY3JpcHRpb246IGZpZWxkSW50cm9zcGVjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIGRlcHJlY2F0aW9uUmVhc29uOiBmaWVsZEludHJvc3BlY3Rpb24uZGVwcmVjYXRpb25SZWFzb24sXG4gICAgICB0eXBlLFxuICAgICAgYXJnczogYnVpbGRJbnB1dFZhbHVlRGVmTWFwKGZpZWxkSW50cm9zcGVjdGlvbi5hcmdzKSxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRJbnB1dFZhbHVlRGVmTWFwKGlucHV0VmFsdWVJbnRyb3NwZWN0aW9ucykge1xuICAgIHJldHVybiBrZXlWYWxNYXAoXG4gICAgICBpbnB1dFZhbHVlSW50cm9zcGVjdGlvbnMsXG4gICAgICAoaW5wdXRWYWx1ZSkgPT4gaW5wdXRWYWx1ZS5uYW1lLFxuICAgICAgYnVpbGRJbnB1dFZhbHVlLFxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZElucHV0VmFsdWUoaW5wdXRWYWx1ZUludHJvc3BlY3Rpb24pIHtcbiAgICBjb25zdCB0eXBlID0gZ2V0VHlwZShpbnB1dFZhbHVlSW50cm9zcGVjdGlvbi50eXBlKTtcblxuICAgIGlmICghaXNJbnB1dFR5cGUodHlwZSkpIHtcbiAgICAgIGNvbnN0IHR5cGVTdHIgPSBpbnNwZWN0KHR5cGUpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW50cm9zcGVjdGlvbiBtdXN0IHByb3ZpZGUgaW5wdXQgdHlwZSBmb3IgYXJndW1lbnRzLCBidXQgcmVjZWl2ZWQ6ICR7dHlwZVN0cn0uYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID1cbiAgICAgIGlucHV0VmFsdWVJbnRyb3NwZWN0aW9uLmRlZmF1bHRWYWx1ZSAhPSBudWxsXG4gICAgICAgID8gdmFsdWVGcm9tQVNUKHBhcnNlVmFsdWUoaW5wdXRWYWx1ZUludHJvc3BlY3Rpb24uZGVmYXVsdFZhbHVlKSwgdHlwZSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBpbnB1dFZhbHVlSW50cm9zcGVjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIHR5cGUsXG4gICAgICBkZWZhdWx0VmFsdWUsXG4gICAgICBkZXByZWNhdGlvblJlYXNvbjogaW5wdXRWYWx1ZUludHJvc3BlY3Rpb24uZGVwcmVjYXRpb25SZWFzb24sXG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkRGlyZWN0aXZlKGRpcmVjdGl2ZUludHJvc3BlY3Rpb24pIHtcbiAgICBpZiAoIWRpcmVjdGl2ZUludHJvc3BlY3Rpb24uYXJncykge1xuICAgICAgY29uc3QgZGlyZWN0aXZlSW50cm9zcGVjdGlvblN0ciA9IGluc3BlY3QoZGlyZWN0aXZlSW50cm9zcGVjdGlvbik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBJbnRyb3NwZWN0aW9uIHJlc3VsdCBtaXNzaW5nIGRpcmVjdGl2ZSBhcmdzOiAke2RpcmVjdGl2ZUludHJvc3BlY3Rpb25TdHJ9LmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghZGlyZWN0aXZlSW50cm9zcGVjdGlvbi5sb2NhdGlvbnMpIHtcbiAgICAgIGNvbnN0IGRpcmVjdGl2ZUludHJvc3BlY3Rpb25TdHIgPSBpbnNwZWN0KGRpcmVjdGl2ZUludHJvc3BlY3Rpb24pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW50cm9zcGVjdGlvbiByZXN1bHQgbWlzc2luZyBkaXJlY3RpdmUgbG9jYXRpb25zOiAke2RpcmVjdGl2ZUludHJvc3BlY3Rpb25TdHJ9LmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgR3JhcGhRTERpcmVjdGl2ZSh7XG4gICAgICBuYW1lOiBkaXJlY3RpdmVJbnRyb3NwZWN0aW9uLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogZGlyZWN0aXZlSW50cm9zcGVjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIGlzUmVwZWF0YWJsZTogZGlyZWN0aXZlSW50cm9zcGVjdGlvbi5pc1JlcGVhdGFibGUsXG4gICAgICBsb2NhdGlvbnM6IGRpcmVjdGl2ZUludHJvc3BlY3Rpb24ubG9jYXRpb25zLnNsaWNlKCksXG4gICAgICBhcmdzOiBidWlsZElucHV0VmFsdWVEZWZNYXAoZGlyZWN0aXZlSW50cm9zcGVjdGlvbi5hcmdzKSxcbiAgICB9KTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/buildClientSchema.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/coerceInputValue.mjs":
/*!*************************************************************!*\
  !*** ./node_modules/graphql/utilities/coerceInputValue.mjs ***!
  \*************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"coerceInputValue\": function() { return /* binding */ coerceInputValue; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../jsutils/didYouMean.mjs */ \"./node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"./node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_isIterableObject_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/isIterableObject.mjs */ \"./node_modules/graphql/jsutils/isIterableObject.mjs\");\n/* harmony import */ var _jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../jsutils/isObjectLike.mjs */ \"./node_modules/graphql/jsutils/isObjectLike.mjs\");\n/* harmony import */ var _jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/Path.mjs */ \"./node_modules/graphql/jsutils/Path.mjs\");\n/* harmony import */ var _jsutils_printPathArray_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/printPathArray.mjs */ \"./node_modules/graphql/jsutils/printPathArray.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jsutils/suggestionList.mjs */ \"./node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Coerces a JavaScript value given a GraphQL Input Type.\n */\nfunction coerceInputValue(inputValue, type, onError = defaultOnError) {\n  return coerceInputValueImpl(inputValue, type, onError, undefined);\n}\n\nfunction defaultOnError(path, invalidValue, error) {\n  let errorPrefix = 'Invalid value ' + (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(invalidValue);\n\n  if (path.length > 0) {\n    errorPrefix += ` at \"value${(0,_jsutils_printPathArray_mjs__WEBPACK_IMPORTED_MODULE_1__.printPathArray)(path)}\"`;\n  }\n\n  error.message = errorPrefix + ': ' + error.message;\n  throw error;\n}\n\nfunction coerceInputValueImpl(inputValue, type, onError, path) {\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isNonNullType)(type)) {\n    if (inputValue != null) {\n      return coerceInputValueImpl(inputValue, type.ofType, onError, path);\n    }\n\n    onError(\n      (0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_3__.pathToArray)(path),\n      inputValue,\n      new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__.GraphQLError(\n        `Expected non-nullable type \"${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type)}\" not to be null.`,\n      ),\n    );\n    return;\n  }\n\n  if (inputValue == null) {\n    // Explicitly return the value null.\n    return null;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isListType)(type)) {\n    const itemType = type.ofType;\n\n    if ((0,_jsutils_isIterableObject_mjs__WEBPACK_IMPORTED_MODULE_5__.isIterableObject)(inputValue)) {\n      return Array.from(inputValue, (itemValue, index) => {\n        const itemPath = (0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_3__.addPath)(path, index, undefined);\n        return coerceInputValueImpl(itemValue, itemType, onError, itemPath);\n      });\n    } // Lists accept a non-list value as a list of one.\n\n    return [coerceInputValueImpl(inputValue, itemType, onError, path)];\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isInputObjectType)(type)) {\n    if (!(0,_jsutils_isObjectLike_mjs__WEBPACK_IMPORTED_MODULE_6__.isObjectLike)(inputValue)) {\n      onError(\n        (0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_3__.pathToArray)(path),\n        inputValue,\n        new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__.GraphQLError(`Expected type \"${type.name}\" to be an object.`),\n      );\n      return;\n    }\n\n    const coercedValue = {};\n    const fieldDefs = type.getFields();\n\n    for (const field of Object.values(fieldDefs)) {\n      const fieldValue = inputValue[field.name];\n\n      if (fieldValue === undefined) {\n        if (field.defaultValue !== undefined) {\n          coercedValue[field.name] = field.defaultValue;\n        } else if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isNonNullType)(field.type)) {\n          const typeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(field.type);\n          onError(\n            (0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_3__.pathToArray)(path),\n            inputValue,\n            new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__.GraphQLError(\n              `Field \"${field.name}\" of required type \"${typeStr}\" was not provided.`,\n            ),\n          );\n        }\n\n        continue;\n      }\n\n      coercedValue[field.name] = coerceInputValueImpl(\n        fieldValue,\n        field.type,\n        onError,\n        (0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_3__.addPath)(path, field.name, type.name),\n      );\n    } // Ensure every provided field is defined.\n\n    for (const fieldName of Object.keys(inputValue)) {\n      if (!fieldDefs[fieldName]) {\n        const suggestions = (0,_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_7__.suggestionList)(\n          fieldName,\n          Object.keys(type.getFields()),\n        );\n        onError(\n          (0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_3__.pathToArray)(path),\n          inputValue,\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__.GraphQLError(\n            `Field \"${fieldName}\" is not defined by type \"${type.name}\".` +\n              (0,_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_8__.didYouMean)(suggestions),\n          ),\n        );\n      }\n    }\n\n    return coercedValue;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isLeafType)(type)) {\n    let parseResult; // Scalars and Enums determine if a input value is valid via parseValue(),\n    // which can throw to indicate failure. If it throws, maintain a reference\n    // to the original error.\n\n    try {\n      parseResult = type.parseValue(inputValue);\n    } catch (error) {\n      if (error instanceof _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__.GraphQLError) {\n        onError((0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_3__.pathToArray)(path), inputValue, error);\n      } else {\n        onError(\n          (0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_3__.pathToArray)(path),\n          inputValue,\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__.GraphQLError(\n            `Expected type \"${type.name}\". ` + error.message,\n            undefined,\n            undefined,\n            undefined,\n            undefined,\n            error,\n          ),\n        );\n      }\n\n      return;\n    }\n\n    if (parseResult === undefined) {\n      onError(\n        (0,_jsutils_Path_mjs__WEBPACK_IMPORTED_MODULE_3__.pathToArray)(path),\n        inputValue,\n        new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_4__.GraphQLError(`Expected type \"${type.name}\".`),\n      );\n    }\n\n    return parseResult;\n  }\n  /* c8 ignore next 3 */\n  // Not reachable, all possible types have been considered.\n\n   false || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_9__.invariant)(false, 'Unexpected input type: ' + (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_0__.inspect)(type));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvY29lcmNlSW5wdXRWYWx1ZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBdUQ7QUFDTjtBQUNJO0FBQ2M7QUFDUjtBQUNBO0FBQ0k7QUFDQTtBQUNOO0FBTXpCOztBQUVoQztBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSx1Q0FBdUMsNkRBQU87O0FBRTlDO0FBQ0EsZ0NBQWdDLDJFQUFjLE9BQU87QUFDckQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTSxtRUFBYTtBQUNuQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNLDhEQUFXO0FBQ2pCO0FBQ0EsVUFBVSxpRUFBWTtBQUN0Qix1Q0FBdUMsNkRBQU8sT0FBTztBQUNyRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNLGdFQUFVO0FBQ2hCOztBQUVBLFFBQVEsK0VBQWdCO0FBQ3hCO0FBQ0EseUJBQXlCLDBEQUFPO0FBQ2hDO0FBQ0EsT0FBTztBQUNQLE1BQU07O0FBRU47QUFDQTs7QUFFQSxNQUFNLHVFQUFpQjtBQUN2QixTQUFTLHVFQUFZO0FBQ3JCO0FBQ0EsUUFBUSw4REFBVztBQUNuQjtBQUNBLFlBQVksaUVBQVksbUJBQW1CLFVBQVU7QUFDckQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLFNBQVMsbUVBQWE7QUFDaEMsMEJBQTBCLDZEQUFPO0FBQ2pDO0FBQ0EsWUFBWSw4REFBVztBQUN2QjtBQUNBLGdCQUFnQixpRUFBWTtBQUM1Qix3QkFBd0IsV0FBVyxzQkFBc0IsUUFBUTtBQUNqRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsMERBQU87QUFDZjtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBLDRCQUE0QiwyRUFBYztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsOERBQVc7QUFDckI7QUFDQSxjQUFjLGlFQUFZO0FBQzFCLHNCQUFzQixVQUFVLDRCQUE0QixVQUFVO0FBQ3RFLGNBQWMsbUVBQVU7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxNQUFNLGdFQUFVO0FBQ2hCLHFCQUFxQjtBQUNyQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sMkJBQTJCLGlFQUFZO0FBQ3ZDLGdCQUFnQiw4REFBVztBQUMzQixRQUFRO0FBQ1I7QUFDQSxVQUFVLDhEQUFXO0FBQ3JCO0FBQ0EsY0FBYyxpRUFBWTtBQUMxQiw4QkFBOEIsVUFBVTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVEsOERBQVc7QUFDbkI7QUFDQSxZQUFZLGlFQUFZLG1CQUFtQixVQUFVO0FBQ3JEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsRUFBRSxNQUFLLElBQUksaUVBQVMsb0NBQW9DLDZEQUFPO0FBQy9EIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9jb2VyY2VJbnB1dFZhbHVlLm1qcz8xZTdmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpZFlvdU1lYW4gfSBmcm9tICcuLi9qc3V0aWxzL2RpZFlvdU1lYW4ubWpzJztcbmltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IGludmFyaWFudCB9IGZyb20gJy4uL2pzdXRpbHMvaW52YXJpYW50Lm1qcyc7XG5pbXBvcnQgeyBpc0l0ZXJhYmxlT2JqZWN0IH0gZnJvbSAnLi4vanN1dGlscy9pc0l0ZXJhYmxlT2JqZWN0Lm1qcyc7XG5pbXBvcnQgeyBpc09iamVjdExpa2UgfSBmcm9tICcuLi9qc3V0aWxzL2lzT2JqZWN0TGlrZS5tanMnO1xuaW1wb3J0IHsgYWRkUGF0aCwgcGF0aFRvQXJyYXkgfSBmcm9tICcuLi9qc3V0aWxzL1BhdGgubWpzJztcbmltcG9ydCB7IHByaW50UGF0aEFycmF5IH0gZnJvbSAnLi4vanN1dGlscy9wcmludFBhdGhBcnJheS5tanMnO1xuaW1wb3J0IHsgc3VnZ2VzdGlvbkxpc3QgfSBmcm9tICcuLi9qc3V0aWxzL3N1Z2dlc3Rpb25MaXN0Lm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcbmltcG9ydCB7XG4gIGlzSW5wdXRPYmplY3RUeXBlLFxuICBpc0xlYWZUeXBlLFxuICBpc0xpc3RUeXBlLFxuICBpc05vbk51bGxUeXBlLFxufSBmcm9tICcuLi90eXBlL2RlZmluaXRpb24ubWpzJztcblxuLyoqXG4gKiBDb2VyY2VzIGEgSmF2YVNjcmlwdCB2YWx1ZSBnaXZlbiBhIEdyYXBoUUwgSW5wdXQgVHlwZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUlucHV0VmFsdWUoaW5wdXRWYWx1ZSwgdHlwZSwgb25FcnJvciA9IGRlZmF1bHRPbkVycm9yKSB7XG4gIHJldHVybiBjb2VyY2VJbnB1dFZhbHVlSW1wbChpbnB1dFZhbHVlLCB0eXBlLCBvbkVycm9yLCB1bmRlZmluZWQpO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0T25FcnJvcihwYXRoLCBpbnZhbGlkVmFsdWUsIGVycm9yKSB7XG4gIGxldCBlcnJvclByZWZpeCA9ICdJbnZhbGlkIHZhbHVlICcgKyBpbnNwZWN0KGludmFsaWRWYWx1ZSk7XG5cbiAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgIGVycm9yUHJlZml4ICs9IGAgYXQgXCJ2YWx1ZSR7cHJpbnRQYXRoQXJyYXkocGF0aCl9XCJgO1xuICB9XG5cbiAgZXJyb3IubWVzc2FnZSA9IGVycm9yUHJlZml4ICsgJzogJyArIGVycm9yLm1lc3NhZ2U7XG4gIHRocm93IGVycm9yO1xufVxuXG5mdW5jdGlvbiBjb2VyY2VJbnB1dFZhbHVlSW1wbChpbnB1dFZhbHVlLCB0eXBlLCBvbkVycm9yLCBwYXRoKSB7XG4gIGlmIChpc05vbk51bGxUeXBlKHR5cGUpKSB7XG4gICAgaWYgKGlucHV0VmFsdWUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGNvZXJjZUlucHV0VmFsdWVJbXBsKGlucHV0VmFsdWUsIHR5cGUub2ZUeXBlLCBvbkVycm9yLCBwYXRoKTtcbiAgICB9XG5cbiAgICBvbkVycm9yKFxuICAgICAgcGF0aFRvQXJyYXkocGF0aCksXG4gICAgICBpbnB1dFZhbHVlLFxuICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgYEV4cGVjdGVkIG5vbi1udWxsYWJsZSB0eXBlIFwiJHtpbnNwZWN0KHR5cGUpfVwiIG5vdCB0byBiZSBudWxsLmAsXG4gICAgICApLFxuICAgICk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGlucHV0VmFsdWUgPT0gbnVsbCkge1xuICAgIC8vIEV4cGxpY2l0bHkgcmV0dXJuIHRoZSB2YWx1ZSBudWxsLlxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGlzTGlzdFR5cGUodHlwZSkpIHtcbiAgICBjb25zdCBpdGVtVHlwZSA9IHR5cGUub2ZUeXBlO1xuXG4gICAgaWYgKGlzSXRlcmFibGVPYmplY3QoaW5wdXRWYWx1ZSkpIHtcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKGlucHV0VmFsdWUsIChpdGVtVmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW1QYXRoID0gYWRkUGF0aChwYXRoLCBpbmRleCwgdW5kZWZpbmVkKTtcbiAgICAgICAgcmV0dXJuIGNvZXJjZUlucHV0VmFsdWVJbXBsKGl0ZW1WYWx1ZSwgaXRlbVR5cGUsIG9uRXJyb3IsIGl0ZW1QYXRoKTtcbiAgICAgIH0pO1xuICAgIH0gLy8gTGlzdHMgYWNjZXB0IGEgbm9uLWxpc3QgdmFsdWUgYXMgYSBsaXN0IG9mIG9uZS5cblxuICAgIHJldHVybiBbY29lcmNlSW5wdXRWYWx1ZUltcGwoaW5wdXRWYWx1ZSwgaXRlbVR5cGUsIG9uRXJyb3IsIHBhdGgpXTtcbiAgfVxuXG4gIGlmIChpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSkge1xuICAgIGlmICghaXNPYmplY3RMaWtlKGlucHV0VmFsdWUpKSB7XG4gICAgICBvbkVycm9yKFxuICAgICAgICBwYXRoVG9BcnJheShwYXRoKSxcbiAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihgRXhwZWN0ZWQgdHlwZSBcIiR7dHlwZS5uYW1lfVwiIHRvIGJlIGFuIG9iamVjdC5gKSxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29lcmNlZFZhbHVlID0ge307XG4gICAgY29uc3QgZmllbGREZWZzID0gdHlwZS5nZXRGaWVsZHMoKTtcblxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgT2JqZWN0LnZhbHVlcyhmaWVsZERlZnMpKSB7XG4gICAgICBjb25zdCBmaWVsZFZhbHVlID0gaW5wdXRWYWx1ZVtmaWVsZC5uYW1lXTtcblxuICAgICAgaWYgKGZpZWxkVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoZmllbGQuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb2VyY2VkVmFsdWVbZmllbGQubmFtZV0gPSBmaWVsZC5kZWZhdWx0VmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNOb25OdWxsVHlwZShmaWVsZC50eXBlKSkge1xuICAgICAgICAgIGNvbnN0IHR5cGVTdHIgPSBpbnNwZWN0KGZpZWxkLnR5cGUpO1xuICAgICAgICAgIG9uRXJyb3IoXG4gICAgICAgICAgICBwYXRoVG9BcnJheShwYXRoKSxcbiAgICAgICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgICBgRmllbGQgXCIke2ZpZWxkLm5hbWV9XCIgb2YgcmVxdWlyZWQgdHlwZSBcIiR7dHlwZVN0cn1cIiB3YXMgbm90IHByb3ZpZGVkLmAsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29lcmNlZFZhbHVlW2ZpZWxkLm5hbWVdID0gY29lcmNlSW5wdXRWYWx1ZUltcGwoXG4gICAgICAgIGZpZWxkVmFsdWUsXG4gICAgICAgIGZpZWxkLnR5cGUsXG4gICAgICAgIG9uRXJyb3IsXG4gICAgICAgIGFkZFBhdGgocGF0aCwgZmllbGQubmFtZSwgdHlwZS5uYW1lKSxcbiAgICAgICk7XG4gICAgfSAvLyBFbnN1cmUgZXZlcnkgcHJvdmlkZWQgZmllbGQgaXMgZGVmaW5lZC5cblxuICAgIGZvciAoY29uc3QgZmllbGROYW1lIG9mIE9iamVjdC5rZXlzKGlucHV0VmFsdWUpKSB7XG4gICAgICBpZiAoIWZpZWxkRGVmc1tmaWVsZE5hbWVdKSB7XG4gICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbkxpc3QoXG4gICAgICAgICAgZmllbGROYW1lLFxuICAgICAgICAgIE9iamVjdC5rZXlzKHR5cGUuZ2V0RmllbGRzKCkpLFxuICAgICAgICApO1xuICAgICAgICBvbkVycm9yKFxuICAgICAgICAgIHBhdGhUb0FycmF5KHBhdGgpLFxuICAgICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBGaWVsZCBcIiR7ZmllbGROYW1lfVwiIGlzIG5vdCBkZWZpbmVkIGJ5IHR5cGUgXCIke3R5cGUubmFtZX1cIi5gICtcbiAgICAgICAgICAgICAgZGlkWW91TWVhbihzdWdnZXN0aW9ucyksXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29lcmNlZFZhbHVlO1xuICB9XG5cbiAgaWYgKGlzTGVhZlR5cGUodHlwZSkpIHtcbiAgICBsZXQgcGFyc2VSZXN1bHQ7IC8vIFNjYWxhcnMgYW5kIEVudW1zIGRldGVybWluZSBpZiBhIGlucHV0IHZhbHVlIGlzIHZhbGlkIHZpYSBwYXJzZVZhbHVlKCksXG4gICAgLy8gd2hpY2ggY2FuIHRocm93IHRvIGluZGljYXRlIGZhaWx1cmUuIElmIGl0IHRocm93cywgbWFpbnRhaW4gYSByZWZlcmVuY2VcbiAgICAvLyB0byB0aGUgb3JpZ2luYWwgZXJyb3IuXG5cbiAgICB0cnkge1xuICAgICAgcGFyc2VSZXN1bHQgPSB0eXBlLnBhcnNlVmFsdWUoaW5wdXRWYWx1ZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEdyYXBoUUxFcnJvcikge1xuICAgICAgICBvbkVycm9yKHBhdGhUb0FycmF5KHBhdGgpLCBpbnB1dFZhbHVlLCBlcnJvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbkVycm9yKFxuICAgICAgICAgIHBhdGhUb0FycmF5KHBhdGgpLFxuICAgICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBFeHBlY3RlZCB0eXBlIFwiJHt0eXBlLm5hbWV9XCIuIGAgKyBlcnJvci5tZXNzYWdlLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwYXJzZVJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBvbkVycm9yKFxuICAgICAgICBwYXRoVG9BcnJheShwYXRoKSxcbiAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihgRXhwZWN0ZWQgdHlwZSBcIiR7dHlwZS5uYW1lfVwiLmApLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VSZXN1bHQ7XG4gIH1cbiAgLyogYzggaWdub3JlIG5leHQgMyAqL1xuICAvLyBOb3QgcmVhY2hhYmxlLCBhbGwgcG9zc2libGUgdHlwZXMgaGF2ZSBiZWVuIGNvbnNpZGVyZWQuXG5cbiAgZmFsc2UgfHwgaW52YXJpYW50KGZhbHNlLCAnVW5leHBlY3RlZCBpbnB1dCB0eXBlOiAnICsgaW5zcGVjdCh0eXBlKSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/coerceInputValue.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/concatAST.mjs":
/*!******************************************************!*\
  !*** ./node_modules/graphql/utilities/concatAST.mjs ***!
  \******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"concatAST\": function() { return /* binding */ concatAST; }\n/* harmony export */ });\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n\n/**\n * Provided a collection of ASTs, presumably each from different files,\n * concatenate the ASTs together into batched AST, useful for validating many\n * GraphQL source files which together represent one conceptual application.\n */\n\nfunction concatAST(documents) {\n  const definitions = [];\n\n  for (const doc of documents) {\n    definitions.push(...doc.definitions);\n  }\n\n  return {\n    kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.DOCUMENT,\n    definitions,\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvY29uY2F0QVNULm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSw4REFBYTtBQUN2QjtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2NvbmNhdEFTVC5tanM/NzkwNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbi8qKlxuICogUHJvdmlkZWQgYSBjb2xsZWN0aW9uIG9mIEFTVHMsIHByZXN1bWFibHkgZWFjaCBmcm9tIGRpZmZlcmVudCBmaWxlcyxcbiAqIGNvbmNhdGVuYXRlIHRoZSBBU1RzIHRvZ2V0aGVyIGludG8gYmF0Y2hlZCBBU1QsIHVzZWZ1bCBmb3IgdmFsaWRhdGluZyBtYW55XG4gKiBHcmFwaFFMIHNvdXJjZSBmaWxlcyB3aGljaCB0b2dldGhlciByZXByZXNlbnQgb25lIGNvbmNlcHR1YWwgYXBwbGljYXRpb24uXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNhdEFTVChkb2N1bWVudHMpIHtcbiAgY29uc3QgZGVmaW5pdGlvbnMgPSBbXTtcblxuICBmb3IgKGNvbnN0IGRvYyBvZiBkb2N1bWVudHMpIHtcbiAgICBkZWZpbml0aW9ucy5wdXNoKC4uLmRvYy5kZWZpbml0aW9ucyk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGtpbmQ6IEtpbmQuRE9DVU1FTlQsXG4gICAgZGVmaW5pdGlvbnMsXG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/concatAST.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/extendSchema.mjs":
/*!*********************************************************!*\
  !*** ./node_modules/graphql/utilities/extendSchema.mjs ***!
  \*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"extendSchema\": function() { return /* binding */ extendSchema; },\n/* harmony export */   \"extendSchemaImpl\": function() { return /* binding */ extendSchemaImpl; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"./node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"./node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../jsutils/keyMap.mjs */ \"./node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jsutils/mapValue.mjs */ \"./node_modules/graphql/jsutils/mapValue.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_predicates_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../language/predicates.mjs */ \"./node_modules/graphql/language/predicates.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../type/directives.mjs */ \"./node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../type/introspection.mjs */ \"./node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../type/scalars.mjs */ \"./node_modules/graphql/type/scalars.mjs\");\n/* harmony import */ var _type_schema_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../type/schema.mjs */ \"./node_modules/graphql/type/schema.mjs\");\n/* harmony import */ var _validation_validate_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../validation/validate.mjs */ \"./node_modules/graphql/validation/validate.mjs\");\n/* harmony import */ var _execution_values_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../execution/values.mjs */ \"./node_modules/graphql/execution/values.mjs\");\n/* harmony import */ var _valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./valueFromAST.mjs */ \"./node_modules/graphql/utilities/valueFromAST.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Produces a new schema given an existing schema and a document which may\n * contain GraphQL type extensions and definitions. The original schema will\n * remain unaltered.\n *\n * Because a schema represents a graph of references, a schema cannot be\n * extended without effectively making an entire copy. We do not know until it's\n * too late if subgraphs remain unchanged.\n *\n * This algorithm copies the provided schema, applying extensions while\n * producing the copy. The original schema remains unaltered.\n */\nfunction extendSchema(schema, documentAST, options) {\n  (0,_type_schema_mjs__WEBPACK_IMPORTED_MODULE_0__.assertSchema)(schema);\n  (documentAST != null && documentAST.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.DOCUMENT) ||\n    (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(false, 'Must provide valid Document AST.');\n\n  if (\n    (options === null || options === void 0 ? void 0 : options.assumeValid) !==\n      true &&\n    (options === null || options === void 0\n      ? void 0\n      : options.assumeValidSDL) !== true\n  ) {\n    (0,_validation_validate_mjs__WEBPACK_IMPORTED_MODULE_3__.assertValidSDLExtension)(documentAST, schema);\n  }\n\n  const schemaConfig = schema.toConfig();\n  const extendedConfig = extendSchemaImpl(schemaConfig, documentAST, options);\n  return schemaConfig === extendedConfig\n    ? schema\n    : new _type_schema_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLSchema(extendedConfig);\n}\n/**\n * @internal\n */\n\nfunction extendSchemaImpl(schemaConfig, documentAST, options) {\n  var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid;\n\n  // Collect the type definitions and extensions found in the document.\n  const typeDefs = [];\n  const typeExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can\n  // have the same name. For example, a type named \"skip\".\n\n  const directiveDefs = [];\n  let schemaDef; // Schema extensions are collected which may add additional operation types.\n\n  const schemaExtensions = [];\n\n  for (const def of documentAST.definitions) {\n    if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.SCHEMA_DEFINITION) {\n      schemaDef = def;\n    } else if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.SCHEMA_EXTENSION) {\n      schemaExtensions.push(def);\n    } else if ((0,_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_4__.isTypeDefinitionNode)(def)) {\n      typeDefs.push(def);\n    } else if ((0,_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_4__.isTypeExtensionNode)(def)) {\n      const extendedTypeName = def.name.value;\n      const existingTypeExtensions = typeExtensionsMap[extendedTypeName];\n      typeExtensionsMap[extendedTypeName] = existingTypeExtensions\n        ? existingTypeExtensions.concat([def])\n        : [def];\n    } else if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.DIRECTIVE_DEFINITION) {\n      directiveDefs.push(def);\n    }\n  } // If this document contains no new types, extensions, or directives then\n  // return the same unmodified GraphQLSchema instance.\n\n  if (\n    Object.keys(typeExtensionsMap).length === 0 &&\n    typeDefs.length === 0 &&\n    directiveDefs.length === 0 &&\n    schemaExtensions.length === 0 &&\n    schemaDef == null\n  ) {\n    return schemaConfig;\n  }\n\n  const typeMap = Object.create(null);\n\n  for (const existingType of schemaConfig.types) {\n    typeMap[existingType.name] = extendNamedType(existingType);\n  }\n\n  for (const typeNode of typeDefs) {\n    var _stdTypeMap$name;\n\n    const name = typeNode.name.value;\n    typeMap[name] =\n      (_stdTypeMap$name = stdTypeMap[name]) !== null &&\n      _stdTypeMap$name !== void 0\n        ? _stdTypeMap$name\n        : buildType(typeNode);\n  }\n\n  const operationTypes = {\n    // Get the extended root operation types.\n    query: schemaConfig.query && replaceNamedType(schemaConfig.query),\n    mutation: schemaConfig.mutation && replaceNamedType(schemaConfig.mutation),\n    subscription:\n      schemaConfig.subscription && replaceNamedType(schemaConfig.subscription),\n    // Then, incorporate schema definition and all schema extensions.\n    ...(schemaDef && getOperationTypes([schemaDef])),\n    ...getOperationTypes(schemaExtensions),\n  }; // Then produce and return a Schema config with these types.\n\n  return {\n    description:\n      (_schemaDef = schemaDef) === null || _schemaDef === void 0\n        ? void 0\n        : (_schemaDef$descriptio = _schemaDef.description) === null ||\n          _schemaDef$descriptio === void 0\n        ? void 0\n        : _schemaDef$descriptio.value,\n    ...operationTypes,\n    types: Object.values(typeMap),\n    directives: [\n      ...schemaConfig.directives.map(replaceDirective),\n      ...directiveDefs.map(buildDirective),\n    ],\n    extensions: Object.create(null),\n    astNode:\n      (_schemaDef2 = schemaDef) !== null && _schemaDef2 !== void 0\n        ? _schemaDef2\n        : schemaConfig.astNode,\n    extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions),\n    assumeValid:\n      (_options$assumeValid =\n        options === null || options === void 0\n          ? void 0\n          : options.assumeValid) !== null && _options$assumeValid !== void 0\n        ? _options$assumeValid\n        : false,\n  }; // Below are functions used for producing this schema that have closed over\n  // this scope and have access to the schema, cache, and newly defined types.\n\n  function replaceType(type) {\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.isListType)(type)) {\n      // @ts-expect-error\n      return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLList(replaceType(type.ofType));\n    }\n\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.isNonNullType)(type)) {\n      // @ts-expect-error\n      return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLNonNull(replaceType(type.ofType));\n    } // @ts-expect-error FIXME\n\n    return replaceNamedType(type);\n  }\n\n  function replaceNamedType(type) {\n    // Note: While this could make early assertions to get the correctly\n    // typed values, that would throw immediately while type system\n    // validation with validateSchema() will produce more actionable results.\n    return typeMap[type.name];\n  }\n\n  function replaceDirective(directive) {\n    const config = directive.toConfig();\n    return new _type_directives_mjs__WEBPACK_IMPORTED_MODULE_6__.GraphQLDirective({\n      ...config,\n      args: (0,_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_7__.mapValue)(config.args, extendArg),\n    });\n  }\n\n  function extendNamedType(type) {\n    if ((0,_type_introspection_mjs__WEBPACK_IMPORTED_MODULE_8__.isIntrospectionType)(type) || (0,_type_scalars_mjs__WEBPACK_IMPORTED_MODULE_9__.isSpecifiedScalarType)(type)) {\n      // Builtin types are not extended.\n      return type;\n    }\n\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.isScalarType)(type)) {\n      return extendScalarType(type);\n    }\n\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.isObjectType)(type)) {\n      return extendObjectType(type);\n    }\n\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.isInterfaceType)(type)) {\n      return extendInterfaceType(type);\n    }\n\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.isUnionType)(type)) {\n      return extendUnionType(type);\n    }\n\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.isEnumType)(type)) {\n      return extendEnumType(type);\n    }\n\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.isInputObjectType)(type)) {\n      return extendInputObjectType(type);\n    }\n    /* c8 ignore next 3 */\n    // Not reachable, all possible type definition nodes have been considered.\n\n     false || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_10__.invariant)(false, 'Unexpected type: ' + (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_11__.inspect)(type));\n  }\n\n  function extendInputObjectType(type) {\n    var _typeExtensionsMap$co;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$co = typeExtensionsMap[config.name]) !== null &&\n      _typeExtensionsMap$co !== void 0\n        ? _typeExtensionsMap$co\n        : [];\n    return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLInputObjectType({\n      ...config,\n      fields: () => ({\n        ...(0,_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_7__.mapValue)(config.fields, (field) => ({\n          ...field,\n          type: replaceType(field.type),\n        })),\n        ...buildInputFieldMap(extensions),\n      }),\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendEnumType(type) {\n    var _typeExtensionsMap$ty;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$ty = typeExtensionsMap[type.name]) !== null &&\n      _typeExtensionsMap$ty !== void 0\n        ? _typeExtensionsMap$ty\n        : [];\n    return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLEnumType({\n      ...config,\n      values: { ...config.values, ...buildEnumValueMap(extensions) },\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendScalarType(type) {\n    var _typeExtensionsMap$co2;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$co2 = typeExtensionsMap[config.name]) !== null &&\n      _typeExtensionsMap$co2 !== void 0\n        ? _typeExtensionsMap$co2\n        : [];\n    let specifiedByURL = config.specifiedByURL;\n\n    for (const extensionNode of extensions) {\n      var _getSpecifiedByURL;\n\n      specifiedByURL =\n        (_getSpecifiedByURL = getSpecifiedByURL(extensionNode)) !== null &&\n        _getSpecifiedByURL !== void 0\n          ? _getSpecifiedByURL\n          : specifiedByURL;\n    }\n\n    return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLScalarType({\n      ...config,\n      specifiedByURL,\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendObjectType(type) {\n    var _typeExtensionsMap$co3;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$co3 = typeExtensionsMap[config.name]) !== null &&\n      _typeExtensionsMap$co3 !== void 0\n        ? _typeExtensionsMap$co3\n        : [];\n    return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLObjectType({\n      ...config,\n      interfaces: () => [\n        ...type.getInterfaces().map(replaceNamedType),\n        ...buildInterfaces(extensions),\n      ],\n      fields: () => ({\n        ...(0,_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_7__.mapValue)(config.fields, extendField),\n        ...buildFieldMap(extensions),\n      }),\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendInterfaceType(type) {\n    var _typeExtensionsMap$co4;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$co4 = typeExtensionsMap[config.name]) !== null &&\n      _typeExtensionsMap$co4 !== void 0\n        ? _typeExtensionsMap$co4\n        : [];\n    return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLInterfaceType({\n      ...config,\n      interfaces: () => [\n        ...type.getInterfaces().map(replaceNamedType),\n        ...buildInterfaces(extensions),\n      ],\n      fields: () => ({\n        ...(0,_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_7__.mapValue)(config.fields, extendField),\n        ...buildFieldMap(extensions),\n      }),\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendUnionType(type) {\n    var _typeExtensionsMap$co5;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$co5 = typeExtensionsMap[config.name]) !== null &&\n      _typeExtensionsMap$co5 !== void 0\n        ? _typeExtensionsMap$co5\n        : [];\n    return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLUnionType({\n      ...config,\n      types: () => [\n        ...type.getTypes().map(replaceNamedType),\n        ...buildUnionTypes(extensions),\n      ],\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendField(field) {\n    return {\n      ...field,\n      type: replaceType(field.type),\n      args: field.args && (0,_jsutils_mapValue_mjs__WEBPACK_IMPORTED_MODULE_7__.mapValue)(field.args, extendArg),\n    };\n  }\n\n  function extendArg(arg) {\n    return { ...arg, type: replaceType(arg.type) };\n  }\n\n  function getOperationTypes(nodes) {\n    const opTypes = {};\n\n    for (const node of nodes) {\n      var _node$operationTypes;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      const operationTypesNodes =\n        /* c8 ignore next */\n        (_node$operationTypes = node.operationTypes) !== null &&\n        _node$operationTypes !== void 0\n          ? _node$operationTypes\n          : [];\n\n      for (const operationType of operationTypesNodes) {\n        // Note: While this could make early assertions to get the correctly\n        // typed values below, that would throw immediately while type system\n        // validation with validateSchema() will produce more actionable results.\n        // @ts-expect-error\n        opTypes[operationType.operation] = getNamedType(operationType.type);\n      }\n    }\n\n    return opTypes;\n  }\n\n  function getNamedType(node) {\n    var _stdTypeMap$name2;\n\n    const name = node.name.value;\n    const type =\n      (_stdTypeMap$name2 = stdTypeMap[name]) !== null &&\n      _stdTypeMap$name2 !== void 0\n        ? _stdTypeMap$name2\n        : typeMap[name];\n\n    if (type === undefined) {\n      throw new Error(`Unknown type: \"${name}\".`);\n    }\n\n    return type;\n  }\n\n  function getWrappedType(node) {\n    if (node.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.LIST_TYPE) {\n      return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLList(getWrappedType(node.type));\n    }\n\n    if (node.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.NON_NULL_TYPE) {\n      return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLNonNull(getWrappedType(node.type));\n    }\n\n    return getNamedType(node);\n  }\n\n  function buildDirective(node) {\n    var _node$description;\n\n    return new _type_directives_mjs__WEBPACK_IMPORTED_MODULE_6__.GraphQLDirective({\n      name: node.name.value,\n      description:\n        (_node$description = node.description) === null ||\n        _node$description === void 0\n          ? void 0\n          : _node$description.value,\n      // @ts-expect-error\n      locations: node.locations.map(({ value }) => value),\n      isRepeatable: node.repeatable,\n      args: buildArgumentMap(node.arguments),\n      astNode: node,\n    });\n  }\n\n  function buildFieldMap(nodes) {\n    const fieldConfigMap = Object.create(null);\n\n    for (const node of nodes) {\n      var _node$fields;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      const nodeFields =\n        /* c8 ignore next */\n        (_node$fields = node.fields) !== null && _node$fields !== void 0\n          ? _node$fields\n          : [];\n\n      for (const field of nodeFields) {\n        var _field$description;\n\n        fieldConfigMap[field.name.value] = {\n          // Note: While this could make assertions to get the correctly typed\n          // value, that would throw immediately while type system validation\n          // with validateSchema() will produce more actionable results.\n          type: getWrappedType(field.type),\n          description:\n            (_field$description = field.description) === null ||\n            _field$description === void 0\n              ? void 0\n              : _field$description.value,\n          args: buildArgumentMap(field.arguments),\n          deprecationReason: getDeprecationReason(field),\n          astNode: field,\n        };\n      }\n    }\n\n    return fieldConfigMap;\n  }\n\n  function buildArgumentMap(args) {\n    // FIXME: https://github.com/graphql/graphql-js/issues/2203\n    const argsNodes =\n      /* c8 ignore next */\n      args !== null && args !== void 0 ? args : [];\n    const argConfigMap = Object.create(null);\n\n    for (const arg of argsNodes) {\n      var _arg$description;\n\n      // Note: While this could make assertions to get the correctly typed\n      // value, that would throw immediately while type system validation\n      // with validateSchema() will produce more actionable results.\n      const type = getWrappedType(arg.type);\n      argConfigMap[arg.name.value] = {\n        type,\n        description:\n          (_arg$description = arg.description) === null ||\n          _arg$description === void 0\n            ? void 0\n            : _arg$description.value,\n        defaultValue: (0,_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_12__.valueFromAST)(arg.defaultValue, type),\n        deprecationReason: getDeprecationReason(arg),\n        astNode: arg,\n      };\n    }\n\n    return argConfigMap;\n  }\n\n  function buildInputFieldMap(nodes) {\n    const inputFieldMap = Object.create(null);\n\n    for (const node of nodes) {\n      var _node$fields2;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      const fieldsNodes =\n        /* c8 ignore next */\n        (_node$fields2 = node.fields) !== null && _node$fields2 !== void 0\n          ? _node$fields2\n          : [];\n\n      for (const field of fieldsNodes) {\n        var _field$description2;\n\n        // Note: While this could make assertions to get the correctly typed\n        // value, that would throw immediately while type system validation\n        // with validateSchema() will produce more actionable results.\n        const type = getWrappedType(field.type);\n        inputFieldMap[field.name.value] = {\n          type,\n          description:\n            (_field$description2 = field.description) === null ||\n            _field$description2 === void 0\n              ? void 0\n              : _field$description2.value,\n          defaultValue: (0,_valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_12__.valueFromAST)(field.defaultValue, type),\n          deprecationReason: getDeprecationReason(field),\n          astNode: field,\n        };\n      }\n    }\n\n    return inputFieldMap;\n  }\n\n  function buildEnumValueMap(nodes) {\n    const enumValueMap = Object.create(null);\n\n    for (const node of nodes) {\n      var _node$values;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      const valuesNodes =\n        /* c8 ignore next */\n        (_node$values = node.values) !== null && _node$values !== void 0\n          ? _node$values\n          : [];\n\n      for (const value of valuesNodes) {\n        var _value$description;\n\n        enumValueMap[value.name.value] = {\n          description:\n            (_value$description = value.description) === null ||\n            _value$description === void 0\n              ? void 0\n              : _value$description.value,\n          deprecationReason: getDeprecationReason(value),\n          astNode: value,\n        };\n      }\n    }\n\n    return enumValueMap;\n  }\n\n  function buildInterfaces(nodes) {\n    // Note: While this could make assertions to get the correctly typed\n    // values below, that would throw immediately while type system\n    // validation with validateSchema() will produce more actionable results.\n    // @ts-expect-error\n    return nodes.flatMap(\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      (node) => {\n        var _node$interfaces$map, _node$interfaces;\n\n        return (\n          /* c8 ignore next */\n          (_node$interfaces$map =\n            (_node$interfaces = node.interfaces) === null ||\n            _node$interfaces === void 0\n              ? void 0\n              : _node$interfaces.map(getNamedType)) !== null &&\n            _node$interfaces$map !== void 0\n            ? _node$interfaces$map\n            : []\n        );\n      },\n    );\n  }\n\n  function buildUnionTypes(nodes) {\n    // Note: While this could make assertions to get the correctly typed\n    // values below, that would throw immediately while type system\n    // validation with validateSchema() will produce more actionable results.\n    // @ts-expect-error\n    return nodes.flatMap(\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      (node) => {\n        var _node$types$map, _node$types;\n\n        return (\n          /* c8 ignore next */\n          (_node$types$map =\n            (_node$types = node.types) === null || _node$types === void 0\n              ? void 0\n              : _node$types.map(getNamedType)) !== null &&\n            _node$types$map !== void 0\n            ? _node$types$map\n            : []\n        );\n      },\n    );\n  }\n\n  function buildType(astNode) {\n    var _typeExtensionsMap$na;\n\n    const name = astNode.name.value;\n    const extensionASTNodes =\n      (_typeExtensionsMap$na = typeExtensionsMap[name]) !== null &&\n      _typeExtensionsMap$na !== void 0\n        ? _typeExtensionsMap$na\n        : [];\n\n    switch (astNode.kind) {\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.OBJECT_TYPE_DEFINITION: {\n        var _astNode$description;\n\n        const allNodes = [astNode, ...extensionASTNodes];\n        return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLObjectType({\n          name,\n          description:\n            (_astNode$description = astNode.description) === null ||\n            _astNode$description === void 0\n              ? void 0\n              : _astNode$description.value,\n          interfaces: () => buildInterfaces(allNodes),\n          fields: () => buildFieldMap(allNodes),\n          astNode,\n          extensionASTNodes,\n        });\n      }\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.INTERFACE_TYPE_DEFINITION: {\n        var _astNode$description2;\n\n        const allNodes = [astNode, ...extensionASTNodes];\n        return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLInterfaceType({\n          name,\n          description:\n            (_astNode$description2 = astNode.description) === null ||\n            _astNode$description2 === void 0\n              ? void 0\n              : _astNode$description2.value,\n          interfaces: () => buildInterfaces(allNodes),\n          fields: () => buildFieldMap(allNodes),\n          astNode,\n          extensionASTNodes,\n        });\n      }\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.ENUM_TYPE_DEFINITION: {\n        var _astNode$description3;\n\n        const allNodes = [astNode, ...extensionASTNodes];\n        return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLEnumType({\n          name,\n          description:\n            (_astNode$description3 = astNode.description) === null ||\n            _astNode$description3 === void 0\n              ? void 0\n              : _astNode$description3.value,\n          values: buildEnumValueMap(allNodes),\n          astNode,\n          extensionASTNodes,\n        });\n      }\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.UNION_TYPE_DEFINITION: {\n        var _astNode$description4;\n\n        const allNodes = [astNode, ...extensionASTNodes];\n        return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLUnionType({\n          name,\n          description:\n            (_astNode$description4 = astNode.description) === null ||\n            _astNode$description4 === void 0\n              ? void 0\n              : _astNode$description4.value,\n          types: () => buildUnionTypes(allNodes),\n          astNode,\n          extensionASTNodes,\n        });\n      }\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.SCALAR_TYPE_DEFINITION: {\n        var _astNode$description5;\n\n        return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLScalarType({\n          name,\n          description:\n            (_astNode$description5 = astNode.description) === null ||\n            _astNode$description5 === void 0\n              ? void 0\n              : _astNode$description5.value,\n          specifiedByURL: getSpecifiedByURL(astNode),\n          astNode,\n          extensionASTNodes,\n        });\n      }\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n        var _astNode$description6;\n\n        const allNodes = [astNode, ...extensionASTNodes];\n        return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLInputObjectType({\n          name,\n          description:\n            (_astNode$description6 = astNode.description) === null ||\n            _astNode$description6 === void 0\n              ? void 0\n              : _astNode$description6.value,\n          fields: () => buildInputFieldMap(allNodes),\n          astNode,\n          extensionASTNodes,\n        });\n      }\n    }\n  }\n}\nconst stdTypeMap = (0,_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_13__.keyMap)(\n  [..._type_scalars_mjs__WEBPACK_IMPORTED_MODULE_9__.specifiedScalarTypes, ..._type_introspection_mjs__WEBPACK_IMPORTED_MODULE_8__.introspectionTypes],\n  (type) => type.name,\n);\n/**\n * Given a field or enum value node, returns the string value for the\n * deprecation reason.\n */\n\nfunction getDeprecationReason(node) {\n  const deprecated = (0,_execution_values_mjs__WEBPACK_IMPORTED_MODULE_14__.getDirectiveValues)(_type_directives_mjs__WEBPACK_IMPORTED_MODULE_6__.GraphQLDeprecatedDirective, node); // @ts-expect-error validated by `getDirectiveValues`\n\n  return deprecated === null || deprecated === void 0\n    ? void 0\n    : deprecated.reason;\n}\n/**\n * Given a scalar node, returns the string value for the specifiedByURL.\n */\n\nfunction getSpecifiedByURL(node) {\n  const specifiedBy = (0,_execution_values_mjs__WEBPACK_IMPORTED_MODULE_14__.getDirectiveValues)(_type_directives_mjs__WEBPACK_IMPORTED_MODULE_6__.GraphQLSpecifiedByDirective, node); // @ts-expect-error validated by `getDirectiveValues`\n\n  return specifiedBy === null || specifiedBy === void 0\n    ? void 0\n    : specifiedBy.url;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvZXh0ZW5kU2NoZW1hLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFxRDtBQUNKO0FBQ0k7QUFDTjtBQUNJO0FBQ047QUFJVDtBQWtCSjtBQUtBO0FBSUc7QUFJTjtBQUNvQztBQUNJO0FBQ1I7QUFDWDs7QUFFbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxFQUFFLDhEQUFZO0FBQ2QsK0NBQStDLDhEQUFhO0FBQzVELElBQUksaUVBQVM7O0FBRWI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGlGQUF1QjtBQUMzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsMkRBQWE7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDs7QUFFQTtBQUNBO0FBQ0EsaURBQWlEO0FBQ2pEOztBQUVBO0FBQ0EsaUJBQWlCOztBQUVqQjs7QUFFQTtBQUNBLHFCQUFxQix1RUFBc0I7QUFDM0M7QUFDQSxNQUFNLHNCQUFzQixzRUFBcUI7QUFDakQ7QUFDQSxNQUFNLFNBQVMsOEVBQW9CO0FBQ25DO0FBQ0EsTUFBTSxTQUFTLDZFQUFtQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxzQkFBc0IsMEVBQXlCO0FBQ3JEO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0EsUUFBUSxnRUFBVTtBQUNsQjtBQUNBLGlCQUFpQiw2REFBVztBQUM1Qjs7QUFFQSxRQUFRLG1FQUFhO0FBQ3JCO0FBQ0EsaUJBQWlCLGdFQUFjO0FBQy9CLE1BQU07O0FBRU47QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGVBQWUsa0VBQWdCO0FBQy9CO0FBQ0EsWUFBWSwrREFBUTtBQUNwQixLQUFLO0FBQ0w7O0FBRUE7QUFDQSxRQUFRLDRFQUFtQixVQUFVLHdFQUFxQjtBQUMxRDtBQUNBO0FBQ0E7O0FBRUEsUUFBUSxrRUFBWTtBQUNwQjtBQUNBOztBQUVBLFFBQVEsa0VBQVk7QUFDcEI7QUFDQTs7QUFFQSxRQUFRLHFFQUFlO0FBQ3ZCO0FBQ0E7O0FBRUEsUUFBUSxpRUFBVztBQUNuQjtBQUNBOztBQUVBLFFBQVEsZ0VBQVU7QUFDbEI7QUFDQTs7QUFFQSxRQUFRLHVFQUFpQjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJLE1BQUssSUFBSSxrRUFBUyw4QkFBOEIsOERBQU87QUFDM0Q7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHdFQUFzQjtBQUNyQztBQUNBO0FBQ0EsV0FBVywrREFBUTtBQUNuQjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpRUFBZTtBQUM5QjtBQUNBLGdCQUFnQixvREFBb0Q7QUFDcEU7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxlQUFlLG1FQUFpQjtBQUNoQztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1FQUFpQjtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLCtEQUFRO0FBQ25CO0FBQ0EsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxzRUFBb0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVywrREFBUTtBQUNuQjtBQUNBLE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsa0VBQWdCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiwrREFBUTtBQUNsQztBQUNBOztBQUVBO0FBQ0EsYUFBYTtBQUNiOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3Q0FBd0MsS0FBSztBQUM3Qzs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCLCtEQUFjO0FBQ3BDLGlCQUFpQiw2REFBVztBQUM1Qjs7QUFFQSxzQkFBc0IsbUVBQWtCO0FBQ3hDLGlCQUFpQixnRUFBYztBQUMvQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsZUFBZSxrRUFBZ0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsT0FBTztBQUM5QztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixnRUFBWTtBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdFQUFZO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLDRFQUEyQjtBQUN0Qzs7QUFFQTtBQUNBLG1CQUFtQixtRUFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUEsV0FBVywrRUFBOEI7QUFDekM7O0FBRUE7QUFDQSxtQkFBbUIsc0VBQW9CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBLFdBQVcsMEVBQXlCO0FBQ3BDOztBQUVBO0FBQ0EsbUJBQW1CLGlFQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQSxXQUFXLDJFQUEwQjtBQUNyQzs7QUFFQTtBQUNBLG1CQUFtQixrRUFBZ0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBLFdBQVcsNEVBQTJCO0FBQ3RDOztBQUVBLG1CQUFtQixtRUFBaUI7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBLFdBQVcsa0ZBQWlDO0FBQzVDOztBQUVBO0FBQ0EsbUJBQW1CLHdFQUFzQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsNERBQU07QUFDekIsTUFBTSxtRUFBb0IsS0FBSyx1RUFBa0I7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUJBQXFCLDBFQUFrQixDQUFDLDRFQUEwQixTQUFTOztBQUUzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQiwwRUFBa0IsQ0FBQyw2RUFBMkIsU0FBUzs7QUFFN0U7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2V4dGVuZFNjaGVtYS5tanM/NGU3MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXZBc3NlcnQgfSBmcm9tICcuLi9qc3V0aWxzL2RldkFzc2VydC5tanMnO1xuaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSAnLi4vanN1dGlscy9pbnZhcmlhbnQubWpzJztcbmltcG9ydCB7IGtleU1hcCB9IGZyb20gJy4uL2pzdXRpbHMva2V5TWFwLm1qcyc7XG5pbXBvcnQgeyBtYXBWYWx1ZSB9IGZyb20gJy4uL2pzdXRpbHMvbWFwVmFsdWUubWpzJztcbmltcG9ydCB7IEtpbmQgfSBmcm9tICcuLi9sYW5ndWFnZS9raW5kcy5tanMnO1xuaW1wb3J0IHtcbiAgaXNUeXBlRGVmaW5pdGlvbk5vZGUsXG4gIGlzVHlwZUV4dGVuc2lvbk5vZGUsXG59IGZyb20gJy4uL2xhbmd1YWdlL3ByZWRpY2F0ZXMubWpzJztcbmltcG9ydCB7XG4gIEdyYXBoUUxFbnVtVHlwZSxcbiAgR3JhcGhRTElucHV0T2JqZWN0VHlwZSxcbiAgR3JhcGhRTEludGVyZmFjZVR5cGUsXG4gIEdyYXBoUUxMaXN0LFxuICBHcmFwaFFMTm9uTnVsbCxcbiAgR3JhcGhRTE9iamVjdFR5cGUsXG4gIEdyYXBoUUxTY2FsYXJUeXBlLFxuICBHcmFwaFFMVW5pb25UeXBlLFxuICBpc0VudW1UeXBlLFxuICBpc0lucHV0T2JqZWN0VHlwZSxcbiAgaXNJbnRlcmZhY2VUeXBlLFxuICBpc0xpc3RUeXBlLFxuICBpc05vbk51bGxUeXBlLFxuICBpc09iamVjdFR5cGUsXG4gIGlzU2NhbGFyVHlwZSxcbiAgaXNVbmlvblR5cGUsXG59IGZyb20gJy4uL3R5cGUvZGVmaW5pdGlvbi5tanMnO1xuaW1wb3J0IHtcbiAgR3JhcGhRTERlcHJlY2F0ZWREaXJlY3RpdmUsXG4gIEdyYXBoUUxEaXJlY3RpdmUsXG4gIEdyYXBoUUxTcGVjaWZpZWRCeURpcmVjdGl2ZSxcbn0gZnJvbSAnLi4vdHlwZS9kaXJlY3RpdmVzLm1qcyc7XG5pbXBvcnQge1xuICBpbnRyb3NwZWN0aW9uVHlwZXMsXG4gIGlzSW50cm9zcGVjdGlvblR5cGUsXG59IGZyb20gJy4uL3R5cGUvaW50cm9zcGVjdGlvbi5tanMnO1xuaW1wb3J0IHtcbiAgaXNTcGVjaWZpZWRTY2FsYXJUeXBlLFxuICBzcGVjaWZpZWRTY2FsYXJUeXBlcyxcbn0gZnJvbSAnLi4vdHlwZS9zY2FsYXJzLm1qcyc7XG5pbXBvcnQgeyBhc3NlcnRTY2hlbWEsIEdyYXBoUUxTY2hlbWEgfSBmcm9tICcuLi90eXBlL3NjaGVtYS5tanMnO1xuaW1wb3J0IHsgYXNzZXJ0VmFsaWRTRExFeHRlbnNpb24gfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRlLm1qcyc7XG5pbXBvcnQgeyBnZXREaXJlY3RpdmVWYWx1ZXMgfSBmcm9tICcuLi9leGVjdXRpb24vdmFsdWVzLm1qcyc7XG5pbXBvcnQgeyB2YWx1ZUZyb21BU1QgfSBmcm9tICcuL3ZhbHVlRnJvbUFTVC5tanMnO1xuXG4vKipcbiAqIFByb2R1Y2VzIGEgbmV3IHNjaGVtYSBnaXZlbiBhbiBleGlzdGluZyBzY2hlbWEgYW5kIGEgZG9jdW1lbnQgd2hpY2ggbWF5XG4gKiBjb250YWluIEdyYXBoUUwgdHlwZSBleHRlbnNpb25zIGFuZCBkZWZpbml0aW9ucy4gVGhlIG9yaWdpbmFsIHNjaGVtYSB3aWxsXG4gKiByZW1haW4gdW5hbHRlcmVkLlxuICpcbiAqIEJlY2F1c2UgYSBzY2hlbWEgcmVwcmVzZW50cyBhIGdyYXBoIG9mIHJlZmVyZW5jZXMsIGEgc2NoZW1hIGNhbm5vdCBiZVxuICogZXh0ZW5kZWQgd2l0aG91dCBlZmZlY3RpdmVseSBtYWtpbmcgYW4gZW50aXJlIGNvcHkuIFdlIGRvIG5vdCBrbm93IHVudGlsIGl0J3NcbiAqIHRvbyBsYXRlIGlmIHN1YmdyYXBocyByZW1haW4gdW5jaGFuZ2VkLlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIGNvcGllcyB0aGUgcHJvdmlkZWQgc2NoZW1hLCBhcHBseWluZyBleHRlbnNpb25zIHdoaWxlXG4gKiBwcm9kdWNpbmcgdGhlIGNvcHkuIFRoZSBvcmlnaW5hbCBzY2hlbWEgcmVtYWlucyB1bmFsdGVyZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmRTY2hlbWEoc2NoZW1hLCBkb2N1bWVudEFTVCwgb3B0aW9ucykge1xuICBhc3NlcnRTY2hlbWEoc2NoZW1hKTtcbiAgKGRvY3VtZW50QVNUICE9IG51bGwgJiYgZG9jdW1lbnRBU1Qua2luZCA9PT0gS2luZC5ET0NVTUVOVCkgfHxcbiAgICBkZXZBc3NlcnQoZmFsc2UsICdNdXN0IHByb3ZpZGUgdmFsaWQgRG9jdW1lbnQgQVNULicpO1xuXG4gIGlmIChcbiAgICAob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmFzc3VtZVZhbGlkKSAhPT1cbiAgICAgIHRydWUgJiZcbiAgICAob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDBcbiAgICAgID8gdm9pZCAwXG4gICAgICA6IG9wdGlvbnMuYXNzdW1lVmFsaWRTREwpICE9PSB0cnVlXG4gICkge1xuICAgIGFzc2VydFZhbGlkU0RMRXh0ZW5zaW9uKGRvY3VtZW50QVNULCBzY2hlbWEpO1xuICB9XG5cbiAgY29uc3Qgc2NoZW1hQ29uZmlnID0gc2NoZW1hLnRvQ29uZmlnKCk7XG4gIGNvbnN0IGV4dGVuZGVkQ29uZmlnID0gZXh0ZW5kU2NoZW1hSW1wbChzY2hlbWFDb25maWcsIGRvY3VtZW50QVNULCBvcHRpb25zKTtcbiAgcmV0dXJuIHNjaGVtYUNvbmZpZyA9PT0gZXh0ZW5kZWRDb25maWdcbiAgICA/IHNjaGVtYVxuICAgIDogbmV3IEdyYXBoUUxTY2hlbWEoZXh0ZW5kZWRDb25maWcpO1xufVxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kU2NoZW1hSW1wbChzY2hlbWFDb25maWcsIGRvY3VtZW50QVNULCBvcHRpb25zKSB7XG4gIHZhciBfc2NoZW1hRGVmLCBfc2NoZW1hRGVmJGRlc2NyaXB0aW8sIF9zY2hlbWFEZWYyLCBfb3B0aW9ucyRhc3N1bWVWYWxpZDtcblxuICAvLyBDb2xsZWN0IHRoZSB0eXBlIGRlZmluaXRpb25zIGFuZCBleHRlbnNpb25zIGZvdW5kIGluIHRoZSBkb2N1bWVudC5cbiAgY29uc3QgdHlwZURlZnMgPSBbXTtcbiAgY29uc3QgdHlwZUV4dGVuc2lvbnNNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpOyAvLyBOZXcgZGlyZWN0aXZlcyBhbmQgdHlwZXMgYXJlIHNlcGFyYXRlIGJlY2F1c2UgYSBkaXJlY3RpdmVzIGFuZCB0eXBlcyBjYW5cbiAgLy8gaGF2ZSB0aGUgc2FtZSBuYW1lLiBGb3IgZXhhbXBsZSwgYSB0eXBlIG5hbWVkIFwic2tpcFwiLlxuXG4gIGNvbnN0IGRpcmVjdGl2ZURlZnMgPSBbXTtcbiAgbGV0IHNjaGVtYURlZjsgLy8gU2NoZW1hIGV4dGVuc2lvbnMgYXJlIGNvbGxlY3RlZCB3aGljaCBtYXkgYWRkIGFkZGl0aW9uYWwgb3BlcmF0aW9uIHR5cGVzLlxuXG4gIGNvbnN0IHNjaGVtYUV4dGVuc2lvbnMgPSBbXTtcblxuICBmb3IgKGNvbnN0IGRlZiBvZiBkb2N1bWVudEFTVC5kZWZpbml0aW9ucykge1xuICAgIGlmIChkZWYua2luZCA9PT0gS2luZC5TQ0hFTUFfREVGSU5JVElPTikge1xuICAgICAgc2NoZW1hRGVmID0gZGVmO1xuICAgIH0gZWxzZSBpZiAoZGVmLmtpbmQgPT09IEtpbmQuU0NIRU1BX0VYVEVOU0lPTikge1xuICAgICAgc2NoZW1hRXh0ZW5zaW9ucy5wdXNoKGRlZik7XG4gICAgfSBlbHNlIGlmIChpc1R5cGVEZWZpbml0aW9uTm9kZShkZWYpKSB7XG4gICAgICB0eXBlRGVmcy5wdXNoKGRlZik7XG4gICAgfSBlbHNlIGlmIChpc1R5cGVFeHRlbnNpb25Ob2RlKGRlZikpIHtcbiAgICAgIGNvbnN0IGV4dGVuZGVkVHlwZU5hbWUgPSBkZWYubmFtZS52YWx1ZTtcbiAgICAgIGNvbnN0IGV4aXN0aW5nVHlwZUV4dGVuc2lvbnMgPSB0eXBlRXh0ZW5zaW9uc01hcFtleHRlbmRlZFR5cGVOYW1lXTtcbiAgICAgIHR5cGVFeHRlbnNpb25zTWFwW2V4dGVuZGVkVHlwZU5hbWVdID0gZXhpc3RpbmdUeXBlRXh0ZW5zaW9uc1xuICAgICAgICA/IGV4aXN0aW5nVHlwZUV4dGVuc2lvbnMuY29uY2F0KFtkZWZdKVxuICAgICAgICA6IFtkZWZdO1xuICAgIH0gZWxzZSBpZiAoZGVmLmtpbmQgPT09IEtpbmQuRElSRUNUSVZFX0RFRklOSVRJT04pIHtcbiAgICAgIGRpcmVjdGl2ZURlZnMucHVzaChkZWYpO1xuICAgIH1cbiAgfSAvLyBJZiB0aGlzIGRvY3VtZW50IGNvbnRhaW5zIG5vIG5ldyB0eXBlcywgZXh0ZW5zaW9ucywgb3IgZGlyZWN0aXZlcyB0aGVuXG4gIC8vIHJldHVybiB0aGUgc2FtZSB1bm1vZGlmaWVkIEdyYXBoUUxTY2hlbWEgaW5zdGFuY2UuXG5cbiAgaWYgKFxuICAgIE9iamVjdC5rZXlzKHR5cGVFeHRlbnNpb25zTWFwKS5sZW5ndGggPT09IDAgJiZcbiAgICB0eXBlRGVmcy5sZW5ndGggPT09IDAgJiZcbiAgICBkaXJlY3RpdmVEZWZzLmxlbmd0aCA9PT0gMCAmJlxuICAgIHNjaGVtYUV4dGVuc2lvbnMubGVuZ3RoID09PSAwICYmXG4gICAgc2NoZW1hRGVmID09IG51bGxcbiAgKSB7XG4gICAgcmV0dXJuIHNjaGVtYUNvbmZpZztcbiAgfVxuXG4gIGNvbnN0IHR5cGVNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAoY29uc3QgZXhpc3RpbmdUeXBlIG9mIHNjaGVtYUNvbmZpZy50eXBlcykge1xuICAgIHR5cGVNYXBbZXhpc3RpbmdUeXBlLm5hbWVdID0gZXh0ZW5kTmFtZWRUeXBlKGV4aXN0aW5nVHlwZSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHR5cGVOb2RlIG9mIHR5cGVEZWZzKSB7XG4gICAgdmFyIF9zdGRUeXBlTWFwJG5hbWU7XG5cbiAgICBjb25zdCBuYW1lID0gdHlwZU5vZGUubmFtZS52YWx1ZTtcbiAgICB0eXBlTWFwW25hbWVdID1cbiAgICAgIChfc3RkVHlwZU1hcCRuYW1lID0gc3RkVHlwZU1hcFtuYW1lXSkgIT09IG51bGwgJiZcbiAgICAgIF9zdGRUeXBlTWFwJG5hbWUgIT09IHZvaWQgMFxuICAgICAgICA/IF9zdGRUeXBlTWFwJG5hbWVcbiAgICAgICAgOiBidWlsZFR5cGUodHlwZU5vZGUpO1xuICB9XG5cbiAgY29uc3Qgb3BlcmF0aW9uVHlwZXMgPSB7XG4gICAgLy8gR2V0IHRoZSBleHRlbmRlZCByb290IG9wZXJhdGlvbiB0eXBlcy5cbiAgICBxdWVyeTogc2NoZW1hQ29uZmlnLnF1ZXJ5ICYmIHJlcGxhY2VOYW1lZFR5cGUoc2NoZW1hQ29uZmlnLnF1ZXJ5KSxcbiAgICBtdXRhdGlvbjogc2NoZW1hQ29uZmlnLm11dGF0aW9uICYmIHJlcGxhY2VOYW1lZFR5cGUoc2NoZW1hQ29uZmlnLm11dGF0aW9uKSxcbiAgICBzdWJzY3JpcHRpb246XG4gICAgICBzY2hlbWFDb25maWcuc3Vic2NyaXB0aW9uICYmIHJlcGxhY2VOYW1lZFR5cGUoc2NoZW1hQ29uZmlnLnN1YnNjcmlwdGlvbiksXG4gICAgLy8gVGhlbiwgaW5jb3Jwb3JhdGUgc2NoZW1hIGRlZmluaXRpb24gYW5kIGFsbCBzY2hlbWEgZXh0ZW5zaW9ucy5cbiAgICAuLi4oc2NoZW1hRGVmICYmIGdldE9wZXJhdGlvblR5cGVzKFtzY2hlbWFEZWZdKSksXG4gICAgLi4uZ2V0T3BlcmF0aW9uVHlwZXMoc2NoZW1hRXh0ZW5zaW9ucyksXG4gIH07IC8vIFRoZW4gcHJvZHVjZSBhbmQgcmV0dXJuIGEgU2NoZW1hIGNvbmZpZyB3aXRoIHRoZXNlIHR5cGVzLlxuXG4gIHJldHVybiB7XG4gICAgZGVzY3JpcHRpb246XG4gICAgICAoX3NjaGVtYURlZiA9IHNjaGVtYURlZikgPT09IG51bGwgfHwgX3NjaGVtYURlZiA9PT0gdm9pZCAwXG4gICAgICAgID8gdm9pZCAwXG4gICAgICAgIDogKF9zY2hlbWFEZWYkZGVzY3JpcHRpbyA9IF9zY2hlbWFEZWYuZGVzY3JpcHRpb24pID09PSBudWxsIHx8XG4gICAgICAgICAgX3NjaGVtYURlZiRkZXNjcmlwdGlvID09PSB2b2lkIDBcbiAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgOiBfc2NoZW1hRGVmJGRlc2NyaXB0aW8udmFsdWUsXG4gICAgLi4ub3BlcmF0aW9uVHlwZXMsXG4gICAgdHlwZXM6IE9iamVjdC52YWx1ZXModHlwZU1hcCksXG4gICAgZGlyZWN0aXZlczogW1xuICAgICAgLi4uc2NoZW1hQ29uZmlnLmRpcmVjdGl2ZXMubWFwKHJlcGxhY2VEaXJlY3RpdmUpLFxuICAgICAgLi4uZGlyZWN0aXZlRGVmcy5tYXAoYnVpbGREaXJlY3RpdmUpLFxuICAgIF0sXG4gICAgZXh0ZW5zaW9uczogT2JqZWN0LmNyZWF0ZShudWxsKSxcbiAgICBhc3ROb2RlOlxuICAgICAgKF9zY2hlbWFEZWYyID0gc2NoZW1hRGVmKSAhPT0gbnVsbCAmJiBfc2NoZW1hRGVmMiAhPT0gdm9pZCAwXG4gICAgICAgID8gX3NjaGVtYURlZjJcbiAgICAgICAgOiBzY2hlbWFDb25maWcuYXN0Tm9kZSxcbiAgICBleHRlbnNpb25BU1ROb2Rlczogc2NoZW1hQ29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzLmNvbmNhdChzY2hlbWFFeHRlbnNpb25zKSxcbiAgICBhc3N1bWVWYWxpZDpcbiAgICAgIChfb3B0aW9ucyRhc3N1bWVWYWxpZCA9XG4gICAgICAgIG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwXG4gICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICA6IG9wdGlvbnMuYXNzdW1lVmFsaWQpICE9PSBudWxsICYmIF9vcHRpb25zJGFzc3VtZVZhbGlkICE9PSB2b2lkIDBcbiAgICAgICAgPyBfb3B0aW9ucyRhc3N1bWVWYWxpZFxuICAgICAgICA6IGZhbHNlLFxuICB9OyAvLyBCZWxvdyBhcmUgZnVuY3Rpb25zIHVzZWQgZm9yIHByb2R1Y2luZyB0aGlzIHNjaGVtYSB0aGF0IGhhdmUgY2xvc2VkIG92ZXJcbiAgLy8gdGhpcyBzY29wZSBhbmQgaGF2ZSBhY2Nlc3MgdG8gdGhlIHNjaGVtYSwgY2FjaGUsIGFuZCBuZXdseSBkZWZpbmVkIHR5cGVzLlxuXG4gIGZ1bmN0aW9uIHJlcGxhY2VUeXBlKHR5cGUpIHtcbiAgICBpZiAoaXNMaXN0VHlwZSh0eXBlKSkge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMTGlzdChyZXBsYWNlVHlwZSh0eXBlLm9mVHlwZSkpO1xuICAgIH1cblxuICAgIGlmIChpc05vbk51bGxUeXBlKHR5cGUpKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICByZXR1cm4gbmV3IEdyYXBoUUxOb25OdWxsKHJlcGxhY2VUeXBlKHR5cGUub2ZUeXBlKSk7XG4gICAgfSAvLyBAdHMtZXhwZWN0LWVycm9yIEZJWE1FXG5cbiAgICByZXR1cm4gcmVwbGFjZU5hbWVkVHlwZSh0eXBlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlcGxhY2VOYW1lZFR5cGUodHlwZSkge1xuICAgIC8vIE5vdGU6IFdoaWxlIHRoaXMgY291bGQgbWFrZSBlYXJseSBhc3NlcnRpb25zIHRvIGdldCB0aGUgY29ycmVjdGx5XG4gICAgLy8gdHlwZWQgdmFsdWVzLCB0aGF0IHdvdWxkIHRocm93IGltbWVkaWF0ZWx5IHdoaWxlIHR5cGUgc3lzdGVtXG4gICAgLy8gdmFsaWRhdGlvbiB3aXRoIHZhbGlkYXRlU2NoZW1hKCkgd2lsbCBwcm9kdWNlIG1vcmUgYWN0aW9uYWJsZSByZXN1bHRzLlxuICAgIHJldHVybiB0eXBlTWFwW3R5cGUubmFtZV07XG4gIH1cblxuICBmdW5jdGlvbiByZXBsYWNlRGlyZWN0aXZlKGRpcmVjdGl2ZSkge1xuICAgIGNvbnN0IGNvbmZpZyA9IGRpcmVjdGl2ZS50b0NvbmZpZygpO1xuICAgIHJldHVybiBuZXcgR3JhcGhRTERpcmVjdGl2ZSh7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBhcmdzOiBtYXBWYWx1ZShjb25maWcuYXJncywgZXh0ZW5kQXJnKSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dGVuZE5hbWVkVHlwZSh0eXBlKSB7XG4gICAgaWYgKGlzSW50cm9zcGVjdGlvblR5cGUodHlwZSkgfHwgaXNTcGVjaWZpZWRTY2FsYXJUeXBlKHR5cGUpKSB7XG4gICAgICAvLyBCdWlsdGluIHR5cGVzIGFyZSBub3QgZXh0ZW5kZWQuXG4gICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG5cbiAgICBpZiAoaXNTY2FsYXJUeXBlKHR5cGUpKSB7XG4gICAgICByZXR1cm4gZXh0ZW5kU2NhbGFyVHlwZSh0eXBlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgICByZXR1cm4gZXh0ZW5kT2JqZWN0VHlwZSh0eXBlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNJbnRlcmZhY2VUeXBlKHR5cGUpKSB7XG4gICAgICByZXR1cm4gZXh0ZW5kSW50ZXJmYWNlVHlwZSh0eXBlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNVbmlvblR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybiBleHRlbmRVbmlvblR5cGUodHlwZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzRW51bVR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybiBleHRlbmRFbnVtVHlwZSh0eXBlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNJbnB1dE9iamVjdFR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybiBleHRlbmRJbnB1dE9iamVjdFR5cGUodHlwZSk7XG4gICAgfVxuICAgIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbiAgICAvLyBOb3QgcmVhY2hhYmxlLCBhbGwgcG9zc2libGUgdHlwZSBkZWZpbml0aW9uIG5vZGVzIGhhdmUgYmVlbiBjb25zaWRlcmVkLlxuXG4gICAgZmFsc2UgfHwgaW52YXJpYW50KGZhbHNlLCAnVW5leHBlY3RlZCB0eXBlOiAnICsgaW5zcGVjdCh0eXBlKSk7XG4gIH1cblxuICBmdW5jdGlvbiBleHRlbmRJbnB1dE9iamVjdFR5cGUodHlwZSkge1xuICAgIHZhciBfdHlwZUV4dGVuc2lvbnNNYXAkY287XG5cbiAgICBjb25zdCBjb25maWcgPSB0eXBlLnRvQ29uZmlnKCk7XG4gICAgY29uc3QgZXh0ZW5zaW9ucyA9XG4gICAgICAoX3R5cGVFeHRlbnNpb25zTWFwJGNvID0gdHlwZUV4dGVuc2lvbnNNYXBbY29uZmlnLm5hbWVdKSAhPT0gbnVsbCAmJlxuICAgICAgX3R5cGVFeHRlbnNpb25zTWFwJGNvICE9PSB2b2lkIDBcbiAgICAgICAgPyBfdHlwZUV4dGVuc2lvbnNNYXAkY29cbiAgICAgICAgOiBbXTtcbiAgICByZXR1cm4gbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgZmllbGRzOiAoKSA9PiAoe1xuICAgICAgICAuLi5tYXBWYWx1ZShjb25maWcuZmllbGRzLCAoZmllbGQpID0+ICh7XG4gICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgdHlwZTogcmVwbGFjZVR5cGUoZmllbGQudHlwZSksXG4gICAgICAgIH0pKSxcbiAgICAgICAgLi4uYnVpbGRJbnB1dEZpZWxkTWFwKGV4dGVuc2lvbnMpLFxuICAgICAgfSksXG4gICAgICBleHRlbnNpb25BU1ROb2RlczogY29uZmlnLmV4dGVuc2lvbkFTVE5vZGVzLmNvbmNhdChleHRlbnNpb25zKSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dGVuZEVudW1UeXBlKHR5cGUpIHtcbiAgICB2YXIgX3R5cGVFeHRlbnNpb25zTWFwJHR5O1xuXG4gICAgY29uc3QgY29uZmlnID0gdHlwZS50b0NvbmZpZygpO1xuICAgIGNvbnN0IGV4dGVuc2lvbnMgPVxuICAgICAgKF90eXBlRXh0ZW5zaW9uc01hcCR0eSA9IHR5cGVFeHRlbnNpb25zTWFwW3R5cGUubmFtZV0pICE9PSBudWxsICYmXG4gICAgICBfdHlwZUV4dGVuc2lvbnNNYXAkdHkgIT09IHZvaWQgMFxuICAgICAgICA/IF90eXBlRXh0ZW5zaW9uc01hcCR0eVxuICAgICAgICA6IFtdO1xuICAgIHJldHVybiBuZXcgR3JhcGhRTEVudW1UeXBlKHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIHZhbHVlczogeyAuLi5jb25maWcudmFsdWVzLCAuLi5idWlsZEVudW1WYWx1ZU1hcChleHRlbnNpb25zKSB9LFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IGNvbmZpZy5leHRlbnNpb25BU1ROb2Rlcy5jb25jYXQoZXh0ZW5zaW9ucyksXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBleHRlbmRTY2FsYXJUeXBlKHR5cGUpIHtcbiAgICB2YXIgX3R5cGVFeHRlbnNpb25zTWFwJGNvMjtcblxuICAgIGNvbnN0IGNvbmZpZyA9IHR5cGUudG9Db25maWcoKTtcbiAgICBjb25zdCBleHRlbnNpb25zID1cbiAgICAgIChfdHlwZUV4dGVuc2lvbnNNYXAkY28yID0gdHlwZUV4dGVuc2lvbnNNYXBbY29uZmlnLm5hbWVdKSAhPT0gbnVsbCAmJlxuICAgICAgX3R5cGVFeHRlbnNpb25zTWFwJGNvMiAhPT0gdm9pZCAwXG4gICAgICAgID8gX3R5cGVFeHRlbnNpb25zTWFwJGNvMlxuICAgICAgICA6IFtdO1xuICAgIGxldCBzcGVjaWZpZWRCeVVSTCA9IGNvbmZpZy5zcGVjaWZpZWRCeVVSTDtcblxuICAgIGZvciAoY29uc3QgZXh0ZW5zaW9uTm9kZSBvZiBleHRlbnNpb25zKSB7XG4gICAgICB2YXIgX2dldFNwZWNpZmllZEJ5VVJMO1xuXG4gICAgICBzcGVjaWZpZWRCeVVSTCA9XG4gICAgICAgIChfZ2V0U3BlY2lmaWVkQnlVUkwgPSBnZXRTcGVjaWZpZWRCeVVSTChleHRlbnNpb25Ob2RlKSkgIT09IG51bGwgJiZcbiAgICAgICAgX2dldFNwZWNpZmllZEJ5VVJMICE9PSB2b2lkIDBcbiAgICAgICAgICA/IF9nZXRTcGVjaWZpZWRCeVVSTFxuICAgICAgICAgIDogc3BlY2lmaWVkQnlVUkw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMU2NhbGFyVHlwZSh7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBzcGVjaWZpZWRCeVVSTCxcbiAgICAgIGV4dGVuc2lvbkFTVE5vZGVzOiBjb25maWcuZXh0ZW5zaW9uQVNUTm9kZXMuY29uY2F0KGV4dGVuc2lvbnMpLFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZXh0ZW5kT2JqZWN0VHlwZSh0eXBlKSB7XG4gICAgdmFyIF90eXBlRXh0ZW5zaW9uc01hcCRjbzM7XG5cbiAgICBjb25zdCBjb25maWcgPSB0eXBlLnRvQ29uZmlnKCk7XG4gICAgY29uc3QgZXh0ZW5zaW9ucyA9XG4gICAgICAoX3R5cGVFeHRlbnNpb25zTWFwJGNvMyA9IHR5cGVFeHRlbnNpb25zTWFwW2NvbmZpZy5uYW1lXSkgIT09IG51bGwgJiZcbiAgICAgIF90eXBlRXh0ZW5zaW9uc01hcCRjbzMgIT09IHZvaWQgMFxuICAgICAgICA/IF90eXBlRXh0ZW5zaW9uc01hcCRjbzNcbiAgICAgICAgOiBbXTtcbiAgICByZXR1cm4gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGludGVyZmFjZXM6ICgpID0+IFtcbiAgICAgICAgLi4udHlwZS5nZXRJbnRlcmZhY2VzKCkubWFwKHJlcGxhY2VOYW1lZFR5cGUpLFxuICAgICAgICAuLi5idWlsZEludGVyZmFjZXMoZXh0ZW5zaW9ucyksXG4gICAgICBdLFxuICAgICAgZmllbGRzOiAoKSA9PiAoe1xuICAgICAgICAuLi5tYXBWYWx1ZShjb25maWcuZmllbGRzLCBleHRlbmRGaWVsZCksXG4gICAgICAgIC4uLmJ1aWxkRmllbGRNYXAoZXh0ZW5zaW9ucyksXG4gICAgICB9KSxcbiAgICAgIGV4dGVuc2lvbkFTVE5vZGVzOiBjb25maWcuZXh0ZW5zaW9uQVNUTm9kZXMuY29uY2F0KGV4dGVuc2lvbnMpLFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZXh0ZW5kSW50ZXJmYWNlVHlwZSh0eXBlKSB7XG4gICAgdmFyIF90eXBlRXh0ZW5zaW9uc01hcCRjbzQ7XG5cbiAgICBjb25zdCBjb25maWcgPSB0eXBlLnRvQ29uZmlnKCk7XG4gICAgY29uc3QgZXh0ZW5zaW9ucyA9XG4gICAgICAoX3R5cGVFeHRlbnNpb25zTWFwJGNvNCA9IHR5cGVFeHRlbnNpb25zTWFwW2NvbmZpZy5uYW1lXSkgIT09IG51bGwgJiZcbiAgICAgIF90eXBlRXh0ZW5zaW9uc01hcCRjbzQgIT09IHZvaWQgMFxuICAgICAgICA/IF90eXBlRXh0ZW5zaW9uc01hcCRjbzRcbiAgICAgICAgOiBbXTtcbiAgICByZXR1cm4gbmV3IEdyYXBoUUxJbnRlcmZhY2VUeXBlKHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGludGVyZmFjZXM6ICgpID0+IFtcbiAgICAgICAgLi4udHlwZS5nZXRJbnRlcmZhY2VzKCkubWFwKHJlcGxhY2VOYW1lZFR5cGUpLFxuICAgICAgICAuLi5idWlsZEludGVyZmFjZXMoZXh0ZW5zaW9ucyksXG4gICAgICBdLFxuICAgICAgZmllbGRzOiAoKSA9PiAoe1xuICAgICAgICAuLi5tYXBWYWx1ZShjb25maWcuZmllbGRzLCBleHRlbmRGaWVsZCksXG4gICAgICAgIC4uLmJ1aWxkRmllbGRNYXAoZXh0ZW5zaW9ucyksXG4gICAgICB9KSxcbiAgICAgIGV4dGVuc2lvbkFTVE5vZGVzOiBjb25maWcuZXh0ZW5zaW9uQVNUTm9kZXMuY29uY2F0KGV4dGVuc2lvbnMpLFxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZXh0ZW5kVW5pb25UeXBlKHR5cGUpIHtcbiAgICB2YXIgX3R5cGVFeHRlbnNpb25zTWFwJGNvNTtcblxuICAgIGNvbnN0IGNvbmZpZyA9IHR5cGUudG9Db25maWcoKTtcbiAgICBjb25zdCBleHRlbnNpb25zID1cbiAgICAgIChfdHlwZUV4dGVuc2lvbnNNYXAkY281ID0gdHlwZUV4dGVuc2lvbnNNYXBbY29uZmlnLm5hbWVdKSAhPT0gbnVsbCAmJlxuICAgICAgX3R5cGVFeHRlbnNpb25zTWFwJGNvNSAhPT0gdm9pZCAwXG4gICAgICAgID8gX3R5cGVFeHRlbnNpb25zTWFwJGNvNVxuICAgICAgICA6IFtdO1xuICAgIHJldHVybiBuZXcgR3JhcGhRTFVuaW9uVHlwZSh7XG4gICAgICAuLi5jb25maWcsXG4gICAgICB0eXBlczogKCkgPT4gW1xuICAgICAgICAuLi50eXBlLmdldFR5cGVzKCkubWFwKHJlcGxhY2VOYW1lZFR5cGUpLFxuICAgICAgICAuLi5idWlsZFVuaW9uVHlwZXMoZXh0ZW5zaW9ucyksXG4gICAgICBdLFxuICAgICAgZXh0ZW5zaW9uQVNUTm9kZXM6IGNvbmZpZy5leHRlbnNpb25BU1ROb2Rlcy5jb25jYXQoZXh0ZW5zaW9ucyksXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBleHRlbmRGaWVsZChmaWVsZCkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5maWVsZCxcbiAgICAgIHR5cGU6IHJlcGxhY2VUeXBlKGZpZWxkLnR5cGUpLFxuICAgICAgYXJnczogZmllbGQuYXJncyAmJiBtYXBWYWx1ZShmaWVsZC5hcmdzLCBleHRlbmRBcmcpLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBleHRlbmRBcmcoYXJnKSB7XG4gICAgcmV0dXJuIHsgLi4uYXJnLCB0eXBlOiByZXBsYWNlVHlwZShhcmcudHlwZSkgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE9wZXJhdGlvblR5cGVzKG5vZGVzKSB7XG4gICAgY29uc3Qgb3BUeXBlcyA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICB2YXIgX25vZGUkb3BlcmF0aW9uVHlwZXM7XG5cbiAgICAgIC8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzXG4gICAgICBjb25zdCBvcGVyYXRpb25UeXBlc05vZGVzID1cbiAgICAgICAgLyogYzggaWdub3JlIG5leHQgKi9cbiAgICAgICAgKF9ub2RlJG9wZXJhdGlvblR5cGVzID0gbm9kZS5vcGVyYXRpb25UeXBlcykgIT09IG51bGwgJiZcbiAgICAgICAgX25vZGUkb3BlcmF0aW9uVHlwZXMgIT09IHZvaWQgMFxuICAgICAgICAgID8gX25vZGUkb3BlcmF0aW9uVHlwZXNcbiAgICAgICAgICA6IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IG9wZXJhdGlvblR5cGUgb2Ygb3BlcmF0aW9uVHlwZXNOb2Rlcykge1xuICAgICAgICAvLyBOb3RlOiBXaGlsZSB0aGlzIGNvdWxkIG1ha2UgZWFybHkgYXNzZXJ0aW9ucyB0byBnZXQgdGhlIGNvcnJlY3RseVxuICAgICAgICAvLyB0eXBlZCB2YWx1ZXMgYmVsb3csIHRoYXQgd291bGQgdGhyb3cgaW1tZWRpYXRlbHkgd2hpbGUgdHlwZSBzeXN0ZW1cbiAgICAgICAgLy8gdmFsaWRhdGlvbiB3aXRoIHZhbGlkYXRlU2NoZW1hKCkgd2lsbCBwcm9kdWNlIG1vcmUgYWN0aW9uYWJsZSByZXN1bHRzLlxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgIG9wVHlwZXNbb3BlcmF0aW9uVHlwZS5vcGVyYXRpb25dID0gZ2V0TmFtZWRUeXBlKG9wZXJhdGlvblR5cGUudHlwZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wVHlwZXM7XG4gIH1cblxuICBmdW5jdGlvbiBnZXROYW1lZFR5cGUobm9kZSkge1xuICAgIHZhciBfc3RkVHlwZU1hcCRuYW1lMjtcblxuICAgIGNvbnN0IG5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG4gICAgY29uc3QgdHlwZSA9XG4gICAgICAoX3N0ZFR5cGVNYXAkbmFtZTIgPSBzdGRUeXBlTWFwW25hbWVdKSAhPT0gbnVsbCAmJlxuICAgICAgX3N0ZFR5cGVNYXAkbmFtZTIgIT09IHZvaWQgMFxuICAgICAgICA/IF9zdGRUeXBlTWFwJG5hbWUyXG4gICAgICAgIDogdHlwZU1hcFtuYW1lXTtcblxuICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0eXBlOiBcIiR7bmFtZX1cIi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldFdyYXBwZWRUeXBlKG5vZGUpIHtcbiAgICBpZiAobm9kZS5raW5kID09PSBLaW5kLkxJU1RfVFlQRSkge1xuICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMTGlzdChnZXRXcmFwcGVkVHlwZShub2RlLnR5cGUpKTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5raW5kID09PSBLaW5kLk5PTl9OVUxMX1RZUEUpIHtcbiAgICAgIHJldHVybiBuZXcgR3JhcGhRTE5vbk51bGwoZ2V0V3JhcHBlZFR5cGUobm9kZS50eXBlKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldE5hbWVkVHlwZShub2RlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkRGlyZWN0aXZlKG5vZGUpIHtcbiAgICB2YXIgX25vZGUkZGVzY3JpcHRpb247XG5cbiAgICByZXR1cm4gbmV3IEdyYXBoUUxEaXJlY3RpdmUoe1xuICAgICAgbmFtZTogbm9kZS5uYW1lLnZhbHVlLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIChfbm9kZSRkZXNjcmlwdGlvbiA9IG5vZGUuZGVzY3JpcHRpb24pID09PSBudWxsIHx8XG4gICAgICAgIF9ub2RlJGRlc2NyaXB0aW9uID09PSB2b2lkIDBcbiAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgIDogX25vZGUkZGVzY3JpcHRpb24udmFsdWUsXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBsb2NhdGlvbnM6IG5vZGUubG9jYXRpb25zLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSksXG4gICAgICBpc1JlcGVhdGFibGU6IG5vZGUucmVwZWF0YWJsZSxcbiAgICAgIGFyZ3M6IGJ1aWxkQXJndW1lbnRNYXAobm9kZS5hcmd1bWVudHMpLFxuICAgICAgYXN0Tm9kZTogbm9kZSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkRmllbGRNYXAobm9kZXMpIHtcbiAgICBjb25zdCBmaWVsZENvbmZpZ01hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgIHZhciBfbm9kZSRmaWVsZHM7XG5cbiAgICAgIC8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzXG4gICAgICBjb25zdCBub2RlRmllbGRzID1cbiAgICAgICAgLyogYzggaWdub3JlIG5leHQgKi9cbiAgICAgICAgKF9ub2RlJGZpZWxkcyA9IG5vZGUuZmllbGRzKSAhPT0gbnVsbCAmJiBfbm9kZSRmaWVsZHMgIT09IHZvaWQgMFxuICAgICAgICAgID8gX25vZGUkZmllbGRzXG4gICAgICAgICAgOiBbXTtcblxuICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBub2RlRmllbGRzKSB7XG4gICAgICAgIHZhciBfZmllbGQkZGVzY3JpcHRpb247XG5cbiAgICAgICAgZmllbGRDb25maWdNYXBbZmllbGQubmFtZS52YWx1ZV0gPSB7XG4gICAgICAgICAgLy8gTm90ZTogV2hpbGUgdGhpcyBjb3VsZCBtYWtlIGFzc2VydGlvbnMgdG8gZ2V0IHRoZSBjb3JyZWN0bHkgdHlwZWRcbiAgICAgICAgICAvLyB2YWx1ZSwgdGhhdCB3b3VsZCB0aHJvdyBpbW1lZGlhdGVseSB3aGlsZSB0eXBlIHN5c3RlbSB2YWxpZGF0aW9uXG4gICAgICAgICAgLy8gd2l0aCB2YWxpZGF0ZVNjaGVtYSgpIHdpbGwgcHJvZHVjZSBtb3JlIGFjdGlvbmFibGUgcmVzdWx0cy5cbiAgICAgICAgICB0eXBlOiBnZXRXcmFwcGVkVHlwZShmaWVsZC50eXBlKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgIChfZmllbGQkZGVzY3JpcHRpb24gPSBmaWVsZC5kZXNjcmlwdGlvbikgPT09IG51bGwgfHxcbiAgICAgICAgICAgIF9maWVsZCRkZXNjcmlwdGlvbiA9PT0gdm9pZCAwXG4gICAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICAgIDogX2ZpZWxkJGRlc2NyaXB0aW9uLnZhbHVlLFxuICAgICAgICAgIGFyZ3M6IGJ1aWxkQXJndW1lbnRNYXAoZmllbGQuYXJndW1lbnRzKSxcbiAgICAgICAgICBkZXByZWNhdGlvblJlYXNvbjogZ2V0RGVwcmVjYXRpb25SZWFzb24oZmllbGQpLFxuICAgICAgICAgIGFzdE5vZGU6IGZpZWxkLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaWVsZENvbmZpZ01hcDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkQXJndW1lbnRNYXAoYXJncykge1xuICAgIC8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzXG4gICAgY29uc3QgYXJnc05vZGVzID1cbiAgICAgIC8qIGM4IGlnbm9yZSBuZXh0ICovXG4gICAgICBhcmdzICE9PSBudWxsICYmIGFyZ3MgIT09IHZvaWQgMCA/IGFyZ3MgOiBbXTtcbiAgICBjb25zdCBhcmdDb25maWdNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgZm9yIChjb25zdCBhcmcgb2YgYXJnc05vZGVzKSB7XG4gICAgICB2YXIgX2FyZyRkZXNjcmlwdGlvbjtcblxuICAgICAgLy8gTm90ZTogV2hpbGUgdGhpcyBjb3VsZCBtYWtlIGFzc2VydGlvbnMgdG8gZ2V0IHRoZSBjb3JyZWN0bHkgdHlwZWRcbiAgICAgIC8vIHZhbHVlLCB0aGF0IHdvdWxkIHRocm93IGltbWVkaWF0ZWx5IHdoaWxlIHR5cGUgc3lzdGVtIHZhbGlkYXRpb25cbiAgICAgIC8vIHdpdGggdmFsaWRhdGVTY2hlbWEoKSB3aWxsIHByb2R1Y2UgbW9yZSBhY3Rpb25hYmxlIHJlc3VsdHMuXG4gICAgICBjb25zdCB0eXBlID0gZ2V0V3JhcHBlZFR5cGUoYXJnLnR5cGUpO1xuICAgICAgYXJnQ29uZmlnTWFwW2FyZy5uYW1lLnZhbHVlXSA9IHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgKF9hcmckZGVzY3JpcHRpb24gPSBhcmcuZGVzY3JpcHRpb24pID09PSBudWxsIHx8XG4gICAgICAgICAgX2FyZyRkZXNjcmlwdGlvbiA9PT0gdm9pZCAwXG4gICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgOiBfYXJnJGRlc2NyaXB0aW9uLnZhbHVlLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHZhbHVlRnJvbUFTVChhcmcuZGVmYXVsdFZhbHVlLCB0eXBlKSxcbiAgICAgICAgZGVwcmVjYXRpb25SZWFzb246IGdldERlcHJlY2F0aW9uUmVhc29uKGFyZyksXG4gICAgICAgIGFzdE5vZGU6IGFyZyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyZ0NvbmZpZ01hcDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkSW5wdXRGaWVsZE1hcChub2Rlcykge1xuICAgIGNvbnN0IGlucHV0RmllbGRNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICB2YXIgX25vZGUkZmllbGRzMjtcblxuICAgICAgLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcbiAgICAgIGNvbnN0IGZpZWxkc05vZGVzID1cbiAgICAgICAgLyogYzggaWdub3JlIG5leHQgKi9cbiAgICAgICAgKF9ub2RlJGZpZWxkczIgPSBub2RlLmZpZWxkcykgIT09IG51bGwgJiYgX25vZGUkZmllbGRzMiAhPT0gdm9pZCAwXG4gICAgICAgICAgPyBfbm9kZSRmaWVsZHMyXG4gICAgICAgICAgOiBbXTtcblxuICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBmaWVsZHNOb2Rlcykge1xuICAgICAgICB2YXIgX2ZpZWxkJGRlc2NyaXB0aW9uMjtcblxuICAgICAgICAvLyBOb3RlOiBXaGlsZSB0aGlzIGNvdWxkIG1ha2UgYXNzZXJ0aW9ucyB0byBnZXQgdGhlIGNvcnJlY3RseSB0eXBlZFxuICAgICAgICAvLyB2YWx1ZSwgdGhhdCB3b3VsZCB0aHJvdyBpbW1lZGlhdGVseSB3aGlsZSB0eXBlIHN5c3RlbSB2YWxpZGF0aW9uXG4gICAgICAgIC8vIHdpdGggdmFsaWRhdGVTY2hlbWEoKSB3aWxsIHByb2R1Y2UgbW9yZSBhY3Rpb25hYmxlIHJlc3VsdHMuXG4gICAgICAgIGNvbnN0IHR5cGUgPSBnZXRXcmFwcGVkVHlwZShmaWVsZC50eXBlKTtcbiAgICAgICAgaW5wdXRGaWVsZE1hcFtmaWVsZC5uYW1lLnZhbHVlXSA9IHtcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgKF9maWVsZCRkZXNjcmlwdGlvbjIgPSBmaWVsZC5kZXNjcmlwdGlvbikgPT09IG51bGwgfHxcbiAgICAgICAgICAgIF9maWVsZCRkZXNjcmlwdGlvbjIgPT09IHZvaWQgMFxuICAgICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgICA6IF9maWVsZCRkZXNjcmlwdGlvbjIudmFsdWUsXG4gICAgICAgICAgZGVmYXVsdFZhbHVlOiB2YWx1ZUZyb21BU1QoZmllbGQuZGVmYXVsdFZhbHVlLCB0eXBlKSxcbiAgICAgICAgICBkZXByZWNhdGlvblJlYXNvbjogZ2V0RGVwcmVjYXRpb25SZWFzb24oZmllbGQpLFxuICAgICAgICAgIGFzdE5vZGU6IGZpZWxkLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpbnB1dEZpZWxkTWFwO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRFbnVtVmFsdWVNYXAobm9kZXMpIHtcbiAgICBjb25zdCBlbnVtVmFsdWVNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICB2YXIgX25vZGUkdmFsdWVzO1xuXG4gICAgICAvLyBGSVhNRTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuICAgICAgY29uc3QgdmFsdWVzTm9kZXMgPVxuICAgICAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAoX25vZGUkdmFsdWVzID0gbm9kZS52YWx1ZXMpICE9PSBudWxsICYmIF9ub2RlJHZhbHVlcyAhPT0gdm9pZCAwXG4gICAgICAgICAgPyBfbm9kZSR2YWx1ZXNcbiAgICAgICAgICA6IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlc05vZGVzKSB7XG4gICAgICAgIHZhciBfdmFsdWUkZGVzY3JpcHRpb247XG5cbiAgICAgICAgZW51bVZhbHVlTWFwW3ZhbHVlLm5hbWUudmFsdWVdID0ge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgKF92YWx1ZSRkZXNjcmlwdGlvbiA9IHZhbHVlLmRlc2NyaXB0aW9uKSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgX3ZhbHVlJGRlc2NyaXB0aW9uID09PSB2b2lkIDBcbiAgICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgICAgOiBfdmFsdWUkZGVzY3JpcHRpb24udmFsdWUsXG4gICAgICAgICAgZGVwcmVjYXRpb25SZWFzb246IGdldERlcHJlY2F0aW9uUmVhc29uKHZhbHVlKSxcbiAgICAgICAgICBhc3ROb2RlOiB2YWx1ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZW51bVZhbHVlTWFwO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRJbnRlcmZhY2VzKG5vZGVzKSB7XG4gICAgLy8gTm90ZTogV2hpbGUgdGhpcyBjb3VsZCBtYWtlIGFzc2VydGlvbnMgdG8gZ2V0IHRoZSBjb3JyZWN0bHkgdHlwZWRcbiAgICAvLyB2YWx1ZXMgYmVsb3csIHRoYXQgd291bGQgdGhyb3cgaW1tZWRpYXRlbHkgd2hpbGUgdHlwZSBzeXN0ZW1cbiAgICAvLyB2YWxpZGF0aW9uIHdpdGggdmFsaWRhdGVTY2hlbWEoKSB3aWxsIHByb2R1Y2UgbW9yZSBhY3Rpb25hYmxlIHJlc3VsdHMuXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHJldHVybiBub2Rlcy5mbGF0TWFwKFxuICAgICAgLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcbiAgICAgIChub2RlKSA9PiB7XG4gICAgICAgIHZhciBfbm9kZSRpbnRlcmZhY2VzJG1hcCwgX25vZGUkaW50ZXJmYWNlcztcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8qIGM4IGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgKF9ub2RlJGludGVyZmFjZXMkbWFwID1cbiAgICAgICAgICAgIChfbm9kZSRpbnRlcmZhY2VzID0gbm9kZS5pbnRlcmZhY2VzKSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgX25vZGUkaW50ZXJmYWNlcyA9PT0gdm9pZCAwXG4gICAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICAgIDogX25vZGUkaW50ZXJmYWNlcy5tYXAoZ2V0TmFtZWRUeXBlKSkgIT09IG51bGwgJiZcbiAgICAgICAgICAgIF9ub2RlJGludGVyZmFjZXMkbWFwICE9PSB2b2lkIDBcbiAgICAgICAgICAgID8gX25vZGUkaW50ZXJmYWNlcyRtYXBcbiAgICAgICAgICAgIDogW11cbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkVW5pb25UeXBlcyhub2Rlcykge1xuICAgIC8vIE5vdGU6IFdoaWxlIHRoaXMgY291bGQgbWFrZSBhc3NlcnRpb25zIHRvIGdldCB0aGUgY29ycmVjdGx5IHR5cGVkXG4gICAgLy8gdmFsdWVzIGJlbG93LCB0aGF0IHdvdWxkIHRocm93IGltbWVkaWF0ZWx5IHdoaWxlIHR5cGUgc3lzdGVtXG4gICAgLy8gdmFsaWRhdGlvbiB3aXRoIHZhbGlkYXRlU2NoZW1hKCkgd2lsbCBwcm9kdWNlIG1vcmUgYWN0aW9uYWJsZSByZXN1bHRzLlxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICByZXR1cm4gbm9kZXMuZmxhdE1hcChcbiAgICAgIC8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzXG4gICAgICAobm9kZSkgPT4ge1xuICAgICAgICB2YXIgX25vZGUkdHlwZXMkbWFwLCBfbm9kZSR0eXBlcztcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8qIGM4IGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgKF9ub2RlJHR5cGVzJG1hcCA9XG4gICAgICAgICAgICAoX25vZGUkdHlwZXMgPSBub2RlLnR5cGVzKSA9PT0gbnVsbCB8fCBfbm9kZSR0eXBlcyA9PT0gdm9pZCAwXG4gICAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICAgIDogX25vZGUkdHlwZXMubWFwKGdldE5hbWVkVHlwZSkpICE9PSBudWxsICYmXG4gICAgICAgICAgICBfbm9kZSR0eXBlcyRtYXAgIT09IHZvaWQgMFxuICAgICAgICAgICAgPyBfbm9kZSR0eXBlcyRtYXBcbiAgICAgICAgICAgIDogW11cbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkVHlwZShhc3ROb2RlKSB7XG4gICAgdmFyIF90eXBlRXh0ZW5zaW9uc01hcCRuYTtcblxuICAgIGNvbnN0IG5hbWUgPSBhc3ROb2RlLm5hbWUudmFsdWU7XG4gICAgY29uc3QgZXh0ZW5zaW9uQVNUTm9kZXMgPVxuICAgICAgKF90eXBlRXh0ZW5zaW9uc01hcCRuYSA9IHR5cGVFeHRlbnNpb25zTWFwW25hbWVdKSAhPT0gbnVsbCAmJlxuICAgICAgX3R5cGVFeHRlbnNpb25zTWFwJG5hICE9PSB2b2lkIDBcbiAgICAgICAgPyBfdHlwZUV4dGVuc2lvbnNNYXAkbmFcbiAgICAgICAgOiBbXTtcblxuICAgIHN3aXRjaCAoYXN0Tm9kZS5raW5kKSB7XG4gICAgICBjYXNlIEtpbmQuT0JKRUNUX1RZUEVfREVGSU5JVElPTjoge1xuICAgICAgICB2YXIgX2FzdE5vZGUkZGVzY3JpcHRpb247XG5cbiAgICAgICAgY29uc3QgYWxsTm9kZXMgPSBbYXN0Tm9kZSwgLi4uZXh0ZW5zaW9uQVNUTm9kZXNdO1xuICAgICAgICByZXR1cm4gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgKF9hc3ROb2RlJGRlc2NyaXB0aW9uID0gYXN0Tm9kZS5kZXNjcmlwdGlvbikgPT09IG51bGwgfHxcbiAgICAgICAgICAgIF9hc3ROb2RlJGRlc2NyaXB0aW9uID09PSB2b2lkIDBcbiAgICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgICAgOiBfYXN0Tm9kZSRkZXNjcmlwdGlvbi52YWx1ZSxcbiAgICAgICAgICBpbnRlcmZhY2VzOiAoKSA9PiBidWlsZEludGVyZmFjZXMoYWxsTm9kZXMpLFxuICAgICAgICAgIGZpZWxkczogKCkgPT4gYnVpbGRGaWVsZE1hcChhbGxOb2RlcyksXG4gICAgICAgICAgYXN0Tm9kZSxcbiAgICAgICAgICBleHRlbnNpb25BU1ROb2RlcyxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgS2luZC5JTlRFUkZBQ0VfVFlQRV9ERUZJTklUSU9OOiB7XG4gICAgICAgIHZhciBfYXN0Tm9kZSRkZXNjcmlwdGlvbjI7XG5cbiAgICAgICAgY29uc3QgYWxsTm9kZXMgPSBbYXN0Tm9kZSwgLi4uZXh0ZW5zaW9uQVNUTm9kZXNdO1xuICAgICAgICByZXR1cm4gbmV3IEdyYXBoUUxJbnRlcmZhY2VUeXBlKHtcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgKF9hc3ROb2RlJGRlc2NyaXB0aW9uMiA9IGFzdE5vZGUuZGVzY3JpcHRpb24pID09PSBudWxsIHx8XG4gICAgICAgICAgICBfYXN0Tm9kZSRkZXNjcmlwdGlvbjIgPT09IHZvaWQgMFxuICAgICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgICA6IF9hc3ROb2RlJGRlc2NyaXB0aW9uMi52YWx1ZSxcbiAgICAgICAgICBpbnRlcmZhY2VzOiAoKSA9PiBidWlsZEludGVyZmFjZXMoYWxsTm9kZXMpLFxuICAgICAgICAgIGZpZWxkczogKCkgPT4gYnVpbGRGaWVsZE1hcChhbGxOb2RlcyksXG4gICAgICAgICAgYXN0Tm9kZSxcbiAgICAgICAgICBleHRlbnNpb25BU1ROb2RlcyxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgS2luZC5FTlVNX1RZUEVfREVGSU5JVElPTjoge1xuICAgICAgICB2YXIgX2FzdE5vZGUkZGVzY3JpcHRpb24zO1xuXG4gICAgICAgIGNvbnN0IGFsbE5vZGVzID0gW2FzdE5vZGUsIC4uLmV4dGVuc2lvbkFTVE5vZGVzXTtcbiAgICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMRW51bVR5cGUoe1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAoX2FzdE5vZGUkZGVzY3JpcHRpb24zID0gYXN0Tm9kZS5kZXNjcmlwdGlvbikgPT09IG51bGwgfHxcbiAgICAgICAgICAgIF9hc3ROb2RlJGRlc2NyaXB0aW9uMyA9PT0gdm9pZCAwXG4gICAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICAgIDogX2FzdE5vZGUkZGVzY3JpcHRpb24zLnZhbHVlLFxuICAgICAgICAgIHZhbHVlczogYnVpbGRFbnVtVmFsdWVNYXAoYWxsTm9kZXMpLFxuICAgICAgICAgIGFzdE5vZGUsXG4gICAgICAgICAgZXh0ZW5zaW9uQVNUTm9kZXMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuVU5JT05fVFlQRV9ERUZJTklUSU9OOiB7XG4gICAgICAgIHZhciBfYXN0Tm9kZSRkZXNjcmlwdGlvbjQ7XG5cbiAgICAgICAgY29uc3QgYWxsTm9kZXMgPSBbYXN0Tm9kZSwgLi4uZXh0ZW5zaW9uQVNUTm9kZXNdO1xuICAgICAgICByZXR1cm4gbmV3IEdyYXBoUUxVbmlvblR5cGUoe1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAoX2FzdE5vZGUkZGVzY3JpcHRpb240ID0gYXN0Tm9kZS5kZXNjcmlwdGlvbikgPT09IG51bGwgfHxcbiAgICAgICAgICAgIF9hc3ROb2RlJGRlc2NyaXB0aW9uNCA9PT0gdm9pZCAwXG4gICAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICAgIDogX2FzdE5vZGUkZGVzY3JpcHRpb240LnZhbHVlLFxuICAgICAgICAgIHR5cGVzOiAoKSA9PiBidWlsZFVuaW9uVHlwZXMoYWxsTm9kZXMpLFxuICAgICAgICAgIGFzdE5vZGUsXG4gICAgICAgICAgZXh0ZW5zaW9uQVNUTm9kZXMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuU0NBTEFSX1RZUEVfREVGSU5JVElPTjoge1xuICAgICAgICB2YXIgX2FzdE5vZGUkZGVzY3JpcHRpb241O1xuXG4gICAgICAgIHJldHVybiBuZXcgR3JhcGhRTFNjYWxhclR5cGUoe1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAoX2FzdE5vZGUkZGVzY3JpcHRpb241ID0gYXN0Tm9kZS5kZXNjcmlwdGlvbikgPT09IG51bGwgfHxcbiAgICAgICAgICAgIF9hc3ROb2RlJGRlc2NyaXB0aW9uNSA9PT0gdm9pZCAwXG4gICAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICAgIDogX2FzdE5vZGUkZGVzY3JpcHRpb241LnZhbHVlLFxuICAgICAgICAgIHNwZWNpZmllZEJ5VVJMOiBnZXRTcGVjaWZpZWRCeVVSTChhc3ROb2RlKSxcbiAgICAgICAgICBhc3ROb2RlLFxuICAgICAgICAgIGV4dGVuc2lvbkFTVE5vZGVzLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY2FzZSBLaW5kLklOUFVUX09CSkVDVF9UWVBFX0RFRklOSVRJT046IHtcbiAgICAgICAgdmFyIF9hc3ROb2RlJGRlc2NyaXB0aW9uNjtcblxuICAgICAgICBjb25zdCBhbGxOb2RlcyA9IFthc3ROb2RlLCAuLi5leHRlbnNpb25BU1ROb2Rlc107XG4gICAgICAgIHJldHVybiBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgIChfYXN0Tm9kZSRkZXNjcmlwdGlvbjYgPSBhc3ROb2RlLmRlc2NyaXB0aW9uKSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgX2FzdE5vZGUkZGVzY3JpcHRpb242ID09PSB2b2lkIDBcbiAgICAgICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICAgICAgOiBfYXN0Tm9kZSRkZXNjcmlwdGlvbjYudmFsdWUsXG4gICAgICAgICAgZmllbGRzOiAoKSA9PiBidWlsZElucHV0RmllbGRNYXAoYWxsTm9kZXMpLFxuICAgICAgICAgIGFzdE5vZGUsXG4gICAgICAgICAgZXh0ZW5zaW9uQVNUTm9kZXMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3Qgc3RkVHlwZU1hcCA9IGtleU1hcChcbiAgWy4uLnNwZWNpZmllZFNjYWxhclR5cGVzLCAuLi5pbnRyb3NwZWN0aW9uVHlwZXNdLFxuICAodHlwZSkgPT4gdHlwZS5uYW1lLFxuKTtcbi8qKlxuICogR2l2ZW4gYSBmaWVsZCBvciBlbnVtIHZhbHVlIG5vZGUsIHJldHVybnMgdGhlIHN0cmluZyB2YWx1ZSBmb3IgdGhlXG4gKiBkZXByZWNhdGlvbiByZWFzb24uXG4gKi9cblxuZnVuY3Rpb24gZ2V0RGVwcmVjYXRpb25SZWFzb24obm9kZSkge1xuICBjb25zdCBkZXByZWNhdGVkID0gZ2V0RGlyZWN0aXZlVmFsdWVzKEdyYXBoUUxEZXByZWNhdGVkRGlyZWN0aXZlLCBub2RlKTsgLy8gQHRzLWV4cGVjdC1lcnJvciB2YWxpZGF0ZWQgYnkgYGdldERpcmVjdGl2ZVZhbHVlc2BcblxuICByZXR1cm4gZGVwcmVjYXRlZCA9PT0gbnVsbCB8fCBkZXByZWNhdGVkID09PSB2b2lkIDBcbiAgICA/IHZvaWQgMFxuICAgIDogZGVwcmVjYXRlZC5yZWFzb247XG59XG4vKipcbiAqIEdpdmVuIGEgc2NhbGFyIG5vZGUsIHJldHVybnMgdGhlIHN0cmluZyB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZEJ5VVJMLlxuICovXG5cbmZ1bmN0aW9uIGdldFNwZWNpZmllZEJ5VVJMKG5vZGUpIHtcbiAgY29uc3Qgc3BlY2lmaWVkQnkgPSBnZXREaXJlY3RpdmVWYWx1ZXMoR3JhcGhRTFNwZWNpZmllZEJ5RGlyZWN0aXZlLCBub2RlKTsgLy8gQHRzLWV4cGVjdC1lcnJvciB2YWxpZGF0ZWQgYnkgYGdldERpcmVjdGl2ZVZhbHVlc2BcblxuICByZXR1cm4gc3BlY2lmaWVkQnkgPT09IG51bGwgfHwgc3BlY2lmaWVkQnkgPT09IHZvaWQgMFxuICAgID8gdm9pZCAwXG4gICAgOiBzcGVjaWZpZWRCeS51cmw7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/extendSchema.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/findBreakingChanges.mjs":
/*!****************************************************************!*\
  !*** ./node_modules/graphql/utilities/findBreakingChanges.mjs ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BreakingChangeType\": function() { return /* binding */ BreakingChangeType; },\n/* harmony export */   \"DangerousChangeType\": function() { return /* binding */ DangerousChangeType; },\n/* harmony export */   \"findBreakingChanges\": function() { return /* binding */ findBreakingChanges; },\n/* harmony export */   \"findDangerousChanges\": function() { return /* binding */ findDangerousChanges; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"./node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jsutils/keyMap.mjs */ \"./node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../language/printer.mjs */ \"./node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../type/scalars.mjs */ \"./node_modules/graphql/type/scalars.mjs\");\n/* harmony import */ var _astFromValue_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./astFromValue.mjs */ \"./node_modules/graphql/utilities/astFromValue.mjs\");\n/* harmony import */ var _sortValueNode_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./sortValueNode.mjs */ \"./node_modules/graphql/utilities/sortValueNode.mjs\");\n\n\n\n\n\n\n\n\nlet BreakingChangeType;\n\n(function (BreakingChangeType) {\n  BreakingChangeType['TYPE_REMOVED'] = 'TYPE_REMOVED';\n  BreakingChangeType['TYPE_CHANGED_KIND'] = 'TYPE_CHANGED_KIND';\n  BreakingChangeType['TYPE_REMOVED_FROM_UNION'] = 'TYPE_REMOVED_FROM_UNION';\n  BreakingChangeType['VALUE_REMOVED_FROM_ENUM'] = 'VALUE_REMOVED_FROM_ENUM';\n  BreakingChangeType['REQUIRED_INPUT_FIELD_ADDED'] =\n    'REQUIRED_INPUT_FIELD_ADDED';\n  BreakingChangeType['IMPLEMENTED_INTERFACE_REMOVED'] =\n    'IMPLEMENTED_INTERFACE_REMOVED';\n  BreakingChangeType['FIELD_REMOVED'] = 'FIELD_REMOVED';\n  BreakingChangeType['FIELD_CHANGED_KIND'] = 'FIELD_CHANGED_KIND';\n  BreakingChangeType['REQUIRED_ARG_ADDED'] = 'REQUIRED_ARG_ADDED';\n  BreakingChangeType['ARG_REMOVED'] = 'ARG_REMOVED';\n  BreakingChangeType['ARG_CHANGED_KIND'] = 'ARG_CHANGED_KIND';\n  BreakingChangeType['DIRECTIVE_REMOVED'] = 'DIRECTIVE_REMOVED';\n  BreakingChangeType['DIRECTIVE_ARG_REMOVED'] = 'DIRECTIVE_ARG_REMOVED';\n  BreakingChangeType['REQUIRED_DIRECTIVE_ARG_ADDED'] =\n    'REQUIRED_DIRECTIVE_ARG_ADDED';\n  BreakingChangeType['DIRECTIVE_REPEATABLE_REMOVED'] =\n    'DIRECTIVE_REPEATABLE_REMOVED';\n  BreakingChangeType['DIRECTIVE_LOCATION_REMOVED'] =\n    'DIRECTIVE_LOCATION_REMOVED';\n})(BreakingChangeType || (BreakingChangeType = {}));\n\nlet DangerousChangeType;\n\n(function (DangerousChangeType) {\n  DangerousChangeType['VALUE_ADDED_TO_ENUM'] = 'VALUE_ADDED_TO_ENUM';\n  DangerousChangeType['TYPE_ADDED_TO_UNION'] = 'TYPE_ADDED_TO_UNION';\n  DangerousChangeType['OPTIONAL_INPUT_FIELD_ADDED'] =\n    'OPTIONAL_INPUT_FIELD_ADDED';\n  DangerousChangeType['OPTIONAL_ARG_ADDED'] = 'OPTIONAL_ARG_ADDED';\n  DangerousChangeType['IMPLEMENTED_INTERFACE_ADDED'] =\n    'IMPLEMENTED_INTERFACE_ADDED';\n  DangerousChangeType['ARG_DEFAULT_VALUE_CHANGE'] = 'ARG_DEFAULT_VALUE_CHANGE';\n})(DangerousChangeType || (DangerousChangeType = {}));\n\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of breaking changes covered by the other functions down below.\n */\nfunction findBreakingChanges(oldSchema, newSchema) {\n  // @ts-expect-error\n  return findSchemaChanges(oldSchema, newSchema).filter(\n    (change) => change.type in BreakingChangeType,\n  );\n}\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of potentially dangerous changes covered by the other functions down below.\n */\n\nfunction findDangerousChanges(oldSchema, newSchema) {\n  // @ts-expect-error\n  return findSchemaChanges(oldSchema, newSchema).filter(\n    (change) => change.type in DangerousChangeType,\n  );\n}\n\nfunction findSchemaChanges(oldSchema, newSchema) {\n  return [\n    ...findTypeChanges(oldSchema, newSchema),\n    ...findDirectiveChanges(oldSchema, newSchema),\n  ];\n}\n\nfunction findDirectiveChanges(oldSchema, newSchema) {\n  const schemaChanges = [];\n  const directivesDiff = diff(\n    oldSchema.getDirectives(),\n    newSchema.getDirectives(),\n  );\n\n  for (const oldDirective of directivesDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.DIRECTIVE_REMOVED,\n      description: `${oldDirective.name} was removed.`,\n    });\n  }\n\n  for (const [oldDirective, newDirective] of directivesDiff.persisted) {\n    const argsDiff = diff(oldDirective.args, newDirective.args);\n\n    for (const newArg of argsDiff.added) {\n      if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isRequiredArgument)(newArg)) {\n        schemaChanges.push({\n          type: BreakingChangeType.REQUIRED_DIRECTIVE_ARG_ADDED,\n          description: `A required arg ${newArg.name} on directive ${oldDirective.name} was added.`,\n        });\n      }\n    }\n\n    for (const oldArg of argsDiff.removed) {\n      schemaChanges.push({\n        type: BreakingChangeType.DIRECTIVE_ARG_REMOVED,\n        description: `${oldArg.name} was removed from ${oldDirective.name}.`,\n      });\n    }\n\n    if (oldDirective.isRepeatable && !newDirective.isRepeatable) {\n      schemaChanges.push({\n        type: BreakingChangeType.DIRECTIVE_REPEATABLE_REMOVED,\n        description: `Repeatable flag was removed from ${oldDirective.name}.`,\n      });\n    }\n\n    for (const location of oldDirective.locations) {\n      if (!newDirective.locations.includes(location)) {\n        schemaChanges.push({\n          type: BreakingChangeType.DIRECTIVE_LOCATION_REMOVED,\n          description: `${location} was removed from ${oldDirective.name}.`,\n        });\n      }\n    }\n  }\n\n  return schemaChanges;\n}\n\nfunction findTypeChanges(oldSchema, newSchema) {\n  const schemaChanges = [];\n  const typesDiff = diff(\n    Object.values(oldSchema.getTypeMap()),\n    Object.values(newSchema.getTypeMap()),\n  );\n\n  for (const oldType of typesDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.TYPE_REMOVED,\n      description: (0,_type_scalars_mjs__WEBPACK_IMPORTED_MODULE_1__.isSpecifiedScalarType)(oldType)\n        ? `Standard scalar ${oldType.name} was removed because it is not referenced anymore.`\n        : `${oldType.name} was removed.`,\n    });\n  }\n\n  for (const [oldType, newType] of typesDiff.persisted) {\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isEnumType)(oldType) && (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isEnumType)(newType)) {\n      schemaChanges.push(...findEnumTypeChanges(oldType, newType));\n    } else if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isUnionType)(oldType) && (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isUnionType)(newType)) {\n      schemaChanges.push(...findUnionTypeChanges(oldType, newType));\n    } else if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInputObjectType)(oldType) && (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInputObjectType)(newType)) {\n      schemaChanges.push(...findInputObjectTypeChanges(oldType, newType));\n    } else if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isObjectType)(oldType) && (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isObjectType)(newType)) {\n      schemaChanges.push(\n        ...findFieldChanges(oldType, newType),\n        ...findImplementedInterfacesChanges(oldType, newType),\n      );\n    } else if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInterfaceType)(oldType) && (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInterfaceType)(newType)) {\n      schemaChanges.push(\n        ...findFieldChanges(oldType, newType),\n        ...findImplementedInterfacesChanges(oldType, newType),\n      );\n    } else if (oldType.constructor !== newType.constructor) {\n      schemaChanges.push({\n        type: BreakingChangeType.TYPE_CHANGED_KIND,\n        description:\n          `${oldType.name} changed from ` +\n          `${typeKindName(oldType)} to ${typeKindName(newType)}.`,\n      });\n    }\n  }\n\n  return schemaChanges;\n}\n\nfunction findInputObjectTypeChanges(oldType, newType) {\n  const schemaChanges = [];\n  const fieldsDiff = diff(\n    Object.values(oldType.getFields()),\n    Object.values(newType.getFields()),\n  );\n\n  for (const newField of fieldsDiff.added) {\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isRequiredInputField)(newField)) {\n      schemaChanges.push({\n        type: BreakingChangeType.REQUIRED_INPUT_FIELD_ADDED,\n        description: `A required field ${newField.name} on input type ${oldType.name} was added.`,\n      });\n    } else {\n      schemaChanges.push({\n        type: DangerousChangeType.OPTIONAL_INPUT_FIELD_ADDED,\n        description: `An optional field ${newField.name} on input type ${oldType.name} was added.`,\n      });\n    }\n  }\n\n  for (const oldField of fieldsDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.FIELD_REMOVED,\n      description: `${oldType.name}.${oldField.name} was removed.`,\n    });\n  }\n\n  for (const [oldField, newField] of fieldsDiff.persisted) {\n    const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(\n      oldField.type,\n      newField.type,\n    );\n\n    if (!isSafe) {\n      schemaChanges.push({\n        type: BreakingChangeType.FIELD_CHANGED_KIND,\n        description:\n          `${oldType.name}.${oldField.name} changed type from ` +\n          `${String(oldField.type)} to ${String(newField.type)}.`,\n      });\n    }\n  }\n\n  return schemaChanges;\n}\n\nfunction findUnionTypeChanges(oldType, newType) {\n  const schemaChanges = [];\n  const possibleTypesDiff = diff(oldType.getTypes(), newType.getTypes());\n\n  for (const newPossibleType of possibleTypesDiff.added) {\n    schemaChanges.push({\n      type: DangerousChangeType.TYPE_ADDED_TO_UNION,\n      description: `${newPossibleType.name} was added to union type ${oldType.name}.`,\n    });\n  }\n\n  for (const oldPossibleType of possibleTypesDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.TYPE_REMOVED_FROM_UNION,\n      description: `${oldPossibleType.name} was removed from union type ${oldType.name}.`,\n    });\n  }\n\n  return schemaChanges;\n}\n\nfunction findEnumTypeChanges(oldType, newType) {\n  const schemaChanges = [];\n  const valuesDiff = diff(oldType.getValues(), newType.getValues());\n\n  for (const newValue of valuesDiff.added) {\n    schemaChanges.push({\n      type: DangerousChangeType.VALUE_ADDED_TO_ENUM,\n      description: `${newValue.name} was added to enum type ${oldType.name}.`,\n    });\n  }\n\n  for (const oldValue of valuesDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.VALUE_REMOVED_FROM_ENUM,\n      description: `${oldValue.name} was removed from enum type ${oldType.name}.`,\n    });\n  }\n\n  return schemaChanges;\n}\n\nfunction findImplementedInterfacesChanges(oldType, newType) {\n  const schemaChanges = [];\n  const interfacesDiff = diff(oldType.getInterfaces(), newType.getInterfaces());\n\n  for (const newInterface of interfacesDiff.added) {\n    schemaChanges.push({\n      type: DangerousChangeType.IMPLEMENTED_INTERFACE_ADDED,\n      description: `${newInterface.name} added to interfaces implemented by ${oldType.name}.`,\n    });\n  }\n\n  for (const oldInterface of interfacesDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.IMPLEMENTED_INTERFACE_REMOVED,\n      description: `${oldType.name} no longer implements interface ${oldInterface.name}.`,\n    });\n  }\n\n  return schemaChanges;\n}\n\nfunction findFieldChanges(oldType, newType) {\n  const schemaChanges = [];\n  const fieldsDiff = diff(\n    Object.values(oldType.getFields()),\n    Object.values(newType.getFields()),\n  );\n\n  for (const oldField of fieldsDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.FIELD_REMOVED,\n      description: `${oldType.name}.${oldField.name} was removed.`,\n    });\n  }\n\n  for (const [oldField, newField] of fieldsDiff.persisted) {\n    schemaChanges.push(...findArgChanges(oldType, oldField, newField));\n    const isSafe = isChangeSafeForObjectOrInterfaceField(\n      oldField.type,\n      newField.type,\n    );\n\n    if (!isSafe) {\n      schemaChanges.push({\n        type: BreakingChangeType.FIELD_CHANGED_KIND,\n        description:\n          `${oldType.name}.${oldField.name} changed type from ` +\n          `${String(oldField.type)} to ${String(newField.type)}.`,\n      });\n    }\n  }\n\n  return schemaChanges;\n}\n\nfunction findArgChanges(oldType, oldField, newField) {\n  const schemaChanges = [];\n  const argsDiff = diff(oldField.args, newField.args);\n\n  for (const oldArg of argsDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.ARG_REMOVED,\n      description: `${oldType.name}.${oldField.name} arg ${oldArg.name} was removed.`,\n    });\n  }\n\n  for (const [oldArg, newArg] of argsDiff.persisted) {\n    const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(\n      oldArg.type,\n      newArg.type,\n    );\n\n    if (!isSafe) {\n      schemaChanges.push({\n        type: BreakingChangeType.ARG_CHANGED_KIND,\n        description:\n          `${oldType.name}.${oldField.name} arg ${oldArg.name} has changed type from ` +\n          `${String(oldArg.type)} to ${String(newArg.type)}.`,\n      });\n    } else if (oldArg.defaultValue !== undefined) {\n      if (newArg.defaultValue === undefined) {\n        schemaChanges.push({\n          type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n          description: `${oldType.name}.${oldField.name} arg ${oldArg.name} defaultValue was removed.`,\n        });\n      } else {\n        // Since we looking only for client's observable changes we should\n        // compare default values in the same representation as they are\n        // represented inside introspection.\n        const oldValueStr = stringifyValue(oldArg.defaultValue, oldArg.type);\n        const newValueStr = stringifyValue(newArg.defaultValue, newArg.type);\n\n        if (oldValueStr !== newValueStr) {\n          schemaChanges.push({\n            type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n            description: `${oldType.name}.${oldField.name} arg ${oldArg.name} has changed defaultValue from ${oldValueStr} to ${newValueStr}.`,\n          });\n        }\n      }\n    }\n  }\n\n  for (const newArg of argsDiff.added) {\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isRequiredArgument)(newArg)) {\n      schemaChanges.push({\n        type: BreakingChangeType.REQUIRED_ARG_ADDED,\n        description: `A required arg ${newArg.name} on ${oldType.name}.${oldField.name} was added.`,\n      });\n    } else {\n      schemaChanges.push({\n        type: DangerousChangeType.OPTIONAL_ARG_ADDED,\n        description: `An optional arg ${newArg.name} on ${oldType.name}.${oldField.name} was added.`,\n      });\n    }\n  }\n\n  return schemaChanges;\n}\n\nfunction isChangeSafeForObjectOrInterfaceField(oldType, newType) {\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isListType)(oldType)) {\n    return (\n      // if they're both lists, make sure the underlying types are compatible\n      ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isListType)(newType) &&\n        isChangeSafeForObjectOrInterfaceField(\n          oldType.ofType,\n          newType.ofType,\n        )) || // moving from nullable to non-null of the same underlying type is safe\n      ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isNonNullType)(newType) &&\n        isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))\n    );\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isNonNullType)(oldType)) {\n    // if they're both non-null, make sure the underlying types are compatible\n    return (\n      (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isNonNullType)(newType) &&\n      isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType)\n    );\n  }\n\n  return (\n    // if they're both named types, see if their names are equivalent\n    ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isNamedType)(newType) && oldType.name === newType.name) || // moving from nullable to non-null of the same underlying type is safe\n    ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isNonNullType)(newType) &&\n      isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))\n  );\n}\n\nfunction isChangeSafeForInputObjectFieldOrFieldArg(oldType, newType) {\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isListType)(oldType)) {\n    // if they're both lists, make sure the underlying types are compatible\n    return (\n      (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isListType)(newType) &&\n      isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType)\n    );\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isNonNullType)(oldType)) {\n    return (\n      // if they're both non-null, make sure the underlying types are\n      // compatible\n      ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isNonNullType)(newType) &&\n        isChangeSafeForInputObjectFieldOrFieldArg(\n          oldType.ofType,\n          newType.ofType,\n        )) || // moving from non-null to nullable of the same underlying type is safe\n      (!(0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isNonNullType)(newType) &&\n        isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType))\n    );\n  } // if they're both named types, see if their names are equivalent\n\n  return (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isNamedType)(newType) && oldType.name === newType.name;\n}\n\nfunction typeKindName(type) {\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isScalarType)(type)) {\n    return 'a Scalar type';\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isObjectType)(type)) {\n    return 'an Object type';\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInterfaceType)(type)) {\n    return 'an Interface type';\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isUnionType)(type)) {\n    return 'a Union type';\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isEnumType)(type)) {\n    return 'an Enum type';\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInputObjectType)(type)) {\n    return 'an Input type';\n  }\n  /* c8 ignore next 3 */\n  // Not reachable, all possible types have been considered.\n\n   false || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__.invariant)(false, 'Unexpected type: ' + (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_3__.inspect)(type));\n}\n\nfunction stringifyValue(value, type) {\n  const ast = (0,_astFromValue_mjs__WEBPACK_IMPORTED_MODULE_4__.astFromValue)(value, type);\n  ast != null || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_2__.invariant)(false);\n  return (0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_5__.print)((0,_sortValueNode_mjs__WEBPACK_IMPORTED_MODULE_6__.sortValueNode)(ast));\n}\n\nfunction diff(oldArray, newArray) {\n  const added = [];\n  const removed = [];\n  const persisted = [];\n  const oldMap = (0,_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_7__.keyMap)(oldArray, ({ name }) => name);\n  const newMap = (0,_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_7__.keyMap)(newArray, ({ name }) => name);\n\n  for (const oldItem of oldArray) {\n    const newItem = newMap[oldItem.name];\n\n    if (newItem === undefined) {\n      removed.push(oldItem);\n    } else {\n      persisted.push([oldItem, newItem]);\n    }\n  }\n\n  for (const newItem of newArray) {\n    if (oldMap[newItem.name] === undefined) {\n      added.push(newItem);\n    }\n  }\n\n  return {\n    added,\n    persisted,\n    removed,\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvZmluZEJyZWFraW5nQ2hhbmdlcy5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQWlEO0FBQ0k7QUFDTjtBQUNDO0FBYWhCO0FBQzRCO0FBQ1Y7QUFDRTtBQUM3Qzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsZ0RBQWdEOztBQUUxQzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtEQUFrRDs7QUFFbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsbUJBQW1CO0FBQ3pDLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsVUFBVSx3RUFBa0I7QUFDNUI7QUFDQTtBQUNBLHlDQUF5QyxhQUFhLGVBQWUsbUJBQW1CO0FBQ3hGLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixhQUFhLG1CQUFtQixrQkFBa0I7QUFDMUUsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RCxrQkFBa0I7QUFDM0UsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLFVBQVUsbUJBQW1CLGtCQUFrQjtBQUN6RSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQix3RUFBcUI7QUFDeEMsNkJBQTZCLGNBQWM7QUFDM0MsYUFBYSxjQUFjO0FBQzNCLEtBQUs7QUFDTDs7QUFFQTtBQUNBLFFBQVEsZ0VBQVUsYUFBYSxnRUFBVTtBQUN6QztBQUNBLE1BQU0sU0FBUyxpRUFBVyxhQUFhLGlFQUFXO0FBQ2xEO0FBQ0EsTUFBTSxTQUFTLHVFQUFpQixhQUFhLHVFQUFpQjtBQUM5RDtBQUNBLE1BQU0sU0FBUyxrRUFBWSxhQUFhLGtFQUFZO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxTQUFTLHFFQUFlLGFBQWEscUVBQWU7QUFDMUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsYUFBYSxjQUFjO0FBQzNCLGFBQWEsdUJBQXVCLEtBQUssc0JBQXNCO0FBQy9ELE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSwwRUFBb0I7QUFDNUI7QUFDQTtBQUNBLHlDQUF5QyxlQUFlLGdCQUFnQixjQUFjO0FBQ3RGLE9BQU87QUFDUCxNQUFNO0FBQ047QUFDQTtBQUNBLDBDQUEwQyxlQUFlLGdCQUFnQixjQUFjO0FBQ3ZGLE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixhQUFhLEdBQUcsZUFBZTtBQUNyRCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsYUFBYSxHQUFHLGVBQWU7QUFDNUMsYUFBYSx1QkFBdUIsS0FBSyxzQkFBc0I7QUFDL0QsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHNCQUFzQiwwQkFBMEIsYUFBYTtBQUNuRixLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHNCQUFzQiw4QkFBOEIsYUFBYTtBQUN2RixLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLGVBQWUseUJBQXlCLGFBQWE7QUFDM0UsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixlQUFlLDZCQUE2QixhQUFhO0FBQy9FLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsbUJBQW1CLHFDQUFxQyxhQUFhO0FBQzNGLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsY0FBYyxpQ0FBaUMsa0JBQWtCO0FBQ3ZGLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsYUFBYSxHQUFHLGVBQWU7QUFDckQsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsYUFBYSxHQUFHLGVBQWU7QUFDNUMsYUFBYSx1QkFBdUIsS0FBSyxzQkFBc0I7QUFDL0QsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLGFBQWEsR0FBRyxlQUFlLE1BQU0sYUFBYTtBQUN4RSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsYUFBYSxHQUFHLGVBQWUsTUFBTSxhQUFhO0FBQy9ELGFBQWEscUJBQXFCLEtBQUssb0JBQW9CO0FBQzNELE9BQU87QUFDUCxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLGFBQWEsR0FBRyxlQUFlLE1BQU0sYUFBYTtBQUM1RSxTQUFTO0FBQ1QsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGFBQWEsR0FBRyxlQUFlLE1BQU0sYUFBYSxnQ0FBZ0MsYUFBYSxLQUFLLFlBQVk7QUFDNUksV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSx3RUFBa0I7QUFDMUI7QUFDQTtBQUNBLHVDQUF1QyxhQUFhLEtBQUssYUFBYSxHQUFHLGVBQWU7QUFDeEYsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBO0FBQ0Esd0NBQXdDLGFBQWEsS0FBSyxhQUFhLEdBQUcsZUFBZTtBQUN6RixPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsTUFBTSxnRUFBVTtBQUNoQjtBQUNBO0FBQ0EsT0FBTyxnRUFBVTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sbUVBQWE7QUFDcEI7QUFDQTtBQUNBOztBQUVBLE1BQU0sbUVBQWE7QUFDbkI7QUFDQTtBQUNBLE1BQU0sbUVBQWE7QUFDbkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLLGlFQUFXO0FBQ2hCLEtBQUssbUVBQWE7QUFDbEI7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTSxnRUFBVTtBQUNoQjtBQUNBO0FBQ0EsTUFBTSxnRUFBVTtBQUNoQjtBQUNBO0FBQ0E7O0FBRUEsTUFBTSxtRUFBYTtBQUNuQjtBQUNBO0FBQ0E7QUFDQSxPQUFPLG1FQUFhO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxtRUFBYTtBQUNyQjtBQUNBO0FBQ0EsSUFBSTs7QUFFSixTQUFTLGlFQUFXO0FBQ3BCOztBQUVBO0FBQ0EsTUFBTSxrRUFBWTtBQUNsQjtBQUNBOztBQUVBLE1BQU0sa0VBQVk7QUFDbEI7QUFDQTs7QUFFQSxNQUFNLHFFQUFlO0FBQ3JCO0FBQ0E7O0FBRUEsTUFBTSxpRUFBVztBQUNqQjtBQUNBOztBQUVBLE1BQU0sZ0VBQVU7QUFDaEI7QUFDQTs7QUFFQSxNQUFNLHVFQUFpQjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLE1BQUssSUFBSSxpRUFBUyw4QkFBOEIsNkRBQU87QUFDekQ7O0FBRUE7QUFDQSxjQUFjLCtEQUFZO0FBQzFCLGlCQUFpQixpRUFBUztBQUMxQixTQUFTLDREQUFLLENBQUMsaUVBQWE7QUFDNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsMkRBQU0sY0FBYyxNQUFNO0FBQzNDLGlCQUFpQiwyREFBTSxjQUFjLE1BQU07O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2ZpbmRCcmVha2luZ0NoYW5nZXMubWpzP2FlY2IiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSAnLi4vanN1dGlscy9pbnZhcmlhbnQubWpzJztcbmltcG9ydCB7IGtleU1hcCB9IGZyb20gJy4uL2pzdXRpbHMva2V5TWFwLm1qcyc7XG5pbXBvcnQgeyBwcmludCB9IGZyb20gJy4uL2xhbmd1YWdlL3ByaW50ZXIubWpzJztcbmltcG9ydCB7XG4gIGlzRW51bVR5cGUsXG4gIGlzSW5wdXRPYmplY3RUeXBlLFxuICBpc0ludGVyZmFjZVR5cGUsXG4gIGlzTGlzdFR5cGUsXG4gIGlzTmFtZWRUeXBlLFxuICBpc05vbk51bGxUeXBlLFxuICBpc09iamVjdFR5cGUsXG4gIGlzUmVxdWlyZWRBcmd1bWVudCxcbiAgaXNSZXF1aXJlZElucHV0RmllbGQsXG4gIGlzU2NhbGFyVHlwZSxcbiAgaXNVbmlvblR5cGUsXG59IGZyb20gJy4uL3R5cGUvZGVmaW5pdGlvbi5tanMnO1xuaW1wb3J0IHsgaXNTcGVjaWZpZWRTY2FsYXJUeXBlIH0gZnJvbSAnLi4vdHlwZS9zY2FsYXJzLm1qcyc7XG5pbXBvcnQgeyBhc3RGcm9tVmFsdWUgfSBmcm9tICcuL2FzdEZyb21WYWx1ZS5tanMnO1xuaW1wb3J0IHsgc29ydFZhbHVlTm9kZSB9IGZyb20gJy4vc29ydFZhbHVlTm9kZS5tanMnO1xuZXhwb3J0IGxldCBCcmVha2luZ0NoYW5nZVR5cGU7XG5cbihmdW5jdGlvbiAoQnJlYWtpbmdDaGFuZ2VUeXBlKSB7XG4gIEJyZWFraW5nQ2hhbmdlVHlwZVsnVFlQRV9SRU1PVkVEJ10gPSAnVFlQRV9SRU1PVkVEJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydUWVBFX0NIQU5HRURfS0lORCddID0gJ1RZUEVfQ0hBTkdFRF9LSU5EJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydUWVBFX1JFTU9WRURfRlJPTV9VTklPTiddID0gJ1RZUEVfUkVNT1ZFRF9GUk9NX1VOSU9OJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydWQUxVRV9SRU1PVkVEX0ZST01fRU5VTSddID0gJ1ZBTFVFX1JFTU9WRURfRlJPTV9FTlVNJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydSRVFVSVJFRF9JTlBVVF9GSUVMRF9BRERFRCddID1cbiAgICAnUkVRVUlSRURfSU5QVVRfRklFTERfQURERUQnO1xuICBCcmVha2luZ0NoYW5nZVR5cGVbJ0lNUExFTUVOVEVEX0lOVEVSRkFDRV9SRU1PVkVEJ10gPVxuICAgICdJTVBMRU1FTlRFRF9JTlRFUkZBQ0VfUkVNT1ZFRCc7XG4gIEJyZWFraW5nQ2hhbmdlVHlwZVsnRklFTERfUkVNT1ZFRCddID0gJ0ZJRUxEX1JFTU9WRUQnO1xuICBCcmVha2luZ0NoYW5nZVR5cGVbJ0ZJRUxEX0NIQU5HRURfS0lORCddID0gJ0ZJRUxEX0NIQU5HRURfS0lORCc7XG4gIEJyZWFraW5nQ2hhbmdlVHlwZVsnUkVRVUlSRURfQVJHX0FEREVEJ10gPSAnUkVRVUlSRURfQVJHX0FEREVEJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydBUkdfUkVNT1ZFRCddID0gJ0FSR19SRU1PVkVEJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydBUkdfQ0hBTkdFRF9LSU5EJ10gPSAnQVJHX0NIQU5HRURfS0lORCc7XG4gIEJyZWFraW5nQ2hhbmdlVHlwZVsnRElSRUNUSVZFX1JFTU9WRUQnXSA9ICdESVJFQ1RJVkVfUkVNT1ZFRCc7XG4gIEJyZWFraW5nQ2hhbmdlVHlwZVsnRElSRUNUSVZFX0FSR19SRU1PVkVEJ10gPSAnRElSRUNUSVZFX0FSR19SRU1PVkVEJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydSRVFVSVJFRF9ESVJFQ1RJVkVfQVJHX0FEREVEJ10gPVxuICAgICdSRVFVSVJFRF9ESVJFQ1RJVkVfQVJHX0FEREVEJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydESVJFQ1RJVkVfUkVQRUFUQUJMRV9SRU1PVkVEJ10gPVxuICAgICdESVJFQ1RJVkVfUkVQRUFUQUJMRV9SRU1PVkVEJztcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlWydESVJFQ1RJVkVfTE9DQVRJT05fUkVNT1ZFRCddID1cbiAgICAnRElSRUNUSVZFX0xPQ0FUSU9OX1JFTU9WRUQnO1xufSkoQnJlYWtpbmdDaGFuZ2VUeXBlIHx8IChCcmVha2luZ0NoYW5nZVR5cGUgPSB7fSkpO1xuXG5leHBvcnQgbGV0IERhbmdlcm91c0NoYW5nZVR5cGU7XG5cbihmdW5jdGlvbiAoRGFuZ2Vyb3VzQ2hhbmdlVHlwZSkge1xuICBEYW5nZXJvdXNDaGFuZ2VUeXBlWydWQUxVRV9BRERFRF9UT19FTlVNJ10gPSAnVkFMVUVfQURERURfVE9fRU5VTSc7XG4gIERhbmdlcm91c0NoYW5nZVR5cGVbJ1RZUEVfQURERURfVE9fVU5JT04nXSA9ICdUWVBFX0FEREVEX1RPX1VOSU9OJztcbiAgRGFuZ2Vyb3VzQ2hhbmdlVHlwZVsnT1BUSU9OQUxfSU5QVVRfRklFTERfQURERUQnXSA9XG4gICAgJ09QVElPTkFMX0lOUFVUX0ZJRUxEX0FEREVEJztcbiAgRGFuZ2Vyb3VzQ2hhbmdlVHlwZVsnT1BUSU9OQUxfQVJHX0FEREVEJ10gPSAnT1BUSU9OQUxfQVJHX0FEREVEJztcbiAgRGFuZ2Vyb3VzQ2hhbmdlVHlwZVsnSU1QTEVNRU5URURfSU5URVJGQUNFX0FEREVEJ10gPVxuICAgICdJTVBMRU1FTlRFRF9JTlRFUkZBQ0VfQURERUQnO1xuICBEYW5nZXJvdXNDaGFuZ2VUeXBlWydBUkdfREVGQVVMVF9WQUxVRV9DSEFOR0UnXSA9ICdBUkdfREVGQVVMVF9WQUxVRV9DSEFOR0UnO1xufSkoRGFuZ2Vyb3VzQ2hhbmdlVHlwZSB8fCAoRGFuZ2Vyb3VzQ2hhbmdlVHlwZSA9IHt9KSk7XG5cbi8qKlxuICogR2l2ZW4gdHdvIHNjaGVtYXMsIHJldHVybnMgYW4gQXJyYXkgY29udGFpbmluZyBkZXNjcmlwdGlvbnMgb2YgYWxsIHRoZSB0eXBlc1xuICogb2YgYnJlYWtpbmcgY2hhbmdlcyBjb3ZlcmVkIGJ5IHRoZSBvdGhlciBmdW5jdGlvbnMgZG93biBiZWxvdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRCcmVha2luZ0NoYW5nZXMob2xkU2NoZW1hLCBuZXdTY2hlbWEpIHtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICByZXR1cm4gZmluZFNjaGVtYUNoYW5nZXMob2xkU2NoZW1hLCBuZXdTY2hlbWEpLmZpbHRlcihcbiAgICAoY2hhbmdlKSA9PiBjaGFuZ2UudHlwZSBpbiBCcmVha2luZ0NoYW5nZVR5cGUsXG4gICk7XG59XG4vKipcbiAqIEdpdmVuIHR3byBzY2hlbWFzLCByZXR1cm5zIGFuIEFycmF5IGNvbnRhaW5pbmcgZGVzY3JpcHRpb25zIG9mIGFsbCB0aGUgdHlwZXNcbiAqIG9mIHBvdGVudGlhbGx5IGRhbmdlcm91cyBjaGFuZ2VzIGNvdmVyZWQgYnkgdGhlIG90aGVyIGZ1bmN0aW9ucyBkb3duIGJlbG93LlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRGFuZ2Vyb3VzQ2hhbmdlcyhvbGRTY2hlbWEsIG5ld1NjaGVtYSkge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIHJldHVybiBmaW5kU2NoZW1hQ2hhbmdlcyhvbGRTY2hlbWEsIG5ld1NjaGVtYSkuZmlsdGVyKFxuICAgIChjaGFuZ2UpID0+IGNoYW5nZS50eXBlIGluIERhbmdlcm91c0NoYW5nZVR5cGUsXG4gICk7XG59XG5cbmZ1bmN0aW9uIGZpbmRTY2hlbWFDaGFuZ2VzKG9sZFNjaGVtYSwgbmV3U2NoZW1hKSB7XG4gIHJldHVybiBbXG4gICAgLi4uZmluZFR5cGVDaGFuZ2VzKG9sZFNjaGVtYSwgbmV3U2NoZW1hKSxcbiAgICAuLi5maW5kRGlyZWN0aXZlQ2hhbmdlcyhvbGRTY2hlbWEsIG5ld1NjaGVtYSksXG4gIF07XG59XG5cbmZ1bmN0aW9uIGZpbmREaXJlY3RpdmVDaGFuZ2VzKG9sZFNjaGVtYSwgbmV3U2NoZW1hKSB7XG4gIGNvbnN0IHNjaGVtYUNoYW5nZXMgPSBbXTtcbiAgY29uc3QgZGlyZWN0aXZlc0RpZmYgPSBkaWZmKFxuICAgIG9sZFNjaGVtYS5nZXREaXJlY3RpdmVzKCksXG4gICAgbmV3U2NoZW1hLmdldERpcmVjdGl2ZXMoKSxcbiAgKTtcblxuICBmb3IgKGNvbnN0IG9sZERpcmVjdGl2ZSBvZiBkaXJlY3RpdmVzRGlmZi5yZW1vdmVkKSB7XG4gICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgIHR5cGU6IEJyZWFraW5nQ2hhbmdlVHlwZS5ESVJFQ1RJVkVfUkVNT1ZFRCxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtvbGREaXJlY3RpdmUubmFtZX0gd2FzIHJlbW92ZWQuYCxcbiAgICB9KTtcbiAgfVxuXG4gIGZvciAoY29uc3QgW29sZERpcmVjdGl2ZSwgbmV3RGlyZWN0aXZlXSBvZiBkaXJlY3RpdmVzRGlmZi5wZXJzaXN0ZWQpIHtcbiAgICBjb25zdCBhcmdzRGlmZiA9IGRpZmYob2xkRGlyZWN0aXZlLmFyZ3MsIG5ld0RpcmVjdGl2ZS5hcmdzKTtcblxuICAgIGZvciAoY29uc3QgbmV3QXJnIG9mIGFyZ3NEaWZmLmFkZGVkKSB7XG4gICAgICBpZiAoaXNSZXF1aXJlZEFyZ3VtZW50KG5ld0FyZykpIHtcbiAgICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiBCcmVha2luZ0NoYW5nZVR5cGUuUkVRVUlSRURfRElSRUNUSVZFX0FSR19BRERFRCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYEEgcmVxdWlyZWQgYXJnICR7bmV3QXJnLm5hbWV9IG9uIGRpcmVjdGl2ZSAke29sZERpcmVjdGl2ZS5uYW1lfSB3YXMgYWRkZWQuYCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBvbGRBcmcgb2YgYXJnc0RpZmYucmVtb3ZlZCkge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLkRJUkVDVElWRV9BUkdfUkVNT1ZFRCxcbiAgICAgICAgZGVzY3JpcHRpb246IGAke29sZEFyZy5uYW1lfSB3YXMgcmVtb3ZlZCBmcm9tICR7b2xkRGlyZWN0aXZlLm5hbWV9LmAsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAob2xkRGlyZWN0aXZlLmlzUmVwZWF0YWJsZSAmJiAhbmV3RGlyZWN0aXZlLmlzUmVwZWF0YWJsZSkge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLkRJUkVDVElWRV9SRVBFQVRBQkxFX1JFTU9WRUQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgUmVwZWF0YWJsZSBmbGFnIHdhcyByZW1vdmVkIGZyb20gJHtvbGREaXJlY3RpdmUubmFtZX0uYCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgbG9jYXRpb24gb2Ygb2xkRGlyZWN0aXZlLmxvY2F0aW9ucykge1xuICAgICAgaWYgKCFuZXdEaXJlY3RpdmUubG9jYXRpb25zLmluY2x1ZGVzKGxvY2F0aW9uKSkge1xuICAgICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgICAgIHR5cGU6IEJyZWFraW5nQ2hhbmdlVHlwZS5ESVJFQ1RJVkVfTE9DQVRJT05fUkVNT1ZFRCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYCR7bG9jYXRpb259IHdhcyByZW1vdmVkIGZyb20gJHtvbGREaXJlY3RpdmUubmFtZX0uYCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNjaGVtYUNoYW5nZXM7XG59XG5cbmZ1bmN0aW9uIGZpbmRUeXBlQ2hhbmdlcyhvbGRTY2hlbWEsIG5ld1NjaGVtYSkge1xuICBjb25zdCBzY2hlbWFDaGFuZ2VzID0gW107XG4gIGNvbnN0IHR5cGVzRGlmZiA9IGRpZmYoXG4gICAgT2JqZWN0LnZhbHVlcyhvbGRTY2hlbWEuZ2V0VHlwZU1hcCgpKSxcbiAgICBPYmplY3QudmFsdWVzKG5ld1NjaGVtYS5nZXRUeXBlTWFwKCkpLFxuICApO1xuXG4gIGZvciAoY29uc3Qgb2xkVHlwZSBvZiB0eXBlc0RpZmYucmVtb3ZlZCkge1xuICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICB0eXBlOiBCcmVha2luZ0NoYW5nZVR5cGUuVFlQRV9SRU1PVkVELFxuICAgICAgZGVzY3JpcHRpb246IGlzU3BlY2lmaWVkU2NhbGFyVHlwZShvbGRUeXBlKVxuICAgICAgICA/IGBTdGFuZGFyZCBzY2FsYXIgJHtvbGRUeXBlLm5hbWV9IHdhcyByZW1vdmVkIGJlY2F1c2UgaXQgaXMgbm90IHJlZmVyZW5jZWQgYW55bW9yZS5gXG4gICAgICAgIDogYCR7b2xkVHlwZS5uYW1lfSB3YXMgcmVtb3ZlZC5gLFxuICAgIH0pO1xuICB9XG5cbiAgZm9yIChjb25zdCBbb2xkVHlwZSwgbmV3VHlwZV0gb2YgdHlwZXNEaWZmLnBlcnNpc3RlZCkge1xuICAgIGlmIChpc0VudW1UeXBlKG9sZFR5cGUpICYmIGlzRW51bVR5cGUobmV3VHlwZSkpIHtcbiAgICAgIHNjaGVtYUNoYW5nZXMucHVzaCguLi5maW5kRW51bVR5cGVDaGFuZ2VzKG9sZFR5cGUsIG5ld1R5cGUpKTtcbiAgICB9IGVsc2UgaWYgKGlzVW5pb25UeXBlKG9sZFR5cGUpICYmIGlzVW5pb25UeXBlKG5ld1R5cGUpKSB7XG4gICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goLi4uZmluZFVuaW9uVHlwZUNoYW5nZXMob2xkVHlwZSwgbmV3VHlwZSkpO1xuICAgIH0gZWxzZSBpZiAoaXNJbnB1dE9iamVjdFR5cGUob2xkVHlwZSkgJiYgaXNJbnB1dE9iamVjdFR5cGUobmV3VHlwZSkpIHtcbiAgICAgIHNjaGVtYUNoYW5nZXMucHVzaCguLi5maW5kSW5wdXRPYmplY3RUeXBlQ2hhbmdlcyhvbGRUeXBlLCBuZXdUeXBlKSk7XG4gICAgfSBlbHNlIGlmIChpc09iamVjdFR5cGUob2xkVHlwZSkgJiYgaXNPYmplY3RUeXBlKG5ld1R5cGUpKSB7XG4gICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goXG4gICAgICAgIC4uLmZpbmRGaWVsZENoYW5nZXMob2xkVHlwZSwgbmV3VHlwZSksXG4gICAgICAgIC4uLmZpbmRJbXBsZW1lbnRlZEludGVyZmFjZXNDaGFuZ2VzKG9sZFR5cGUsIG5ld1R5cGUpLFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGlzSW50ZXJmYWNlVHlwZShvbGRUeXBlKSAmJiBpc0ludGVyZmFjZVR5cGUobmV3VHlwZSkpIHtcbiAgICAgIHNjaGVtYUNoYW5nZXMucHVzaChcbiAgICAgICAgLi4uZmluZEZpZWxkQ2hhbmdlcyhvbGRUeXBlLCBuZXdUeXBlKSxcbiAgICAgICAgLi4uZmluZEltcGxlbWVudGVkSW50ZXJmYWNlc0NoYW5nZXMob2xkVHlwZSwgbmV3VHlwZSksXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAob2xkVHlwZS5jb25zdHJ1Y3RvciAhPT0gbmV3VHlwZS5jb25zdHJ1Y3Rvcikge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLlRZUEVfQ0hBTkdFRF9LSU5ELFxuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICBgJHtvbGRUeXBlLm5hbWV9IGNoYW5nZWQgZnJvbSBgICtcbiAgICAgICAgICBgJHt0eXBlS2luZE5hbWUob2xkVHlwZSl9IHRvICR7dHlwZUtpbmROYW1lKG5ld1R5cGUpfS5gLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNjaGVtYUNoYW5nZXM7XG59XG5cbmZ1bmN0aW9uIGZpbmRJbnB1dE9iamVjdFR5cGVDaGFuZ2VzKG9sZFR5cGUsIG5ld1R5cGUpIHtcbiAgY29uc3Qgc2NoZW1hQ2hhbmdlcyA9IFtdO1xuICBjb25zdCBmaWVsZHNEaWZmID0gZGlmZihcbiAgICBPYmplY3QudmFsdWVzKG9sZFR5cGUuZ2V0RmllbGRzKCkpLFxuICAgIE9iamVjdC52YWx1ZXMobmV3VHlwZS5nZXRGaWVsZHMoKSksXG4gICk7XG5cbiAgZm9yIChjb25zdCBuZXdGaWVsZCBvZiBmaWVsZHNEaWZmLmFkZGVkKSB7XG4gICAgaWYgKGlzUmVxdWlyZWRJbnB1dEZpZWxkKG5ld0ZpZWxkKSkge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLlJFUVVJUkVEX0lOUFVUX0ZJRUxEX0FEREVELFxuICAgICAgICBkZXNjcmlwdGlvbjogYEEgcmVxdWlyZWQgZmllbGQgJHtuZXdGaWVsZC5uYW1lfSBvbiBpbnB1dCB0eXBlICR7b2xkVHlwZS5uYW1lfSB3YXMgYWRkZWQuYCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgICB0eXBlOiBEYW5nZXJvdXNDaGFuZ2VUeXBlLk9QVElPTkFMX0lOUFVUX0ZJRUxEX0FEREVELFxuICAgICAgICBkZXNjcmlwdGlvbjogYEFuIG9wdGlvbmFsIGZpZWxkICR7bmV3RmllbGQubmFtZX0gb24gaW5wdXQgdHlwZSAke29sZFR5cGUubmFtZX0gd2FzIGFkZGVkLmAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IG9sZEZpZWxkIG9mIGZpZWxkc0RpZmYucmVtb3ZlZCkge1xuICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICB0eXBlOiBCcmVha2luZ0NoYW5nZVR5cGUuRklFTERfUkVNT1ZFRCxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtvbGRUeXBlLm5hbWV9LiR7b2xkRmllbGQubmFtZX0gd2FzIHJlbW92ZWQuYCxcbiAgICB9KTtcbiAgfVxuXG4gIGZvciAoY29uc3QgW29sZEZpZWxkLCBuZXdGaWVsZF0gb2YgZmllbGRzRGlmZi5wZXJzaXN0ZWQpIHtcbiAgICBjb25zdCBpc1NhZmUgPSBpc0NoYW5nZVNhZmVGb3JJbnB1dE9iamVjdEZpZWxkT3JGaWVsZEFyZyhcbiAgICAgIG9sZEZpZWxkLnR5cGUsXG4gICAgICBuZXdGaWVsZC50eXBlLFxuICAgICk7XG5cbiAgICBpZiAoIWlzU2FmZSkge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLkZJRUxEX0NIQU5HRURfS0lORCxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgYCR7b2xkVHlwZS5uYW1lfS4ke29sZEZpZWxkLm5hbWV9IGNoYW5nZWQgdHlwZSBmcm9tIGAgK1xuICAgICAgICAgIGAke1N0cmluZyhvbGRGaWVsZC50eXBlKX0gdG8gJHtTdHJpbmcobmV3RmllbGQudHlwZSl9LmAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2NoZW1hQ2hhbmdlcztcbn1cblxuZnVuY3Rpb24gZmluZFVuaW9uVHlwZUNoYW5nZXMob2xkVHlwZSwgbmV3VHlwZSkge1xuICBjb25zdCBzY2hlbWFDaGFuZ2VzID0gW107XG4gIGNvbnN0IHBvc3NpYmxlVHlwZXNEaWZmID0gZGlmZihvbGRUeXBlLmdldFR5cGVzKCksIG5ld1R5cGUuZ2V0VHlwZXMoKSk7XG5cbiAgZm9yIChjb25zdCBuZXdQb3NzaWJsZVR5cGUgb2YgcG9zc2libGVUeXBlc0RpZmYuYWRkZWQpIHtcbiAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgdHlwZTogRGFuZ2Vyb3VzQ2hhbmdlVHlwZS5UWVBFX0FEREVEX1RPX1VOSU9OLFxuICAgICAgZGVzY3JpcHRpb246IGAke25ld1Bvc3NpYmxlVHlwZS5uYW1lfSB3YXMgYWRkZWQgdG8gdW5pb24gdHlwZSAke29sZFR5cGUubmFtZX0uYCxcbiAgICB9KTtcbiAgfVxuXG4gIGZvciAoY29uc3Qgb2xkUG9zc2libGVUeXBlIG9mIHBvc3NpYmxlVHlwZXNEaWZmLnJlbW92ZWQpIHtcbiAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLlRZUEVfUkVNT1ZFRF9GUk9NX1VOSU9OLFxuICAgICAgZGVzY3JpcHRpb246IGAke29sZFBvc3NpYmxlVHlwZS5uYW1lfSB3YXMgcmVtb3ZlZCBmcm9tIHVuaW9uIHR5cGUgJHtvbGRUeXBlLm5hbWV9LmAsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hQ2hhbmdlcztcbn1cblxuZnVuY3Rpb24gZmluZEVudW1UeXBlQ2hhbmdlcyhvbGRUeXBlLCBuZXdUeXBlKSB7XG4gIGNvbnN0IHNjaGVtYUNoYW5nZXMgPSBbXTtcbiAgY29uc3QgdmFsdWVzRGlmZiA9IGRpZmYob2xkVHlwZS5nZXRWYWx1ZXMoKSwgbmV3VHlwZS5nZXRWYWx1ZXMoKSk7XG5cbiAgZm9yIChjb25zdCBuZXdWYWx1ZSBvZiB2YWx1ZXNEaWZmLmFkZGVkKSB7XG4gICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgIHR5cGU6IERhbmdlcm91c0NoYW5nZVR5cGUuVkFMVUVfQURERURfVE9fRU5VTSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtuZXdWYWx1ZS5uYW1lfSB3YXMgYWRkZWQgdG8gZW51bSB0eXBlICR7b2xkVHlwZS5uYW1lfS5gLFxuICAgIH0pO1xuICB9XG5cbiAgZm9yIChjb25zdCBvbGRWYWx1ZSBvZiB2YWx1ZXNEaWZmLnJlbW92ZWQpIHtcbiAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLlZBTFVFX1JFTU9WRURfRlJPTV9FTlVNLFxuICAgICAgZGVzY3JpcHRpb246IGAke29sZFZhbHVlLm5hbWV9IHdhcyByZW1vdmVkIGZyb20gZW51bSB0eXBlICR7b2xkVHlwZS5uYW1lfS5gLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHNjaGVtYUNoYW5nZXM7XG59XG5cbmZ1bmN0aW9uIGZpbmRJbXBsZW1lbnRlZEludGVyZmFjZXNDaGFuZ2VzKG9sZFR5cGUsIG5ld1R5cGUpIHtcbiAgY29uc3Qgc2NoZW1hQ2hhbmdlcyA9IFtdO1xuICBjb25zdCBpbnRlcmZhY2VzRGlmZiA9IGRpZmYob2xkVHlwZS5nZXRJbnRlcmZhY2VzKCksIG5ld1R5cGUuZ2V0SW50ZXJmYWNlcygpKTtcblxuICBmb3IgKGNvbnN0IG5ld0ludGVyZmFjZSBvZiBpbnRlcmZhY2VzRGlmZi5hZGRlZCkge1xuICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICB0eXBlOiBEYW5nZXJvdXNDaGFuZ2VUeXBlLklNUExFTUVOVEVEX0lOVEVSRkFDRV9BRERFRCxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtuZXdJbnRlcmZhY2UubmFtZX0gYWRkZWQgdG8gaW50ZXJmYWNlcyBpbXBsZW1lbnRlZCBieSAke29sZFR5cGUubmFtZX0uYCxcbiAgICB9KTtcbiAgfVxuXG4gIGZvciAoY29uc3Qgb2xkSW50ZXJmYWNlIG9mIGludGVyZmFjZXNEaWZmLnJlbW92ZWQpIHtcbiAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLklNUExFTUVOVEVEX0lOVEVSRkFDRV9SRU1PVkVELFxuICAgICAgZGVzY3JpcHRpb246IGAke29sZFR5cGUubmFtZX0gbm8gbG9uZ2VyIGltcGxlbWVudHMgaW50ZXJmYWNlICR7b2xkSW50ZXJmYWNlLm5hbWV9LmAsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hQ2hhbmdlcztcbn1cblxuZnVuY3Rpb24gZmluZEZpZWxkQ2hhbmdlcyhvbGRUeXBlLCBuZXdUeXBlKSB7XG4gIGNvbnN0IHNjaGVtYUNoYW5nZXMgPSBbXTtcbiAgY29uc3QgZmllbGRzRGlmZiA9IGRpZmYoXG4gICAgT2JqZWN0LnZhbHVlcyhvbGRUeXBlLmdldEZpZWxkcygpKSxcbiAgICBPYmplY3QudmFsdWVzKG5ld1R5cGUuZ2V0RmllbGRzKCkpLFxuICApO1xuXG4gIGZvciAoY29uc3Qgb2xkRmllbGQgb2YgZmllbGRzRGlmZi5yZW1vdmVkKSB7XG4gICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgIHR5cGU6IEJyZWFraW5nQ2hhbmdlVHlwZS5GSUVMRF9SRU1PVkVELFxuICAgICAgZGVzY3JpcHRpb246IGAke29sZFR5cGUubmFtZX0uJHtvbGRGaWVsZC5uYW1lfSB3YXMgcmVtb3ZlZC5gLFxuICAgIH0pO1xuICB9XG5cbiAgZm9yIChjb25zdCBbb2xkRmllbGQsIG5ld0ZpZWxkXSBvZiBmaWVsZHNEaWZmLnBlcnNpc3RlZCkge1xuICAgIHNjaGVtYUNoYW5nZXMucHVzaCguLi5maW5kQXJnQ2hhbmdlcyhvbGRUeXBlLCBvbGRGaWVsZCwgbmV3RmllbGQpKTtcbiAgICBjb25zdCBpc1NhZmUgPSBpc0NoYW5nZVNhZmVGb3JPYmplY3RPckludGVyZmFjZUZpZWxkKFxuICAgICAgb2xkRmllbGQudHlwZSxcbiAgICAgIG5ld0ZpZWxkLnR5cGUsXG4gICAgKTtcblxuICAgIGlmICghaXNTYWZlKSB7XG4gICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgICB0eXBlOiBCcmVha2luZ0NoYW5nZVR5cGUuRklFTERfQ0hBTkdFRF9LSU5ELFxuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICBgJHtvbGRUeXBlLm5hbWV9LiR7b2xkRmllbGQubmFtZX0gY2hhbmdlZCB0eXBlIGZyb20gYCArXG4gICAgICAgICAgYCR7U3RyaW5nKG9sZEZpZWxkLnR5cGUpfSB0byAke1N0cmluZyhuZXdGaWVsZC50eXBlKX0uYCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzY2hlbWFDaGFuZ2VzO1xufVxuXG5mdW5jdGlvbiBmaW5kQXJnQ2hhbmdlcyhvbGRUeXBlLCBvbGRGaWVsZCwgbmV3RmllbGQpIHtcbiAgY29uc3Qgc2NoZW1hQ2hhbmdlcyA9IFtdO1xuICBjb25zdCBhcmdzRGlmZiA9IGRpZmYob2xkRmllbGQuYXJncywgbmV3RmllbGQuYXJncyk7XG5cbiAgZm9yIChjb25zdCBvbGRBcmcgb2YgYXJnc0RpZmYucmVtb3ZlZCkge1xuICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICB0eXBlOiBCcmVha2luZ0NoYW5nZVR5cGUuQVJHX1JFTU9WRUQsXG4gICAgICBkZXNjcmlwdGlvbjogYCR7b2xkVHlwZS5uYW1lfS4ke29sZEZpZWxkLm5hbWV9IGFyZyAke29sZEFyZy5uYW1lfSB3YXMgcmVtb3ZlZC5gLFxuICAgIH0pO1xuICB9XG5cbiAgZm9yIChjb25zdCBbb2xkQXJnLCBuZXdBcmddIG9mIGFyZ3NEaWZmLnBlcnNpc3RlZCkge1xuICAgIGNvbnN0IGlzU2FmZSA9IGlzQ2hhbmdlU2FmZUZvcklucHV0T2JqZWN0RmllbGRPckZpZWxkQXJnKFxuICAgICAgb2xkQXJnLnR5cGUsXG4gICAgICBuZXdBcmcudHlwZSxcbiAgICApO1xuXG4gICAgaWYgKCFpc1NhZmUpIHtcbiAgICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICAgIHR5cGU6IEJyZWFraW5nQ2hhbmdlVHlwZS5BUkdfQ0hBTkdFRF9LSU5ELFxuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICBgJHtvbGRUeXBlLm5hbWV9LiR7b2xkRmllbGQubmFtZX0gYXJnICR7b2xkQXJnLm5hbWV9IGhhcyBjaGFuZ2VkIHR5cGUgZnJvbSBgICtcbiAgICAgICAgICBgJHtTdHJpbmcob2xkQXJnLnR5cGUpfSB0byAke1N0cmluZyhuZXdBcmcudHlwZSl9LmAsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKG9sZEFyZy5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKG5ld0FyZy5kZWZhdWx0VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgICAgIHR5cGU6IERhbmdlcm91c0NoYW5nZVR5cGUuQVJHX0RFRkFVTFRfVkFMVUVfQ0hBTkdFLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgJHtvbGRUeXBlLm5hbWV9LiR7b2xkRmllbGQubmFtZX0gYXJnICR7b2xkQXJnLm5hbWV9IGRlZmF1bHRWYWx1ZSB3YXMgcmVtb3ZlZC5gLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNpbmNlIHdlIGxvb2tpbmcgb25seSBmb3IgY2xpZW50J3Mgb2JzZXJ2YWJsZSBjaGFuZ2VzIHdlIHNob3VsZFxuICAgICAgICAvLyBjb21wYXJlIGRlZmF1bHQgdmFsdWVzIGluIHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uIGFzIHRoZXkgYXJlXG4gICAgICAgIC8vIHJlcHJlc2VudGVkIGluc2lkZSBpbnRyb3NwZWN0aW9uLlxuICAgICAgICBjb25zdCBvbGRWYWx1ZVN0ciA9IHN0cmluZ2lmeVZhbHVlKG9sZEFyZy5kZWZhdWx0VmFsdWUsIG9sZEFyZy50eXBlKTtcbiAgICAgICAgY29uc3QgbmV3VmFsdWVTdHIgPSBzdHJpbmdpZnlWYWx1ZShuZXdBcmcuZGVmYXVsdFZhbHVlLCBuZXdBcmcudHlwZSk7XG5cbiAgICAgICAgaWYgKG9sZFZhbHVlU3RyICE9PSBuZXdWYWx1ZVN0cikge1xuICAgICAgICAgIHNjaGVtYUNoYW5nZXMucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiBEYW5nZXJvdXNDaGFuZ2VUeXBlLkFSR19ERUZBVUxUX1ZBTFVFX0NIQU5HRSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgJHtvbGRUeXBlLm5hbWV9LiR7b2xkRmllbGQubmFtZX0gYXJnICR7b2xkQXJnLm5hbWV9IGhhcyBjaGFuZ2VkIGRlZmF1bHRWYWx1ZSBmcm9tICR7b2xkVmFsdWVTdHJ9IHRvICR7bmV3VmFsdWVTdHJ9LmAsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IG5ld0FyZyBvZiBhcmdzRGlmZi5hZGRlZCkge1xuICAgIGlmIChpc1JlcXVpcmVkQXJndW1lbnQobmV3QXJnKSkge1xuICAgICAgc2NoZW1hQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgdHlwZTogQnJlYWtpbmdDaGFuZ2VUeXBlLlJFUVVJUkVEX0FSR19BRERFRCxcbiAgICAgICAgZGVzY3JpcHRpb246IGBBIHJlcXVpcmVkIGFyZyAke25ld0FyZy5uYW1lfSBvbiAke29sZFR5cGUubmFtZX0uJHtvbGRGaWVsZC5uYW1lfSB3YXMgYWRkZWQuYCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzY2hlbWFDaGFuZ2VzLnB1c2goe1xuICAgICAgICB0eXBlOiBEYW5nZXJvdXNDaGFuZ2VUeXBlLk9QVElPTkFMX0FSR19BRERFRCxcbiAgICAgICAgZGVzY3JpcHRpb246IGBBbiBvcHRpb25hbCBhcmcgJHtuZXdBcmcubmFtZX0gb24gJHtvbGRUeXBlLm5hbWV9LiR7b2xkRmllbGQubmFtZX0gd2FzIGFkZGVkLmAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2NoZW1hQ2hhbmdlcztcbn1cblxuZnVuY3Rpb24gaXNDaGFuZ2VTYWZlRm9yT2JqZWN0T3JJbnRlcmZhY2VGaWVsZChvbGRUeXBlLCBuZXdUeXBlKSB7XG4gIGlmIChpc0xpc3RUeXBlKG9sZFR5cGUpKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIC8vIGlmIHRoZXkncmUgYm90aCBsaXN0cywgbWFrZSBzdXJlIHRoZSB1bmRlcmx5aW5nIHR5cGVzIGFyZSBjb21wYXRpYmxlXG4gICAgICAoaXNMaXN0VHlwZShuZXdUeXBlKSAmJlxuICAgICAgICBpc0NoYW5nZVNhZmVGb3JPYmplY3RPckludGVyZmFjZUZpZWxkKFxuICAgICAgICAgIG9sZFR5cGUub2ZUeXBlLFxuICAgICAgICAgIG5ld1R5cGUub2ZUeXBlLFxuICAgICAgICApKSB8fCAvLyBtb3ZpbmcgZnJvbSBudWxsYWJsZSB0byBub24tbnVsbCBvZiB0aGUgc2FtZSB1bmRlcmx5aW5nIHR5cGUgaXMgc2FmZVxuICAgICAgKGlzTm9uTnVsbFR5cGUobmV3VHlwZSkgJiZcbiAgICAgICAgaXNDaGFuZ2VTYWZlRm9yT2JqZWN0T3JJbnRlcmZhY2VGaWVsZChvbGRUeXBlLCBuZXdUeXBlLm9mVHlwZSkpXG4gICAgKTtcbiAgfVxuXG4gIGlmIChpc05vbk51bGxUeXBlKG9sZFR5cGUpKSB7XG4gICAgLy8gaWYgdGhleSdyZSBib3RoIG5vbi1udWxsLCBtYWtlIHN1cmUgdGhlIHVuZGVybHlpbmcgdHlwZXMgYXJlIGNvbXBhdGlibGVcbiAgICByZXR1cm4gKFxuICAgICAgaXNOb25OdWxsVHlwZShuZXdUeXBlKSAmJlxuICAgICAgaXNDaGFuZ2VTYWZlRm9yT2JqZWN0T3JJbnRlcmZhY2VGaWVsZChvbGRUeXBlLm9mVHlwZSwgbmV3VHlwZS5vZlR5cGUpXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgLy8gaWYgdGhleSdyZSBib3RoIG5hbWVkIHR5cGVzLCBzZWUgaWYgdGhlaXIgbmFtZXMgYXJlIGVxdWl2YWxlbnRcbiAgICAoaXNOYW1lZFR5cGUobmV3VHlwZSkgJiYgb2xkVHlwZS5uYW1lID09PSBuZXdUeXBlLm5hbWUpIHx8IC8vIG1vdmluZyBmcm9tIG51bGxhYmxlIHRvIG5vbi1udWxsIG9mIHRoZSBzYW1lIHVuZGVybHlpbmcgdHlwZSBpcyBzYWZlXG4gICAgKGlzTm9uTnVsbFR5cGUobmV3VHlwZSkgJiZcbiAgICAgIGlzQ2hhbmdlU2FmZUZvck9iamVjdE9ySW50ZXJmYWNlRmllbGQob2xkVHlwZSwgbmV3VHlwZS5vZlR5cGUpKVxuICApO1xufVxuXG5mdW5jdGlvbiBpc0NoYW5nZVNhZmVGb3JJbnB1dE9iamVjdEZpZWxkT3JGaWVsZEFyZyhvbGRUeXBlLCBuZXdUeXBlKSB7XG4gIGlmIChpc0xpc3RUeXBlKG9sZFR5cGUpKSB7XG4gICAgLy8gaWYgdGhleSdyZSBib3RoIGxpc3RzLCBtYWtlIHN1cmUgdGhlIHVuZGVybHlpbmcgdHlwZXMgYXJlIGNvbXBhdGlibGVcbiAgICByZXR1cm4gKFxuICAgICAgaXNMaXN0VHlwZShuZXdUeXBlKSAmJlxuICAgICAgaXNDaGFuZ2VTYWZlRm9ySW5wdXRPYmplY3RGaWVsZE9yRmllbGRBcmcob2xkVHlwZS5vZlR5cGUsIG5ld1R5cGUub2ZUeXBlKVxuICAgICk7XG4gIH1cblxuICBpZiAoaXNOb25OdWxsVHlwZShvbGRUeXBlKSkge1xuICAgIHJldHVybiAoXG4gICAgICAvLyBpZiB0aGV5J3JlIGJvdGggbm9uLW51bGwsIG1ha2Ugc3VyZSB0aGUgdW5kZXJseWluZyB0eXBlcyBhcmVcbiAgICAgIC8vIGNvbXBhdGlibGVcbiAgICAgIChpc05vbk51bGxUeXBlKG5ld1R5cGUpICYmXG4gICAgICAgIGlzQ2hhbmdlU2FmZUZvcklucHV0T2JqZWN0RmllbGRPckZpZWxkQXJnKFxuICAgICAgICAgIG9sZFR5cGUub2ZUeXBlLFxuICAgICAgICAgIG5ld1R5cGUub2ZUeXBlLFxuICAgICAgICApKSB8fCAvLyBtb3ZpbmcgZnJvbSBub24tbnVsbCB0byBudWxsYWJsZSBvZiB0aGUgc2FtZSB1bmRlcmx5aW5nIHR5cGUgaXMgc2FmZVxuICAgICAgKCFpc05vbk51bGxUeXBlKG5ld1R5cGUpICYmXG4gICAgICAgIGlzQ2hhbmdlU2FmZUZvcklucHV0T2JqZWN0RmllbGRPckZpZWxkQXJnKG9sZFR5cGUub2ZUeXBlLCBuZXdUeXBlKSlcbiAgICApO1xuICB9IC8vIGlmIHRoZXkncmUgYm90aCBuYW1lZCB0eXBlcywgc2VlIGlmIHRoZWlyIG5hbWVzIGFyZSBlcXVpdmFsZW50XG5cbiAgcmV0dXJuIGlzTmFtZWRUeXBlKG5ld1R5cGUpICYmIG9sZFR5cGUubmFtZSA9PT0gbmV3VHlwZS5uYW1lO1xufVxuXG5mdW5jdGlvbiB0eXBlS2luZE5hbWUodHlwZSkge1xuICBpZiAoaXNTY2FsYXJUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuICdhIFNjYWxhciB0eXBlJztcbiAgfVxuXG4gIGlmIChpc09iamVjdFR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gJ2FuIE9iamVjdCB0eXBlJztcbiAgfVxuXG4gIGlmIChpc0ludGVyZmFjZVR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gJ2FuIEludGVyZmFjZSB0eXBlJztcbiAgfVxuXG4gIGlmIChpc1VuaW9uVHlwZSh0eXBlKSkge1xuICAgIHJldHVybiAnYSBVbmlvbiB0eXBlJztcbiAgfVxuXG4gIGlmIChpc0VudW1UeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuICdhbiBFbnVtIHR5cGUnO1xuICB9XG5cbiAgaWYgKGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuICdhbiBJbnB1dCB0eXBlJztcbiAgfVxuICAvKiBjOCBpZ25vcmUgbmV4dCAzICovXG4gIC8vIE5vdCByZWFjaGFibGUsIGFsbCBwb3NzaWJsZSB0eXBlcyBoYXZlIGJlZW4gY29uc2lkZXJlZC5cblxuICBmYWxzZSB8fCBpbnZhcmlhbnQoZmFsc2UsICdVbmV4cGVjdGVkIHR5cGU6ICcgKyBpbnNwZWN0KHR5cGUpKTtcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5VmFsdWUodmFsdWUsIHR5cGUpIHtcbiAgY29uc3QgYXN0ID0gYXN0RnJvbVZhbHVlKHZhbHVlLCB0eXBlKTtcbiAgYXN0ICE9IG51bGwgfHwgaW52YXJpYW50KGZhbHNlKTtcbiAgcmV0dXJuIHByaW50KHNvcnRWYWx1ZU5vZGUoYXN0KSk7XG59XG5cbmZ1bmN0aW9uIGRpZmYob2xkQXJyYXksIG5ld0FycmF5KSB7XG4gIGNvbnN0IGFkZGVkID0gW107XG4gIGNvbnN0IHJlbW92ZWQgPSBbXTtcbiAgY29uc3QgcGVyc2lzdGVkID0gW107XG4gIGNvbnN0IG9sZE1hcCA9IGtleU1hcChvbGRBcnJheSwgKHsgbmFtZSB9KSA9PiBuYW1lKTtcbiAgY29uc3QgbmV3TWFwID0ga2V5TWFwKG5ld0FycmF5LCAoeyBuYW1lIH0pID0+IG5hbWUpO1xuXG4gIGZvciAoY29uc3Qgb2xkSXRlbSBvZiBvbGRBcnJheSkge1xuICAgIGNvbnN0IG5ld0l0ZW0gPSBuZXdNYXBbb2xkSXRlbS5uYW1lXTtcblxuICAgIGlmIChuZXdJdGVtID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlbW92ZWQucHVzaChvbGRJdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGVyc2lzdGVkLnB1c2goW29sZEl0ZW0sIG5ld0l0ZW1dKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IG5ld0l0ZW0gb2YgbmV3QXJyYXkpIHtcbiAgICBpZiAob2xkTWFwW25ld0l0ZW0ubmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgYWRkZWQucHVzaChuZXdJdGVtKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFkZGVkLFxuICAgIHBlcnNpc3RlZCxcbiAgICByZW1vdmVkLFxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/findBreakingChanges.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/getIntrospectionQuery.mjs":
/*!******************************************************************!*\
  !*** ./node_modules/graphql/utilities/getIntrospectionQuery.mjs ***!
  \******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getIntrospectionQuery\": function() { return /* binding */ getIntrospectionQuery; }\n/* harmony export */ });\n/**\n * Produce the GraphQL query recommended for a full schema introspection.\n * Accepts optional IntrospectionOptions.\n */\nfunction getIntrospectionQuery(options) {\n  const optionsWithDefault = {\n    descriptions: true,\n    specifiedByUrl: false,\n    directiveIsRepeatable: false,\n    schemaDescription: false,\n    inputValueDeprecation: false,\n    ...options,\n  };\n  const descriptions = optionsWithDefault.descriptions ? 'description' : '';\n  const specifiedByUrl = optionsWithDefault.specifiedByUrl\n    ? 'specifiedByURL'\n    : '';\n  const directiveIsRepeatable = optionsWithDefault.directiveIsRepeatable\n    ? 'isRepeatable'\n    : '';\n  const schemaDescription = optionsWithDefault.schemaDescription\n    ? descriptions\n    : '';\n\n  function inputDeprecation(str) {\n    return optionsWithDefault.inputValueDeprecation ? str : '';\n  }\n\n  return `\n    query IntrospectionQuery {\n      __schema {\n        ${schemaDescription}\n        queryType { name }\n        mutationType { name }\n        subscriptionType { name }\n        types {\n          ...FullType\n        }\n        directives {\n          name\n          ${descriptions}\n          ${directiveIsRepeatable}\n          locations\n          args${inputDeprecation('(includeDeprecated: true)')} {\n            ...InputValue\n          }\n        }\n      }\n    }\n\n    fragment FullType on __Type {\n      kind\n      name\n      ${descriptions}\n      ${specifiedByUrl}\n      fields(includeDeprecated: true) {\n        name\n        ${descriptions}\n        args${inputDeprecation('(includeDeprecated: true)')} {\n          ...InputValue\n        }\n        type {\n          ...TypeRef\n        }\n        isDeprecated\n        deprecationReason\n      }\n      inputFields${inputDeprecation('(includeDeprecated: true)')} {\n        ...InputValue\n      }\n      interfaces {\n        ...TypeRef\n      }\n      enumValues(includeDeprecated: true) {\n        name\n        ${descriptions}\n        isDeprecated\n        deprecationReason\n      }\n      possibleTypes {\n        ...TypeRef\n      }\n    }\n\n    fragment InputValue on __InputValue {\n      name\n      ${descriptions}\n      type { ...TypeRef }\n      defaultValue\n      ${inputDeprecation('isDeprecated')}\n      ${inputDeprecation('deprecationReason')}\n    }\n\n    fragment TypeRef on __Type {\n      kind\n      name\n      ofType {\n        kind\n        name\n        ofType {\n          kind\n          name\n          ofType {\n            kind\n            name\n            ofType {\n              kind\n              name\n              ofType {\n                kind\n                name\n                ofType {\n                  kind\n                  name\n                  ofType {\n                    kind\n                    name\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  `;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvZ2V0SW50cm9zcGVjdGlvblF1ZXJ5Lm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLG9CQUFvQjtBQUNwQix1QkFBdUI7QUFDdkIsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1osWUFBWTtBQUNaO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSLFFBQVE7QUFDUjtBQUNBO0FBQ0EsVUFBVTtBQUNWLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1IsYUFBYTtBQUNiO0FBQ0EsUUFBUTtBQUNSLFFBQVE7QUFDUjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvZ2V0SW50cm9zcGVjdGlvblF1ZXJ5Lm1qcz9jYWRjIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHJvZHVjZSB0aGUgR3JhcGhRTCBxdWVyeSByZWNvbW1lbmRlZCBmb3IgYSBmdWxsIHNjaGVtYSBpbnRyb3NwZWN0aW9uLlxuICogQWNjZXB0cyBvcHRpb25hbCBJbnRyb3NwZWN0aW9uT3B0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEludHJvc3BlY3Rpb25RdWVyeShvcHRpb25zKSB7XG4gIGNvbnN0IG9wdGlvbnNXaXRoRGVmYXVsdCA9IHtcbiAgICBkZXNjcmlwdGlvbnM6IHRydWUsXG4gICAgc3BlY2lmaWVkQnlVcmw6IGZhbHNlLFxuICAgIGRpcmVjdGl2ZUlzUmVwZWF0YWJsZTogZmFsc2UsXG4gICAgc2NoZW1hRGVzY3JpcHRpb246IGZhbHNlLFxuICAgIGlucHV0VmFsdWVEZXByZWNhdGlvbjogZmFsc2UsXG4gICAgLi4ub3B0aW9ucyxcbiAgfTtcbiAgY29uc3QgZGVzY3JpcHRpb25zID0gb3B0aW9uc1dpdGhEZWZhdWx0LmRlc2NyaXB0aW9ucyA/ICdkZXNjcmlwdGlvbicgOiAnJztcbiAgY29uc3Qgc3BlY2lmaWVkQnlVcmwgPSBvcHRpb25zV2l0aERlZmF1bHQuc3BlY2lmaWVkQnlVcmxcbiAgICA/ICdzcGVjaWZpZWRCeVVSTCdcbiAgICA6ICcnO1xuICBjb25zdCBkaXJlY3RpdmVJc1JlcGVhdGFibGUgPSBvcHRpb25zV2l0aERlZmF1bHQuZGlyZWN0aXZlSXNSZXBlYXRhYmxlXG4gICAgPyAnaXNSZXBlYXRhYmxlJ1xuICAgIDogJyc7XG4gIGNvbnN0IHNjaGVtYURlc2NyaXB0aW9uID0gb3B0aW9uc1dpdGhEZWZhdWx0LnNjaGVtYURlc2NyaXB0aW9uXG4gICAgPyBkZXNjcmlwdGlvbnNcbiAgICA6ICcnO1xuXG4gIGZ1bmN0aW9uIGlucHV0RGVwcmVjYXRpb24oc3RyKSB7XG4gICAgcmV0dXJuIG9wdGlvbnNXaXRoRGVmYXVsdC5pbnB1dFZhbHVlRGVwcmVjYXRpb24gPyBzdHIgOiAnJztcbiAgfVxuXG4gIHJldHVybiBgXG4gICAgcXVlcnkgSW50cm9zcGVjdGlvblF1ZXJ5IHtcbiAgICAgIF9fc2NoZW1hIHtcbiAgICAgICAgJHtzY2hlbWFEZXNjcmlwdGlvbn1cbiAgICAgICAgcXVlcnlUeXBlIHsgbmFtZSB9XG4gICAgICAgIG11dGF0aW9uVHlwZSB7IG5hbWUgfVxuICAgICAgICBzdWJzY3JpcHRpb25UeXBlIHsgbmFtZSB9XG4gICAgICAgIHR5cGVzIHtcbiAgICAgICAgICAuLi5GdWxsVHlwZVxuICAgICAgICB9XG4gICAgICAgIGRpcmVjdGl2ZXMge1xuICAgICAgICAgIG5hbWVcbiAgICAgICAgICAke2Rlc2NyaXB0aW9uc31cbiAgICAgICAgICAke2RpcmVjdGl2ZUlzUmVwZWF0YWJsZX1cbiAgICAgICAgICBsb2NhdGlvbnNcbiAgICAgICAgICBhcmdzJHtpbnB1dERlcHJlY2F0aW9uKCcoaW5jbHVkZURlcHJlY2F0ZWQ6IHRydWUpJyl9IHtcbiAgICAgICAgICAgIC4uLklucHV0VmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmcmFnbWVudCBGdWxsVHlwZSBvbiBfX1R5cGUge1xuICAgICAga2luZFxuICAgICAgbmFtZVxuICAgICAgJHtkZXNjcmlwdGlvbnN9XG4gICAgICAke3NwZWNpZmllZEJ5VXJsfVxuICAgICAgZmllbGRzKGluY2x1ZGVEZXByZWNhdGVkOiB0cnVlKSB7XG4gICAgICAgIG5hbWVcbiAgICAgICAgJHtkZXNjcmlwdGlvbnN9XG4gICAgICAgIGFyZ3Mke2lucHV0RGVwcmVjYXRpb24oJyhpbmNsdWRlRGVwcmVjYXRlZDogdHJ1ZSknKX0ge1xuICAgICAgICAgIC4uLklucHV0VmFsdWVcbiAgICAgICAgfVxuICAgICAgICB0eXBlIHtcbiAgICAgICAgICAuLi5UeXBlUmVmXG4gICAgICAgIH1cbiAgICAgICAgaXNEZXByZWNhdGVkXG4gICAgICAgIGRlcHJlY2F0aW9uUmVhc29uXG4gICAgICB9XG4gICAgICBpbnB1dEZpZWxkcyR7aW5wdXREZXByZWNhdGlvbignKGluY2x1ZGVEZXByZWNhdGVkOiB0cnVlKScpfSB7XG4gICAgICAgIC4uLklucHV0VmFsdWVcbiAgICAgIH1cbiAgICAgIGludGVyZmFjZXMge1xuICAgICAgICAuLi5UeXBlUmVmXG4gICAgICB9XG4gICAgICBlbnVtVmFsdWVzKGluY2x1ZGVEZXByZWNhdGVkOiB0cnVlKSB7XG4gICAgICAgIG5hbWVcbiAgICAgICAgJHtkZXNjcmlwdGlvbnN9XG4gICAgICAgIGlzRGVwcmVjYXRlZFxuICAgICAgICBkZXByZWNhdGlvblJlYXNvblxuICAgICAgfVxuICAgICAgcG9zc2libGVUeXBlcyB7XG4gICAgICAgIC4uLlR5cGVSZWZcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmcmFnbWVudCBJbnB1dFZhbHVlIG9uIF9fSW5wdXRWYWx1ZSB7XG4gICAgICBuYW1lXG4gICAgICAke2Rlc2NyaXB0aW9uc31cbiAgICAgIHR5cGUgeyAuLi5UeXBlUmVmIH1cbiAgICAgIGRlZmF1bHRWYWx1ZVxuICAgICAgJHtpbnB1dERlcHJlY2F0aW9uKCdpc0RlcHJlY2F0ZWQnKX1cbiAgICAgICR7aW5wdXREZXByZWNhdGlvbignZGVwcmVjYXRpb25SZWFzb24nKX1cbiAgICB9XG5cbiAgICBmcmFnbWVudCBUeXBlUmVmIG9uIF9fVHlwZSB7XG4gICAgICBraW5kXG4gICAgICBuYW1lXG4gICAgICBvZlR5cGUge1xuICAgICAgICBraW5kXG4gICAgICAgIG5hbWVcbiAgICAgICAgb2ZUeXBlIHtcbiAgICAgICAgICBraW5kXG4gICAgICAgICAgbmFtZVxuICAgICAgICAgIG9mVHlwZSB7XG4gICAgICAgICAgICBraW5kXG4gICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICBvZlR5cGUge1xuICAgICAgICAgICAgICBraW5kXG4gICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgb2ZUeXBlIHtcbiAgICAgICAgICAgICAgICBraW5kXG4gICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgIG9mVHlwZSB7XG4gICAgICAgICAgICAgICAgICBraW5kXG4gICAgICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICAgICAgICBvZlR5cGUge1xuICAgICAgICAgICAgICAgICAgICBraW5kXG4gICAgICAgICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIGA7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/getIntrospectionQuery.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/getOperationAST.mjs":
/*!************************************************************!*\
  !*** ./node_modules/graphql/utilities/getOperationAST.mjs ***!
  \************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getOperationAST\": function() { return /* binding */ getOperationAST; }\n/* harmony export */ });\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n\n/**\n * Returns an operation AST given a document AST and optionally an operation\n * name. If a name is not provided, an operation is only returned if only one is\n * provided in the document.\n */\n\nfunction getOperationAST(documentAST, operationName) {\n  let operation = null;\n\n  for (const definition of documentAST.definitions) {\n    if (definition.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.OPERATION_DEFINITION) {\n      var _definition$name;\n\n      if (operationName == null) {\n        // If no operation name was provided, only return an Operation if there\n        // is one defined in the document. Upon encountering the second, return\n        // null.\n        if (operation) {\n          return null;\n        }\n\n        operation = definition;\n      } else if (\n        ((_definition$name = definition.name) === null ||\n        _definition$name === void 0\n          ? void 0\n          : _definition$name.value) === operationName\n      ) {\n        return definition;\n      }\n    }\n  }\n\n  return operation;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvZ2V0T3BlcmF0aW9uQVNULm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQSw0QkFBNEIsMEVBQXlCO0FBQ3JEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9nZXRPcGVyYXRpb25BU1QubWpzPzU1OTgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG4vKipcbiAqIFJldHVybnMgYW4gb3BlcmF0aW9uIEFTVCBnaXZlbiBhIGRvY3VtZW50IEFTVCBhbmQgb3B0aW9uYWxseSBhbiBvcGVyYXRpb25cbiAqIG5hbWUuIElmIGEgbmFtZSBpcyBub3QgcHJvdmlkZWQsIGFuIG9wZXJhdGlvbiBpcyBvbmx5IHJldHVybmVkIGlmIG9ubHkgb25lIGlzXG4gKiBwcm92aWRlZCBpbiB0aGUgZG9jdW1lbnQuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE9wZXJhdGlvbkFTVChkb2N1bWVudEFTVCwgb3BlcmF0aW9uTmFtZSkge1xuICBsZXQgb3BlcmF0aW9uID0gbnVsbDtcblxuICBmb3IgKGNvbnN0IGRlZmluaXRpb24gb2YgZG9jdW1lbnRBU1QuZGVmaW5pdGlvbnMpIHtcbiAgICBpZiAoZGVmaW5pdGlvbi5raW5kID09PSBLaW5kLk9QRVJBVElPTl9ERUZJTklUSU9OKSB7XG4gICAgICB2YXIgX2RlZmluaXRpb24kbmFtZTtcblxuICAgICAgaWYgKG9wZXJhdGlvbk5hbWUgPT0gbnVsbCkge1xuICAgICAgICAvLyBJZiBubyBvcGVyYXRpb24gbmFtZSB3YXMgcHJvdmlkZWQsIG9ubHkgcmV0dXJuIGFuIE9wZXJhdGlvbiBpZiB0aGVyZVxuICAgICAgICAvLyBpcyBvbmUgZGVmaW5lZCBpbiB0aGUgZG9jdW1lbnQuIFVwb24gZW5jb3VudGVyaW5nIHRoZSBzZWNvbmQsIHJldHVyblxuICAgICAgICAvLyBudWxsLlxuICAgICAgICBpZiAob3BlcmF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBvcGVyYXRpb24gPSBkZWZpbml0aW9uO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgKChfZGVmaW5pdGlvbiRuYW1lID0gZGVmaW5pdGlvbi5uYW1lKSA9PT0gbnVsbCB8fFxuICAgICAgICBfZGVmaW5pdGlvbiRuYW1lID09PSB2b2lkIDBcbiAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgIDogX2RlZmluaXRpb24kbmFtZS52YWx1ZSkgPT09IG9wZXJhdGlvbk5hbWVcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gZGVmaW5pdGlvbjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3BlcmF0aW9uO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/getOperationAST.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/getOperationRootType.mjs":
/*!*****************************************************************!*\
  !*** ./node_modules/graphql/utilities/getOperationRootType.mjs ***!
  \*****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"getOperationRootType\": function() { return /* binding */ getOperationRootType; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Extracts the root type of the operation from the schema.\n *\n * @deprecated Please use `GraphQLSchema.getRootType` instead. Will be removed in v17\n */\nfunction getOperationRootType(schema, operation) {\n  if (operation.operation === 'query') {\n    const queryType = schema.getQueryType();\n\n    if (!queryType) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n        'Schema does not define the required query root type.',\n        operation,\n      );\n    }\n\n    return queryType;\n  }\n\n  if (operation.operation === 'mutation') {\n    const mutationType = schema.getMutationType();\n\n    if (!mutationType) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n        'Schema is not configured for mutations.',\n        operation,\n      );\n    }\n\n    return mutationType;\n  }\n\n  if (operation.operation === 'subscription') {\n    const subscriptionType = schema.getSubscriptionType();\n\n    if (!subscriptionType) {\n      throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n        'Schema is not configured for subscriptions.',\n        operation,\n      );\n    }\n\n    return subscriptionType;\n  }\n\n  throw new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n    'Can only have query, mutation and subscription operations.',\n    operation,\n  );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvZ2V0T3BlcmF0aW9uUm9vdFR5cGUubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQXlEOztBQUV6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCLGlFQUFZO0FBQzVCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQixpRUFBWTtBQUM1QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxnQkFBZ0IsaUVBQVk7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxZQUFZLGlFQUFZO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9nZXRPcGVyYXRpb25Sb290VHlwZS5tanM/MmNjMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgcm9vdCB0eXBlIG9mIHRoZSBvcGVyYXRpb24gZnJvbSB0aGUgc2NoZW1hLlxuICpcbiAqIEBkZXByZWNhdGVkIFBsZWFzZSB1c2UgYEdyYXBoUUxTY2hlbWEuZ2V0Um9vdFR5cGVgIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2MTdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9wZXJhdGlvblJvb3RUeXBlKHNjaGVtYSwgb3BlcmF0aW9uKSB7XG4gIGlmIChvcGVyYXRpb24ub3BlcmF0aW9uID09PSAncXVlcnknKSB7XG4gICAgY29uc3QgcXVlcnlUeXBlID0gc2NoZW1hLmdldFF1ZXJ5VHlwZSgpO1xuXG4gICAgaWYgKCFxdWVyeVR5cGUpIHtcbiAgICAgIHRocm93IG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICdTY2hlbWEgZG9lcyBub3QgZGVmaW5lIHRoZSByZXF1aXJlZCBxdWVyeSByb290IHR5cGUuJyxcbiAgICAgICAgb3BlcmF0aW9uLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcXVlcnlUeXBlO1xuICB9XG5cbiAgaWYgKG9wZXJhdGlvbi5vcGVyYXRpb24gPT09ICdtdXRhdGlvbicpIHtcbiAgICBjb25zdCBtdXRhdGlvblR5cGUgPSBzY2hlbWEuZ2V0TXV0YXRpb25UeXBlKCk7XG5cbiAgICBpZiAoIW11dGF0aW9uVHlwZSkge1xuICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgJ1NjaGVtYSBpcyBub3QgY29uZmlndXJlZCBmb3IgbXV0YXRpb25zLicsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG11dGF0aW9uVHlwZTtcbiAgfVxuXG4gIGlmIChvcGVyYXRpb24ub3BlcmF0aW9uID09PSAnc3Vic2NyaXB0aW9uJykge1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvblR5cGUgPSBzY2hlbWEuZ2V0U3Vic2NyaXB0aW9uVHlwZSgpO1xuXG4gICAgaWYgKCFzdWJzY3JpcHRpb25UeXBlKSB7XG4gICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAnU2NoZW1hIGlzIG5vdCBjb25maWd1cmVkIGZvciBzdWJzY3JpcHRpb25zLicsXG4gICAgICAgIG9wZXJhdGlvbixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnNjcmlwdGlvblR5cGU7XG4gIH1cblxuICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKFxuICAgICdDYW4gb25seSBoYXZlIHF1ZXJ5LCBtdXRhdGlvbiBhbmQgc3Vic2NyaXB0aW9uIG9wZXJhdGlvbnMuJyxcbiAgICBvcGVyYXRpb24sXG4gICk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/getOperationRootType.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/index.mjs":
/*!**************************************************!*\
  !*** ./node_modules/graphql/utilities/index.mjs ***!
  \**************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BreakingChangeType\": function() { return /* reexport safe */ _findBreakingChanges_mjs__WEBPACK_IMPORTED_MODULE_20__.BreakingChangeType; },\n/* harmony export */   \"DangerousChangeType\": function() { return /* reexport safe */ _findBreakingChanges_mjs__WEBPACK_IMPORTED_MODULE_20__.DangerousChangeType; },\n/* harmony export */   \"TypeInfo\": function() { return /* reexport safe */ _TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_13__.TypeInfo; },\n/* harmony export */   \"assertValidName\": function() { return /* reexport safe */ _assertValidName_mjs__WEBPACK_IMPORTED_MODULE_19__.assertValidName; },\n/* harmony export */   \"astFromValue\": function() { return /* reexport safe */ _astFromValue_mjs__WEBPACK_IMPORTED_MODULE_12__.astFromValue; },\n/* harmony export */   \"buildASTSchema\": function() { return /* reexport safe */ _buildASTSchema_mjs__WEBPACK_IMPORTED_MODULE_5__.buildASTSchema; },\n/* harmony export */   \"buildClientSchema\": function() { return /* reexport safe */ _buildClientSchema_mjs__WEBPACK_IMPORTED_MODULE_4__.buildClientSchema; },\n/* harmony export */   \"buildSchema\": function() { return /* reexport safe */ _buildASTSchema_mjs__WEBPACK_IMPORTED_MODULE_5__.buildSchema; },\n/* harmony export */   \"coerceInputValue\": function() { return /* reexport safe */ _coerceInputValue_mjs__WEBPACK_IMPORTED_MODULE_14__.coerceInputValue; },\n/* harmony export */   \"concatAST\": function() { return /* reexport safe */ _concatAST_mjs__WEBPACK_IMPORTED_MODULE_15__.concatAST; },\n/* harmony export */   \"doTypesOverlap\": function() { return /* reexport safe */ _typeComparators_mjs__WEBPACK_IMPORTED_MODULE_18__.doTypesOverlap; },\n/* harmony export */   \"extendSchema\": function() { return /* reexport safe */ _extendSchema_mjs__WEBPACK_IMPORTED_MODULE_6__.extendSchema; },\n/* harmony export */   \"findBreakingChanges\": function() { return /* reexport safe */ _findBreakingChanges_mjs__WEBPACK_IMPORTED_MODULE_20__.findBreakingChanges; },\n/* harmony export */   \"findDangerousChanges\": function() { return /* reexport safe */ _findBreakingChanges_mjs__WEBPACK_IMPORTED_MODULE_20__.findDangerousChanges; },\n/* harmony export */   \"getIntrospectionQuery\": function() { return /* reexport safe */ _getIntrospectionQuery_mjs__WEBPACK_IMPORTED_MODULE_0__.getIntrospectionQuery; },\n/* harmony export */   \"getOperationAST\": function() { return /* reexport safe */ _getOperationAST_mjs__WEBPACK_IMPORTED_MODULE_1__.getOperationAST; },\n/* harmony export */   \"getOperationRootType\": function() { return /* reexport safe */ _getOperationRootType_mjs__WEBPACK_IMPORTED_MODULE_2__.getOperationRootType; },\n/* harmony export */   \"introspectionFromSchema\": function() { return /* reexport safe */ _introspectionFromSchema_mjs__WEBPACK_IMPORTED_MODULE_3__.introspectionFromSchema; },\n/* harmony export */   \"isEqualType\": function() { return /* reexport safe */ _typeComparators_mjs__WEBPACK_IMPORTED_MODULE_18__.isEqualType; },\n/* harmony export */   \"isTypeSubTypeOf\": function() { return /* reexport safe */ _typeComparators_mjs__WEBPACK_IMPORTED_MODULE_18__.isTypeSubTypeOf; },\n/* harmony export */   \"isValidNameError\": function() { return /* reexport safe */ _assertValidName_mjs__WEBPACK_IMPORTED_MODULE_19__.isValidNameError; },\n/* harmony export */   \"lexicographicSortSchema\": function() { return /* reexport safe */ _lexicographicSortSchema_mjs__WEBPACK_IMPORTED_MODULE_7__.lexicographicSortSchema; },\n/* harmony export */   \"printIntrospectionSchema\": function() { return /* reexport safe */ _printSchema_mjs__WEBPACK_IMPORTED_MODULE_8__.printIntrospectionSchema; },\n/* harmony export */   \"printSchema\": function() { return /* reexport safe */ _printSchema_mjs__WEBPACK_IMPORTED_MODULE_8__.printSchema; },\n/* harmony export */   \"printType\": function() { return /* reexport safe */ _printSchema_mjs__WEBPACK_IMPORTED_MODULE_8__.printType; },\n/* harmony export */   \"separateOperations\": function() { return /* reexport safe */ _separateOperations_mjs__WEBPACK_IMPORTED_MODULE_16__.separateOperations; },\n/* harmony export */   \"stripIgnoredCharacters\": function() { return /* reexport safe */ _stripIgnoredCharacters_mjs__WEBPACK_IMPORTED_MODULE_17__.stripIgnoredCharacters; },\n/* harmony export */   \"typeFromAST\": function() { return /* reexport safe */ _typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_9__.typeFromAST; },\n/* harmony export */   \"valueFromAST\": function() { return /* reexport safe */ _valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_10__.valueFromAST; },\n/* harmony export */   \"valueFromASTUntyped\": function() { return /* reexport safe */ _valueFromASTUntyped_mjs__WEBPACK_IMPORTED_MODULE_11__.valueFromASTUntyped; },\n/* harmony export */   \"visitWithTypeInfo\": function() { return /* reexport safe */ _TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_13__.visitWithTypeInfo; }\n/* harmony export */ });\n/* harmony import */ var _getIntrospectionQuery_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getIntrospectionQuery.mjs */ \"./node_modules/graphql/utilities/getIntrospectionQuery.mjs\");\n/* harmony import */ var _getOperationAST_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getOperationAST.mjs */ \"./node_modules/graphql/utilities/getOperationAST.mjs\");\n/* harmony import */ var _getOperationRootType_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getOperationRootType.mjs */ \"./node_modules/graphql/utilities/getOperationRootType.mjs\");\n/* harmony import */ var _introspectionFromSchema_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./introspectionFromSchema.mjs */ \"./node_modules/graphql/utilities/introspectionFromSchema.mjs\");\n/* harmony import */ var _buildClientSchema_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./buildClientSchema.mjs */ \"./node_modules/graphql/utilities/buildClientSchema.mjs\");\n/* harmony import */ var _buildASTSchema_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./buildASTSchema.mjs */ \"./node_modules/graphql/utilities/buildASTSchema.mjs\");\n/* harmony import */ var _extendSchema_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./extendSchema.mjs */ \"./node_modules/graphql/utilities/extendSchema.mjs\");\n/* harmony import */ var _lexicographicSortSchema_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./lexicographicSortSchema.mjs */ \"./node_modules/graphql/utilities/lexicographicSortSchema.mjs\");\n/* harmony import */ var _printSchema_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./printSchema.mjs */ \"./node_modules/graphql/utilities/printSchema.mjs\");\n/* harmony import */ var _typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./typeFromAST.mjs */ \"./node_modules/graphql/utilities/typeFromAST.mjs\");\n/* harmony import */ var _valueFromAST_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./valueFromAST.mjs */ \"./node_modules/graphql/utilities/valueFromAST.mjs\");\n/* harmony import */ var _valueFromASTUntyped_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./valueFromASTUntyped.mjs */ \"./node_modules/graphql/utilities/valueFromASTUntyped.mjs\");\n/* harmony import */ var _astFromValue_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./astFromValue.mjs */ \"./node_modules/graphql/utilities/astFromValue.mjs\");\n/* harmony import */ var _TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./TypeInfo.mjs */ \"./node_modules/graphql/utilities/TypeInfo.mjs\");\n/* harmony import */ var _coerceInputValue_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./coerceInputValue.mjs */ \"./node_modules/graphql/utilities/coerceInputValue.mjs\");\n/* harmony import */ var _concatAST_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./concatAST.mjs */ \"./node_modules/graphql/utilities/concatAST.mjs\");\n/* harmony import */ var _separateOperations_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./separateOperations.mjs */ \"./node_modules/graphql/utilities/separateOperations.mjs\");\n/* harmony import */ var _stripIgnoredCharacters_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./stripIgnoredCharacters.mjs */ \"./node_modules/graphql/utilities/stripIgnoredCharacters.mjs\");\n/* harmony import */ var _typeComparators_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./typeComparators.mjs */ \"./node_modules/graphql/utilities/typeComparators.mjs\");\n/* harmony import */ var _assertValidName_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./assertValidName.mjs */ \"./node_modules/graphql/utilities/assertValidName.mjs\");\n/* harmony import */ var _findBreakingChanges_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./findBreakingChanges.mjs */ \"./node_modules/graphql/utilities/findBreakingChanges.mjs\");\n// Produce the GraphQL query recommended for a full schema introspection.\n\n// Gets the target Operation from a Document.\n // Gets the Type for the target Operation AST.\n\n // Convert a GraphQLSchema to an IntrospectionQuery.\n\n // Build a GraphQLSchema from an introspection result.\n\n // Build a GraphQLSchema from GraphQL Schema language.\n\n\n// Extends an existing GraphQLSchema from a parsed GraphQL Schema language AST.\n // Sort a GraphQLSchema.\n\n // Print a GraphQLSchema to GraphQL Schema language.\n\n // Create a GraphQLType from a GraphQL language AST.\n\n // Create a JavaScript value from a GraphQL language AST with a type.\n\n // Create a JavaScript value from a GraphQL language AST without a type.\n\n // Create a GraphQL language AST from a JavaScript value.\n\n // A helper to use within recursive-descent visitors which need to be aware of the GraphQL type system.\n\n // Coerces a JavaScript value to a GraphQL type, or produces errors.\n\n // Concatenates multiple AST together.\n\n // Separates an AST into an AST per Operation.\n\n // Strips characters that are not significant to the validity or execution of a GraphQL document.\n\n // Comparators for types\n\n // Asserts that a string is a valid GraphQL name\n\n // Compares two GraphQLSchemas and detects breaking changes.\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvaW5kZXgubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNvRTtBQUNwRTtBQUN3RCxDQUFDOztBQUVTLENBQUM7O0FBRUssQ0FBQzs7QUFFYixDQUFDOztBQUVNO0FBQ25FO0FBQ2tELENBQUM7O0FBRXFCLENBQUM7O0FBTTlDLENBQUM7O0FBRW9CLENBQUM7O0FBRUMsQ0FBQzs7QUFFYSxDQUFDOztBQUVmLENBQUM7O0FBRVUsQ0FBQzs7QUFFSixDQUFDOztBQUVmLENBQUM7O0FBRWlCLENBQUM7O0FBRU8sQ0FBQzs7QUFNeEMsQ0FBQzs7QUFFMEMsQ0FBQzs7QUFPeEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL2luZGV4Lm1qcz85MGY0Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFByb2R1Y2UgdGhlIEdyYXBoUUwgcXVlcnkgcmVjb21tZW5kZWQgZm9yIGEgZnVsbCBzY2hlbWEgaW50cm9zcGVjdGlvbi5cbmV4cG9ydCB7IGdldEludHJvc3BlY3Rpb25RdWVyeSB9IGZyb20gJy4vZ2V0SW50cm9zcGVjdGlvblF1ZXJ5Lm1qcyc7XG4vLyBHZXRzIHRoZSB0YXJnZXQgT3BlcmF0aW9uIGZyb20gYSBEb2N1bWVudC5cbmV4cG9ydCB7IGdldE9wZXJhdGlvbkFTVCB9IGZyb20gJy4vZ2V0T3BlcmF0aW9uQVNULm1qcyc7IC8vIEdldHMgdGhlIFR5cGUgZm9yIHRoZSB0YXJnZXQgT3BlcmF0aW9uIEFTVC5cblxuZXhwb3J0IHsgZ2V0T3BlcmF0aW9uUm9vdFR5cGUgfSBmcm9tICcuL2dldE9wZXJhdGlvblJvb3RUeXBlLm1qcyc7IC8vIENvbnZlcnQgYSBHcmFwaFFMU2NoZW1hIHRvIGFuIEludHJvc3BlY3Rpb25RdWVyeS5cblxuZXhwb3J0IHsgaW50cm9zcGVjdGlvbkZyb21TY2hlbWEgfSBmcm9tICcuL2ludHJvc3BlY3Rpb25Gcm9tU2NoZW1hLm1qcyc7IC8vIEJ1aWxkIGEgR3JhcGhRTFNjaGVtYSBmcm9tIGFuIGludHJvc3BlY3Rpb24gcmVzdWx0LlxuXG5leHBvcnQgeyBidWlsZENsaWVudFNjaGVtYSB9IGZyb20gJy4vYnVpbGRDbGllbnRTY2hlbWEubWpzJzsgLy8gQnVpbGQgYSBHcmFwaFFMU2NoZW1hIGZyb20gR3JhcGhRTCBTY2hlbWEgbGFuZ3VhZ2UuXG5cbmV4cG9ydCB7IGJ1aWxkQVNUU2NoZW1hLCBidWlsZFNjaGVtYSB9IGZyb20gJy4vYnVpbGRBU1RTY2hlbWEubWpzJztcbi8vIEV4dGVuZHMgYW4gZXhpc3RpbmcgR3JhcGhRTFNjaGVtYSBmcm9tIGEgcGFyc2VkIEdyYXBoUUwgU2NoZW1hIGxhbmd1YWdlIEFTVC5cbmV4cG9ydCB7IGV4dGVuZFNjaGVtYSB9IGZyb20gJy4vZXh0ZW5kU2NoZW1hLm1qcyc7IC8vIFNvcnQgYSBHcmFwaFFMU2NoZW1hLlxuXG5leHBvcnQgeyBsZXhpY29ncmFwaGljU29ydFNjaGVtYSB9IGZyb20gJy4vbGV4aWNvZ3JhcGhpY1NvcnRTY2hlbWEubWpzJzsgLy8gUHJpbnQgYSBHcmFwaFFMU2NoZW1hIHRvIEdyYXBoUUwgU2NoZW1hIGxhbmd1YWdlLlxuXG5leHBvcnQge1xuICBwcmludFNjaGVtYSxcbiAgcHJpbnRUeXBlLFxuICBwcmludEludHJvc3BlY3Rpb25TY2hlbWEsXG59IGZyb20gJy4vcHJpbnRTY2hlbWEubWpzJzsgLy8gQ3JlYXRlIGEgR3JhcGhRTFR5cGUgZnJvbSBhIEdyYXBoUUwgbGFuZ3VhZ2UgQVNULlxuXG5leHBvcnQgeyB0eXBlRnJvbUFTVCB9IGZyb20gJy4vdHlwZUZyb21BU1QubWpzJzsgLy8gQ3JlYXRlIGEgSmF2YVNjcmlwdCB2YWx1ZSBmcm9tIGEgR3JhcGhRTCBsYW5ndWFnZSBBU1Qgd2l0aCBhIHR5cGUuXG5cbmV4cG9ydCB7IHZhbHVlRnJvbUFTVCB9IGZyb20gJy4vdmFsdWVGcm9tQVNULm1qcyc7IC8vIENyZWF0ZSBhIEphdmFTY3JpcHQgdmFsdWUgZnJvbSBhIEdyYXBoUUwgbGFuZ3VhZ2UgQVNUIHdpdGhvdXQgYSB0eXBlLlxuXG5leHBvcnQgeyB2YWx1ZUZyb21BU1RVbnR5cGVkIH0gZnJvbSAnLi92YWx1ZUZyb21BU1RVbnR5cGVkLm1qcyc7IC8vIENyZWF0ZSBhIEdyYXBoUUwgbGFuZ3VhZ2UgQVNUIGZyb20gYSBKYXZhU2NyaXB0IHZhbHVlLlxuXG5leHBvcnQgeyBhc3RGcm9tVmFsdWUgfSBmcm9tICcuL2FzdEZyb21WYWx1ZS5tanMnOyAvLyBBIGhlbHBlciB0byB1c2Ugd2l0aGluIHJlY3Vyc2l2ZS1kZXNjZW50IHZpc2l0b3JzIHdoaWNoIG5lZWQgdG8gYmUgYXdhcmUgb2YgdGhlIEdyYXBoUUwgdHlwZSBzeXN0ZW0uXG5cbmV4cG9ydCB7IFR5cGVJbmZvLCB2aXNpdFdpdGhUeXBlSW5mbyB9IGZyb20gJy4vVHlwZUluZm8ubWpzJzsgLy8gQ29lcmNlcyBhIEphdmFTY3JpcHQgdmFsdWUgdG8gYSBHcmFwaFFMIHR5cGUsIG9yIHByb2R1Y2VzIGVycm9ycy5cblxuZXhwb3J0IHsgY29lcmNlSW5wdXRWYWx1ZSB9IGZyb20gJy4vY29lcmNlSW5wdXRWYWx1ZS5tanMnOyAvLyBDb25jYXRlbmF0ZXMgbXVsdGlwbGUgQVNUIHRvZ2V0aGVyLlxuXG5leHBvcnQgeyBjb25jYXRBU1QgfSBmcm9tICcuL2NvbmNhdEFTVC5tanMnOyAvLyBTZXBhcmF0ZXMgYW4gQVNUIGludG8gYW4gQVNUIHBlciBPcGVyYXRpb24uXG5cbmV4cG9ydCB7IHNlcGFyYXRlT3BlcmF0aW9ucyB9IGZyb20gJy4vc2VwYXJhdGVPcGVyYXRpb25zLm1qcyc7IC8vIFN0cmlwcyBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCBzaWduaWZpY2FudCB0byB0aGUgdmFsaWRpdHkgb3IgZXhlY3V0aW9uIG9mIGEgR3JhcGhRTCBkb2N1bWVudC5cblxuZXhwb3J0IHsgc3RyaXBJZ25vcmVkQ2hhcmFjdGVycyB9IGZyb20gJy4vc3RyaXBJZ25vcmVkQ2hhcmFjdGVycy5tanMnOyAvLyBDb21wYXJhdG9ycyBmb3IgdHlwZXNcblxuZXhwb3J0IHtcbiAgaXNFcXVhbFR5cGUsXG4gIGlzVHlwZVN1YlR5cGVPZixcbiAgZG9UeXBlc092ZXJsYXAsXG59IGZyb20gJy4vdHlwZUNvbXBhcmF0b3JzLm1qcyc7IC8vIEFzc2VydHMgdGhhdCBhIHN0cmluZyBpcyBhIHZhbGlkIEdyYXBoUUwgbmFtZVxuXG5leHBvcnQgeyBhc3NlcnRWYWxpZE5hbWUsIGlzVmFsaWROYW1lRXJyb3IgfSBmcm9tICcuL2Fzc2VydFZhbGlkTmFtZS5tanMnOyAvLyBDb21wYXJlcyB0d28gR3JhcGhRTFNjaGVtYXMgYW5kIGRldGVjdHMgYnJlYWtpbmcgY2hhbmdlcy5cblxuZXhwb3J0IHtcbiAgQnJlYWtpbmdDaGFuZ2VUeXBlLFxuICBEYW5nZXJvdXNDaGFuZ2VUeXBlLFxuICBmaW5kQnJlYWtpbmdDaGFuZ2VzLFxuICBmaW5kRGFuZ2Vyb3VzQ2hhbmdlcyxcbn0gZnJvbSAnLi9maW5kQnJlYWtpbmdDaGFuZ2VzLm1qcyc7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/index.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/introspectionFromSchema.mjs":
/*!********************************************************************!*\
  !*** ./node_modules/graphql/utilities/introspectionFromSchema.mjs ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"introspectionFromSchema\": function() { return /* binding */ introspectionFromSchema; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"./node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _language_parser_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/parser.mjs */ \"./node_modules/graphql/language/parser.mjs\");\n/* harmony import */ var _execution_execute_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../execution/execute.mjs */ \"./node_modules/graphql/execution/execute.mjs\");\n/* harmony import */ var _getIntrospectionQuery_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getIntrospectionQuery.mjs */ \"./node_modules/graphql/utilities/getIntrospectionQuery.mjs\");\n\n\n\n\n/**\n * Build an IntrospectionQuery from a GraphQLSchema\n *\n * IntrospectionQuery is useful for utilities that care about type and field\n * relationships, but do not need to traverse through those relationships.\n *\n * This is the inverse of buildClientSchema. The primary use case is outside\n * of the server context, for instance when doing schema comparisons.\n */\n\nfunction introspectionFromSchema(schema, options) {\n  const optionsWithDefaults = {\n    specifiedByUrl: true,\n    directiveIsRepeatable: true,\n    schemaDescription: true,\n    inputValueDeprecation: true,\n    ...options,\n  };\n  const document = (0,_language_parser_mjs__WEBPACK_IMPORTED_MODULE_0__.parse)((0,_getIntrospectionQuery_mjs__WEBPACK_IMPORTED_MODULE_1__.getIntrospectionQuery)(optionsWithDefaults));\n  const result = (0,_execution_execute_mjs__WEBPACK_IMPORTED_MODULE_2__.executeSync)({\n    schema,\n    document,\n  });\n  (!result.errors && result.data) || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_3__.invariant)(false);\n  return result.data;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvaW50cm9zcGVjdGlvbkZyb21TY2hlbWEubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQXFEO0FBQ047QUFDUTtBQUNhO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLDJEQUFLLENBQUMsaUZBQXFCO0FBQzlDLGlCQUFpQixtRUFBVztBQUM1QjtBQUNBO0FBQ0EsR0FBRztBQUNILHFDQUFxQyxpRUFBUztBQUM5QztBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9pbnRyb3NwZWN0aW9uRnJvbVNjaGVtYS5tanM/N2YwNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tICcuLi9qc3V0aWxzL2ludmFyaWFudC5tanMnO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICcuLi9sYW5ndWFnZS9wYXJzZXIubWpzJztcbmltcG9ydCB7IGV4ZWN1dGVTeW5jIH0gZnJvbSAnLi4vZXhlY3V0aW9uL2V4ZWN1dGUubWpzJztcbmltcG9ydCB7IGdldEludHJvc3BlY3Rpb25RdWVyeSB9IGZyb20gJy4vZ2V0SW50cm9zcGVjdGlvblF1ZXJ5Lm1qcyc7XG4vKipcbiAqIEJ1aWxkIGFuIEludHJvc3BlY3Rpb25RdWVyeSBmcm9tIGEgR3JhcGhRTFNjaGVtYVxuICpcbiAqIEludHJvc3BlY3Rpb25RdWVyeSBpcyB1c2VmdWwgZm9yIHV0aWxpdGllcyB0aGF0IGNhcmUgYWJvdXQgdHlwZSBhbmQgZmllbGRcbiAqIHJlbGF0aW9uc2hpcHMsIGJ1dCBkbyBub3QgbmVlZCB0byB0cmF2ZXJzZSB0aHJvdWdoIHRob3NlIHJlbGF0aW9uc2hpcHMuXG4gKlxuICogVGhpcyBpcyB0aGUgaW52ZXJzZSBvZiBidWlsZENsaWVudFNjaGVtYS4gVGhlIHByaW1hcnkgdXNlIGNhc2UgaXMgb3V0c2lkZVxuICogb2YgdGhlIHNlcnZlciBjb250ZXh0LCBmb3IgaW5zdGFuY2Ugd2hlbiBkb2luZyBzY2hlbWEgY29tcGFyaXNvbnMuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGludHJvc3BlY3Rpb25Gcm9tU2NoZW1hKHNjaGVtYSwgb3B0aW9ucykge1xuICBjb25zdCBvcHRpb25zV2l0aERlZmF1bHRzID0ge1xuICAgIHNwZWNpZmllZEJ5VXJsOiB0cnVlLFxuICAgIGRpcmVjdGl2ZUlzUmVwZWF0YWJsZTogdHJ1ZSxcbiAgICBzY2hlbWFEZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICBpbnB1dFZhbHVlRGVwcmVjYXRpb246IHRydWUsXG4gICAgLi4ub3B0aW9ucyxcbiAgfTtcbiAgY29uc3QgZG9jdW1lbnQgPSBwYXJzZShnZXRJbnRyb3NwZWN0aW9uUXVlcnkob3B0aW9uc1dpdGhEZWZhdWx0cykpO1xuICBjb25zdCByZXN1bHQgPSBleGVjdXRlU3luYyh7XG4gICAgc2NoZW1hLFxuICAgIGRvY3VtZW50LFxuICB9KTtcbiAgKCFyZXN1bHQuZXJyb3JzICYmIHJlc3VsdC5kYXRhKSB8fCBpbnZhcmlhbnQoZmFsc2UpO1xuICByZXR1cm4gcmVzdWx0LmRhdGE7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/introspectionFromSchema.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/lexicographicSortSchema.mjs":
/*!********************************************************************!*\
  !*** ./node_modules/graphql/utilities/lexicographicSortSchema.mjs ***!
  \********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"lexicographicSortSchema\": function() { return /* binding */ lexicographicSortSchema; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"./node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsutils/keyValMap.mjs */ \"./node_modules/graphql/jsutils/keyValMap.mjs\");\n/* harmony import */ var _jsutils_naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../jsutils/naturalCompare.mjs */ \"./node_modules/graphql/jsutils/naturalCompare.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../type/directives.mjs */ \"./node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../type/introspection.mjs */ \"./node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _type_schema_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../type/schema.mjs */ \"./node_modules/graphql/type/schema.mjs\");\n\n\n\n\n\n\n\n\n/**\n * Sort GraphQLSchema.\n *\n * This function returns a sorted copy of the given GraphQLSchema.\n */\n\nfunction lexicographicSortSchema(schema) {\n  const schemaConfig = schema.toConfig();\n  const typeMap = (0,_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_0__.keyValMap)(\n    sortByName(schemaConfig.types),\n    (type) => type.name,\n    sortNamedType,\n  );\n  return new _type_schema_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLSchema({\n    ...schemaConfig,\n    types: Object.values(typeMap),\n    directives: sortByName(schemaConfig.directives).map(sortDirective),\n    query: replaceMaybeType(schemaConfig.query),\n    mutation: replaceMaybeType(schemaConfig.mutation),\n    subscription: replaceMaybeType(schemaConfig.subscription),\n  });\n\n  function replaceType(type) {\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isListType)(type)) {\n      // @ts-expect-error\n      return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLList(replaceType(type.ofType));\n    } else if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isNonNullType)(type)) {\n      // @ts-expect-error\n      return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLNonNull(replaceType(type.ofType));\n    } // @ts-expect-error FIXME: TS Conversion\n\n    return replaceNamedType(type);\n  }\n\n  function replaceNamedType(type) {\n    return typeMap[type.name];\n  }\n\n  function replaceMaybeType(maybeType) {\n    return maybeType && replaceNamedType(maybeType);\n  }\n\n  function sortDirective(directive) {\n    const config = directive.toConfig();\n    return new _type_directives_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLDirective({\n      ...config,\n      locations: sortBy(config.locations, (x) => x),\n      args: sortArgs(config.args),\n    });\n  }\n\n  function sortArgs(args) {\n    return sortObjMap(args, (arg) => ({ ...arg, type: replaceType(arg.type) }));\n  }\n\n  function sortFields(fieldsMap) {\n    return sortObjMap(fieldsMap, (field) => ({\n      ...field,\n      type: replaceType(field.type),\n      args: field.args && sortArgs(field.args),\n    }));\n  }\n\n  function sortInputFields(fieldsMap) {\n    return sortObjMap(fieldsMap, (field) => ({\n      ...field,\n      type: replaceType(field.type),\n    }));\n  }\n\n  function sortTypes(array) {\n    return sortByName(array).map(replaceNamedType);\n  }\n\n  function sortNamedType(type) {\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isScalarType)(type) || (0,_type_introspection_mjs__WEBPACK_IMPORTED_MODULE_4__.isIntrospectionType)(type)) {\n      return type;\n    }\n\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isObjectType)(type)) {\n      const config = type.toConfig();\n      return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLObjectType({\n        ...config,\n        interfaces: () => sortTypes(config.interfaces),\n        fields: () => sortFields(config.fields),\n      });\n    }\n\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isInterfaceType)(type)) {\n      const config = type.toConfig();\n      return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLInterfaceType({\n        ...config,\n        interfaces: () => sortTypes(config.interfaces),\n        fields: () => sortFields(config.fields),\n      });\n    }\n\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isUnionType)(type)) {\n      const config = type.toConfig();\n      return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLUnionType({\n        ...config,\n        types: () => sortTypes(config.types),\n      });\n    }\n\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isEnumType)(type)) {\n      const config = type.toConfig();\n      return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLEnumType({\n        ...config,\n        values: sortObjMap(config.values, (value) => value),\n      });\n    }\n\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isInputObjectType)(type)) {\n      const config = type.toConfig();\n      return new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLInputObjectType({\n        ...config,\n        fields: () => sortInputFields(config.fields),\n      });\n    }\n    /* c8 ignore next 3 */\n    // Not reachable, all possible types have been considered.\n\n     false || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_5__.invariant)(false, 'Unexpected type: ' + (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_6__.inspect)(type));\n  }\n}\n\nfunction sortObjMap(map, sortValueFn) {\n  const sortedMap = Object.create(null);\n\n  for (const key of Object.keys(map).sort(_jsutils_naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_7__.naturalCompare)) {\n    sortedMap[key] = sortValueFn(map[key]);\n  }\n\n  return sortedMap;\n}\n\nfunction sortByName(array) {\n  return sortBy(array, (obj) => obj.name);\n}\n\nfunction sortBy(array, mapToKey) {\n  return array.slice().sort((obj1, obj2) => {\n    const key1 = mapToKey(obj1);\n    const key2 = mapToKey(obj2);\n    return (0,_jsutils_naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_7__.naturalCompare)(key1, key2);\n  });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvbGV4aWNvZ3JhcGhpY1NvcnRTY2hlbWEubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFpRDtBQUNJO0FBQ0E7QUFDVTtBQWlCL0I7QUFDMEI7QUFDTTtBQUNiO0FBQ25EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLGtCQUFrQixpRUFBUztBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsMkRBQWE7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLFFBQVEsZ0VBQVU7QUFDbEI7QUFDQSxpQkFBaUIsNkRBQVc7QUFDNUIsTUFBTSxTQUFTLG1FQUFhO0FBQzVCO0FBQ0EsaUJBQWlCLGdFQUFjO0FBQy9CLE1BQU07O0FBRU47QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxlQUFlLGtFQUFnQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSx3Q0FBd0MscUNBQXFDO0FBQzdFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSxrRUFBWSxVQUFVLDRFQUFtQjtBQUNqRDtBQUNBOztBQUVBLFFBQVEsa0VBQVk7QUFDcEI7QUFDQSxpQkFBaUIsbUVBQWlCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxRQUFRLHFFQUFlO0FBQ3ZCO0FBQ0EsaUJBQWlCLHNFQUFvQjtBQUNyQztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEsUUFBUSxpRUFBVztBQUNuQjtBQUNBLGlCQUFpQixrRUFBZ0I7QUFDakM7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQSxRQUFRLGdFQUFVO0FBQ2xCO0FBQ0EsaUJBQWlCLGlFQUFlO0FBQ2hDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUEsUUFBUSx1RUFBaUI7QUFDekI7QUFDQSxpQkFBaUIsd0VBQXNCO0FBQ3ZDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBLElBQUksTUFBSyxJQUFJLGlFQUFTLDhCQUE4Qiw2REFBTztBQUMzRDtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsMENBQTBDLHVFQUFjO0FBQ3hEO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLDJFQUFjO0FBQ3pCLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvbGV4aWNvZ3JhcGhpY1NvcnRTY2hlbWEubWpzPzI4NTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSAnLi4vanN1dGlscy9pbnZhcmlhbnQubWpzJztcbmltcG9ydCB7IGtleVZhbE1hcCB9IGZyb20gJy4uL2pzdXRpbHMva2V5VmFsTWFwLm1qcyc7XG5pbXBvcnQgeyBuYXR1cmFsQ29tcGFyZSB9IGZyb20gJy4uL2pzdXRpbHMvbmF0dXJhbENvbXBhcmUubWpzJztcbmltcG9ydCB7XG4gIEdyYXBoUUxFbnVtVHlwZSxcbiAgR3JhcGhRTElucHV0T2JqZWN0VHlwZSxcbiAgR3JhcGhRTEludGVyZmFjZVR5cGUsXG4gIEdyYXBoUUxMaXN0LFxuICBHcmFwaFFMTm9uTnVsbCxcbiAgR3JhcGhRTE9iamVjdFR5cGUsXG4gIEdyYXBoUUxVbmlvblR5cGUsXG4gIGlzRW51bVR5cGUsXG4gIGlzSW5wdXRPYmplY3RUeXBlLFxuICBpc0ludGVyZmFjZVR5cGUsXG4gIGlzTGlzdFR5cGUsXG4gIGlzTm9uTnVsbFR5cGUsXG4gIGlzT2JqZWN0VHlwZSxcbiAgaXNTY2FsYXJUeXBlLFxuICBpc1VuaW9uVHlwZSxcbn0gZnJvbSAnLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMRGlyZWN0aXZlIH0gZnJvbSAnLi4vdHlwZS9kaXJlY3RpdmVzLm1qcyc7XG5pbXBvcnQgeyBpc0ludHJvc3BlY3Rpb25UeXBlIH0gZnJvbSAnLi4vdHlwZS9pbnRyb3NwZWN0aW9uLm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMU2NoZW1hIH0gZnJvbSAnLi4vdHlwZS9zY2hlbWEubWpzJztcbi8qKlxuICogU29ydCBHcmFwaFFMU2NoZW1hLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHNvcnRlZCBjb3B5IG9mIHRoZSBnaXZlbiBHcmFwaFFMU2NoZW1hLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBsZXhpY29ncmFwaGljU29ydFNjaGVtYShzY2hlbWEpIHtcbiAgY29uc3Qgc2NoZW1hQ29uZmlnID0gc2NoZW1hLnRvQ29uZmlnKCk7XG4gIGNvbnN0IHR5cGVNYXAgPSBrZXlWYWxNYXAoXG4gICAgc29ydEJ5TmFtZShzY2hlbWFDb25maWcudHlwZXMpLFxuICAgICh0eXBlKSA9PiB0eXBlLm5hbWUsXG4gICAgc29ydE5hbWVkVHlwZSxcbiAgKTtcbiAgcmV0dXJuIG5ldyBHcmFwaFFMU2NoZW1hKHtcbiAgICAuLi5zY2hlbWFDb25maWcsXG4gICAgdHlwZXM6IE9iamVjdC52YWx1ZXModHlwZU1hcCksXG4gICAgZGlyZWN0aXZlczogc29ydEJ5TmFtZShzY2hlbWFDb25maWcuZGlyZWN0aXZlcykubWFwKHNvcnREaXJlY3RpdmUpLFxuICAgIHF1ZXJ5OiByZXBsYWNlTWF5YmVUeXBlKHNjaGVtYUNvbmZpZy5xdWVyeSksXG4gICAgbXV0YXRpb246IHJlcGxhY2VNYXliZVR5cGUoc2NoZW1hQ29uZmlnLm11dGF0aW9uKSxcbiAgICBzdWJzY3JpcHRpb246IHJlcGxhY2VNYXliZVR5cGUoc2NoZW1hQ29uZmlnLnN1YnNjcmlwdGlvbiksXG4gIH0pO1xuXG4gIGZ1bmN0aW9uIHJlcGxhY2VUeXBlKHR5cGUpIHtcbiAgICBpZiAoaXNMaXN0VHlwZSh0eXBlKSkge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMTGlzdChyZXBsYWNlVHlwZSh0eXBlLm9mVHlwZSkpO1xuICAgIH0gZWxzZSBpZiAoaXNOb25OdWxsVHlwZSh0eXBlKSkge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMTm9uTnVsbChyZXBsYWNlVHlwZSh0eXBlLm9mVHlwZSkpO1xuICAgIH0gLy8gQHRzLWV4cGVjdC1lcnJvciBGSVhNRTogVFMgQ29udmVyc2lvblxuXG4gICAgcmV0dXJuIHJlcGxhY2VOYW1lZFR5cGUodHlwZSk7XG4gIH1cblxuICBmdW5jdGlvbiByZXBsYWNlTmFtZWRUeXBlKHR5cGUpIHtcbiAgICByZXR1cm4gdHlwZU1hcFt0eXBlLm5hbWVdO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVwbGFjZU1heWJlVHlwZShtYXliZVR5cGUpIHtcbiAgICByZXR1cm4gbWF5YmVUeXBlICYmIHJlcGxhY2VOYW1lZFR5cGUobWF5YmVUeXBlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNvcnREaXJlY3RpdmUoZGlyZWN0aXZlKSB7XG4gICAgY29uc3QgY29uZmlnID0gZGlyZWN0aXZlLnRvQ29uZmlnKCk7XG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMRGlyZWN0aXZlKHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGxvY2F0aW9uczogc29ydEJ5KGNvbmZpZy5sb2NhdGlvbnMsICh4KSA9PiB4KSxcbiAgICAgIGFyZ3M6IHNvcnRBcmdzKGNvbmZpZy5hcmdzKSxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNvcnRBcmdzKGFyZ3MpIHtcbiAgICByZXR1cm4gc29ydE9iak1hcChhcmdzLCAoYXJnKSA9PiAoeyAuLi5hcmcsIHR5cGU6IHJlcGxhY2VUeXBlKGFyZy50eXBlKSB9KSk7XG4gIH1cblxuICBmdW5jdGlvbiBzb3J0RmllbGRzKGZpZWxkc01hcCkge1xuICAgIHJldHVybiBzb3J0T2JqTWFwKGZpZWxkc01hcCwgKGZpZWxkKSA9PiAoe1xuICAgICAgLi4uZmllbGQsXG4gICAgICB0eXBlOiByZXBsYWNlVHlwZShmaWVsZC50eXBlKSxcbiAgICAgIGFyZ3M6IGZpZWxkLmFyZ3MgJiYgc29ydEFyZ3MoZmllbGQuYXJncyksXG4gICAgfSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gc29ydElucHV0RmllbGRzKGZpZWxkc01hcCkge1xuICAgIHJldHVybiBzb3J0T2JqTWFwKGZpZWxkc01hcCwgKGZpZWxkKSA9PiAoe1xuICAgICAgLi4uZmllbGQsXG4gICAgICB0eXBlOiByZXBsYWNlVHlwZShmaWVsZC50eXBlKSxcbiAgICB9KSk7XG4gIH1cblxuICBmdW5jdGlvbiBzb3J0VHlwZXMoYXJyYXkpIHtcbiAgICByZXR1cm4gc29ydEJ5TmFtZShhcnJheSkubWFwKHJlcGxhY2VOYW1lZFR5cGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gc29ydE5hbWVkVHlwZSh0eXBlKSB7XG4gICAgaWYgKGlzU2NhbGFyVHlwZSh0eXBlKSB8fCBpc0ludHJvc3BlY3Rpb25UeXBlKHR5cGUpKSB7XG4gICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG5cbiAgICBpZiAoaXNPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgICBjb25zdCBjb25maWcgPSB0eXBlLnRvQ29uZmlnKCk7XG4gICAgICByZXR1cm4gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICBpbnRlcmZhY2VzOiAoKSA9PiBzb3J0VHlwZXMoY29uZmlnLmludGVyZmFjZXMpLFxuICAgICAgICBmaWVsZHM6ICgpID0+IHNvcnRGaWVsZHMoY29uZmlnLmZpZWxkcyksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoaXNJbnRlcmZhY2VUeXBlKHR5cGUpKSB7XG4gICAgICBjb25zdCBjb25maWcgPSB0eXBlLnRvQ29uZmlnKCk7XG4gICAgICByZXR1cm4gbmV3IEdyYXBoUUxJbnRlcmZhY2VUeXBlKHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICBpbnRlcmZhY2VzOiAoKSA9PiBzb3J0VHlwZXMoY29uZmlnLmludGVyZmFjZXMpLFxuICAgICAgICBmaWVsZHM6ICgpID0+IHNvcnRGaWVsZHMoY29uZmlnLmZpZWxkcyksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoaXNVbmlvblR5cGUodHlwZSkpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHR5cGUudG9Db25maWcoKTtcbiAgICAgIHJldHVybiBuZXcgR3JhcGhRTFVuaW9uVHlwZSh7XG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgdHlwZXM6ICgpID0+IHNvcnRUeXBlcyhjb25maWcudHlwZXMpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGlzRW51bVR5cGUodHlwZSkpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHR5cGUudG9Db25maWcoKTtcbiAgICAgIHJldHVybiBuZXcgR3JhcGhRTEVudW1UeXBlKHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICB2YWx1ZXM6IHNvcnRPYmpNYXAoY29uZmlnLnZhbHVlcywgKHZhbHVlKSA9PiB2YWx1ZSksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoaXNJbnB1dE9iamVjdFR5cGUodHlwZSkpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHR5cGUudG9Db25maWcoKTtcbiAgICAgIHJldHVybiBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgZmllbGRzOiAoKSA9PiBzb3J0SW5wdXRGaWVsZHMoY29uZmlnLmZpZWxkcyksXG4gICAgICB9KTtcbiAgICB9XG4gICAgLyogYzggaWdub3JlIG5leHQgMyAqL1xuICAgIC8vIE5vdCByZWFjaGFibGUsIGFsbCBwb3NzaWJsZSB0eXBlcyBoYXZlIGJlZW4gY29uc2lkZXJlZC5cblxuICAgIGZhbHNlIHx8IGludmFyaWFudChmYWxzZSwgJ1VuZXhwZWN0ZWQgdHlwZTogJyArIGluc3BlY3QodHlwZSkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNvcnRPYmpNYXAobWFwLCBzb3J0VmFsdWVGbikge1xuICBjb25zdCBzb3J0ZWRNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1hcCkuc29ydChuYXR1cmFsQ29tcGFyZSkpIHtcbiAgICBzb3J0ZWRNYXBba2V5XSA9IHNvcnRWYWx1ZUZuKG1hcFtrZXldKTtcbiAgfVxuXG4gIHJldHVybiBzb3J0ZWRNYXA7XG59XG5cbmZ1bmN0aW9uIHNvcnRCeU5hbWUoYXJyYXkpIHtcbiAgcmV0dXJuIHNvcnRCeShhcnJheSwgKG9iaikgPT4gb2JqLm5hbWUpO1xufVxuXG5mdW5jdGlvbiBzb3J0QnkoYXJyYXksIG1hcFRvS2V5KSB7XG4gIHJldHVybiBhcnJheS5zbGljZSgpLnNvcnQoKG9iajEsIG9iajIpID0+IHtcbiAgICBjb25zdCBrZXkxID0gbWFwVG9LZXkob2JqMSk7XG4gICAgY29uc3Qga2V5MiA9IG1hcFRvS2V5KG9iajIpO1xuICAgIHJldHVybiBuYXR1cmFsQ29tcGFyZShrZXkxLCBrZXkyKTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/lexicographicSortSchema.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/printSchema.mjs":
/*!********************************************************!*\
  !*** ./node_modules/graphql/utilities/printSchema.mjs ***!
  \********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"printIntrospectionSchema\": function() { return /* binding */ printIntrospectionSchema; },\n/* harmony export */   \"printSchema\": function() { return /* binding */ printSchema; },\n/* harmony export */   \"printType\": function() { return /* binding */ printType; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"./node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _language_blockString_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../language/blockString.mjs */ \"./node_modules/graphql/language/blockString.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../language/printer.mjs */ \"./node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../type/directives.mjs */ \"./node_modules/graphql/type/directives.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../type/introspection.mjs */ \"./node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../type/scalars.mjs */ \"./node_modules/graphql/type/scalars.mjs\");\n/* harmony import */ var _astFromValue_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./astFromValue.mjs */ \"./node_modules/graphql/utilities/astFromValue.mjs\");\n\n\n\n\n\n\n\n\n\n\nfunction printSchema(schema) {\n  return printFilteredSchema(\n    schema,\n    (n) => !(0,_type_directives_mjs__WEBPACK_IMPORTED_MODULE_0__.isSpecifiedDirective)(n),\n    isDefinedType,\n  );\n}\nfunction printIntrospectionSchema(schema) {\n  return printFilteredSchema(schema, _type_directives_mjs__WEBPACK_IMPORTED_MODULE_0__.isSpecifiedDirective, _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_1__.isIntrospectionType);\n}\n\nfunction isDefinedType(type) {\n  return !(0,_type_scalars_mjs__WEBPACK_IMPORTED_MODULE_2__.isSpecifiedScalarType)(type) && !(0,_type_introspection_mjs__WEBPACK_IMPORTED_MODULE_1__.isIntrospectionType)(type);\n}\n\nfunction printFilteredSchema(schema, directiveFilter, typeFilter) {\n  const directives = schema.getDirectives().filter(directiveFilter);\n  const types = Object.values(schema.getTypeMap()).filter(typeFilter);\n  return [\n    printSchemaDefinition(schema),\n    ...directives.map((directive) => printDirective(directive)),\n    ...types.map((type) => printType(type)),\n  ]\n    .filter(Boolean)\n    .join('\\n\\n');\n}\n\nfunction printSchemaDefinition(schema) {\n  if (schema.description == null && isSchemaOfCommonNames(schema)) {\n    return;\n  }\n\n  const operationTypes = [];\n  const queryType = schema.getQueryType();\n\n  if (queryType) {\n    operationTypes.push(`  query: ${queryType.name}`);\n  }\n\n  const mutationType = schema.getMutationType();\n\n  if (mutationType) {\n    operationTypes.push(`  mutation: ${mutationType.name}`);\n  }\n\n  const subscriptionType = schema.getSubscriptionType();\n\n  if (subscriptionType) {\n    operationTypes.push(`  subscription: ${subscriptionType.name}`);\n  }\n\n  return printDescription(schema) + `schema {\\n${operationTypes.join('\\n')}\\n}`;\n}\n/**\n * GraphQL schema define root types for each type of operation. These types are\n * the same as any other type and can be named in any manner, however there is\n * a common naming convention:\n *\n * ```graphql\n *   schema {\n *     query: Query\n *     mutation: Mutation\n *     subscription: Subscription\n *   }\n * ```\n *\n * When using this naming convention, the schema description can be omitted.\n */\n\nfunction isSchemaOfCommonNames(schema) {\n  const queryType = schema.getQueryType();\n\n  if (queryType && queryType.name !== 'Query') {\n    return false;\n  }\n\n  const mutationType = schema.getMutationType();\n\n  if (mutationType && mutationType.name !== 'Mutation') {\n    return false;\n  }\n\n  const subscriptionType = schema.getSubscriptionType();\n\n  if (subscriptionType && subscriptionType.name !== 'Subscription') {\n    return false;\n  }\n\n  return true;\n}\n\nfunction printType(type) {\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__.isScalarType)(type)) {\n    return printScalar(type);\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__.isObjectType)(type)) {\n    return printObject(type);\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__.isInterfaceType)(type)) {\n    return printInterface(type);\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__.isUnionType)(type)) {\n    return printUnion(type);\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__.isEnumType)(type)) {\n    return printEnum(type);\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__.isInputObjectType)(type)) {\n    return printInputObject(type);\n  }\n  /* c8 ignore next 3 */\n  // Not reachable, all possible types have been considered.\n\n   false || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_4__.invariant)(false, 'Unexpected type: ' + (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_5__.inspect)(type));\n}\n\nfunction printScalar(type) {\n  return (\n    printDescription(type) + `scalar ${type.name}` + printSpecifiedByURL(type)\n  );\n}\n\nfunction printImplementedInterfaces(type) {\n  const interfaces = type.getInterfaces();\n  return interfaces.length\n    ? ' implements ' + interfaces.map((i) => i.name).join(' & ')\n    : '';\n}\n\nfunction printObject(type) {\n  return (\n    printDescription(type) +\n    `type ${type.name}` +\n    printImplementedInterfaces(type) +\n    printFields(type)\n  );\n}\n\nfunction printInterface(type) {\n  return (\n    printDescription(type) +\n    `interface ${type.name}` +\n    printImplementedInterfaces(type) +\n    printFields(type)\n  );\n}\n\nfunction printUnion(type) {\n  const types = type.getTypes();\n  const possibleTypes = types.length ? ' = ' + types.join(' | ') : '';\n  return printDescription(type) + 'union ' + type.name + possibleTypes;\n}\n\nfunction printEnum(type) {\n  const values = type\n    .getValues()\n    .map(\n      (value, i) =>\n        printDescription(value, '  ', !i) +\n        '  ' +\n        value.name +\n        printDeprecated(value.deprecationReason),\n    );\n  return printDescription(type) + `enum ${type.name}` + printBlock(values);\n}\n\nfunction printInputObject(type) {\n  const fields = Object.values(type.getFields()).map(\n    (f, i) => printDescription(f, '  ', !i) + '  ' + printInputValue(f),\n  );\n  return printDescription(type) + `input ${type.name}` + printBlock(fields);\n}\n\nfunction printFields(type) {\n  const fields = Object.values(type.getFields()).map(\n    (f, i) =>\n      printDescription(f, '  ', !i) +\n      '  ' +\n      f.name +\n      printArgs(f.args, '  ') +\n      ': ' +\n      String(f.type) +\n      printDeprecated(f.deprecationReason),\n  );\n  return printBlock(fields);\n}\n\nfunction printBlock(items) {\n  return items.length !== 0 ? ' {\\n' + items.join('\\n') + '\\n}' : '';\n}\n\nfunction printArgs(args, indentation = '') {\n  if (args.length === 0) {\n    return '';\n  } // If every arg does not have a description, print them on one line.\n\n  if (args.every((arg) => !arg.description)) {\n    return '(' + args.map(printInputValue).join(', ') + ')';\n  }\n\n  return (\n    '(\\n' +\n    args\n      .map(\n        (arg, i) =>\n          printDescription(arg, '  ' + indentation, !i) +\n          '  ' +\n          indentation +\n          printInputValue(arg),\n      )\n      .join('\\n') +\n    '\\n' +\n    indentation +\n    ')'\n  );\n}\n\nfunction printInputValue(arg) {\n  const defaultAST = (0,_astFromValue_mjs__WEBPACK_IMPORTED_MODULE_6__.astFromValue)(arg.defaultValue, arg.type);\n  let argDecl = arg.name + ': ' + String(arg.type);\n\n  if (defaultAST) {\n    argDecl += ` = ${(0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_7__.print)(defaultAST)}`;\n  }\n\n  return argDecl + printDeprecated(arg.deprecationReason);\n}\n\nfunction printDirective(directive) {\n  return (\n    printDescription(directive) +\n    'directive @' +\n    directive.name +\n    printArgs(directive.args) +\n    (directive.isRepeatable ? ' repeatable' : '') +\n    ' on ' +\n    directive.locations.join(' | ')\n  );\n}\n\nfunction printDeprecated(reason) {\n  if (reason == null) {\n    return '';\n  }\n\n  if (reason !== _type_directives_mjs__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_DEPRECATION_REASON) {\n    const astValue = (0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_7__.print)({\n      kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_8__.Kind.STRING,\n      value: reason,\n    });\n    return ` @deprecated(reason: ${astValue})`;\n  }\n\n  return ' @deprecated';\n}\n\nfunction printSpecifiedByURL(scalar) {\n  if (scalar.specifiedByURL == null) {\n    return '';\n  }\n\n  const astValue = (0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_7__.print)({\n    kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_8__.Kind.STRING,\n    value: scalar.specifiedByURL,\n  });\n  return ` @specifiedBy(url: ${astValue})`;\n}\n\nfunction printDescription(def, indentation = '', firstInBlock = true) {\n  const { description } = def;\n\n  if (description == null) {\n    return '';\n  }\n\n  const blockString = (0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_7__.print)({\n    kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_8__.Kind.STRING,\n    value: description,\n    block: (0,_language_blockString_mjs__WEBPACK_IMPORTED_MODULE_9__.isPrintableAsBlockString)(description),\n  });\n  const prefix =\n    indentation && !firstInBlock ? '\\n' + indentation : indentation;\n  return prefix + blockString.replace(/\\n/g, '\\n' + indentation) + '\\n';\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvcHJpbnRTY2hlbWEubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBaUQ7QUFDSTtBQUNrQjtBQUMxQjtBQUNHO0FBUWhCO0FBSUE7QUFDZ0M7QUFDSjtBQUNWO0FBQzNDO0FBQ1A7QUFDQTtBQUNBLFlBQVksMEVBQW9CO0FBQ2hDO0FBQ0E7QUFDQTtBQUNPO0FBQ1AscUNBQXFDLHNFQUFvQixFQUFFLHdFQUFtQjtBQUM5RTs7QUFFQTtBQUNBLFVBQVUsd0VBQXFCLFdBQVcsNEVBQW1CO0FBQzdEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQyxlQUFlO0FBQ25EOztBQUVBOztBQUVBO0FBQ0EsdUNBQXVDLGtCQUFrQjtBQUN6RDs7QUFFQTs7QUFFQTtBQUNBLDJDQUEyQyxzQkFBc0I7QUFDakU7O0FBRUEsNkNBQTZDLElBQUksMEJBQTBCLEdBQUc7QUFDOUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVPO0FBQ1AsTUFBTSxrRUFBWTtBQUNsQjtBQUNBOztBQUVBLE1BQU0sa0VBQVk7QUFDbEI7QUFDQTs7QUFFQSxNQUFNLHFFQUFlO0FBQ3JCO0FBQ0E7O0FBRUEsTUFBTSxpRUFBVztBQUNqQjtBQUNBOztBQUVBLE1BQU0sZ0VBQVU7QUFDaEI7QUFDQTs7QUFFQSxNQUFNLHVFQUFpQjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxFQUFFLE1BQUssSUFBSSxpRUFBUyw4QkFBOEIsNkRBQU87QUFDekQ7O0FBRUE7QUFDQTtBQUNBLHVDQUF1QyxVQUFVO0FBQ2pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVksVUFBVTtBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsVUFBVTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMENBQTBDLFVBQVU7QUFDcEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsVUFBVTtBQUNyRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlDQUFpQyw2QkFBNkI7QUFDOUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsK0RBQVk7QUFDakM7O0FBRUE7QUFDQSxxQkFBcUIsNERBQUssYUFBYTtBQUN2Qzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLDRFQUEwQjtBQUMzQyxxQkFBcUIsNERBQUs7QUFDMUIsWUFBWSw0REFBVztBQUN2QjtBQUNBLEtBQUs7QUFDTCxtQ0FBbUMsU0FBUztBQUM1Qzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQiw0REFBSztBQUN4QixVQUFVLDREQUFXO0FBQ3JCO0FBQ0EsR0FBRztBQUNILCtCQUErQixTQUFTO0FBQ3hDOztBQUVBO0FBQ0EsVUFBVSxjQUFjOztBQUV4QjtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCLDREQUFLO0FBQzNCLFVBQVUsNERBQVc7QUFDckI7QUFDQSxXQUFXLG1GQUF3QjtBQUNuQyxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3ByaW50U2NoZW1hLm1qcz8xODUxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IGludmFyaWFudCB9IGZyb20gJy4uL2pzdXRpbHMvaW52YXJpYW50Lm1qcyc7XG5pbXBvcnQgeyBpc1ByaW50YWJsZUFzQmxvY2tTdHJpbmcgfSBmcm9tICcuLi9sYW5ndWFnZS9ibG9ja1N0cmluZy5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5pbXBvcnQgeyBwcmludCB9IGZyb20gJy4uL2xhbmd1YWdlL3ByaW50ZXIubWpzJztcbmltcG9ydCB7XG4gIGlzRW51bVR5cGUsXG4gIGlzSW5wdXRPYmplY3RUeXBlLFxuICBpc0ludGVyZmFjZVR5cGUsXG4gIGlzT2JqZWN0VHlwZSxcbiAgaXNTY2FsYXJUeXBlLFxuICBpc1VuaW9uVHlwZSxcbn0gZnJvbSAnLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5pbXBvcnQge1xuICBERUZBVUxUX0RFUFJFQ0FUSU9OX1JFQVNPTixcbiAgaXNTcGVjaWZpZWREaXJlY3RpdmUsXG59IGZyb20gJy4uL3R5cGUvZGlyZWN0aXZlcy5tanMnO1xuaW1wb3J0IHsgaXNJbnRyb3NwZWN0aW9uVHlwZSB9IGZyb20gJy4uL3R5cGUvaW50cm9zcGVjdGlvbi5tanMnO1xuaW1wb3J0IHsgaXNTcGVjaWZpZWRTY2FsYXJUeXBlIH0gZnJvbSAnLi4vdHlwZS9zY2FsYXJzLm1qcyc7XG5pbXBvcnQgeyBhc3RGcm9tVmFsdWUgfSBmcm9tICcuL2FzdEZyb21WYWx1ZS5tanMnO1xuZXhwb3J0IGZ1bmN0aW9uIHByaW50U2NoZW1hKHNjaGVtYSkge1xuICByZXR1cm4gcHJpbnRGaWx0ZXJlZFNjaGVtYShcbiAgICBzY2hlbWEsXG4gICAgKG4pID0+ICFpc1NwZWNpZmllZERpcmVjdGl2ZShuKSxcbiAgICBpc0RlZmluZWRUeXBlLFxuICApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHByaW50SW50cm9zcGVjdGlvblNjaGVtYShzY2hlbWEpIHtcbiAgcmV0dXJuIHByaW50RmlsdGVyZWRTY2hlbWEoc2NoZW1hLCBpc1NwZWNpZmllZERpcmVjdGl2ZSwgaXNJbnRyb3NwZWN0aW9uVHlwZSk7XG59XG5cbmZ1bmN0aW9uIGlzRGVmaW5lZFR5cGUodHlwZSkge1xuICByZXR1cm4gIWlzU3BlY2lmaWVkU2NhbGFyVHlwZSh0eXBlKSAmJiAhaXNJbnRyb3NwZWN0aW9uVHlwZSh0eXBlKTtcbn1cblxuZnVuY3Rpb24gcHJpbnRGaWx0ZXJlZFNjaGVtYShzY2hlbWEsIGRpcmVjdGl2ZUZpbHRlciwgdHlwZUZpbHRlcikge1xuICBjb25zdCBkaXJlY3RpdmVzID0gc2NoZW1hLmdldERpcmVjdGl2ZXMoKS5maWx0ZXIoZGlyZWN0aXZlRmlsdGVyKTtcbiAgY29uc3QgdHlwZXMgPSBPYmplY3QudmFsdWVzKHNjaGVtYS5nZXRUeXBlTWFwKCkpLmZpbHRlcih0eXBlRmlsdGVyKTtcbiAgcmV0dXJuIFtcbiAgICBwcmludFNjaGVtYURlZmluaXRpb24oc2NoZW1hKSxcbiAgICAuLi5kaXJlY3RpdmVzLm1hcCgoZGlyZWN0aXZlKSA9PiBwcmludERpcmVjdGl2ZShkaXJlY3RpdmUpKSxcbiAgICAuLi50eXBlcy5tYXAoKHR5cGUpID0+IHByaW50VHlwZSh0eXBlKSksXG4gIF1cbiAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgLmpvaW4oJ1xcblxcbicpO1xufVxuXG5mdW5jdGlvbiBwcmludFNjaGVtYURlZmluaXRpb24oc2NoZW1hKSB7XG4gIGlmIChzY2hlbWEuZGVzY3JpcHRpb24gPT0gbnVsbCAmJiBpc1NjaGVtYU9mQ29tbW9uTmFtZXMoc2NoZW1hKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG9wZXJhdGlvblR5cGVzID0gW107XG4gIGNvbnN0IHF1ZXJ5VHlwZSA9IHNjaGVtYS5nZXRRdWVyeVR5cGUoKTtcblxuICBpZiAocXVlcnlUeXBlKSB7XG4gICAgb3BlcmF0aW9uVHlwZXMucHVzaChgICBxdWVyeTogJHtxdWVyeVR5cGUubmFtZX1gKTtcbiAgfVxuXG4gIGNvbnN0IG11dGF0aW9uVHlwZSA9IHNjaGVtYS5nZXRNdXRhdGlvblR5cGUoKTtcblxuICBpZiAobXV0YXRpb25UeXBlKSB7XG4gICAgb3BlcmF0aW9uVHlwZXMucHVzaChgICBtdXRhdGlvbjogJHttdXRhdGlvblR5cGUubmFtZX1gKTtcbiAgfVxuXG4gIGNvbnN0IHN1YnNjcmlwdGlvblR5cGUgPSBzY2hlbWEuZ2V0U3Vic2NyaXB0aW9uVHlwZSgpO1xuXG4gIGlmIChzdWJzY3JpcHRpb25UeXBlKSB7XG4gICAgb3BlcmF0aW9uVHlwZXMucHVzaChgICBzdWJzY3JpcHRpb246ICR7c3Vic2NyaXB0aW9uVHlwZS5uYW1lfWApO1xuICB9XG5cbiAgcmV0dXJuIHByaW50RGVzY3JpcHRpb24oc2NoZW1hKSArIGBzY2hlbWEge1xcbiR7b3BlcmF0aW9uVHlwZXMuam9pbignXFxuJyl9XFxufWA7XG59XG4vKipcbiAqIEdyYXBoUUwgc2NoZW1hIGRlZmluZSByb290IHR5cGVzIGZvciBlYWNoIHR5cGUgb2Ygb3BlcmF0aW9uLiBUaGVzZSB0eXBlcyBhcmVcbiAqIHRoZSBzYW1lIGFzIGFueSBvdGhlciB0eXBlIGFuZCBjYW4gYmUgbmFtZWQgaW4gYW55IG1hbm5lciwgaG93ZXZlciB0aGVyZSBpc1xuICogYSBjb21tb24gbmFtaW5nIGNvbnZlbnRpb246XG4gKlxuICogYGBgZ3JhcGhxbFxuICogICBzY2hlbWEge1xuICogICAgIHF1ZXJ5OiBRdWVyeVxuICogICAgIG11dGF0aW9uOiBNdXRhdGlvblxuICogICAgIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uXG4gKiAgIH1cbiAqIGBgYFxuICpcbiAqIFdoZW4gdXNpbmcgdGhpcyBuYW1pbmcgY29udmVudGlvbiwgdGhlIHNjaGVtYSBkZXNjcmlwdGlvbiBjYW4gYmUgb21pdHRlZC5cbiAqL1xuXG5mdW5jdGlvbiBpc1NjaGVtYU9mQ29tbW9uTmFtZXMoc2NoZW1hKSB7XG4gIGNvbnN0IHF1ZXJ5VHlwZSA9IHNjaGVtYS5nZXRRdWVyeVR5cGUoKTtcblxuICBpZiAocXVlcnlUeXBlICYmIHF1ZXJ5VHlwZS5uYW1lICE9PSAnUXVlcnknKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgbXV0YXRpb25UeXBlID0gc2NoZW1hLmdldE11dGF0aW9uVHlwZSgpO1xuXG4gIGlmIChtdXRhdGlvblR5cGUgJiYgbXV0YXRpb25UeXBlLm5hbWUgIT09ICdNdXRhdGlvbicpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBzdWJzY3JpcHRpb25UeXBlID0gc2NoZW1hLmdldFN1YnNjcmlwdGlvblR5cGUoKTtcblxuICBpZiAoc3Vic2NyaXB0aW9uVHlwZSAmJiBzdWJzY3JpcHRpb25UeXBlLm5hbWUgIT09ICdTdWJzY3JpcHRpb24nKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludFR5cGUodHlwZSkge1xuICBpZiAoaXNTY2FsYXJUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIHByaW50U2NhbGFyKHR5cGUpO1xuICB9XG5cbiAgaWYgKGlzT2JqZWN0VHlwZSh0eXBlKSkge1xuICAgIHJldHVybiBwcmludE9iamVjdCh0eXBlKTtcbiAgfVxuXG4gIGlmIChpc0ludGVyZmFjZVR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gcHJpbnRJbnRlcmZhY2UodHlwZSk7XG4gIH1cblxuICBpZiAoaXNVbmlvblR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gcHJpbnRVbmlvbih0eXBlKTtcbiAgfVxuXG4gIGlmIChpc0VudW1UeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIHByaW50RW51bSh0eXBlKTtcbiAgfVxuXG4gIGlmIChpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSkge1xuICAgIHJldHVybiBwcmludElucHV0T2JqZWN0KHR5cGUpO1xuICB9XG4gIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbiAgLy8gTm90IHJlYWNoYWJsZSwgYWxsIHBvc3NpYmxlIHR5cGVzIGhhdmUgYmVlbiBjb25zaWRlcmVkLlxuXG4gIGZhbHNlIHx8IGludmFyaWFudChmYWxzZSwgJ1VuZXhwZWN0ZWQgdHlwZTogJyArIGluc3BlY3QodHlwZSkpO1xufVxuXG5mdW5jdGlvbiBwcmludFNjYWxhcih0eXBlKSB7XG4gIHJldHVybiAoXG4gICAgcHJpbnREZXNjcmlwdGlvbih0eXBlKSArIGBzY2FsYXIgJHt0eXBlLm5hbWV9YCArIHByaW50U3BlY2lmaWVkQnlVUkwodHlwZSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gcHJpbnRJbXBsZW1lbnRlZEludGVyZmFjZXModHlwZSkge1xuICBjb25zdCBpbnRlcmZhY2VzID0gdHlwZS5nZXRJbnRlcmZhY2VzKCk7XG4gIHJldHVybiBpbnRlcmZhY2VzLmxlbmd0aFxuICAgID8gJyBpbXBsZW1lbnRzICcgKyBpbnRlcmZhY2VzLm1hcCgoaSkgPT4gaS5uYW1lKS5qb2luKCcgJiAnKVxuICAgIDogJyc7XG59XG5cbmZ1bmN0aW9uIHByaW50T2JqZWN0KHR5cGUpIHtcbiAgcmV0dXJuIChcbiAgICBwcmludERlc2NyaXB0aW9uKHR5cGUpICtcbiAgICBgdHlwZSAke3R5cGUubmFtZX1gICtcbiAgICBwcmludEltcGxlbWVudGVkSW50ZXJmYWNlcyh0eXBlKSArXG4gICAgcHJpbnRGaWVsZHModHlwZSlcbiAgKTtcbn1cblxuZnVuY3Rpb24gcHJpbnRJbnRlcmZhY2UodHlwZSkge1xuICByZXR1cm4gKFxuICAgIHByaW50RGVzY3JpcHRpb24odHlwZSkgK1xuICAgIGBpbnRlcmZhY2UgJHt0eXBlLm5hbWV9YCArXG4gICAgcHJpbnRJbXBsZW1lbnRlZEludGVyZmFjZXModHlwZSkgK1xuICAgIHByaW50RmllbGRzKHR5cGUpXG4gICk7XG59XG5cbmZ1bmN0aW9uIHByaW50VW5pb24odHlwZSkge1xuICBjb25zdCB0eXBlcyA9IHR5cGUuZ2V0VHlwZXMoKTtcbiAgY29uc3QgcG9zc2libGVUeXBlcyA9IHR5cGVzLmxlbmd0aCA/ICcgPSAnICsgdHlwZXMuam9pbignIHwgJykgOiAnJztcbiAgcmV0dXJuIHByaW50RGVzY3JpcHRpb24odHlwZSkgKyAndW5pb24gJyArIHR5cGUubmFtZSArIHBvc3NpYmxlVHlwZXM7XG59XG5cbmZ1bmN0aW9uIHByaW50RW51bSh0eXBlKSB7XG4gIGNvbnN0IHZhbHVlcyA9IHR5cGVcbiAgICAuZ2V0VmFsdWVzKClcbiAgICAubWFwKFxuICAgICAgKHZhbHVlLCBpKSA9PlxuICAgICAgICBwcmludERlc2NyaXB0aW9uKHZhbHVlLCAnICAnLCAhaSkgK1xuICAgICAgICAnICAnICtcbiAgICAgICAgdmFsdWUubmFtZSArXG4gICAgICAgIHByaW50RGVwcmVjYXRlZCh2YWx1ZS5kZXByZWNhdGlvblJlYXNvbiksXG4gICAgKTtcbiAgcmV0dXJuIHByaW50RGVzY3JpcHRpb24odHlwZSkgKyBgZW51bSAke3R5cGUubmFtZX1gICsgcHJpbnRCbG9jayh2YWx1ZXMpO1xufVxuXG5mdW5jdGlvbiBwcmludElucHV0T2JqZWN0KHR5cGUpIHtcbiAgY29uc3QgZmllbGRzID0gT2JqZWN0LnZhbHVlcyh0eXBlLmdldEZpZWxkcygpKS5tYXAoXG4gICAgKGYsIGkpID0+IHByaW50RGVzY3JpcHRpb24oZiwgJyAgJywgIWkpICsgJyAgJyArIHByaW50SW5wdXRWYWx1ZShmKSxcbiAgKTtcbiAgcmV0dXJuIHByaW50RGVzY3JpcHRpb24odHlwZSkgKyBgaW5wdXQgJHt0eXBlLm5hbWV9YCArIHByaW50QmxvY2soZmllbGRzKTtcbn1cblxuZnVuY3Rpb24gcHJpbnRGaWVsZHModHlwZSkge1xuICBjb25zdCBmaWVsZHMgPSBPYmplY3QudmFsdWVzKHR5cGUuZ2V0RmllbGRzKCkpLm1hcChcbiAgICAoZiwgaSkgPT5cbiAgICAgIHByaW50RGVzY3JpcHRpb24oZiwgJyAgJywgIWkpICtcbiAgICAgICcgICcgK1xuICAgICAgZi5uYW1lICtcbiAgICAgIHByaW50QXJncyhmLmFyZ3MsICcgICcpICtcbiAgICAgICc6ICcgK1xuICAgICAgU3RyaW5nKGYudHlwZSkgK1xuICAgICAgcHJpbnREZXByZWNhdGVkKGYuZGVwcmVjYXRpb25SZWFzb24pLFxuICApO1xuICByZXR1cm4gcHJpbnRCbG9jayhmaWVsZHMpO1xufVxuXG5mdW5jdGlvbiBwcmludEJsb2NrKGl0ZW1zKSB7XG4gIHJldHVybiBpdGVtcy5sZW5ndGggIT09IDAgPyAnIHtcXG4nICsgaXRlbXMuam9pbignXFxuJykgKyAnXFxufScgOiAnJztcbn1cblxuZnVuY3Rpb24gcHJpbnRBcmdzKGFyZ3MsIGluZGVudGF0aW9uID0gJycpIHtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICcnO1xuICB9IC8vIElmIGV2ZXJ5IGFyZyBkb2VzIG5vdCBoYXZlIGEgZGVzY3JpcHRpb24sIHByaW50IHRoZW0gb24gb25lIGxpbmUuXG5cbiAgaWYgKGFyZ3MuZXZlcnkoKGFyZykgPT4gIWFyZy5kZXNjcmlwdGlvbikpIHtcbiAgICByZXR1cm4gJygnICsgYXJncy5tYXAocHJpbnRJbnB1dFZhbHVlKS5qb2luKCcsICcpICsgJyknO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICAnKFxcbicgK1xuICAgIGFyZ3NcbiAgICAgIC5tYXAoXG4gICAgICAgIChhcmcsIGkpID0+XG4gICAgICAgICAgcHJpbnREZXNjcmlwdGlvbihhcmcsICcgICcgKyBpbmRlbnRhdGlvbiwgIWkpICtcbiAgICAgICAgICAnICAnICtcbiAgICAgICAgICBpbmRlbnRhdGlvbiArXG4gICAgICAgICAgcHJpbnRJbnB1dFZhbHVlKGFyZyksXG4gICAgICApXG4gICAgICAuam9pbignXFxuJykgK1xuICAgICdcXG4nICtcbiAgICBpbmRlbnRhdGlvbiArXG4gICAgJyknXG4gICk7XG59XG5cbmZ1bmN0aW9uIHByaW50SW5wdXRWYWx1ZShhcmcpIHtcbiAgY29uc3QgZGVmYXVsdEFTVCA9IGFzdEZyb21WYWx1ZShhcmcuZGVmYXVsdFZhbHVlLCBhcmcudHlwZSk7XG4gIGxldCBhcmdEZWNsID0gYXJnLm5hbWUgKyAnOiAnICsgU3RyaW5nKGFyZy50eXBlKTtcblxuICBpZiAoZGVmYXVsdEFTVCkge1xuICAgIGFyZ0RlY2wgKz0gYCA9ICR7cHJpbnQoZGVmYXVsdEFTVCl9YDtcbiAgfVxuXG4gIHJldHVybiBhcmdEZWNsICsgcHJpbnREZXByZWNhdGVkKGFyZy5kZXByZWNhdGlvblJlYXNvbik7XG59XG5cbmZ1bmN0aW9uIHByaW50RGlyZWN0aXZlKGRpcmVjdGl2ZSkge1xuICByZXR1cm4gKFxuICAgIHByaW50RGVzY3JpcHRpb24oZGlyZWN0aXZlKSArXG4gICAgJ2RpcmVjdGl2ZSBAJyArXG4gICAgZGlyZWN0aXZlLm5hbWUgK1xuICAgIHByaW50QXJncyhkaXJlY3RpdmUuYXJncykgK1xuICAgIChkaXJlY3RpdmUuaXNSZXBlYXRhYmxlID8gJyByZXBlYXRhYmxlJyA6ICcnKSArXG4gICAgJyBvbiAnICtcbiAgICBkaXJlY3RpdmUubG9jYXRpb25zLmpvaW4oJyB8ICcpXG4gICk7XG59XG5cbmZ1bmN0aW9uIHByaW50RGVwcmVjYXRlZChyZWFzb24pIHtcbiAgaWYgKHJlYXNvbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgaWYgKHJlYXNvbiAhPT0gREVGQVVMVF9ERVBSRUNBVElPTl9SRUFTT04pIHtcbiAgICBjb25zdCBhc3RWYWx1ZSA9IHByaW50KHtcbiAgICAgIGtpbmQ6IEtpbmQuU1RSSU5HLFxuICAgICAgdmFsdWU6IHJlYXNvbixcbiAgICB9KTtcbiAgICByZXR1cm4gYCBAZGVwcmVjYXRlZChyZWFzb246ICR7YXN0VmFsdWV9KWA7XG4gIH1cblxuICByZXR1cm4gJyBAZGVwcmVjYXRlZCc7XG59XG5cbmZ1bmN0aW9uIHByaW50U3BlY2lmaWVkQnlVUkwoc2NhbGFyKSB7XG4gIGlmIChzY2FsYXIuc3BlY2lmaWVkQnlVUkwgPT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGNvbnN0IGFzdFZhbHVlID0gcHJpbnQoe1xuICAgIGtpbmQ6IEtpbmQuU1RSSU5HLFxuICAgIHZhbHVlOiBzY2FsYXIuc3BlY2lmaWVkQnlVUkwsXG4gIH0pO1xuICByZXR1cm4gYCBAc3BlY2lmaWVkQnkodXJsOiAke2FzdFZhbHVlfSlgO1xufVxuXG5mdW5jdGlvbiBwcmludERlc2NyaXB0aW9uKGRlZiwgaW5kZW50YXRpb24gPSAnJywgZmlyc3RJbkJsb2NrID0gdHJ1ZSkge1xuICBjb25zdCB7IGRlc2NyaXB0aW9uIH0gPSBkZWY7XG5cbiAgaWYgKGRlc2NyaXB0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdCBibG9ja1N0cmluZyA9IHByaW50KHtcbiAgICBraW5kOiBLaW5kLlNUUklORyxcbiAgICB2YWx1ZTogZGVzY3JpcHRpb24sXG4gICAgYmxvY2s6IGlzUHJpbnRhYmxlQXNCbG9ja1N0cmluZyhkZXNjcmlwdGlvbiksXG4gIH0pO1xuICBjb25zdCBwcmVmaXggPVxuICAgIGluZGVudGF0aW9uICYmICFmaXJzdEluQmxvY2sgPyAnXFxuJyArIGluZGVudGF0aW9uIDogaW5kZW50YXRpb247XG4gIHJldHVybiBwcmVmaXggKyBibG9ja1N0cmluZy5yZXBsYWNlKC9cXG4vZywgJ1xcbicgKyBpbmRlbnRhdGlvbikgKyAnXFxuJztcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/printSchema.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/separateOperations.mjs":
/*!***************************************************************!*\
  !*** ./node_modules/graphql/utilities/separateOperations.mjs ***!
  \***************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"separateOperations\": function() { return /* binding */ separateOperations; }\n/* harmony export */ });\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_visitor_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/visitor.mjs */ \"./node_modules/graphql/language/visitor.mjs\");\n\n\n/**\n * separateOperations accepts a single AST document which may contain many\n * operations and fragments and returns a collection of AST documents each of\n * which contains a single operation as well the fragment definitions it\n * refers to.\n */\n\nfunction separateOperations(documentAST) {\n  const operations = [];\n  const depGraph = Object.create(null); // Populate metadata and build a dependency graph.\n\n  for (const definitionNode of documentAST.definitions) {\n    switch (definitionNode.kind) {\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.OPERATION_DEFINITION:\n        operations.push(definitionNode);\n        break;\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.FRAGMENT_DEFINITION:\n        depGraph[definitionNode.name.value] = collectDependencies(\n          definitionNode.selectionSet,\n        );\n        break;\n\n      default: // ignore non-executable definitions\n    }\n  } // For each operation, produce a new synthesized AST which includes only what\n  // is necessary for completing that operation.\n\n  const separatedDocumentASTs = Object.create(null);\n\n  for (const operation of operations) {\n    const dependencies = new Set();\n\n    for (const fragmentName of collectDependencies(operation.selectionSet)) {\n      collectTransitiveDependencies(dependencies, depGraph, fragmentName);\n    } // Provides the empty string for anonymous operations.\n\n    const operationName = operation.name ? operation.name.value : ''; // The list of definition nodes to be included for this operation, sorted\n    // to retain the same order as the original document.\n\n    separatedDocumentASTs[operationName] = {\n      kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.DOCUMENT,\n      definitions: documentAST.definitions.filter(\n        (node) =>\n          node === operation ||\n          (node.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.FRAGMENT_DEFINITION &&\n            dependencies.has(node.name.value)),\n      ),\n    };\n  }\n\n  return separatedDocumentASTs;\n}\n\n// From a dependency graph, collects a list of transitive dependencies by\n// recursing through a dependency graph.\nfunction collectTransitiveDependencies(collected, depGraph, fromName) {\n  if (!collected.has(fromName)) {\n    collected.add(fromName);\n    const immediateDeps = depGraph[fromName];\n\n    if (immediateDeps !== undefined) {\n      for (const toName of immediateDeps) {\n        collectTransitiveDependencies(collected, depGraph, toName);\n      }\n    }\n  }\n}\n\nfunction collectDependencies(selectionSet) {\n  const dependencies = [];\n  (0,_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_1__.visit)(selectionSet, {\n    FragmentSpread(node) {\n      dependencies.push(node.name.value);\n    },\n  });\n  return dependencies;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvc2VwYXJhdGVPcGVyYXRpb25zLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBNkM7QUFDRztBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBLFdBQVcsMEVBQXlCO0FBQ3BDO0FBQ0E7O0FBRUEsV0FBVyx5RUFBd0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNOztBQUVOLHNFQUFzRTtBQUN0RTs7QUFFQTtBQUNBLFlBQVksOERBQWE7QUFDekI7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLHlFQUF3QjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRSw0REFBSztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3NlcGFyYXRlT3BlcmF0aW9ucy5tanM/YWM1MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbmltcG9ydCB7IHZpc2l0IH0gZnJvbSAnLi4vbGFuZ3VhZ2UvdmlzaXRvci5tanMnO1xuLyoqXG4gKiBzZXBhcmF0ZU9wZXJhdGlvbnMgYWNjZXB0cyBhIHNpbmdsZSBBU1QgZG9jdW1lbnQgd2hpY2ggbWF5IGNvbnRhaW4gbWFueVxuICogb3BlcmF0aW9ucyBhbmQgZnJhZ21lbnRzIGFuZCByZXR1cm5zIGEgY29sbGVjdGlvbiBvZiBBU1QgZG9jdW1lbnRzIGVhY2ggb2ZcbiAqIHdoaWNoIGNvbnRhaW5zIGEgc2luZ2xlIG9wZXJhdGlvbiBhcyB3ZWxsIHRoZSBmcmFnbWVudCBkZWZpbml0aW9ucyBpdFxuICogcmVmZXJzIHRvLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBzZXBhcmF0ZU9wZXJhdGlvbnMoZG9jdW1lbnRBU1QpIHtcbiAgY29uc3Qgb3BlcmF0aW9ucyA9IFtdO1xuICBjb25zdCBkZXBHcmFwaCA9IE9iamVjdC5jcmVhdGUobnVsbCk7IC8vIFBvcHVsYXRlIG1ldGFkYXRhIGFuZCBidWlsZCBhIGRlcGVuZGVuY3kgZ3JhcGguXG5cbiAgZm9yIChjb25zdCBkZWZpbml0aW9uTm9kZSBvZiBkb2N1bWVudEFTVC5kZWZpbml0aW9ucykge1xuICAgIHN3aXRjaCAoZGVmaW5pdGlvbk5vZGUua2luZCkge1xuICAgICAgY2FzZSBLaW5kLk9QRVJBVElPTl9ERUZJTklUSU9OOlxuICAgICAgICBvcGVyYXRpb25zLnB1c2goZGVmaW5pdGlvbk5vZGUpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBLaW5kLkZSQUdNRU5UX0RFRklOSVRJT046XG4gICAgICAgIGRlcEdyYXBoW2RlZmluaXRpb25Ob2RlLm5hbWUudmFsdWVdID0gY29sbGVjdERlcGVuZGVuY2llcyhcbiAgICAgICAgICBkZWZpbml0aW9uTm9kZS5zZWxlY3Rpb25TZXQsXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OiAvLyBpZ25vcmUgbm9uLWV4ZWN1dGFibGUgZGVmaW5pdGlvbnNcbiAgICB9XG4gIH0gLy8gRm9yIGVhY2ggb3BlcmF0aW9uLCBwcm9kdWNlIGEgbmV3IHN5bnRoZXNpemVkIEFTVCB3aGljaCBpbmNsdWRlcyBvbmx5IHdoYXRcbiAgLy8gaXMgbmVjZXNzYXJ5IGZvciBjb21wbGV0aW5nIHRoYXQgb3BlcmF0aW9uLlxuXG4gIGNvbnN0IHNlcGFyYXRlZERvY3VtZW50QVNUcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgZm9yIChjb25zdCBvcGVyYXRpb24gb2Ygb3BlcmF0aW9ucykge1xuICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IG5ldyBTZXQoKTtcblxuICAgIGZvciAoY29uc3QgZnJhZ21lbnROYW1lIG9mIGNvbGxlY3REZXBlbmRlbmNpZXMob3BlcmF0aW9uLnNlbGVjdGlvblNldCkpIHtcbiAgICAgIGNvbGxlY3RUcmFuc2l0aXZlRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcywgZGVwR3JhcGgsIGZyYWdtZW50TmFtZSk7XG4gICAgfSAvLyBQcm92aWRlcyB0aGUgZW1wdHkgc3RyaW5nIGZvciBhbm9ueW1vdXMgb3BlcmF0aW9ucy5cblxuICAgIGNvbnN0IG9wZXJhdGlvbk5hbWUgPSBvcGVyYXRpb24ubmFtZSA/IG9wZXJhdGlvbi5uYW1lLnZhbHVlIDogJyc7IC8vIFRoZSBsaXN0IG9mIGRlZmluaXRpb24gbm9kZXMgdG8gYmUgaW5jbHVkZWQgZm9yIHRoaXMgb3BlcmF0aW9uLCBzb3J0ZWRcbiAgICAvLyB0byByZXRhaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIG9yaWdpbmFsIGRvY3VtZW50LlxuXG4gICAgc2VwYXJhdGVkRG9jdW1lbnRBU1RzW29wZXJhdGlvbk5hbWVdID0ge1xuICAgICAga2luZDogS2luZC5ET0NVTUVOVCxcbiAgICAgIGRlZmluaXRpb25zOiBkb2N1bWVudEFTVC5kZWZpbml0aW9ucy5maWx0ZXIoXG4gICAgICAgIChub2RlKSA9PlxuICAgICAgICAgIG5vZGUgPT09IG9wZXJhdGlvbiB8fFxuICAgICAgICAgIChub2RlLmtpbmQgPT09IEtpbmQuRlJBR01FTlRfREVGSU5JVElPTiAmJlxuICAgICAgICAgICAgZGVwZW5kZW5jaWVzLmhhcyhub2RlLm5hbWUudmFsdWUpKSxcbiAgICAgICksXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBzZXBhcmF0ZWREb2N1bWVudEFTVHM7XG59XG5cbi8vIEZyb20gYSBkZXBlbmRlbmN5IGdyYXBoLCBjb2xsZWN0cyBhIGxpc3Qgb2YgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXMgYnlcbi8vIHJlY3Vyc2luZyB0aHJvdWdoIGEgZGVwZW5kZW5jeSBncmFwaC5cbmZ1bmN0aW9uIGNvbGxlY3RUcmFuc2l0aXZlRGVwZW5kZW5jaWVzKGNvbGxlY3RlZCwgZGVwR3JhcGgsIGZyb21OYW1lKSB7XG4gIGlmICghY29sbGVjdGVkLmhhcyhmcm9tTmFtZSkpIHtcbiAgICBjb2xsZWN0ZWQuYWRkKGZyb21OYW1lKTtcbiAgICBjb25zdCBpbW1lZGlhdGVEZXBzID0gZGVwR3JhcGhbZnJvbU5hbWVdO1xuXG4gICAgaWYgKGltbWVkaWF0ZURlcHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCB0b05hbWUgb2YgaW1tZWRpYXRlRGVwcykge1xuICAgICAgICBjb2xsZWN0VHJhbnNpdGl2ZURlcGVuZGVuY2llcyhjb2xsZWN0ZWQsIGRlcEdyYXBoLCB0b05hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjb2xsZWN0RGVwZW5kZW5jaWVzKHNlbGVjdGlvblNldCkge1xuICBjb25zdCBkZXBlbmRlbmNpZXMgPSBbXTtcbiAgdmlzaXQoc2VsZWN0aW9uU2V0LCB7XG4gICAgRnJhZ21lbnRTcHJlYWQobm9kZSkge1xuICAgICAgZGVwZW5kZW5jaWVzLnB1c2gobm9kZS5uYW1lLnZhbHVlKTtcbiAgICB9LFxuICB9KTtcbiAgcmV0dXJuIGRlcGVuZGVuY2llcztcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/separateOperations.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/sortValueNode.mjs":
/*!**********************************************************!*\
  !*** ./node_modules/graphql/utilities/sortValueNode.mjs ***!
  \**********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"sortValueNode\": function() { return /* binding */ sortValueNode; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/naturalCompare.mjs */ \"./node_modules/graphql/jsutils/naturalCompare.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n\n\n/**\n * Sort ValueNode.\n *\n * This function returns a sorted copy of the given ValueNode.\n *\n * @internal\n */\n\nfunction sortValueNode(valueNode) {\n  switch (valueNode.kind) {\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.OBJECT:\n      return { ...valueNode, fields: sortFields(valueNode.fields) };\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.LIST:\n      return { ...valueNode, values: valueNode.values.map(sortValueNode) };\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.INT:\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.FLOAT:\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.STRING:\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.BOOLEAN:\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.NULL:\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.ENUM:\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.VARIABLE:\n      return valueNode;\n  }\n}\n\nfunction sortFields(fields) {\n  return fields\n    .map((fieldNode) => ({\n      ...fieldNode,\n      value: sortValueNode(fieldNode.value),\n    }))\n    .sort((fieldA, fieldB) =>\n      (0,_jsutils_naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_1__.naturalCompare)(fieldA.name.value, fieldB.name.value),\n    );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvc29ydFZhbHVlTm9kZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQStEO0FBQ2xCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQSxTQUFTLDREQUFXO0FBQ3BCLGVBQWU7O0FBRWYsU0FBUywwREFBUztBQUNsQixlQUFlOztBQUVmLFNBQVMseURBQVE7QUFDakIsU0FBUywyREFBVTtBQUNuQixTQUFTLDREQUFXO0FBQ3BCLFNBQVMsNkRBQVk7QUFDckIsU0FBUywwREFBUztBQUNsQixTQUFTLDBEQUFTO0FBQ2xCLFNBQVMsOERBQWE7QUFDdEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxNQUFNLDJFQUFjO0FBQ3BCO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3NvcnRWYWx1ZU5vZGUubWpzPzhhZTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbmF0dXJhbENvbXBhcmUgfSBmcm9tICcuLi9qc3V0aWxzL25hdHVyYWxDb21wYXJlLm1qcyc7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbi8qKlxuICogU29ydCBWYWx1ZU5vZGUuXG4gKlxuICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgc29ydGVkIGNvcHkgb2YgdGhlIGdpdmVuIFZhbHVlTm9kZS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc29ydFZhbHVlTm9kZSh2YWx1ZU5vZGUpIHtcbiAgc3dpdGNoICh2YWx1ZU5vZGUua2luZCkge1xuICAgIGNhc2UgS2luZC5PQkpFQ1Q6XG4gICAgICByZXR1cm4geyAuLi52YWx1ZU5vZGUsIGZpZWxkczogc29ydEZpZWxkcyh2YWx1ZU5vZGUuZmllbGRzKSB9O1xuXG4gICAgY2FzZSBLaW5kLkxJU1Q6XG4gICAgICByZXR1cm4geyAuLi52YWx1ZU5vZGUsIHZhbHVlczogdmFsdWVOb2RlLnZhbHVlcy5tYXAoc29ydFZhbHVlTm9kZSkgfTtcblxuICAgIGNhc2UgS2luZC5JTlQ6XG4gICAgY2FzZSBLaW5kLkZMT0FUOlxuICAgIGNhc2UgS2luZC5TVFJJTkc6XG4gICAgY2FzZSBLaW5kLkJPT0xFQU46XG4gICAgY2FzZSBLaW5kLk5VTEw6XG4gICAgY2FzZSBLaW5kLkVOVU06XG4gICAgY2FzZSBLaW5kLlZBUklBQkxFOlxuICAgICAgcmV0dXJuIHZhbHVlTm9kZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzb3J0RmllbGRzKGZpZWxkcykge1xuICByZXR1cm4gZmllbGRzXG4gICAgLm1hcCgoZmllbGROb2RlKSA9PiAoe1xuICAgICAgLi4uZmllbGROb2RlLFxuICAgICAgdmFsdWU6IHNvcnRWYWx1ZU5vZGUoZmllbGROb2RlLnZhbHVlKSxcbiAgICB9KSlcbiAgICAuc29ydCgoZmllbGRBLCBmaWVsZEIpID0+XG4gICAgICBuYXR1cmFsQ29tcGFyZShmaWVsZEEubmFtZS52YWx1ZSwgZmllbGRCLm5hbWUudmFsdWUpLFxuICAgICk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/sortValueNode.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/stripIgnoredCharacters.mjs":
/*!*******************************************************************!*\
  !*** ./node_modules/graphql/utilities/stripIgnoredCharacters.mjs ***!
  \*******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"stripIgnoredCharacters\": function() { return /* binding */ stripIgnoredCharacters; }\n/* harmony export */ });\n/* harmony import */ var _language_blockString_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../language/blockString.mjs */ \"./node_modules/graphql/language/blockString.mjs\");\n/* harmony import */ var _language_lexer_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../language/lexer.mjs */ \"./node_modules/graphql/language/lexer.mjs\");\n/* harmony import */ var _language_source_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/source.mjs */ \"./node_modules/graphql/language/source.mjs\");\n/* harmony import */ var _language_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/tokenKind.mjs */ \"./node_modules/graphql/language/tokenKind.mjs\");\n\n\n\n\n/**\n * Strips characters that are not significant to the validity or execution\n * of a GraphQL document:\n *   - UnicodeBOM\n *   - WhiteSpace\n *   - LineTerminator\n *   - Comment\n *   - Comma\n *   - BlockString indentation\n *\n * Note: It is required to have a delimiter character between neighboring\n * non-punctuator tokens and this function always uses single space as delimiter.\n *\n * It is guaranteed that both input and output documents if parsed would result\n * in the exact same AST except for nodes location.\n *\n * Warning: It is guaranteed that this function will always produce stable results.\n * However, it's not guaranteed that it will stay the same between different\n * releases due to bugfixes or changes in the GraphQL specification.\n *\n * Query example:\n *\n * ```graphql\n * query SomeQuery($foo: String!, $bar: String) {\n *   someField(foo: $foo, bar: $bar) {\n *     a\n *     b {\n *       c\n *       d\n *     }\n *   }\n * }\n * ```\n *\n * Becomes:\n *\n * ```graphql\n * query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}}\n * ```\n *\n * SDL example:\n *\n * ```graphql\n * \"\"\"\n * Type description\n * \"\"\"\n * type Foo {\n *   \"\"\"\n *   Field description\n *   \"\"\"\n *   bar: String\n * }\n * ```\n *\n * Becomes:\n *\n * ```graphql\n * \"\"\"Type description\"\"\" type Foo{\"\"\"Field description\"\"\" bar:String}\n * ```\n */\n\nfunction stripIgnoredCharacters(source) {\n  const sourceObj = (0,_language_source_mjs__WEBPACK_IMPORTED_MODULE_0__.isSource)(source) ? source : new _language_source_mjs__WEBPACK_IMPORTED_MODULE_0__.Source(source);\n  const body = sourceObj.body;\n  const lexer = new _language_lexer_mjs__WEBPACK_IMPORTED_MODULE_1__.Lexer(sourceObj);\n  let strippedBody = '';\n  let wasLastAddedTokenNonPunctuator = false;\n\n  while (lexer.advance().kind !== _language_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__.TokenKind.EOF) {\n    const currentToken = lexer.token;\n    const tokenKind = currentToken.kind;\n    /**\n     * Every two non-punctuator tokens should have space between them.\n     * Also prevent case of non-punctuator token following by spread resulting\n     * in invalid token (e.g. `1...` is invalid Float token).\n     */\n\n    const isNonPunctuator = !(0,_language_lexer_mjs__WEBPACK_IMPORTED_MODULE_1__.isPunctuatorTokenKind)(currentToken.kind);\n\n    if (wasLastAddedTokenNonPunctuator) {\n      if (isNonPunctuator || currentToken.kind === _language_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__.TokenKind.SPREAD) {\n        strippedBody += ' ';\n      }\n    }\n\n    const tokenBody = body.slice(currentToken.start, currentToken.end);\n\n    if (tokenKind === _language_tokenKind_mjs__WEBPACK_IMPORTED_MODULE_2__.TokenKind.BLOCK_STRING) {\n      strippedBody += (0,_language_blockString_mjs__WEBPACK_IMPORTED_MODULE_3__.printBlockString)(currentToken.value, {\n        minimize: true,\n      });\n    } else {\n      strippedBody += tokenBody;\n    }\n\n    wasLastAddedTokenNonPunctuator = isNonPunctuator;\n  }\n\n  return strippedBody;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvc3RyaXBJZ25vcmVkQ2hhcmFjdGVycy5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBK0Q7QUFDTTtBQUNYO0FBQ0o7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsNkJBQTZCLElBQUk7QUFDN0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTs7QUFFTztBQUNQLG9CQUFvQiw4REFBUSx3QkFBd0Isd0RBQU07QUFDMUQ7QUFDQSxvQkFBb0Isc0RBQUs7QUFDekI7QUFDQTs7QUFFQSxrQ0FBa0Msa0VBQWE7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQTZCLDBFQUFxQjs7QUFFbEQ7QUFDQSxtREFBbUQscUVBQWdCO0FBQ25FO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxzQkFBc0IsMkVBQXNCO0FBQzVDLHNCQUFzQiwyRUFBZ0I7QUFDdEM7QUFDQSxPQUFPO0FBQ1AsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3V0aWxpdGllcy9zdHJpcElnbm9yZWRDaGFyYWN0ZXJzLm1qcz80YTgzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByaW50QmxvY2tTdHJpbmcgfSBmcm9tICcuLi9sYW5ndWFnZS9ibG9ja1N0cmluZy5tanMnO1xuaW1wb3J0IHsgaXNQdW5jdHVhdG9yVG9rZW5LaW5kLCBMZXhlciB9IGZyb20gJy4uL2xhbmd1YWdlL2xleGVyLm1qcyc7XG5pbXBvcnQgeyBpc1NvdXJjZSwgU291cmNlIH0gZnJvbSAnLi4vbGFuZ3VhZ2Uvc291cmNlLm1qcyc7XG5pbXBvcnQgeyBUb2tlbktpbmQgfSBmcm9tICcuLi9sYW5ndWFnZS90b2tlbktpbmQubWpzJztcbi8qKlxuICogU3RyaXBzIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IHNpZ25pZmljYW50IHRvIHRoZSB2YWxpZGl0eSBvciBleGVjdXRpb25cbiAqIG9mIGEgR3JhcGhRTCBkb2N1bWVudDpcbiAqICAgLSBVbmljb2RlQk9NXG4gKiAgIC0gV2hpdGVTcGFjZVxuICogICAtIExpbmVUZXJtaW5hdG9yXG4gKiAgIC0gQ29tbWVudFxuICogICAtIENvbW1hXG4gKiAgIC0gQmxvY2tTdHJpbmcgaW5kZW50YXRpb25cbiAqXG4gKiBOb3RlOiBJdCBpcyByZXF1aXJlZCB0byBoYXZlIGEgZGVsaW1pdGVyIGNoYXJhY3RlciBiZXR3ZWVuIG5laWdoYm9yaW5nXG4gKiBub24tcHVuY3R1YXRvciB0b2tlbnMgYW5kIHRoaXMgZnVuY3Rpb24gYWx3YXlzIHVzZXMgc2luZ2xlIHNwYWNlIGFzIGRlbGltaXRlci5cbiAqXG4gKiBJdCBpcyBndWFyYW50ZWVkIHRoYXQgYm90aCBpbnB1dCBhbmQgb3V0cHV0IGRvY3VtZW50cyBpZiBwYXJzZWQgd291bGQgcmVzdWx0XG4gKiBpbiB0aGUgZXhhY3Qgc2FtZSBBU1QgZXhjZXB0IGZvciBub2RlcyBsb2NhdGlvbi5cbiAqXG4gKiBXYXJuaW5nOiBJdCBpcyBndWFyYW50ZWVkIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIGFsd2F5cyBwcm9kdWNlIHN0YWJsZSByZXN1bHRzLlxuICogSG93ZXZlciwgaXQncyBub3QgZ3VhcmFudGVlZCB0aGF0IGl0IHdpbGwgc3RheSB0aGUgc2FtZSBiZXR3ZWVuIGRpZmZlcmVudFxuICogcmVsZWFzZXMgZHVlIHRvIGJ1Z2ZpeGVzIG9yIGNoYW5nZXMgaW4gdGhlIEdyYXBoUUwgc3BlY2lmaWNhdGlvbi5cbiAqXG4gKiBRdWVyeSBleGFtcGxlOlxuICpcbiAqIGBgYGdyYXBocWxcbiAqIHF1ZXJ5IFNvbWVRdWVyeSgkZm9vOiBTdHJpbmchLCAkYmFyOiBTdHJpbmcpIHtcbiAqICAgc29tZUZpZWxkKGZvbzogJGZvbywgYmFyOiAkYmFyKSB7XG4gKiAgICAgYVxuICogICAgIGIge1xuICogICAgICAgY1xuICogICAgICAgZFxuICogICAgIH1cbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogQmVjb21lczpcbiAqXG4gKiBgYGBncmFwaHFsXG4gKiBxdWVyeSBTb21lUXVlcnkoJGZvbzpTdHJpbmchJGJhcjpTdHJpbmcpe3NvbWVGaWVsZChmb286JGZvbyBiYXI6JGJhcil7YSBie2MgZH19fVxuICogYGBgXG4gKlxuICogU0RMIGV4YW1wbGU6XG4gKlxuICogYGBgZ3JhcGhxbFxuICogXCJcIlwiXG4gKiBUeXBlIGRlc2NyaXB0aW9uXG4gKiBcIlwiXCJcbiAqIHR5cGUgRm9vIHtcbiAqICAgXCJcIlwiXG4gKiAgIEZpZWxkIGRlc2NyaXB0aW9uXG4gKiAgIFwiXCJcIlxuICogICBiYXI6IFN0cmluZ1xuICogfVxuICogYGBgXG4gKlxuICogQmVjb21lczpcbiAqXG4gKiBgYGBncmFwaHFsXG4gKiBcIlwiXCJUeXBlIGRlc2NyaXB0aW9uXCJcIlwiIHR5cGUgRm9ve1wiXCJcIkZpZWxkIGRlc2NyaXB0aW9uXCJcIlwiIGJhcjpTdHJpbmd9XG4gKiBgYGBcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gc3RyaXBJZ25vcmVkQ2hhcmFjdGVycyhzb3VyY2UpIHtcbiAgY29uc3Qgc291cmNlT2JqID0gaXNTb3VyY2Uoc291cmNlKSA/IHNvdXJjZSA6IG5ldyBTb3VyY2Uoc291cmNlKTtcbiAgY29uc3QgYm9keSA9IHNvdXJjZU9iai5ib2R5O1xuICBjb25zdCBsZXhlciA9IG5ldyBMZXhlcihzb3VyY2VPYmopO1xuICBsZXQgc3RyaXBwZWRCb2R5ID0gJyc7XG4gIGxldCB3YXNMYXN0QWRkZWRUb2tlbk5vblB1bmN0dWF0b3IgPSBmYWxzZTtcblxuICB3aGlsZSAobGV4ZXIuYWR2YW5jZSgpLmtpbmQgIT09IFRva2VuS2luZC5FT0YpIHtcbiAgICBjb25zdCBjdXJyZW50VG9rZW4gPSBsZXhlci50b2tlbjtcbiAgICBjb25zdCB0b2tlbktpbmQgPSBjdXJyZW50VG9rZW4ua2luZDtcbiAgICAvKipcbiAgICAgKiBFdmVyeSB0d28gbm9uLXB1bmN0dWF0b3IgdG9rZW5zIHNob3VsZCBoYXZlIHNwYWNlIGJldHdlZW4gdGhlbS5cbiAgICAgKiBBbHNvIHByZXZlbnQgY2FzZSBvZiBub24tcHVuY3R1YXRvciB0b2tlbiBmb2xsb3dpbmcgYnkgc3ByZWFkIHJlc3VsdGluZ1xuICAgICAqIGluIGludmFsaWQgdG9rZW4gKGUuZy4gYDEuLi5gIGlzIGludmFsaWQgRmxvYXQgdG9rZW4pLlxuICAgICAqL1xuXG4gICAgY29uc3QgaXNOb25QdW5jdHVhdG9yID0gIWlzUHVuY3R1YXRvclRva2VuS2luZChjdXJyZW50VG9rZW4ua2luZCk7XG5cbiAgICBpZiAod2FzTGFzdEFkZGVkVG9rZW5Ob25QdW5jdHVhdG9yKSB7XG4gICAgICBpZiAoaXNOb25QdW5jdHVhdG9yIHx8IGN1cnJlbnRUb2tlbi5raW5kID09PSBUb2tlbktpbmQuU1BSRUFEKSB7XG4gICAgICAgIHN0cmlwcGVkQm9keSArPSAnICc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW5Cb2R5ID0gYm9keS5zbGljZShjdXJyZW50VG9rZW4uc3RhcnQsIGN1cnJlbnRUb2tlbi5lbmQpO1xuXG4gICAgaWYgKHRva2VuS2luZCA9PT0gVG9rZW5LaW5kLkJMT0NLX1NUUklORykge1xuICAgICAgc3RyaXBwZWRCb2R5ICs9IHByaW50QmxvY2tTdHJpbmcoY3VycmVudFRva2VuLnZhbHVlLCB7XG4gICAgICAgIG1pbmltaXplOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmlwcGVkQm9keSArPSB0b2tlbkJvZHk7XG4gICAgfVxuXG4gICAgd2FzTGFzdEFkZGVkVG9rZW5Ob25QdW5jdHVhdG9yID0gaXNOb25QdW5jdHVhdG9yO1xuICB9XG5cbiAgcmV0dXJuIHN0cmlwcGVkQm9keTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/stripIgnoredCharacters.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/typeComparators.mjs":
/*!************************************************************!*\
  !*** ./node_modules/graphql/utilities/typeComparators.mjs ***!
  \************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"doTypesOverlap\": function() { return /* binding */ doTypesOverlap; },\n/* harmony export */   \"isEqualType\": function() { return /* binding */ isEqualType; },\n/* harmony export */   \"isTypeSubTypeOf\": function() { return /* binding */ isTypeSubTypeOf; }\n/* harmony export */ });\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n\n\n/**\n * Provided two types, return true if the types are equal (invariant).\n */\nfunction isEqualType(typeA, typeB) {\n  // Equivalent types are equal.\n  if (typeA === typeB) {\n    return true;\n  } // If either type is non-null, the other must also be non-null.\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isNonNullType)(typeA) && (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isNonNullType)(typeB)) {\n    return isEqualType(typeA.ofType, typeB.ofType);\n  } // If either type is a list, the other must also be a list.\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isListType)(typeA) && (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isListType)(typeB)) {\n    return isEqualType(typeA.ofType, typeB.ofType);\n  } // Otherwise the types are not equal.\n\n  return false;\n}\n/**\n * Provided a type and a super type, return true if the first type is either\n * equal or a subset of the second super type (covariant).\n */\n\nfunction isTypeSubTypeOf(schema, maybeSubType, superType) {\n  // Equivalent type is a valid subtype\n  if (maybeSubType === superType) {\n    return true;\n  } // If superType is non-null, maybeSubType must also be non-null.\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isNonNullType)(superType)) {\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isNonNullType)(maybeSubType)) {\n      return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n    }\n\n    return false;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isNonNullType)(maybeSubType)) {\n    // If superType is nullable, maybeSubType may be non-null or nullable.\n    return isTypeSubTypeOf(schema, maybeSubType.ofType, superType);\n  } // If superType type is a list, maybeSubType type must also be a list.\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isListType)(superType)) {\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isListType)(maybeSubType)) {\n      return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n    }\n\n    return false;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isListType)(maybeSubType)) {\n    // If superType is not a list, maybeSubType must also be not a list.\n    return false;\n  } // If superType type is an abstract type, check if it is super type of maybeSubType.\n  // Otherwise, the child type is not a valid subtype of the parent type.\n\n  return (\n    (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isAbstractType)(superType) &&\n    ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInterfaceType)(maybeSubType) || (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isObjectType)(maybeSubType)) &&\n    schema.isSubType(superType, maybeSubType)\n  );\n}\n/**\n * Provided two composite types, determine if they \"overlap\". Two composite\n * types overlap when the Sets of possible concrete types for each intersect.\n *\n * This is often used to determine if a fragment of a given type could possibly\n * be visited in a context of another type.\n *\n * This function is commutative.\n */\n\nfunction doTypesOverlap(schema, typeA, typeB) {\n  // Equivalent types overlap\n  if (typeA === typeB) {\n    return true;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isAbstractType)(typeA)) {\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isAbstractType)(typeB)) {\n      // If both types are abstract, then determine if there is any intersection\n      // between possible concrete types of each.\n      return schema\n        .getPossibleTypes(typeA)\n        .some((type) => schema.isSubType(typeB, type));\n    } // Determine if the latter type is a possible concrete type of the former.\n\n    return schema.isSubType(typeA, typeB);\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isAbstractType)(typeB)) {\n    // Determine if the former type is a possible concrete type of the latter.\n    return schema.isSubType(typeB, typeA);\n  } // Otherwise the types do not overlap.\n\n  return false;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvdHlwZUNvbXBhcmF0b3JzLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBTWdDOztBQUVoQztBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUosTUFBTSxtRUFBYSxXQUFXLG1FQUFhO0FBQzNDO0FBQ0EsSUFBSTs7QUFFSixNQUFNLGdFQUFVLFdBQVcsZ0VBQVU7QUFDckM7QUFDQSxJQUFJOztBQUVKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUosTUFBTSxtRUFBYTtBQUNuQixRQUFRLG1FQUFhO0FBQ3JCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxNQUFNLG1FQUFhO0FBQ25CO0FBQ0E7QUFDQSxJQUFJOztBQUVKLE1BQU0sZ0VBQVU7QUFDaEIsUUFBUSxnRUFBVTtBQUNsQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsTUFBTSxnRUFBVTtBQUNoQjtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0EsSUFBSSxvRUFBYztBQUNsQixLQUFLLHFFQUFlLGtCQUFrQixrRUFBWTtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNLG9FQUFjO0FBQ3BCLFFBQVEsb0VBQWM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTs7QUFFQSxNQUFNLG9FQUFjO0FBQ3BCO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3R5cGVDb21wYXJhdG9ycy5tanM/Y2JkYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpc0Fic3RyYWN0VHlwZSxcbiAgaXNJbnRlcmZhY2VUeXBlLFxuICBpc0xpc3RUeXBlLFxuICBpc05vbk51bGxUeXBlLFxuICBpc09iamVjdFR5cGUsXG59IGZyb20gJy4uL3R5cGUvZGVmaW5pdGlvbi5tanMnO1xuXG4vKipcbiAqIFByb3ZpZGVkIHR3byB0eXBlcywgcmV0dXJuIHRydWUgaWYgdGhlIHR5cGVzIGFyZSBlcXVhbCAoaW52YXJpYW50KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRXF1YWxUeXBlKHR5cGVBLCB0eXBlQikge1xuICAvLyBFcXVpdmFsZW50IHR5cGVzIGFyZSBlcXVhbC5cbiAgaWYgKHR5cGVBID09PSB0eXBlQikge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIElmIGVpdGhlciB0eXBlIGlzIG5vbi1udWxsLCB0aGUgb3RoZXIgbXVzdCBhbHNvIGJlIG5vbi1udWxsLlxuXG4gIGlmIChpc05vbk51bGxUeXBlKHR5cGVBKSAmJiBpc05vbk51bGxUeXBlKHR5cGVCKSkge1xuICAgIHJldHVybiBpc0VxdWFsVHlwZSh0eXBlQS5vZlR5cGUsIHR5cGVCLm9mVHlwZSk7XG4gIH0gLy8gSWYgZWl0aGVyIHR5cGUgaXMgYSBsaXN0LCB0aGUgb3RoZXIgbXVzdCBhbHNvIGJlIGEgbGlzdC5cblxuICBpZiAoaXNMaXN0VHlwZSh0eXBlQSkgJiYgaXNMaXN0VHlwZSh0eXBlQikpIHtcbiAgICByZXR1cm4gaXNFcXVhbFR5cGUodHlwZUEub2ZUeXBlLCB0eXBlQi5vZlR5cGUpO1xuICB9IC8vIE90aGVyd2lzZSB0aGUgdHlwZXMgYXJlIG5vdCBlcXVhbC5cblxuICByZXR1cm4gZmFsc2U7XG59XG4vKipcbiAqIFByb3ZpZGVkIGEgdHlwZSBhbmQgYSBzdXBlciB0eXBlLCByZXR1cm4gdHJ1ZSBpZiB0aGUgZmlyc3QgdHlwZSBpcyBlaXRoZXJcbiAqIGVxdWFsIG9yIGEgc3Vic2V0IG9mIHRoZSBzZWNvbmQgc3VwZXIgdHlwZSAoY292YXJpYW50KS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaXNUeXBlU3ViVHlwZU9mKHNjaGVtYSwgbWF5YmVTdWJUeXBlLCBzdXBlclR5cGUpIHtcbiAgLy8gRXF1aXZhbGVudCB0eXBlIGlzIGEgdmFsaWQgc3VidHlwZVxuICBpZiAobWF5YmVTdWJUeXBlID09PSBzdXBlclR5cGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyBJZiBzdXBlclR5cGUgaXMgbm9uLW51bGwsIG1heWJlU3ViVHlwZSBtdXN0IGFsc28gYmUgbm9uLW51bGwuXG5cbiAgaWYgKGlzTm9uTnVsbFR5cGUoc3VwZXJUeXBlKSkge1xuICAgIGlmIChpc05vbk51bGxUeXBlKG1heWJlU3ViVHlwZSkpIHtcbiAgICAgIHJldHVybiBpc1R5cGVTdWJUeXBlT2Yoc2NoZW1hLCBtYXliZVN1YlR5cGUub2ZUeXBlLCBzdXBlclR5cGUub2ZUeXBlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoaXNOb25OdWxsVHlwZShtYXliZVN1YlR5cGUpKSB7XG4gICAgLy8gSWYgc3VwZXJUeXBlIGlzIG51bGxhYmxlLCBtYXliZVN1YlR5cGUgbWF5IGJlIG5vbi1udWxsIG9yIG51bGxhYmxlLlxuICAgIHJldHVybiBpc1R5cGVTdWJUeXBlT2Yoc2NoZW1hLCBtYXliZVN1YlR5cGUub2ZUeXBlLCBzdXBlclR5cGUpO1xuICB9IC8vIElmIHN1cGVyVHlwZSB0eXBlIGlzIGEgbGlzdCwgbWF5YmVTdWJUeXBlIHR5cGUgbXVzdCBhbHNvIGJlIGEgbGlzdC5cblxuICBpZiAoaXNMaXN0VHlwZShzdXBlclR5cGUpKSB7XG4gICAgaWYgKGlzTGlzdFR5cGUobWF5YmVTdWJUeXBlKSkge1xuICAgICAgcmV0dXJuIGlzVHlwZVN1YlR5cGVPZihzY2hlbWEsIG1heWJlU3ViVHlwZS5vZlR5cGUsIHN1cGVyVHlwZS5vZlR5cGUpO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChpc0xpc3RUeXBlKG1heWJlU3ViVHlwZSkpIHtcbiAgICAvLyBJZiBzdXBlclR5cGUgaXMgbm90IGEgbGlzdCwgbWF5YmVTdWJUeXBlIG11c3QgYWxzbyBiZSBub3QgYSBsaXN0LlxuICAgIHJldHVybiBmYWxzZTtcbiAgfSAvLyBJZiBzdXBlclR5cGUgdHlwZSBpcyBhbiBhYnN0cmFjdCB0eXBlLCBjaGVjayBpZiBpdCBpcyBzdXBlciB0eXBlIG9mIG1heWJlU3ViVHlwZS5cbiAgLy8gT3RoZXJ3aXNlLCB0aGUgY2hpbGQgdHlwZSBpcyBub3QgYSB2YWxpZCBzdWJ0eXBlIG9mIHRoZSBwYXJlbnQgdHlwZS5cblxuICByZXR1cm4gKFxuICAgIGlzQWJzdHJhY3RUeXBlKHN1cGVyVHlwZSkgJiZcbiAgICAoaXNJbnRlcmZhY2VUeXBlKG1heWJlU3ViVHlwZSkgfHwgaXNPYmplY3RUeXBlKG1heWJlU3ViVHlwZSkpICYmXG4gICAgc2NoZW1hLmlzU3ViVHlwZShzdXBlclR5cGUsIG1heWJlU3ViVHlwZSlcbiAgKTtcbn1cbi8qKlxuICogUHJvdmlkZWQgdHdvIGNvbXBvc2l0ZSB0eXBlcywgZGV0ZXJtaW5lIGlmIHRoZXkgXCJvdmVybGFwXCIuIFR3byBjb21wb3NpdGVcbiAqIHR5cGVzIG92ZXJsYXAgd2hlbiB0aGUgU2V0cyBvZiBwb3NzaWJsZSBjb25jcmV0ZSB0eXBlcyBmb3IgZWFjaCBpbnRlcnNlY3QuXG4gKlxuICogVGhpcyBpcyBvZnRlbiB1c2VkIHRvIGRldGVybWluZSBpZiBhIGZyYWdtZW50IG9mIGEgZ2l2ZW4gdHlwZSBjb3VsZCBwb3NzaWJseVxuICogYmUgdmlzaXRlZCBpbiBhIGNvbnRleHQgb2YgYW5vdGhlciB0eXBlLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gaXMgY29tbXV0YXRpdmUuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGRvVHlwZXNPdmVybGFwKHNjaGVtYSwgdHlwZUEsIHR5cGVCKSB7XG4gIC8vIEVxdWl2YWxlbnQgdHlwZXMgb3ZlcmxhcFxuICBpZiAodHlwZUEgPT09IHR5cGVCKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoaXNBYnN0cmFjdFR5cGUodHlwZUEpKSB7XG4gICAgaWYgKGlzQWJzdHJhY3RUeXBlKHR5cGVCKSkge1xuICAgICAgLy8gSWYgYm90aCB0eXBlcyBhcmUgYWJzdHJhY3QsIHRoZW4gZGV0ZXJtaW5lIGlmIHRoZXJlIGlzIGFueSBpbnRlcnNlY3Rpb25cbiAgICAgIC8vIGJldHdlZW4gcG9zc2libGUgY29uY3JldGUgdHlwZXMgb2YgZWFjaC5cbiAgICAgIHJldHVybiBzY2hlbWFcbiAgICAgICAgLmdldFBvc3NpYmxlVHlwZXModHlwZUEpXG4gICAgICAgIC5zb21lKCh0eXBlKSA9PiBzY2hlbWEuaXNTdWJUeXBlKHR5cGVCLCB0eXBlKSk7XG4gICAgfSAvLyBEZXRlcm1pbmUgaWYgdGhlIGxhdHRlciB0eXBlIGlzIGEgcG9zc2libGUgY29uY3JldGUgdHlwZSBvZiB0aGUgZm9ybWVyLlxuXG4gICAgcmV0dXJuIHNjaGVtYS5pc1N1YlR5cGUodHlwZUEsIHR5cGVCKTtcbiAgfVxuXG4gIGlmIChpc0Fic3RyYWN0VHlwZSh0eXBlQikpIHtcbiAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIGZvcm1lciB0eXBlIGlzIGEgcG9zc2libGUgY29uY3JldGUgdHlwZSBvZiB0aGUgbGF0dGVyLlxuICAgIHJldHVybiBzY2hlbWEuaXNTdWJUeXBlKHR5cGVCLCB0eXBlQSk7XG4gIH0gLy8gT3RoZXJ3aXNlIHRoZSB0eXBlcyBkbyBub3Qgb3ZlcmxhcC5cblxuICByZXR1cm4gZmFsc2U7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/typeComparators.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/typeFromAST.mjs":
/*!********************************************************!*\
  !*** ./node_modules/graphql/utilities/typeFromAST.mjs ***!
  \********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"typeFromAST\": function() { return /* binding */ typeFromAST; }\n/* harmony export */ });\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n\n\nfunction typeFromAST(schema, typeNode) {\n  switch (typeNode.kind) {\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.LIST_TYPE: {\n      const innerType = typeFromAST(schema, typeNode.type);\n      return innerType && new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLList(innerType);\n    }\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.NON_NULL_TYPE: {\n      const innerType = typeFromAST(schema, typeNode.type);\n      return innerType && new _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLNonNull(innerType);\n    }\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.NAMED_TYPE:\n      return schema.getType(typeNode.name.value);\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvdHlwZUZyb21BU1QubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE2QztBQUN3QjtBQUM5RDtBQUNQO0FBQ0EsU0FBUywrREFBYztBQUN2QjtBQUNBLDhCQUE4Qiw2REFBVztBQUN6Qzs7QUFFQSxTQUFTLG1FQUFrQjtBQUMzQjtBQUNBLDhCQUE4QixnRUFBYztBQUM1Qzs7QUFFQSxTQUFTLGdFQUFlO0FBQ3hCO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvdHlwZUZyb21BU1QubWpzP2JjZGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMTGlzdCwgR3JhcGhRTE5vbk51bGwgfSBmcm9tICcuLi90eXBlL2RlZmluaXRpb24ubWpzJztcbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUFTVChzY2hlbWEsIHR5cGVOb2RlKSB7XG4gIHN3aXRjaCAodHlwZU5vZGUua2luZCkge1xuICAgIGNhc2UgS2luZC5MSVNUX1RZUEU6IHtcbiAgICAgIGNvbnN0IGlubmVyVHlwZSA9IHR5cGVGcm9tQVNUKHNjaGVtYSwgdHlwZU5vZGUudHlwZSk7XG4gICAgICByZXR1cm4gaW5uZXJUeXBlICYmIG5ldyBHcmFwaFFMTGlzdChpbm5lclR5cGUpO1xuICAgIH1cblxuICAgIGNhc2UgS2luZC5OT05fTlVMTF9UWVBFOiB7XG4gICAgICBjb25zdCBpbm5lclR5cGUgPSB0eXBlRnJvbUFTVChzY2hlbWEsIHR5cGVOb2RlLnR5cGUpO1xuICAgICAgcmV0dXJuIGlubmVyVHlwZSAmJiBuZXcgR3JhcGhRTE5vbk51bGwoaW5uZXJUeXBlKTtcbiAgICB9XG5cbiAgICBjYXNlIEtpbmQuTkFNRURfVFlQRTpcbiAgICAgIHJldHVybiBzY2hlbWEuZ2V0VHlwZSh0eXBlTm9kZS5uYW1lLnZhbHVlKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/typeFromAST.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/valueFromAST.mjs":
/*!*********************************************************!*\
  !*** ./node_modules/graphql/utilities/valueFromAST.mjs ***!
  \*********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"valueFromAST\": function() { return /* binding */ valueFromAST; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../jsutils/invariant.mjs */ \"./node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/keyMap.mjs */ \"./node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * GraphQL Value literals.\n *\n * Returns `undefined` when the value could not be validly coerced according to\n * the provided type.\n *\n * | GraphQL Value        | JSON Value    |\n * | -------------------- | ------------- |\n * | Input Object         | Object        |\n * | List                 | Array         |\n * | Boolean              | Boolean       |\n * | String               | String        |\n * | Int / Float          | Number        |\n * | Enum Value           | Unknown       |\n * | NullValue            | null          |\n *\n */\n\nfunction valueFromAST(valueNode, type, variables) {\n  if (!valueNode) {\n    // When there is no node, then there is also no value.\n    // Importantly, this is different from returning the value null.\n    return;\n  }\n\n  if (valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.VARIABLE) {\n    const variableName = valueNode.name.value;\n\n    if (variables == null || variables[variableName] === undefined) {\n      // No valid return value.\n      return;\n    }\n\n    const variableValue = variables[variableName];\n\n    if (variableValue === null && (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isNonNullType)(type)) {\n      return; // Invalid: intentionally return no value.\n    } // Note: This does no further checking that this variable is correct.\n    // This assumes that this query has been validated and the variable\n    // usage here is of the correct type.\n\n    return variableValue;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isNonNullType)(type)) {\n    if (valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.NULL) {\n      return; // Invalid: intentionally return no value.\n    }\n\n    return valueFromAST(valueNode, type.ofType, variables);\n  }\n\n  if (valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.NULL) {\n    // This is explicitly returning the value null.\n    return null;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isListType)(type)) {\n    const itemType = type.ofType;\n\n    if (valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.LIST) {\n      const coercedValues = [];\n\n      for (const itemNode of valueNode.values) {\n        if (isMissingVariable(itemNode, variables)) {\n          // If an array contains a missing variable, it is either coerced to\n          // null or if the item type is non-null, it considered invalid.\n          if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isNonNullType)(itemType)) {\n            return; // Invalid: intentionally return no value.\n          }\n\n          coercedValues.push(null);\n        } else {\n          const itemValue = valueFromAST(itemNode, itemType, variables);\n\n          if (itemValue === undefined) {\n            return; // Invalid: intentionally return no value.\n          }\n\n          coercedValues.push(itemValue);\n        }\n      }\n\n      return coercedValues;\n    }\n\n    const coercedValue = valueFromAST(valueNode, itemType, variables);\n\n    if (coercedValue === undefined) {\n      return; // Invalid: intentionally return no value.\n    }\n\n    return [coercedValue];\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isInputObjectType)(type)) {\n    if (valueNode.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.OBJECT) {\n      return; // Invalid: intentionally return no value.\n    }\n\n    const coercedObj = Object.create(null);\n    const fieldNodes = (0,_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_2__.keyMap)(valueNode.fields, (field) => field.name.value);\n\n    for (const field of Object.values(type.getFields())) {\n      const fieldNode = fieldNodes[field.name];\n\n      if (!fieldNode || isMissingVariable(fieldNode.value, variables)) {\n        if (field.defaultValue !== undefined) {\n          coercedObj[field.name] = field.defaultValue;\n        } else if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isNonNullType)(field.type)) {\n          return; // Invalid: intentionally return no value.\n        }\n\n        continue;\n      }\n\n      const fieldValue = valueFromAST(fieldNode.value, field.type, variables);\n\n      if (fieldValue === undefined) {\n        return; // Invalid: intentionally return no value.\n      }\n\n      coercedObj[field.name] = fieldValue;\n    }\n\n    return coercedObj;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isLeafType)(type)) {\n    // Scalars and Enums fulfill parsing a literal value via parseLiteral().\n    // Invalid values represent a failure to parse correctly, in which case\n    // no value is returned.\n    let result;\n\n    try {\n      result = type.parseLiteral(valueNode, variables);\n    } catch (_error) {\n      return; // Invalid: intentionally return no value.\n    }\n\n    if (result === undefined) {\n      return; // Invalid: intentionally return no value.\n    }\n\n    return result;\n  }\n  /* c8 ignore next 3 */\n  // Not reachable, all possible input types have been considered.\n\n   false || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_3__.invariant)(false, 'Unexpected input type: ' + (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_4__.inspect)(type));\n} // Returns true if the provided valueNode is a variable which is not defined\n// in the set of variables.\n\nfunction isMissingVariable(valueNode, variables) {\n  return (\n    valueNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.VARIABLE &&\n    (variables == null || variables[valueNode.name.value] === undefined)\n  );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvdmFsdWVGcm9tQVNULm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBaUQ7QUFDSTtBQUNOO0FBQ0Y7QUFNYjtBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIsOERBQWE7QUFDdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsa0NBQWtDLG1FQUFhO0FBQy9DLGNBQWM7QUFDZCxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBOztBQUVBLE1BQU0sbUVBQWE7QUFDbkIsMkJBQTJCLDBEQUFTO0FBQ3BDLGNBQWM7QUFDZDs7QUFFQTtBQUNBOztBQUVBLHlCQUF5QiwwREFBUztBQUNsQztBQUNBO0FBQ0E7O0FBRUEsTUFBTSxnRUFBVTtBQUNoQjs7QUFFQSwyQkFBMkIsMERBQVM7QUFDcEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLG1FQUFhO0FBQzNCLG9CQUFvQjtBQUNwQjs7QUFFQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBLG9CQUFvQjtBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGNBQWM7QUFDZDs7QUFFQTtBQUNBOztBQUVBLE1BQU0sdUVBQWlCO0FBQ3ZCLDJCQUEyQiw0REFBVztBQUN0QyxjQUFjO0FBQ2Q7O0FBRUE7QUFDQSx1QkFBdUIsMkRBQU07O0FBRTdCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVSxTQUFTLG1FQUFhO0FBQ2hDLGtCQUFrQjtBQUNsQjs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsZ0JBQWdCO0FBQ2hCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxNQUFNLGdFQUFVO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sY0FBYztBQUNkOztBQUVBO0FBQ0EsY0FBYztBQUNkOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEVBQUUsTUFBSyxJQUFJLGlFQUFTLG9DQUFvQyw2REFBTztBQUMvRCxFQUFFO0FBQ0Y7O0FBRUE7QUFDQTtBQUNBLHVCQUF1Qiw4REFBYTtBQUNwQztBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3ZhbHVlRnJvbUFTVC5tanM/ODE4NCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSAnLi4vanN1dGlscy9pbnNwZWN0Lm1qcyc7XG5pbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tICcuLi9qc3V0aWxzL2ludmFyaWFudC5tanMnO1xuaW1wb3J0IHsga2V5TWFwIH0gZnJvbSAnLi4vanN1dGlscy9rZXlNYXAubWpzJztcbmltcG9ydCB7IEtpbmQgfSBmcm9tICcuLi9sYW5ndWFnZS9raW5kcy5tanMnO1xuaW1wb3J0IHtcbiAgaXNJbnB1dE9iamVjdFR5cGUsXG4gIGlzTGVhZlR5cGUsXG4gIGlzTGlzdFR5cGUsXG4gIGlzTm9uTnVsbFR5cGUsXG59IGZyb20gJy4uL3R5cGUvZGVmaW5pdGlvbi5tanMnO1xuLyoqXG4gKiBQcm9kdWNlcyBhIEphdmFTY3JpcHQgdmFsdWUgZ2l2ZW4gYSBHcmFwaFFMIFZhbHVlIEFTVC5cbiAqXG4gKiBBIEdyYXBoUUwgdHlwZSBtdXN0IGJlIHByb3ZpZGVkLCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gaW50ZXJwcmV0IGRpZmZlcmVudFxuICogR3JhcGhRTCBWYWx1ZSBsaXRlcmFscy5cbiAqXG4gKiBSZXR1cm5zIGB1bmRlZmluZWRgIHdoZW4gdGhlIHZhbHVlIGNvdWxkIG5vdCBiZSB2YWxpZGx5IGNvZXJjZWQgYWNjb3JkaW5nIHRvXG4gKiB0aGUgcHJvdmlkZWQgdHlwZS5cbiAqXG4gKiB8IEdyYXBoUUwgVmFsdWUgICAgICAgIHwgSlNPTiBWYWx1ZSAgICB8XG4gKiB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLSB8XG4gKiB8IElucHV0IE9iamVjdCAgICAgICAgIHwgT2JqZWN0ICAgICAgICB8XG4gKiB8IExpc3QgICAgICAgICAgICAgICAgIHwgQXJyYXkgICAgICAgICB8XG4gKiB8IEJvb2xlYW4gICAgICAgICAgICAgIHwgQm9vbGVhbiAgICAgICB8XG4gKiB8IFN0cmluZyAgICAgICAgICAgICAgIHwgU3RyaW5nICAgICAgICB8XG4gKiB8IEludCAvIEZsb2F0ICAgICAgICAgIHwgTnVtYmVyICAgICAgICB8XG4gKiB8IEVudW0gVmFsdWUgICAgICAgICAgIHwgVW5rbm93biAgICAgICB8XG4gKiB8IE51bGxWYWx1ZSAgICAgICAgICAgIHwgbnVsbCAgICAgICAgICB8XG4gKlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUZyb21BU1QodmFsdWVOb2RlLCB0eXBlLCB2YXJpYWJsZXMpIHtcbiAgaWYgKCF2YWx1ZU5vZGUpIHtcbiAgICAvLyBXaGVuIHRoZXJlIGlzIG5vIG5vZGUsIHRoZW4gdGhlcmUgaXMgYWxzbyBubyB2YWx1ZS5cbiAgICAvLyBJbXBvcnRhbnRseSwgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSByZXR1cm5pbmcgdGhlIHZhbHVlIG51bGwuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHZhbHVlTm9kZS5raW5kID09PSBLaW5kLlZBUklBQkxFKSB7XG4gICAgY29uc3QgdmFyaWFibGVOYW1lID0gdmFsdWVOb2RlLm5hbWUudmFsdWU7XG5cbiAgICBpZiAodmFyaWFibGVzID09IG51bGwgfHwgdmFyaWFibGVzW3ZhcmlhYmxlTmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gTm8gdmFsaWQgcmV0dXJuIHZhbHVlLlxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhcmlhYmxlVmFsdWUgPSB2YXJpYWJsZXNbdmFyaWFibGVOYW1lXTtcblxuICAgIGlmICh2YXJpYWJsZVZhbHVlID09PSBudWxsICYmIGlzTm9uTnVsbFR5cGUodHlwZSkpIHtcbiAgICAgIHJldHVybjsgLy8gSW52YWxpZDogaW50ZW50aW9uYWxseSByZXR1cm4gbm8gdmFsdWUuXG4gICAgfSAvLyBOb3RlOiBUaGlzIGRvZXMgbm8gZnVydGhlciBjaGVja2luZyB0aGF0IHRoaXMgdmFyaWFibGUgaXMgY29ycmVjdC5cbiAgICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB0aGlzIHF1ZXJ5IGhhcyBiZWVuIHZhbGlkYXRlZCBhbmQgdGhlIHZhcmlhYmxlXG4gICAgLy8gdXNhZ2UgaGVyZSBpcyBvZiB0aGUgY29ycmVjdCB0eXBlLlxuXG4gICAgcmV0dXJuIHZhcmlhYmxlVmFsdWU7XG4gIH1cblxuICBpZiAoaXNOb25OdWxsVHlwZSh0eXBlKSkge1xuICAgIGlmICh2YWx1ZU5vZGUua2luZCA9PT0gS2luZC5OVUxMKSB7XG4gICAgICByZXR1cm47IC8vIEludmFsaWQ6IGludGVudGlvbmFsbHkgcmV0dXJuIG5vIHZhbHVlLlxuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZUZyb21BU1QodmFsdWVOb2RlLCB0eXBlLm9mVHlwZSwgdmFyaWFibGVzKTtcbiAgfVxuXG4gIGlmICh2YWx1ZU5vZGUua2luZCA9PT0gS2luZC5OVUxMKSB7XG4gICAgLy8gVGhpcyBpcyBleHBsaWNpdGx5IHJldHVybmluZyB0aGUgdmFsdWUgbnVsbC5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChpc0xpc3RUeXBlKHR5cGUpKSB7XG4gICAgY29uc3QgaXRlbVR5cGUgPSB0eXBlLm9mVHlwZTtcblxuICAgIGlmICh2YWx1ZU5vZGUua2luZCA9PT0gS2luZC5MSVNUKSB7XG4gICAgICBjb25zdCBjb2VyY2VkVmFsdWVzID0gW107XG5cbiAgICAgIGZvciAoY29uc3QgaXRlbU5vZGUgb2YgdmFsdWVOb2RlLnZhbHVlcykge1xuICAgICAgICBpZiAoaXNNaXNzaW5nVmFyaWFibGUoaXRlbU5vZGUsIHZhcmlhYmxlcykpIHtcbiAgICAgICAgICAvLyBJZiBhbiBhcnJheSBjb250YWlucyBhIG1pc3NpbmcgdmFyaWFibGUsIGl0IGlzIGVpdGhlciBjb2VyY2VkIHRvXG4gICAgICAgICAgLy8gbnVsbCBvciBpZiB0aGUgaXRlbSB0eXBlIGlzIG5vbi1udWxsLCBpdCBjb25zaWRlcmVkIGludmFsaWQuXG4gICAgICAgICAgaWYgKGlzTm9uTnVsbFR5cGUoaXRlbVR5cGUpKSB7XG4gICAgICAgICAgICByZXR1cm47IC8vIEludmFsaWQ6IGludGVudGlvbmFsbHkgcmV0dXJuIG5vIHZhbHVlLlxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvZXJjZWRWYWx1ZXMucHVzaChudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBpdGVtVmFsdWUgPSB2YWx1ZUZyb21BU1QoaXRlbU5vZGUsIGl0ZW1UeXBlLCB2YXJpYWJsZXMpO1xuXG4gICAgICAgICAgaWYgKGl0ZW1WYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47IC8vIEludmFsaWQ6IGludGVudGlvbmFsbHkgcmV0dXJuIG5vIHZhbHVlLlxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvZXJjZWRWYWx1ZXMucHVzaChpdGVtVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb2VyY2VkVmFsdWVzO1xuICAgIH1cblxuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IHZhbHVlRnJvbUFTVCh2YWx1ZU5vZGUsIGl0ZW1UeXBlLCB2YXJpYWJsZXMpO1xuXG4gICAgaWYgKGNvZXJjZWRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47IC8vIEludmFsaWQ6IGludGVudGlvbmFsbHkgcmV0dXJuIG5vIHZhbHVlLlxuICAgIH1cblxuICAgIHJldHVybiBbY29lcmNlZFZhbHVlXTtcbiAgfVxuXG4gIGlmIChpc0lucHV0T2JqZWN0VHlwZSh0eXBlKSkge1xuICAgIGlmICh2YWx1ZU5vZGUua2luZCAhPT0gS2luZC5PQkpFQ1QpIHtcbiAgICAgIHJldHVybjsgLy8gSW52YWxpZDogaW50ZW50aW9uYWxseSByZXR1cm4gbm8gdmFsdWUuXG4gICAgfVxuXG4gICAgY29uc3QgY29lcmNlZE9iaiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgY29uc3QgZmllbGROb2RlcyA9IGtleU1hcCh2YWx1ZU5vZGUuZmllbGRzLCAoZmllbGQpID0+IGZpZWxkLm5hbWUudmFsdWUpO1xuXG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBPYmplY3QudmFsdWVzKHR5cGUuZ2V0RmllbGRzKCkpKSB7XG4gICAgICBjb25zdCBmaWVsZE5vZGUgPSBmaWVsZE5vZGVzW2ZpZWxkLm5hbWVdO1xuXG4gICAgICBpZiAoIWZpZWxkTm9kZSB8fCBpc01pc3NpbmdWYXJpYWJsZShmaWVsZE5vZGUudmFsdWUsIHZhcmlhYmxlcykpIHtcbiAgICAgICAgaWYgKGZpZWxkLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29lcmNlZE9ialtmaWVsZC5uYW1lXSA9IGZpZWxkLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChpc05vbk51bGxUeXBlKGZpZWxkLnR5cGUpKSB7XG4gICAgICAgICAgcmV0dXJuOyAvLyBJbnZhbGlkOiBpbnRlbnRpb25hbGx5IHJldHVybiBubyB2YWx1ZS5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWVsZFZhbHVlID0gdmFsdWVGcm9tQVNUKGZpZWxkTm9kZS52YWx1ZSwgZmllbGQudHlwZSwgdmFyaWFibGVzKTtcblxuICAgICAgaWYgKGZpZWxkVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm47IC8vIEludmFsaWQ6IGludGVudGlvbmFsbHkgcmV0dXJuIG5vIHZhbHVlLlxuICAgICAgfVxuXG4gICAgICBjb2VyY2VkT2JqW2ZpZWxkLm5hbWVdID0gZmllbGRWYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29lcmNlZE9iajtcbiAgfVxuXG4gIGlmIChpc0xlYWZUeXBlKHR5cGUpKSB7XG4gICAgLy8gU2NhbGFycyBhbmQgRW51bXMgZnVsZmlsbCBwYXJzaW5nIGEgbGl0ZXJhbCB2YWx1ZSB2aWEgcGFyc2VMaXRlcmFsKCkuXG4gICAgLy8gSW52YWxpZCB2YWx1ZXMgcmVwcmVzZW50IGEgZmFpbHVyZSB0byBwYXJzZSBjb3JyZWN0bHksIGluIHdoaWNoIGNhc2VcbiAgICAvLyBubyB2YWx1ZSBpcyByZXR1cm5lZC5cbiAgICBsZXQgcmVzdWx0O1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IHR5cGUucGFyc2VMaXRlcmFsKHZhbHVlTm9kZSwgdmFyaWFibGVzKTtcbiAgICB9IGNhdGNoIChfZXJyb3IpIHtcbiAgICAgIHJldHVybjsgLy8gSW52YWxpZDogaW50ZW50aW9uYWxseSByZXR1cm4gbm8gdmFsdWUuXG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47IC8vIEludmFsaWQ6IGludGVudGlvbmFsbHkgcmV0dXJuIG5vIHZhbHVlLlxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgLyogYzggaWdub3JlIG5leHQgMyAqL1xuICAvLyBOb3QgcmVhY2hhYmxlLCBhbGwgcG9zc2libGUgaW5wdXQgdHlwZXMgaGF2ZSBiZWVuIGNvbnNpZGVyZWQuXG5cbiAgZmFsc2UgfHwgaW52YXJpYW50KGZhbHNlLCAnVW5leHBlY3RlZCBpbnB1dCB0eXBlOiAnICsgaW5zcGVjdCh0eXBlKSk7XG59IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvdmlkZWQgdmFsdWVOb2RlIGlzIGEgdmFyaWFibGUgd2hpY2ggaXMgbm90IGRlZmluZWRcbi8vIGluIHRoZSBzZXQgb2YgdmFyaWFibGVzLlxuXG5mdW5jdGlvbiBpc01pc3NpbmdWYXJpYWJsZSh2YWx1ZU5vZGUsIHZhcmlhYmxlcykge1xuICByZXR1cm4gKFxuICAgIHZhbHVlTm9kZS5raW5kID09PSBLaW5kLlZBUklBQkxFICYmXG4gICAgKHZhcmlhYmxlcyA9PSBudWxsIHx8IHZhcmlhYmxlc1t2YWx1ZU5vZGUubmFtZS52YWx1ZV0gPT09IHVuZGVmaW5lZClcbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/valueFromAST.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/utilities/valueFromASTUntyped.mjs":
/*!****************************************************************!*\
  !*** ./node_modules/graphql/utilities/valueFromASTUntyped.mjs ***!
  \****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"valueFromASTUntyped\": function() { return /* binding */ valueFromASTUntyped; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../jsutils/keyValMap.mjs */ \"./node_modules/graphql/jsutils/keyValMap.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value\n * will reflect the provided GraphQL value AST.\n *\n * | GraphQL Value        | JavaScript Value |\n * | -------------------- | ---------------- |\n * | Input Object         | Object           |\n * | List                 | Array            |\n * | Boolean              | Boolean          |\n * | String / Enum        | String           |\n * | Int / Float          | Number           |\n * | Null                 | null             |\n *\n */\n\nfunction valueFromASTUntyped(valueNode, variables) {\n  switch (valueNode.kind) {\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.NULL:\n      return null;\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.INT:\n      return parseInt(valueNode.value, 10);\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.FLOAT:\n      return parseFloat(valueNode.value);\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.STRING:\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.ENUM:\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.BOOLEAN:\n      return valueNode.value;\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.LIST:\n      return valueNode.values.map((node) =>\n        valueFromASTUntyped(node, variables),\n      );\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.OBJECT:\n      return (0,_jsutils_keyValMap_mjs__WEBPACK_IMPORTED_MODULE_1__.keyValMap)(\n        valueNode.fields,\n        (field) => field.name.value,\n        (field) => valueFromASTUntyped(field.value, variables),\n      );\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.VARIABLE:\n      return variables === null || variables === void 0\n        ? void 0\n        : variables[valueNode.name.value];\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC91dGlsaXRpZXMvdmFsdWVGcm9tQVNUVW50eXBlZC5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXFEO0FBQ1I7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBLFNBQVMsMERBQVM7QUFDbEI7O0FBRUEsU0FBUyx5REFBUTtBQUNqQjs7QUFFQSxTQUFTLDJEQUFVO0FBQ25COztBQUVBLFNBQVMsNERBQVc7QUFDcEIsU0FBUywwREFBUztBQUNsQixTQUFTLDZEQUFZO0FBQ3JCOztBQUVBLFNBQVMsMERBQVM7QUFDbEI7QUFDQTtBQUNBOztBQUVBLFNBQVMsNERBQVc7QUFDcEIsYUFBYSxpRUFBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTLDhEQUFhO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdXRpbGl0aWVzL3ZhbHVlRnJvbUFTVFVudHlwZWQubWpzPzVjYzEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsga2V5VmFsTWFwIH0gZnJvbSAnLi4vanN1dGlscy9rZXlWYWxNYXAubWpzJztcbmltcG9ydCB7IEtpbmQgfSBmcm9tICcuLi9sYW5ndWFnZS9raW5kcy5tanMnO1xuLyoqXG4gKiBQcm9kdWNlcyBhIEphdmFTY3JpcHQgdmFsdWUgZ2l2ZW4gYSBHcmFwaFFMIFZhbHVlIEFTVC5cbiAqXG4gKiBVbmxpa2UgYHZhbHVlRnJvbUFTVCgpYCwgbm8gdHlwZSBpcyBwcm92aWRlZC4gVGhlIHJlc3VsdGluZyBKYXZhU2NyaXB0IHZhbHVlXG4gKiB3aWxsIHJlZmxlY3QgdGhlIHByb3ZpZGVkIEdyYXBoUUwgdmFsdWUgQVNULlxuICpcbiAqIHwgR3JhcGhRTCBWYWx1ZSAgICAgICAgfCBKYXZhU2NyaXB0IFZhbHVlIHxcbiAqIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tIHxcbiAqIHwgSW5wdXQgT2JqZWN0ICAgICAgICAgfCBPYmplY3QgICAgICAgICAgIHxcbiAqIHwgTGlzdCAgICAgICAgICAgICAgICAgfCBBcnJheSAgICAgICAgICAgIHxcbiAqIHwgQm9vbGVhbiAgICAgICAgICAgICAgfCBCb29sZWFuICAgICAgICAgIHxcbiAqIHwgU3RyaW5nIC8gRW51bSAgICAgICAgfCBTdHJpbmcgICAgICAgICAgIHxcbiAqIHwgSW50IC8gRmxvYXQgICAgICAgICAgfCBOdW1iZXIgICAgICAgICAgIHxcbiAqIHwgTnVsbCAgICAgICAgICAgICAgICAgfCBudWxsICAgICAgICAgICAgIHxcbiAqXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlRnJvbUFTVFVudHlwZWQodmFsdWVOb2RlLCB2YXJpYWJsZXMpIHtcbiAgc3dpdGNoICh2YWx1ZU5vZGUua2luZCkge1xuICAgIGNhc2UgS2luZC5OVUxMOlxuICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICBjYXNlIEtpbmQuSU5UOlxuICAgICAgcmV0dXJuIHBhcnNlSW50KHZhbHVlTm9kZS52YWx1ZSwgMTApO1xuXG4gICAgY2FzZSBLaW5kLkZMT0FUOlxuICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWVOb2RlLnZhbHVlKTtcblxuICAgIGNhc2UgS2luZC5TVFJJTkc6XG4gICAgY2FzZSBLaW5kLkVOVU06XG4gICAgY2FzZSBLaW5kLkJPT0xFQU46XG4gICAgICByZXR1cm4gdmFsdWVOb2RlLnZhbHVlO1xuXG4gICAgY2FzZSBLaW5kLkxJU1Q6XG4gICAgICByZXR1cm4gdmFsdWVOb2RlLnZhbHVlcy5tYXAoKG5vZGUpID0+XG4gICAgICAgIHZhbHVlRnJvbUFTVFVudHlwZWQobm9kZSwgdmFyaWFibGVzKSxcbiAgICAgICk7XG5cbiAgICBjYXNlIEtpbmQuT0JKRUNUOlxuICAgICAgcmV0dXJuIGtleVZhbE1hcChcbiAgICAgICAgdmFsdWVOb2RlLmZpZWxkcyxcbiAgICAgICAgKGZpZWxkKSA9PiBmaWVsZC5uYW1lLnZhbHVlLFxuICAgICAgICAoZmllbGQpID0+IHZhbHVlRnJvbUFTVFVudHlwZWQoZmllbGQudmFsdWUsIHZhcmlhYmxlcyksXG4gICAgICApO1xuXG4gICAgY2FzZSBLaW5kLlZBUklBQkxFOlxuICAgICAgcmV0dXJuIHZhcmlhYmxlcyA9PT0gbnVsbCB8fCB2YXJpYWJsZXMgPT09IHZvaWQgMFxuICAgICAgICA/IHZvaWQgMFxuICAgICAgICA6IHZhcmlhYmxlc1t2YWx1ZU5vZGUubmFtZS52YWx1ZV07XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/utilities/valueFromASTUntyped.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/ValidationContext.mjs":
/*!***************************************************************!*\
  !*** ./node_modules/graphql/validation/ValidationContext.mjs ***!
  \***************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ASTValidationContext\": function() { return /* binding */ ASTValidationContext; },\n/* harmony export */   \"SDLValidationContext\": function() { return /* binding */ SDLValidationContext; },\n/* harmony export */   \"ValidationContext\": function() { return /* binding */ ValidationContext; }\n/* harmony export */ });\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_visitor_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../language/visitor.mjs */ \"./node_modules/graphql/language/visitor.mjs\");\n/* harmony import */ var _utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utilities/TypeInfo.mjs */ \"./node_modules/graphql/utilities/TypeInfo.mjs\");\n\n\n\n\n/**\n * An instance of this class is passed as the \"this\" context to all validators,\n * allowing access to commonly useful contextual information from within a\n * validation rule.\n */\nclass ASTValidationContext {\n  constructor(ast, onError) {\n    this._ast = ast;\n    this._fragments = undefined;\n    this._fragmentSpreads = new Map();\n    this._recursivelyReferencedFragments = new Map();\n    this._onError = onError;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'ASTValidationContext';\n  }\n\n  reportError(error) {\n    this._onError(error);\n  }\n\n  getDocument() {\n    return this._ast;\n  }\n\n  getFragment(name) {\n    let fragments;\n\n    if (this._fragments) {\n      fragments = this._fragments;\n    } else {\n      fragments = Object.create(null);\n\n      for (const defNode of this.getDocument().definitions) {\n        if (defNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.FRAGMENT_DEFINITION) {\n          fragments[defNode.name.value] = defNode;\n        }\n      }\n\n      this._fragments = fragments;\n    }\n\n    return fragments[name];\n  }\n\n  getFragmentSpreads(node) {\n    let spreads = this._fragmentSpreads.get(node);\n\n    if (!spreads) {\n      spreads = [];\n      const setsToVisit = [node];\n      let set;\n\n      while ((set = setsToVisit.pop())) {\n        for (const selection of set.selections) {\n          if (selection.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.FRAGMENT_SPREAD) {\n            spreads.push(selection);\n          } else if (selection.selectionSet) {\n            setsToVisit.push(selection.selectionSet);\n          }\n        }\n      }\n\n      this._fragmentSpreads.set(node, spreads);\n    }\n\n    return spreads;\n  }\n\n  getRecursivelyReferencedFragments(operation) {\n    let fragments = this._recursivelyReferencedFragments.get(operation);\n\n    if (!fragments) {\n      fragments = [];\n      const collectedNames = Object.create(null);\n      const nodesToVisit = [operation.selectionSet];\n      let node;\n\n      while ((node = nodesToVisit.pop())) {\n        for (const spread of this.getFragmentSpreads(node)) {\n          const fragName = spread.name.value;\n\n          if (collectedNames[fragName] !== true) {\n            collectedNames[fragName] = true;\n            const fragment = this.getFragment(fragName);\n\n            if (fragment) {\n              fragments.push(fragment);\n              nodesToVisit.push(fragment.selectionSet);\n            }\n          }\n        }\n      }\n\n      this._recursivelyReferencedFragments.set(operation, fragments);\n    }\n\n    return fragments;\n  }\n}\nclass SDLValidationContext extends ASTValidationContext {\n  constructor(ast, schema, onError) {\n    super(ast, onError);\n    this._schema = schema;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'SDLValidationContext';\n  }\n\n  getSchema() {\n    return this._schema;\n  }\n}\nclass ValidationContext extends ASTValidationContext {\n  constructor(schema, ast, typeInfo, onError) {\n    super(ast, onError);\n    this._schema = schema;\n    this._typeInfo = typeInfo;\n    this._variableUsages = new Map();\n    this._recursiveVariableUsages = new Map();\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'ValidationContext';\n  }\n\n  getSchema() {\n    return this._schema;\n  }\n\n  getVariableUsages(node) {\n    let usages = this._variableUsages.get(node);\n\n    if (!usages) {\n      const newUsages = [];\n      const typeInfo = new _utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_1__.TypeInfo(this._schema);\n      (0,_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_2__.visit)(\n        node,\n        (0,_utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_1__.visitWithTypeInfo)(typeInfo, {\n          VariableDefinition: () => false,\n\n          Variable(variable) {\n            newUsages.push({\n              node: variable,\n              type: typeInfo.getInputType(),\n              defaultValue: typeInfo.getDefaultValue(),\n            });\n          },\n        }),\n      );\n      usages = newUsages;\n\n      this._variableUsages.set(node, usages);\n    }\n\n    return usages;\n  }\n\n  getRecursiveVariableUsages(operation) {\n    let usages = this._recursiveVariableUsages.get(operation);\n\n    if (!usages) {\n      usages = this.getVariableUsages(operation);\n\n      for (const frag of this.getRecursivelyReferencedFragments(operation)) {\n        usages = usages.concat(this.getVariableUsages(frag));\n      }\n\n      this._recursiveVariableUsages.set(operation, usages);\n    }\n\n    return usages;\n  }\n\n  getType() {\n    return this._typeInfo.getType();\n  }\n\n  getParentType() {\n    return this._typeInfo.getParentType();\n  }\n\n  getInputType() {\n    return this._typeInfo.getInputType();\n  }\n\n  getParentInputType() {\n    return this._typeInfo.getParentInputType();\n  }\n\n  getFieldDef() {\n    return this._typeInfo.getFieldDef();\n  }\n\n  getDirective() {\n    return this._typeInfo.getDirective();\n  }\n\n  getArgument() {\n    return this._typeInfo.getArgument();\n  }\n\n  getEnumValue() {\n    return this._typeInfo.getEnumValue();\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL1ZhbGlkYXRpb25Db250ZXh0Lm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBNkM7QUFDRztBQUN3Qjs7QUFFeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0EsNkJBQTZCLHlFQUF3QjtBQUNyRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlDQUFpQyxxRUFBb0I7QUFDckQ7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkJBQTJCLDZEQUFRO0FBQ25DLE1BQU0sNERBQUs7QUFDWDtBQUNBLFFBQVEsMEVBQWlCO0FBQ3pCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsV0FBVztBQUNYLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9WYWxpZGF0aW9uQ29udGV4dC5tanM/Y2Y1MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbmltcG9ydCB7IHZpc2l0IH0gZnJvbSAnLi4vbGFuZ3VhZ2UvdmlzaXRvci5tanMnO1xuaW1wb3J0IHsgVHlwZUluZm8sIHZpc2l0V2l0aFR5cGVJbmZvIH0gZnJvbSAnLi4vdXRpbGl0aWVzL1R5cGVJbmZvLm1qcyc7XG5cbi8qKlxuICogQW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBpcyBwYXNzZWQgYXMgdGhlIFwidGhpc1wiIGNvbnRleHQgdG8gYWxsIHZhbGlkYXRvcnMsXG4gKiBhbGxvd2luZyBhY2Nlc3MgdG8gY29tbW9ubHkgdXNlZnVsIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gZnJvbSB3aXRoaW4gYVxuICogdmFsaWRhdGlvbiBydWxlLlxuICovXG5leHBvcnQgY2xhc3MgQVNUVmFsaWRhdGlvbkNvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihhc3QsIG9uRXJyb3IpIHtcbiAgICB0aGlzLl9hc3QgPSBhc3Q7XG4gICAgdGhpcy5fZnJhZ21lbnRzID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2ZyYWdtZW50U3ByZWFkcyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLl9yZWN1cnNpdmVseVJlZmVyZW5jZWRGcmFnbWVudHMgPSBuZXcgTWFwKCk7XG4gICAgdGhpcy5fb25FcnJvciA9IG9uRXJyb3I7XG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdBU1RWYWxpZGF0aW9uQ29udGV4dCc7XG4gIH1cblxuICByZXBvcnRFcnJvcihlcnJvcikge1xuICAgIHRoaXMuX29uRXJyb3IoZXJyb3IpO1xuICB9XG5cbiAgZ2V0RG9jdW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FzdDtcbiAgfVxuXG4gIGdldEZyYWdtZW50KG5hbWUpIHtcbiAgICBsZXQgZnJhZ21lbnRzO1xuXG4gICAgaWYgKHRoaXMuX2ZyYWdtZW50cykge1xuICAgICAgZnJhZ21lbnRzID0gdGhpcy5fZnJhZ21lbnRzO1xuICAgIH0gZWxzZSB7XG4gICAgICBmcmFnbWVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgICBmb3IgKGNvbnN0IGRlZk5vZGUgb2YgdGhpcy5nZXREb2N1bWVudCgpLmRlZmluaXRpb25zKSB7XG4gICAgICAgIGlmIChkZWZOb2RlLmtpbmQgPT09IEtpbmQuRlJBR01FTlRfREVGSU5JVElPTikge1xuICAgICAgICAgIGZyYWdtZW50c1tkZWZOb2RlLm5hbWUudmFsdWVdID0gZGVmTm9kZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9mcmFnbWVudHMgPSBmcmFnbWVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyYWdtZW50c1tuYW1lXTtcbiAgfVxuXG4gIGdldEZyYWdtZW50U3ByZWFkcyhub2RlKSB7XG4gICAgbGV0IHNwcmVhZHMgPSB0aGlzLl9mcmFnbWVudFNwcmVhZHMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKCFzcHJlYWRzKSB7XG4gICAgICBzcHJlYWRzID0gW107XG4gICAgICBjb25zdCBzZXRzVG9WaXNpdCA9IFtub2RlXTtcbiAgICAgIGxldCBzZXQ7XG5cbiAgICAgIHdoaWxlICgoc2V0ID0gc2V0c1RvVmlzaXQucG9wKCkpKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc2VsZWN0aW9uIG9mIHNldC5zZWxlY3Rpb25zKSB7XG4gICAgICAgICAgaWYgKHNlbGVjdGlvbi5raW5kID09PSBLaW5kLkZSQUdNRU5UX1NQUkVBRCkge1xuICAgICAgICAgICAgc3ByZWFkcy5wdXNoKHNlbGVjdGlvbik7XG4gICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rpb24uc2VsZWN0aW9uU2V0KSB7XG4gICAgICAgICAgICBzZXRzVG9WaXNpdC5wdXNoKHNlbGVjdGlvbi5zZWxlY3Rpb25TZXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9mcmFnbWVudFNwcmVhZHMuc2V0KG5vZGUsIHNwcmVhZHMpO1xuICAgIH1cblxuICAgIHJldHVybiBzcHJlYWRzO1xuICB9XG5cbiAgZ2V0UmVjdXJzaXZlbHlSZWZlcmVuY2VkRnJhZ21lbnRzKG9wZXJhdGlvbikge1xuICAgIGxldCBmcmFnbWVudHMgPSB0aGlzLl9yZWN1cnNpdmVseVJlZmVyZW5jZWRGcmFnbWVudHMuZ2V0KG9wZXJhdGlvbik7XG5cbiAgICBpZiAoIWZyYWdtZW50cykge1xuICAgICAgZnJhZ21lbnRzID0gW107XG4gICAgICBjb25zdCBjb2xsZWN0ZWROYW1lcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICBjb25zdCBub2Rlc1RvVmlzaXQgPSBbb3BlcmF0aW9uLnNlbGVjdGlvblNldF07XG4gICAgICBsZXQgbm9kZTtcblxuICAgICAgd2hpbGUgKChub2RlID0gbm9kZXNUb1Zpc2l0LnBvcCgpKSkge1xuICAgICAgICBmb3IgKGNvbnN0IHNwcmVhZCBvZiB0aGlzLmdldEZyYWdtZW50U3ByZWFkcyhub2RlKSkge1xuICAgICAgICAgIGNvbnN0IGZyYWdOYW1lID0gc3ByZWFkLm5hbWUudmFsdWU7XG5cbiAgICAgICAgICBpZiAoY29sbGVjdGVkTmFtZXNbZnJhZ05hbWVdICE9PSB0cnVlKSB7XG4gICAgICAgICAgICBjb2xsZWN0ZWROYW1lc1tmcmFnTmFtZV0gPSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnQgPSB0aGlzLmdldEZyYWdtZW50KGZyYWdOYW1lKTtcblxuICAgICAgICAgICAgaWYgKGZyYWdtZW50KSB7XG4gICAgICAgICAgICAgIGZyYWdtZW50cy5wdXNoKGZyYWdtZW50KTtcbiAgICAgICAgICAgICAgbm9kZXNUb1Zpc2l0LnB1c2goZnJhZ21lbnQuc2VsZWN0aW9uU2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5fcmVjdXJzaXZlbHlSZWZlcmVuY2VkRnJhZ21lbnRzLnNldChvcGVyYXRpb24sIGZyYWdtZW50cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyYWdtZW50cztcbiAgfVxufVxuZXhwb3J0IGNsYXNzIFNETFZhbGlkYXRpb25Db250ZXh0IGV4dGVuZHMgQVNUVmFsaWRhdGlvbkNvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihhc3QsIHNjaGVtYSwgb25FcnJvcikge1xuICAgIHN1cGVyKGFzdCwgb25FcnJvcik7XG4gICAgdGhpcy5fc2NoZW1hID0gc2NoZW1hO1xuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnU0RMVmFsaWRhdGlvbkNvbnRleHQnO1xuICB9XG5cbiAgZ2V0U2NoZW1hKCkge1xuICAgIHJldHVybiB0aGlzLl9zY2hlbWE7XG4gIH1cbn1cbmV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uQ29udGV4dCBleHRlbmRzIEFTVFZhbGlkYXRpb25Db250ZXh0IHtcbiAgY29uc3RydWN0b3Ioc2NoZW1hLCBhc3QsIHR5cGVJbmZvLCBvbkVycm9yKSB7XG4gICAgc3VwZXIoYXN0LCBvbkVycm9yKTtcbiAgICB0aGlzLl9zY2hlbWEgPSBzY2hlbWE7XG4gICAgdGhpcy5fdHlwZUluZm8gPSB0eXBlSW5mbztcbiAgICB0aGlzLl92YXJpYWJsZVVzYWdlcyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLl9yZWN1cnNpdmVWYXJpYWJsZVVzYWdlcyA9IG5ldyBNYXAoKTtcbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gJ1ZhbGlkYXRpb25Db250ZXh0JztcbiAgfVxuXG4gIGdldFNjaGVtYSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2NoZW1hO1xuICB9XG5cbiAgZ2V0VmFyaWFibGVVc2FnZXMobm9kZSkge1xuICAgIGxldCB1c2FnZXMgPSB0aGlzLl92YXJpYWJsZVVzYWdlcy5nZXQobm9kZSk7XG5cbiAgICBpZiAoIXVzYWdlcykge1xuICAgICAgY29uc3QgbmV3VXNhZ2VzID0gW107XG4gICAgICBjb25zdCB0eXBlSW5mbyA9IG5ldyBUeXBlSW5mbyh0aGlzLl9zY2hlbWEpO1xuICAgICAgdmlzaXQoXG4gICAgICAgIG5vZGUsXG4gICAgICAgIHZpc2l0V2l0aFR5cGVJbmZvKHR5cGVJbmZvLCB7XG4gICAgICAgICAgVmFyaWFibGVEZWZpbml0aW9uOiAoKSA9PiBmYWxzZSxcblxuICAgICAgICAgIFZhcmlhYmxlKHZhcmlhYmxlKSB7XG4gICAgICAgICAgICBuZXdVc2FnZXMucHVzaCh7XG4gICAgICAgICAgICAgIG5vZGU6IHZhcmlhYmxlLFxuICAgICAgICAgICAgICB0eXBlOiB0eXBlSW5mby5nZXRJbnB1dFR5cGUoKSxcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB0eXBlSW5mby5nZXREZWZhdWx0VmFsdWUoKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICAgIHVzYWdlcyA9IG5ld1VzYWdlcztcblxuICAgICAgdGhpcy5fdmFyaWFibGVVc2FnZXMuc2V0KG5vZGUsIHVzYWdlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVzYWdlcztcbiAgfVxuXG4gIGdldFJlY3Vyc2l2ZVZhcmlhYmxlVXNhZ2VzKG9wZXJhdGlvbikge1xuICAgIGxldCB1c2FnZXMgPSB0aGlzLl9yZWN1cnNpdmVWYXJpYWJsZVVzYWdlcy5nZXQob3BlcmF0aW9uKTtcblxuICAgIGlmICghdXNhZ2VzKSB7XG4gICAgICB1c2FnZXMgPSB0aGlzLmdldFZhcmlhYmxlVXNhZ2VzKG9wZXJhdGlvbik7XG5cbiAgICAgIGZvciAoY29uc3QgZnJhZyBvZiB0aGlzLmdldFJlY3Vyc2l2ZWx5UmVmZXJlbmNlZEZyYWdtZW50cyhvcGVyYXRpb24pKSB7XG4gICAgICAgIHVzYWdlcyA9IHVzYWdlcy5jb25jYXQodGhpcy5nZXRWYXJpYWJsZVVzYWdlcyhmcmFnKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3JlY3Vyc2l2ZVZhcmlhYmxlVXNhZ2VzLnNldChvcGVyYXRpb24sIHVzYWdlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVzYWdlcztcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGVJbmZvLmdldFR5cGUoKTtcbiAgfVxuXG4gIGdldFBhcmVudFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGVJbmZvLmdldFBhcmVudFR5cGUoKTtcbiAgfVxuXG4gIGdldElucHV0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZUluZm8uZ2V0SW5wdXRUeXBlKCk7XG4gIH1cblxuICBnZXRQYXJlbnRJbnB1dFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGVJbmZvLmdldFBhcmVudElucHV0VHlwZSgpO1xuICB9XG5cbiAgZ2V0RmllbGREZWYoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGVJbmZvLmdldEZpZWxkRGVmKCk7XG4gIH1cblxuICBnZXREaXJlY3RpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGVJbmZvLmdldERpcmVjdGl2ZSgpO1xuICB9XG5cbiAgZ2V0QXJndW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGVJbmZvLmdldEFyZ3VtZW50KCk7XG4gIH1cblxuICBnZXRFbnVtVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGVJbmZvLmdldEVudW1WYWx1ZSgpO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/ValidationContext.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/index.mjs":
/*!***************************************************!*\
  !*** ./node_modules/graphql/validation/index.mjs ***!
  \***************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ExecutableDefinitionsRule\": function() { return /* reexport safe */ _rules_ExecutableDefinitionsRule_mjs__WEBPACK_IMPORTED_MODULE_3__.ExecutableDefinitionsRule; },\n/* harmony export */   \"FieldsOnCorrectTypeRule\": function() { return /* reexport safe */ _rules_FieldsOnCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_4__.FieldsOnCorrectTypeRule; },\n/* harmony export */   \"FragmentsOnCompositeTypesRule\": function() { return /* reexport safe */ _rules_FragmentsOnCompositeTypesRule_mjs__WEBPACK_IMPORTED_MODULE_5__.FragmentsOnCompositeTypesRule; },\n/* harmony export */   \"KnownArgumentNamesRule\": function() { return /* reexport safe */ _rules_KnownArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_6__.KnownArgumentNamesRule; },\n/* harmony export */   \"KnownDirectivesRule\": function() { return /* reexport safe */ _rules_KnownDirectivesRule_mjs__WEBPACK_IMPORTED_MODULE_7__.KnownDirectivesRule; },\n/* harmony export */   \"KnownFragmentNamesRule\": function() { return /* reexport safe */ _rules_KnownFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_8__.KnownFragmentNamesRule; },\n/* harmony export */   \"KnownTypeNamesRule\": function() { return /* reexport safe */ _rules_KnownTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_9__.KnownTypeNamesRule; },\n/* harmony export */   \"LoneAnonymousOperationRule\": function() { return /* reexport safe */ _rules_LoneAnonymousOperationRule_mjs__WEBPACK_IMPORTED_MODULE_10__.LoneAnonymousOperationRule; },\n/* harmony export */   \"LoneSchemaDefinitionRule\": function() { return /* reexport safe */ _rules_LoneSchemaDefinitionRule_mjs__WEBPACK_IMPORTED_MODULE_29__.LoneSchemaDefinitionRule; },\n/* harmony export */   \"NoDeprecatedCustomRule\": function() { return /* reexport safe */ _rules_custom_NoDeprecatedCustomRule_mjs__WEBPACK_IMPORTED_MODULE_37__.NoDeprecatedCustomRule; },\n/* harmony export */   \"NoFragmentCyclesRule\": function() { return /* reexport safe */ _rules_NoFragmentCyclesRule_mjs__WEBPACK_IMPORTED_MODULE_11__.NoFragmentCyclesRule; },\n/* harmony export */   \"NoSchemaIntrospectionCustomRule\": function() { return /* reexport safe */ _rules_custom_NoSchemaIntrospectionCustomRule_mjs__WEBPACK_IMPORTED_MODULE_38__.NoSchemaIntrospectionCustomRule; },\n/* harmony export */   \"NoUndefinedVariablesRule\": function() { return /* reexport safe */ _rules_NoUndefinedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_12__.NoUndefinedVariablesRule; },\n/* harmony export */   \"NoUnusedFragmentsRule\": function() { return /* reexport safe */ _rules_NoUnusedFragmentsRule_mjs__WEBPACK_IMPORTED_MODULE_13__.NoUnusedFragmentsRule; },\n/* harmony export */   \"NoUnusedVariablesRule\": function() { return /* reexport safe */ _rules_NoUnusedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_14__.NoUnusedVariablesRule; },\n/* harmony export */   \"OverlappingFieldsCanBeMergedRule\": function() { return /* reexport safe */ _rules_OverlappingFieldsCanBeMergedRule_mjs__WEBPACK_IMPORTED_MODULE_15__.OverlappingFieldsCanBeMergedRule; },\n/* harmony export */   \"PossibleFragmentSpreadsRule\": function() { return /* reexport safe */ _rules_PossibleFragmentSpreadsRule_mjs__WEBPACK_IMPORTED_MODULE_16__.PossibleFragmentSpreadsRule; },\n/* harmony export */   \"PossibleTypeExtensionsRule\": function() { return /* reexport safe */ _rules_PossibleTypeExtensionsRule_mjs__WEBPACK_IMPORTED_MODULE_36__.PossibleTypeExtensionsRule; },\n/* harmony export */   \"ProvidedRequiredArgumentsRule\": function() { return /* reexport safe */ _rules_ProvidedRequiredArgumentsRule_mjs__WEBPACK_IMPORTED_MODULE_17__.ProvidedRequiredArgumentsRule; },\n/* harmony export */   \"ScalarLeafsRule\": function() { return /* reexport safe */ _rules_ScalarLeafsRule_mjs__WEBPACK_IMPORTED_MODULE_18__.ScalarLeafsRule; },\n/* harmony export */   \"SingleFieldSubscriptionsRule\": function() { return /* reexport safe */ _rules_SingleFieldSubscriptionsRule_mjs__WEBPACK_IMPORTED_MODULE_19__.SingleFieldSubscriptionsRule; },\n/* harmony export */   \"UniqueArgumentDefinitionNamesRule\": function() { return /* reexport safe */ _rules_UniqueArgumentDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_34__.UniqueArgumentDefinitionNamesRule; },\n/* harmony export */   \"UniqueArgumentNamesRule\": function() { return /* reexport safe */ _rules_UniqueArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_20__.UniqueArgumentNamesRule; },\n/* harmony export */   \"UniqueDirectiveNamesRule\": function() { return /* reexport safe */ _rules_UniqueDirectiveNamesRule_mjs__WEBPACK_IMPORTED_MODULE_35__.UniqueDirectiveNamesRule; },\n/* harmony export */   \"UniqueDirectivesPerLocationRule\": function() { return /* reexport safe */ _rules_UniqueDirectivesPerLocationRule_mjs__WEBPACK_IMPORTED_MODULE_21__.UniqueDirectivesPerLocationRule; },\n/* harmony export */   \"UniqueEnumValueNamesRule\": function() { return /* reexport safe */ _rules_UniqueEnumValueNamesRule_mjs__WEBPACK_IMPORTED_MODULE_32__.UniqueEnumValueNamesRule; },\n/* harmony export */   \"UniqueFieldDefinitionNamesRule\": function() { return /* reexport safe */ _rules_UniqueFieldDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_33__.UniqueFieldDefinitionNamesRule; },\n/* harmony export */   \"UniqueFragmentNamesRule\": function() { return /* reexport safe */ _rules_UniqueFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_22__.UniqueFragmentNamesRule; },\n/* harmony export */   \"UniqueInputFieldNamesRule\": function() { return /* reexport safe */ _rules_UniqueInputFieldNamesRule_mjs__WEBPACK_IMPORTED_MODULE_23__.UniqueInputFieldNamesRule; },\n/* harmony export */   \"UniqueOperationNamesRule\": function() { return /* reexport safe */ _rules_UniqueOperationNamesRule_mjs__WEBPACK_IMPORTED_MODULE_24__.UniqueOperationNamesRule; },\n/* harmony export */   \"UniqueOperationTypesRule\": function() { return /* reexport safe */ _rules_UniqueOperationTypesRule_mjs__WEBPACK_IMPORTED_MODULE_30__.UniqueOperationTypesRule; },\n/* harmony export */   \"UniqueTypeNamesRule\": function() { return /* reexport safe */ _rules_UniqueTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_31__.UniqueTypeNamesRule; },\n/* harmony export */   \"UniqueVariableNamesRule\": function() { return /* reexport safe */ _rules_UniqueVariableNamesRule_mjs__WEBPACK_IMPORTED_MODULE_25__.UniqueVariableNamesRule; },\n/* harmony export */   \"ValidationContext\": function() { return /* reexport safe */ _ValidationContext_mjs__WEBPACK_IMPORTED_MODULE_1__.ValidationContext; },\n/* harmony export */   \"ValuesOfCorrectTypeRule\": function() { return /* reexport safe */ _rules_ValuesOfCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_26__.ValuesOfCorrectTypeRule; },\n/* harmony export */   \"VariablesAreInputTypesRule\": function() { return /* reexport safe */ _rules_VariablesAreInputTypesRule_mjs__WEBPACK_IMPORTED_MODULE_27__.VariablesAreInputTypesRule; },\n/* harmony export */   \"VariablesInAllowedPositionRule\": function() { return /* reexport safe */ _rules_VariablesInAllowedPositionRule_mjs__WEBPACK_IMPORTED_MODULE_28__.VariablesInAllowedPositionRule; },\n/* harmony export */   \"specifiedRules\": function() { return /* reexport safe */ _specifiedRules_mjs__WEBPACK_IMPORTED_MODULE_2__.specifiedRules; },\n/* harmony export */   \"validate\": function() { return /* reexport safe */ _validate_mjs__WEBPACK_IMPORTED_MODULE_0__.validate; }\n/* harmony export */ });\n/* harmony import */ var _validate_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./validate.mjs */ \"./node_modules/graphql/validation/validate.mjs\");\n/* harmony import */ var _ValidationContext_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ValidationContext.mjs */ \"./node_modules/graphql/validation/ValidationContext.mjs\");\n/* harmony import */ var _specifiedRules_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./specifiedRules.mjs */ \"./node_modules/graphql/validation/specifiedRules.mjs\");\n/* harmony import */ var _rules_ExecutableDefinitionsRule_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rules/ExecutableDefinitionsRule.mjs */ \"./node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs\");\n/* harmony import */ var _rules_FieldsOnCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./rules/FieldsOnCorrectTypeRule.mjs */ \"./node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs\");\n/* harmony import */ var _rules_FragmentsOnCompositeTypesRule_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./rules/FragmentsOnCompositeTypesRule.mjs */ \"./node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs\");\n/* harmony import */ var _rules_KnownArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./rules/KnownArgumentNamesRule.mjs */ \"./node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs\");\n/* harmony import */ var _rules_KnownDirectivesRule_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./rules/KnownDirectivesRule.mjs */ \"./node_modules/graphql/validation/rules/KnownDirectivesRule.mjs\");\n/* harmony import */ var _rules_KnownFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./rules/KnownFragmentNamesRule.mjs */ \"./node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs\");\n/* harmony import */ var _rules_KnownTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rules/KnownTypeNamesRule.mjs */ \"./node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs\");\n/* harmony import */ var _rules_LoneAnonymousOperationRule_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rules/LoneAnonymousOperationRule.mjs */ \"./node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs\");\n/* harmony import */ var _rules_NoFragmentCyclesRule_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./rules/NoFragmentCyclesRule.mjs */ \"./node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs\");\n/* harmony import */ var _rules_NoUndefinedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./rules/NoUndefinedVariablesRule.mjs */ \"./node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs\");\n/* harmony import */ var _rules_NoUnusedFragmentsRule_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./rules/NoUnusedFragmentsRule.mjs */ \"./node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs\");\n/* harmony import */ var _rules_NoUnusedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rules/NoUnusedVariablesRule.mjs */ \"./node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs\");\n/* harmony import */ var _rules_OverlappingFieldsCanBeMergedRule_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./rules/OverlappingFieldsCanBeMergedRule.mjs */ \"./node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs\");\n/* harmony import */ var _rules_PossibleFragmentSpreadsRule_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./rules/PossibleFragmentSpreadsRule.mjs */ \"./node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs\");\n/* harmony import */ var _rules_ProvidedRequiredArgumentsRule_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./rules/ProvidedRequiredArgumentsRule.mjs */ \"./node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs\");\n/* harmony import */ var _rules_ScalarLeafsRule_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./rules/ScalarLeafsRule.mjs */ \"./node_modules/graphql/validation/rules/ScalarLeafsRule.mjs\");\n/* harmony import */ var _rules_SingleFieldSubscriptionsRule_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./rules/SingleFieldSubscriptionsRule.mjs */ \"./node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs\");\n/* harmony import */ var _rules_UniqueArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./rules/UniqueArgumentNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueDirectivesPerLocationRule_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./rules/UniqueDirectivesPerLocationRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs\");\n/* harmony import */ var _rules_UniqueFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./rules/UniqueFragmentNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueInputFieldNamesRule_mjs__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./rules/UniqueInputFieldNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueOperationNamesRule_mjs__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./rules/UniqueOperationNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueVariableNamesRule_mjs__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./rules/UniqueVariableNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs\");\n/* harmony import */ var _rules_ValuesOfCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./rules/ValuesOfCorrectTypeRule.mjs */ \"./node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs\");\n/* harmony import */ var _rules_VariablesAreInputTypesRule_mjs__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./rules/VariablesAreInputTypesRule.mjs */ \"./node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs\");\n/* harmony import */ var _rules_VariablesInAllowedPositionRule_mjs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./rules/VariablesInAllowedPositionRule.mjs */ \"./node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs\");\n/* harmony import */ var _rules_LoneSchemaDefinitionRule_mjs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./rules/LoneSchemaDefinitionRule.mjs */ \"./node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs\");\n/* harmony import */ var _rules_UniqueOperationTypesRule_mjs__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./rules/UniqueOperationTypesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs\");\n/* harmony import */ var _rules_UniqueTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./rules/UniqueTypeNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueEnumValueNamesRule_mjs__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./rules/UniqueEnumValueNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueFieldDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./rules/UniqueFieldDefinitionNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueArgumentDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./rules/UniqueArgumentDefinitionNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueDirectiveNamesRule_mjs__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./rules/UniqueDirectiveNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs\");\n/* harmony import */ var _rules_PossibleTypeExtensionsRule_mjs__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./rules/PossibleTypeExtensionsRule.mjs */ \"./node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs\");\n/* harmony import */ var _rules_custom_NoDeprecatedCustomRule_mjs__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./rules/custom/NoDeprecatedCustomRule.mjs */ \"./node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs\");\n/* harmony import */ var _rules_custom_NoSchemaIntrospectionCustomRule_mjs__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./rules/custom/NoSchemaIntrospectionCustomRule.mjs */ \"./node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs\");\n\n\n// All validation rules in the GraphQL Specification.\n // Spec Section: \"Executable Definitions\"\n\n // Spec Section: \"Field Selections on Objects, Interfaces, and Unions Types\"\n\n // Spec Section: \"Fragments on Composite Types\"\n\n // Spec Section: \"Argument Names\"\n\n // Spec Section: \"Directives Are Defined\"\n\n // Spec Section: \"Fragment spread target defined\"\n\n // Spec Section: \"Fragment Spread Type Existence\"\n\n // Spec Section: \"Lone Anonymous Operation\"\n\n // Spec Section: \"Fragments must not form cycles\"\n\n // Spec Section: \"All Variable Used Defined\"\n\n // Spec Section: \"Fragments must be used\"\n\n // Spec Section: \"All Variables Used\"\n\n // Spec Section: \"Field Selection Merging\"\n\n // Spec Section: \"Fragment spread is possible\"\n\n // Spec Section: \"Argument Optionality\"\n\n // Spec Section: \"Leaf Field Selections\"\n\n // Spec Section: \"Subscriptions with Single Root Field\"\n\n // Spec Section: \"Argument Uniqueness\"\n\n // Spec Section: \"Directives Are Unique Per Location\"\n\n // Spec Section: \"Fragment Name Uniqueness\"\n\n // Spec Section: \"Input Object Field Uniqueness\"\n\n // Spec Section: \"Operation Name Uniqueness\"\n\n // Spec Section: \"Variable Uniqueness\"\n\n // Spec Section: \"Values Type Correctness\"\n\n // Spec Section: \"Variables are Input Types\"\n\n // Spec Section: \"All Variable Usages Are Allowed\"\n\n // SDL-specific validation rules\n\n\n\n\n\n\n\n\n // Optional rules not defined by the GraphQL Specification\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL2luZGV4Lm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMEM7QUFDa0I7QUFDNUQ7QUFDc0QsQ0FBQzs7QUFFMkIsQ0FBQzs7QUFFTCxDQUFDOztBQUVXLENBQUM7O0FBRWYsQ0FBQzs7QUFFUCxDQUFDOztBQUVLLENBQUM7O0FBRVQsQ0FBQzs7QUFFZSxDQUFDOztBQUViLENBQUM7O0FBRU8sQ0FBQzs7QUFFUCxDQUFDOztBQUVELENBQUM7O0FBRXFCLENBQUM7O0FBRVgsQ0FBQzs7QUFFRyxDQUFDOztBQUU3QixDQUFDOztBQUV5QixDQUFDOztBQUVYLENBQUM7O0FBRWUsQ0FBQzs7QUFFakIsQ0FBQzs7QUFFRyxDQUFDOztBQUVILENBQUM7O0FBRUgsQ0FBQzs7QUFFRCxDQUFDOztBQUVLLENBQUM7O0FBRU8sQ0FBQzs7QUFFYjtBQUNBO0FBQ1Y7QUFDVTtBQUNZO0FBQ007QUFDbEI7QUFDSSxDQUFDOztBQUVGO0FBQ2tCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vaW5kZXgubWpzP2I3MDEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgdmFsaWRhdGUgfSBmcm9tICcuL3ZhbGlkYXRlLm1qcyc7XG5leHBvcnQgeyBWYWxpZGF0aW9uQ29udGV4dCB9IGZyb20gJy4vVmFsaWRhdGlvbkNvbnRleHQubWpzJztcbi8vIEFsbCB2YWxpZGF0aW9uIHJ1bGVzIGluIHRoZSBHcmFwaFFMIFNwZWNpZmljYXRpb24uXG5leHBvcnQgeyBzcGVjaWZpZWRSdWxlcyB9IGZyb20gJy4vc3BlY2lmaWVkUnVsZXMubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkV4ZWN1dGFibGUgRGVmaW5pdGlvbnNcIlxuXG5leHBvcnQgeyBFeGVjdXRhYmxlRGVmaW5pdGlvbnNSdWxlIH0gZnJvbSAnLi9ydWxlcy9FeGVjdXRhYmxlRGVmaW5pdGlvbnNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJGaWVsZCBTZWxlY3Rpb25zIG9uIE9iamVjdHMsIEludGVyZmFjZXMsIGFuZCBVbmlvbnMgVHlwZXNcIlxuXG5leHBvcnQgeyBGaWVsZHNPbkNvcnJlY3RUeXBlUnVsZSB9IGZyb20gJy4vcnVsZXMvRmllbGRzT25Db3JyZWN0VHlwZVJ1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkZyYWdtZW50cyBvbiBDb21wb3NpdGUgVHlwZXNcIlxuXG5leHBvcnQgeyBGcmFnbWVudHNPbkNvbXBvc2l0ZVR5cGVzUnVsZSB9IGZyb20gJy4vcnVsZXMvRnJhZ21lbnRzT25Db21wb3NpdGVUeXBlc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkFyZ3VtZW50IE5hbWVzXCJcblxuZXhwb3J0IHsgS25vd25Bcmd1bWVudE5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvS25vd25Bcmd1bWVudE5hbWVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiRGlyZWN0aXZlcyBBcmUgRGVmaW5lZFwiXG5cbmV4cG9ydCB7IEtub3duRGlyZWN0aXZlc1J1bGUgfSBmcm9tICcuL3J1bGVzL0tub3duRGlyZWN0aXZlc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkZyYWdtZW50IHNwcmVhZCB0YXJnZXQgZGVmaW5lZFwiXG5cbmV4cG9ydCB7IEtub3duRnJhZ21lbnROYW1lc1J1bGUgfSBmcm9tICcuL3J1bGVzL0tub3duRnJhZ21lbnROYW1lc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkZyYWdtZW50IFNwcmVhZCBUeXBlIEV4aXN0ZW5jZVwiXG5cbmV4cG9ydCB7IEtub3duVHlwZU5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvS25vd25UeXBlTmFtZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJMb25lIEFub255bW91cyBPcGVyYXRpb25cIlxuXG5leHBvcnQgeyBMb25lQW5vbnltb3VzT3BlcmF0aW9uUnVsZSB9IGZyb20gJy4vcnVsZXMvTG9uZUFub255bW91c09wZXJhdGlvblJ1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkZyYWdtZW50cyBtdXN0IG5vdCBmb3JtIGN5Y2xlc1wiXG5cbmV4cG9ydCB7IE5vRnJhZ21lbnRDeWNsZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9Ob0ZyYWdtZW50Q3ljbGVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiQWxsIFZhcmlhYmxlIFVzZWQgRGVmaW5lZFwiXG5cbmV4cG9ydCB7IE5vVW5kZWZpbmVkVmFyaWFibGVzUnVsZSB9IGZyb20gJy4vcnVsZXMvTm9VbmRlZmluZWRWYXJpYWJsZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJGcmFnbWVudHMgbXVzdCBiZSB1c2VkXCJcblxuZXhwb3J0IHsgTm9VbnVzZWRGcmFnbWVudHNSdWxlIH0gZnJvbSAnLi9ydWxlcy9Ob1VudXNlZEZyYWdtZW50c1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkFsbCBWYXJpYWJsZXMgVXNlZFwiXG5cbmV4cG9ydCB7IE5vVW51c2VkVmFyaWFibGVzUnVsZSB9IGZyb20gJy4vcnVsZXMvTm9VbnVzZWRWYXJpYWJsZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJGaWVsZCBTZWxlY3Rpb24gTWVyZ2luZ1wiXG5cbmV4cG9ydCB7IE92ZXJsYXBwaW5nRmllbGRzQ2FuQmVNZXJnZWRSdWxlIH0gZnJvbSAnLi9ydWxlcy9PdmVybGFwcGluZ0ZpZWxkc0NhbkJlTWVyZ2VkUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiRnJhZ21lbnQgc3ByZWFkIGlzIHBvc3NpYmxlXCJcblxuZXhwb3J0IHsgUG9zc2libGVGcmFnbWVudFNwcmVhZHNSdWxlIH0gZnJvbSAnLi9ydWxlcy9Qb3NzaWJsZUZyYWdtZW50U3ByZWFkc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkFyZ3VtZW50IE9wdGlvbmFsaXR5XCJcblxuZXhwb3J0IHsgUHJvdmlkZWRSZXF1aXJlZEFyZ3VtZW50c1J1bGUgfSBmcm9tICcuL3J1bGVzL1Byb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJMZWFmIEZpZWxkIFNlbGVjdGlvbnNcIlxuXG5leHBvcnQgeyBTY2FsYXJMZWFmc1J1bGUgfSBmcm9tICcuL3J1bGVzL1NjYWxhckxlYWZzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiU3Vic2NyaXB0aW9ucyB3aXRoIFNpbmdsZSBSb290IEZpZWxkXCJcblxuZXhwb3J0IHsgU2luZ2xlRmllbGRTdWJzY3JpcHRpb25zUnVsZSB9IGZyb20gJy4vcnVsZXMvU2luZ2xlRmllbGRTdWJzY3JpcHRpb25zUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiQXJndW1lbnQgVW5pcXVlbmVzc1wiXG5cbmV4cG9ydCB7IFVuaXF1ZUFyZ3VtZW50TmFtZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9VbmlxdWVBcmd1bWVudE5hbWVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiRGlyZWN0aXZlcyBBcmUgVW5pcXVlIFBlciBMb2NhdGlvblwiXG5cbmV4cG9ydCB7IFVuaXF1ZURpcmVjdGl2ZXNQZXJMb2NhdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL1VuaXF1ZURpcmVjdGl2ZXNQZXJMb2NhdGlvblJ1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkZyYWdtZW50IE5hbWUgVW5pcXVlbmVzc1wiXG5cbmV4cG9ydCB7IFVuaXF1ZUZyYWdtZW50TmFtZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9VbmlxdWVGcmFnbWVudE5hbWVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiSW5wdXQgT2JqZWN0IEZpZWxkIFVuaXF1ZW5lc3NcIlxuXG5leHBvcnQgeyBVbmlxdWVJbnB1dEZpZWxkTmFtZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9VbmlxdWVJbnB1dEZpZWxkTmFtZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJPcGVyYXRpb24gTmFtZSBVbmlxdWVuZXNzXCJcblxuZXhwb3J0IHsgVW5pcXVlT3BlcmF0aW9uTmFtZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9VbmlxdWVPcGVyYXRpb25OYW1lc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIlZhcmlhYmxlIFVuaXF1ZW5lc3NcIlxuXG5leHBvcnQgeyBVbmlxdWVWYXJpYWJsZU5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlVmFyaWFibGVOYW1lc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIlZhbHVlcyBUeXBlIENvcnJlY3RuZXNzXCJcblxuZXhwb3J0IHsgVmFsdWVzT2ZDb3JyZWN0VHlwZVJ1bGUgfSBmcm9tICcuL3J1bGVzL1ZhbHVlc09mQ29ycmVjdFR5cGVSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJWYXJpYWJsZXMgYXJlIElucHV0IFR5cGVzXCJcblxuZXhwb3J0IHsgVmFyaWFibGVzQXJlSW5wdXRUeXBlc1J1bGUgfSBmcm9tICcuL3J1bGVzL1ZhcmlhYmxlc0FyZUlucHV0VHlwZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJBbGwgVmFyaWFibGUgVXNhZ2VzIEFyZSBBbGxvd2VkXCJcblxuZXhwb3J0IHsgVmFyaWFibGVzSW5BbGxvd2VkUG9zaXRpb25SdWxlIH0gZnJvbSAnLi9ydWxlcy9WYXJpYWJsZXNJbkFsbG93ZWRQb3NpdGlvblJ1bGUubWpzJzsgLy8gU0RMLXNwZWNpZmljIHZhbGlkYXRpb24gcnVsZXNcblxuZXhwb3J0IHsgTG9uZVNjaGVtYURlZmluaXRpb25SdWxlIH0gZnJvbSAnLi9ydWxlcy9Mb25lU2NoZW1hRGVmaW5pdGlvblJ1bGUubWpzJztcbmV4cG9ydCB7IFVuaXF1ZU9wZXJhdGlvblR5cGVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlT3BlcmF0aW9uVHlwZXNSdWxlLm1qcyc7XG5leHBvcnQgeyBVbmlxdWVUeXBlTmFtZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9VbmlxdWVUeXBlTmFtZXNSdWxlLm1qcyc7XG5leHBvcnQgeyBVbmlxdWVFbnVtVmFsdWVOYW1lc1J1bGUgfSBmcm9tICcuL3J1bGVzL1VuaXF1ZUVudW1WYWx1ZU5hbWVzUnVsZS5tanMnO1xuZXhwb3J0IHsgVW5pcXVlRmllbGREZWZpbml0aW9uTmFtZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9VbmlxdWVGaWVsZERlZmluaXRpb25OYW1lc1J1bGUubWpzJztcbmV4cG9ydCB7IFVuaXF1ZUFyZ3VtZW50RGVmaW5pdGlvbk5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlQXJndW1lbnREZWZpbml0aW9uTmFtZXNSdWxlLm1qcyc7XG5leHBvcnQgeyBVbmlxdWVEaXJlY3RpdmVOYW1lc1J1bGUgfSBmcm9tICcuL3J1bGVzL1VuaXF1ZURpcmVjdGl2ZU5hbWVzUnVsZS5tanMnO1xuZXhwb3J0IHsgUG9zc2libGVUeXBlRXh0ZW5zaW9uc1J1bGUgfSBmcm9tICcuL3J1bGVzL1Bvc3NpYmxlVHlwZUV4dGVuc2lvbnNSdWxlLm1qcyc7IC8vIE9wdGlvbmFsIHJ1bGVzIG5vdCBkZWZpbmVkIGJ5IHRoZSBHcmFwaFFMIFNwZWNpZmljYXRpb25cblxuZXhwb3J0IHsgTm9EZXByZWNhdGVkQ3VzdG9tUnVsZSB9IGZyb20gJy4vcnVsZXMvY3VzdG9tL05vRGVwcmVjYXRlZEN1c3RvbVJ1bGUubWpzJztcbmV4cG9ydCB7IE5vU2NoZW1hSW50cm9zcGVjdGlvbkN1c3RvbVJ1bGUgfSBmcm9tICcuL3J1bGVzL2N1c3RvbS9Ob1NjaGVtYUludHJvc3BlY3Rpb25DdXN0b21SdWxlLm1qcyc7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/index.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs":
/*!*****************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ExecutableDefinitionsRule\": function() { return /* binding */ ExecutableDefinitionsRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_predicates_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../language/predicates.mjs */ \"./node_modules/graphql/language/predicates.mjs\");\n\n\n\n\n/**\n * Executable definitions\n *\n * A GraphQL document is only valid for execution if all definitions are either\n * operation or fragment definitions.\n *\n * See https://spec.graphql.org/draft/#sec-Executable-Definitions\n */\nfunction ExecutableDefinitionsRule(context) {\n  return {\n    Document(node) {\n      for (const definition of node.definitions) {\n        if (!(0,_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_0__.isExecutableDefinitionNode)(definition)) {\n          const defName =\n            definition.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.SCHEMA_DEFINITION ||\n            definition.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.SCHEMA_EXTENSION\n              ? 'schema'\n              : '\"' + definition.name.value + '\"';\n          context.reportError(\n            new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLError(\n              `The ${defName} definition is not executable.`,\n              definition,\n            ),\n          );\n        }\n      }\n\n      return false;\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0V4ZWN1dGFibGVEZWZpbml0aW9uc1J1bGUubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBNEQ7QUFDWjtBQUMyQjs7QUFFM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsYUFBYSxvRkFBMEI7QUFDdkM7QUFDQSxnQ0FBZ0MsdUVBQXNCO0FBQ3RELGdDQUFnQyxzRUFBcUI7QUFDckQ7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGlFQUFZO0FBQzVCLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0V4ZWN1dGFibGVEZWZpbml0aW9uc1J1bGUubWpzPzM3ZTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbmltcG9ydCB7IGlzRXhlY3V0YWJsZURlZmluaXRpb25Ob2RlIH0gZnJvbSAnLi4vLi4vbGFuZ3VhZ2UvcHJlZGljYXRlcy5tanMnO1xuXG4vKipcbiAqIEV4ZWN1dGFibGUgZGVmaW5pdGlvbnNcbiAqXG4gKiBBIEdyYXBoUUwgZG9jdW1lbnQgaXMgb25seSB2YWxpZCBmb3IgZXhlY3V0aW9uIGlmIGFsbCBkZWZpbml0aW9ucyBhcmUgZWl0aGVyXG4gKiBvcGVyYXRpb24gb3IgZnJhZ21lbnQgZGVmaW5pdGlvbnMuXG4gKlxuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLUV4ZWN1dGFibGUtRGVmaW5pdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEV4ZWN1dGFibGVEZWZpbml0aW9uc1J1bGUoY29udGV4dCkge1xuICByZXR1cm4ge1xuICAgIERvY3VtZW50KG5vZGUpIHtcbiAgICAgIGZvciAoY29uc3QgZGVmaW5pdGlvbiBvZiBub2RlLmRlZmluaXRpb25zKSB7XG4gICAgICAgIGlmICghaXNFeGVjdXRhYmxlRGVmaW5pdGlvbk5vZGUoZGVmaW5pdGlvbikpIHtcbiAgICAgICAgICBjb25zdCBkZWZOYW1lID1cbiAgICAgICAgICAgIGRlZmluaXRpb24ua2luZCA9PT0gS2luZC5TQ0hFTUFfREVGSU5JVElPTiB8fFxuICAgICAgICAgICAgZGVmaW5pdGlvbi5raW5kID09PSBLaW5kLlNDSEVNQV9FWFRFTlNJT05cbiAgICAgICAgICAgICAgPyAnc2NoZW1hJ1xuICAgICAgICAgICAgICA6ICdcIicgKyBkZWZpbml0aW9uLm5hbWUudmFsdWUgKyAnXCInO1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgICBgVGhlICR7ZGVmTmFtZX0gZGVmaW5pdGlvbiBpcyBub3QgZXhlY3V0YWJsZS5gLFxuICAgICAgICAgICAgICBkZWZpbml0aW9uLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs":
/*!***************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs ***!
  \***************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FieldsOnCorrectTypeRule\": function() { return /* binding */ FieldsOnCorrectTypeRule; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/didYouMean.mjs */ \"./node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../jsutils/naturalCompare.mjs */ \"./node_modules/graphql/jsutils/naturalCompare.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../jsutils/suggestionList.mjs */ \"./node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n/**\n * Fields on correct type\n *\n * A GraphQL document is only valid if all fields selected are defined by the\n * parent type, or are an allowed meta field such as __typename.\n *\n * See https://spec.graphql.org/draft/#sec-Field-Selections\n */\nfunction FieldsOnCorrectTypeRule(context) {\n  return {\n    Field(node) {\n      const type = context.getParentType();\n\n      if (type) {\n        const fieldDef = context.getFieldDef();\n\n        if (!fieldDef) {\n          // This field doesn't exist, lets look for suggestions.\n          const schema = context.getSchema();\n          const fieldName = node.name.value; // First determine if there are any suggested types to condition on.\n\n          let suggestion = (0,_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__.didYouMean)(\n            'to use an inline fragment on',\n            getSuggestedTypeNames(schema, type, fieldName),\n          ); // If there are no suggested types, then perhaps this was a typo?\n\n          if (suggestion === '') {\n            suggestion = (0,_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_0__.didYouMean)(getSuggestedFieldNames(type, fieldName));\n          } // Report an error, including helpful suggestions.\n\n          context.reportError(\n            new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n              `Cannot query field \"${fieldName}\" on type \"${type.name}\".` +\n                suggestion,\n              node,\n            ),\n          );\n        }\n      }\n    },\n  };\n}\n/**\n * Go through all of the implementations of type, as well as the interfaces that\n * they implement. If any of those types include the provided field, suggest them,\n * sorted by how often the type is referenced.\n */\n\nfunction getSuggestedTypeNames(schema, type, fieldName) {\n  if (!(0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isAbstractType)(type)) {\n    // Must be an Object type, which does not have possible fields.\n    return [];\n  }\n\n  const suggestedTypes = new Set();\n  const usageCount = Object.create(null);\n\n  for (const possibleType of schema.getPossibleTypes(type)) {\n    if (!possibleType.getFields()[fieldName]) {\n      continue;\n    } // This object type defines this field.\n\n    suggestedTypes.add(possibleType);\n    usageCount[possibleType.name] = 1;\n\n    for (const possibleInterface of possibleType.getInterfaces()) {\n      var _usageCount$possibleI;\n\n      if (!possibleInterface.getFields()[fieldName]) {\n        continue;\n      } // This interface type defines this field.\n\n      suggestedTypes.add(possibleInterface);\n      usageCount[possibleInterface.name] =\n        ((_usageCount$possibleI = usageCount[possibleInterface.name]) !==\n          null && _usageCount$possibleI !== void 0\n          ? _usageCount$possibleI\n          : 0) + 1;\n    }\n  }\n\n  return [...suggestedTypes]\n    .sort((typeA, typeB) => {\n      // Suggest both interface and object types based on how common they are.\n      const usageCountDiff = usageCount[typeB.name] - usageCount[typeA.name];\n\n      if (usageCountDiff !== 0) {\n        return usageCountDiff;\n      } // Suggest super types first followed by subtypes\n\n      if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isInterfaceType)(typeA) && schema.isSubType(typeA, typeB)) {\n        return -1;\n      }\n\n      if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isInterfaceType)(typeB) && schema.isSubType(typeB, typeA)) {\n        return 1;\n      }\n\n      return (0,_jsutils_naturalCompare_mjs__WEBPACK_IMPORTED_MODULE_3__.naturalCompare)(typeA.name, typeB.name);\n    })\n    .map((x) => x.name);\n}\n/**\n * For the field name provided, determine if there are any similar field names\n * that may be the result of a typo.\n */\n\nfunction getSuggestedFieldNames(type, fieldName) {\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isObjectType)(type) || (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isInterfaceType)(type)) {\n    const possibleFieldNames = Object.keys(type.getFields());\n    return (0,_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_4__.suggestionList)(fieldName, possibleFieldNames);\n  } // Otherwise, must be a Union type, which does not define fields.\n\n  return [];\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0ZpZWxkc09uQ29ycmVjdFR5cGVSdWxlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBMEQ7QUFDUTtBQUNBO0FBQ047QUFLekI7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDZDQUE2Qzs7QUFFN0MsMkJBQTJCLG1FQUFVO0FBQ3JDO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0EseUJBQXlCLG1FQUFVO0FBQ25DLFlBQVk7O0FBRVo7QUFDQSxnQkFBZ0IsaUVBQVk7QUFDNUIscUNBQXFDLFVBQVUsYUFBYSxVQUFVO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU8sb0VBQWM7QUFDckI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVE7O0FBRVI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTs7QUFFUixVQUFVLHFFQUFlO0FBQ3pCO0FBQ0E7O0FBRUEsVUFBVSxxRUFBZTtBQUN6QjtBQUNBOztBQUVBLGFBQWEsMkVBQWM7QUFDM0IsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU0sa0VBQVksVUFBVSxxRUFBZTtBQUMzQztBQUNBLFdBQVcsMkVBQWM7QUFDekIsSUFBSTs7QUFFSjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvRmllbGRzT25Db3JyZWN0VHlwZVJ1bGUubWpzP2QyYTQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlkWW91TWVhbiB9IGZyb20gJy4uLy4uL2pzdXRpbHMvZGlkWW91TWVhbi5tanMnO1xuaW1wb3J0IHsgbmF0dXJhbENvbXBhcmUgfSBmcm9tICcuLi8uLi9qc3V0aWxzL25hdHVyYWxDb21wYXJlLm1qcyc7XG5pbXBvcnQgeyBzdWdnZXN0aW9uTGlzdCB9IGZyb20gJy4uLy4uL2pzdXRpbHMvc3VnZ2VzdGlvbkxpc3QubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHtcbiAgaXNBYnN0cmFjdFR5cGUsXG4gIGlzSW50ZXJmYWNlVHlwZSxcbiAgaXNPYmplY3RUeXBlLFxufSBmcm9tICcuLi8uLi90eXBlL2RlZmluaXRpb24ubWpzJztcblxuLyoqXG4gKiBGaWVsZHMgb24gY29ycmVjdCB0eXBlXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgYWxsIGZpZWxkcyBzZWxlY3RlZCBhcmUgZGVmaW5lZCBieSB0aGVcbiAqIHBhcmVudCB0eXBlLCBvciBhcmUgYW4gYWxsb3dlZCBtZXRhIGZpZWxkIHN1Y2ggYXMgX190eXBlbmFtZS5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9zcGVjLmdyYXBocWwub3JnL2RyYWZ0LyNzZWMtRmllbGQtU2VsZWN0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gRmllbGRzT25Db3JyZWN0VHlwZVJ1bGUoY29udGV4dCkge1xuICByZXR1cm4ge1xuICAgIEZpZWxkKG5vZGUpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSBjb250ZXh0LmdldFBhcmVudFR5cGUoKTtcblxuICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgY29uc3QgZmllbGREZWYgPSBjb250ZXh0LmdldEZpZWxkRGVmKCk7XG5cbiAgICAgICAgaWYgKCFmaWVsZERlZikge1xuICAgICAgICAgIC8vIFRoaXMgZmllbGQgZG9lc24ndCBleGlzdCwgbGV0cyBsb29rIGZvciBzdWdnZXN0aW9ucy5cbiAgICAgICAgICBjb25zdCBzY2hlbWEgPSBjb250ZXh0LmdldFNjaGVtYSgpO1xuICAgICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IG5vZGUubmFtZS52YWx1ZTsgLy8gRmlyc3QgZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBhbnkgc3VnZ2VzdGVkIHR5cGVzIHRvIGNvbmRpdGlvbiBvbi5cblxuICAgICAgICAgIGxldCBzdWdnZXN0aW9uID0gZGlkWW91TWVhbihcbiAgICAgICAgICAgICd0byB1c2UgYW4gaW5saW5lIGZyYWdtZW50IG9uJyxcbiAgICAgICAgICAgIGdldFN1Z2dlc3RlZFR5cGVOYW1lcyhzY2hlbWEsIHR5cGUsIGZpZWxkTmFtZSksXG4gICAgICAgICAgKTsgLy8gSWYgdGhlcmUgYXJlIG5vIHN1Z2dlc3RlZCB0eXBlcywgdGhlbiBwZXJoYXBzIHRoaXMgd2FzIGEgdHlwbz9cblxuICAgICAgICAgIGlmIChzdWdnZXN0aW9uID09PSAnJykge1xuICAgICAgICAgICAgc3VnZ2VzdGlvbiA9IGRpZFlvdU1lYW4oZ2V0U3VnZ2VzdGVkRmllbGROYW1lcyh0eXBlLCBmaWVsZE5hbWUpKTtcbiAgICAgICAgICB9IC8vIFJlcG9ydCBhbiBlcnJvciwgaW5jbHVkaW5nIGhlbHBmdWwgc3VnZ2VzdGlvbnMuXG5cbiAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgYENhbm5vdCBxdWVyeSBmaWVsZCBcIiR7ZmllbGROYW1lfVwiIG9uIHR5cGUgXCIke3R5cGUubmFtZX1cIi5gICtcbiAgICAgICAgICAgICAgICBzdWdnZXN0aW9uLFxuICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbi8qKlxuICogR28gdGhyb3VnaCBhbGwgb2YgdGhlIGltcGxlbWVudGF0aW9ucyBvZiB0eXBlLCBhcyB3ZWxsIGFzIHRoZSBpbnRlcmZhY2VzIHRoYXRcbiAqIHRoZXkgaW1wbGVtZW50LiBJZiBhbnkgb2YgdGhvc2UgdHlwZXMgaW5jbHVkZSB0aGUgcHJvdmlkZWQgZmllbGQsIHN1Z2dlc3QgdGhlbSxcbiAqIHNvcnRlZCBieSBob3cgb2Z0ZW4gdGhlIHR5cGUgaXMgcmVmZXJlbmNlZC5cbiAqL1xuXG5mdW5jdGlvbiBnZXRTdWdnZXN0ZWRUeXBlTmFtZXMoc2NoZW1hLCB0eXBlLCBmaWVsZE5hbWUpIHtcbiAgaWYgKCFpc0Fic3RyYWN0VHlwZSh0eXBlKSkge1xuICAgIC8vIE11c3QgYmUgYW4gT2JqZWN0IHR5cGUsIHdoaWNoIGRvZXMgbm90IGhhdmUgcG9zc2libGUgZmllbGRzLlxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHN1Z2dlc3RlZFR5cGVzID0gbmV3IFNldCgpO1xuICBjb25zdCB1c2FnZUNvdW50ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKGNvbnN0IHBvc3NpYmxlVHlwZSBvZiBzY2hlbWEuZ2V0UG9zc2libGVUeXBlcyh0eXBlKSkge1xuICAgIGlmICghcG9zc2libGVUeXBlLmdldEZpZWxkcygpW2ZpZWxkTmFtZV0pIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gLy8gVGhpcyBvYmplY3QgdHlwZSBkZWZpbmVzIHRoaXMgZmllbGQuXG5cbiAgICBzdWdnZXN0ZWRUeXBlcy5hZGQocG9zc2libGVUeXBlKTtcbiAgICB1c2FnZUNvdW50W3Bvc3NpYmxlVHlwZS5uYW1lXSA9IDE7XG5cbiAgICBmb3IgKGNvbnN0IHBvc3NpYmxlSW50ZXJmYWNlIG9mIHBvc3NpYmxlVHlwZS5nZXRJbnRlcmZhY2VzKCkpIHtcbiAgICAgIHZhciBfdXNhZ2VDb3VudCRwb3NzaWJsZUk7XG5cbiAgICAgIGlmICghcG9zc2libGVJbnRlcmZhY2UuZ2V0RmllbGRzKClbZmllbGROYW1lXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gLy8gVGhpcyBpbnRlcmZhY2UgdHlwZSBkZWZpbmVzIHRoaXMgZmllbGQuXG5cbiAgICAgIHN1Z2dlc3RlZFR5cGVzLmFkZChwb3NzaWJsZUludGVyZmFjZSk7XG4gICAgICB1c2FnZUNvdW50W3Bvc3NpYmxlSW50ZXJmYWNlLm5hbWVdID1cbiAgICAgICAgKChfdXNhZ2VDb3VudCRwb3NzaWJsZUkgPSB1c2FnZUNvdW50W3Bvc3NpYmxlSW50ZXJmYWNlLm5hbWVdKSAhPT1cbiAgICAgICAgICBudWxsICYmIF91c2FnZUNvdW50JHBvc3NpYmxlSSAhPT0gdm9pZCAwXG4gICAgICAgICAgPyBfdXNhZ2VDb3VudCRwb3NzaWJsZUlcbiAgICAgICAgICA6IDApICsgMTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gWy4uLnN1Z2dlc3RlZFR5cGVzXVxuICAgIC5zb3J0KCh0eXBlQSwgdHlwZUIpID0+IHtcbiAgICAgIC8vIFN1Z2dlc3QgYm90aCBpbnRlcmZhY2UgYW5kIG9iamVjdCB0eXBlcyBiYXNlZCBvbiBob3cgY29tbW9uIHRoZXkgYXJlLlxuICAgICAgY29uc3QgdXNhZ2VDb3VudERpZmYgPSB1c2FnZUNvdW50W3R5cGVCLm5hbWVdIC0gdXNhZ2VDb3VudFt0eXBlQS5uYW1lXTtcblxuICAgICAgaWYgKHVzYWdlQ291bnREaWZmICE9PSAwKSB7XG4gICAgICAgIHJldHVybiB1c2FnZUNvdW50RGlmZjtcbiAgICAgIH0gLy8gU3VnZ2VzdCBzdXBlciB0eXBlcyBmaXJzdCBmb2xsb3dlZCBieSBzdWJ0eXBlc1xuXG4gICAgICBpZiAoaXNJbnRlcmZhY2VUeXBlKHR5cGVBKSAmJiBzY2hlbWEuaXNTdWJUeXBlKHR5cGVBLCB0eXBlQikpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNJbnRlcmZhY2VUeXBlKHR5cGVCKSAmJiBzY2hlbWEuaXNTdWJUeXBlKHR5cGVCLCB0eXBlQSkpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuYXR1cmFsQ29tcGFyZSh0eXBlQS5uYW1lLCB0eXBlQi5uYW1lKTtcbiAgICB9KVxuICAgIC5tYXAoKHgpID0+IHgubmFtZSk7XG59XG4vKipcbiAqIEZvciB0aGUgZmllbGQgbmFtZSBwcm92aWRlZCwgZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBhbnkgc2ltaWxhciBmaWVsZCBuYW1lc1xuICogdGhhdCBtYXkgYmUgdGhlIHJlc3VsdCBvZiBhIHR5cG8uXG4gKi9cblxuZnVuY3Rpb24gZ2V0U3VnZ2VzdGVkRmllbGROYW1lcyh0eXBlLCBmaWVsZE5hbWUpIHtcbiAgaWYgKGlzT2JqZWN0VHlwZSh0eXBlKSB8fCBpc0ludGVyZmFjZVR5cGUodHlwZSkpIHtcbiAgICBjb25zdCBwb3NzaWJsZUZpZWxkTmFtZXMgPSBPYmplY3Qua2V5cyh0eXBlLmdldEZpZWxkcygpKTtcbiAgICByZXR1cm4gc3VnZ2VzdGlvbkxpc3QoZmllbGROYW1lLCBwb3NzaWJsZUZpZWxkTmFtZXMpO1xuICB9IC8vIE90aGVyd2lzZSwgbXVzdCBiZSBhIFVuaW9uIHR5cGUsIHdoaWNoIGRvZXMgbm90IGRlZmluZSBmaWVsZHMuXG5cbiAgcmV0dXJuIFtdO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs":
/*!*********************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs ***!
  \*********************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FragmentsOnCompositeTypesRule\": function() { return /* binding */ FragmentsOnCompositeTypesRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../language/printer.mjs */ \"./node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/typeFromAST.mjs */ \"./node_modules/graphql/utilities/typeFromAST.mjs\");\n\n\n\n\n\n/**\n * Fragments on composite type\n *\n * Fragments use a type condition to determine if they apply, since fragments\n * can only be spread into a composite type (object, interface, or union), the\n * type condition must also be a composite type.\n *\n * See https://spec.graphql.org/draft/#sec-Fragments-On-Composite-Types\n */\nfunction FragmentsOnCompositeTypesRule(context) {\n  return {\n    InlineFragment(node) {\n      const typeCondition = node.typeCondition;\n\n      if (typeCondition) {\n        const type = (0,_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_0__.typeFromAST)(context.getSchema(), typeCondition);\n\n        if (type && !(0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isCompositeType)(type)) {\n          const typeStr = (0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_2__.print)(typeCondition);\n          context.reportError(\n            new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLError(\n              `Fragment cannot condition on non composite type \"${typeStr}\".`,\n              typeCondition,\n            ),\n          );\n        }\n      }\n    },\n\n    FragmentDefinition(node) {\n      const type = (0,_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_0__.typeFromAST)(context.getSchema(), node.typeCondition);\n\n      if (type && !(0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isCompositeType)(type)) {\n        const typeStr = (0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_2__.print)(node.typeCondition);\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLError(\n            `Fragment \"${node.name.value}\" cannot condition on non composite type \"${typeStr}\".`,\n            node.typeCondition,\n          ),\n        );\n      }\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0ZyYWdtZW50c09uQ29tcG9zaXRlVHlwZXNSdWxlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUE0RDtBQUNUO0FBQ1M7QUFDRTs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsdUVBQVc7O0FBRWhDLHFCQUFxQixxRUFBZTtBQUNwQywwQkFBMEIsNERBQUs7QUFDL0I7QUFDQSxnQkFBZ0IsaUVBQVk7QUFDNUIsa0VBQWtFLFFBQVE7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxtQkFBbUIsdUVBQVc7O0FBRTlCLG1CQUFtQixxRUFBZTtBQUNsQyx3QkFBd0IsNERBQUs7QUFDN0I7QUFDQSxjQUFjLGlFQUFZO0FBQzFCLHlCQUF5QixnQkFBZ0IsNENBQTRDLFFBQVE7QUFDN0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0ZyYWdtZW50c09uQ29tcG9zaXRlVHlwZXNSdWxlLm1qcz84NmNmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgcHJpbnQgfSBmcm9tICcuLi8uLi9sYW5ndWFnZS9wcmludGVyLm1qcyc7XG5pbXBvcnQgeyBpc0NvbXBvc2l0ZVR5cGUgfSBmcm9tICcuLi8uLi90eXBlL2RlZmluaXRpb24ubWpzJztcbmltcG9ydCB7IHR5cGVGcm9tQVNUIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL3R5cGVGcm9tQVNULm1qcyc7XG5cbi8qKlxuICogRnJhZ21lbnRzIG9uIGNvbXBvc2l0ZSB0eXBlXG4gKlxuICogRnJhZ21lbnRzIHVzZSBhIHR5cGUgY29uZGl0aW9uIHRvIGRldGVybWluZSBpZiB0aGV5IGFwcGx5LCBzaW5jZSBmcmFnbWVudHNcbiAqIGNhbiBvbmx5IGJlIHNwcmVhZCBpbnRvIGEgY29tcG9zaXRlIHR5cGUgKG9iamVjdCwgaW50ZXJmYWNlLCBvciB1bmlvbiksIHRoZVxuICogdHlwZSBjb25kaXRpb24gbXVzdCBhbHNvIGJlIGEgY29tcG9zaXRlIHR5cGUuXG4gKlxuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLUZyYWdtZW50cy1Pbi1Db21wb3NpdGUtVHlwZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEZyYWdtZW50c09uQ29tcG9zaXRlVHlwZXNSdWxlKGNvbnRleHQpIHtcbiAgcmV0dXJuIHtcbiAgICBJbmxpbmVGcmFnbWVudChub2RlKSB7XG4gICAgICBjb25zdCB0eXBlQ29uZGl0aW9uID0gbm9kZS50eXBlQ29uZGl0aW9uO1xuXG4gICAgICBpZiAodHlwZUNvbmRpdGlvbikge1xuICAgICAgICBjb25zdCB0eXBlID0gdHlwZUZyb21BU1QoY29udGV4dC5nZXRTY2hlbWEoKSwgdHlwZUNvbmRpdGlvbik7XG5cbiAgICAgICAgaWYgKHR5cGUgJiYgIWlzQ29tcG9zaXRlVHlwZSh0eXBlKSkge1xuICAgICAgICAgIGNvbnN0IHR5cGVTdHIgPSBwcmludCh0eXBlQ29uZGl0aW9uKTtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgYEZyYWdtZW50IGNhbm5vdCBjb25kaXRpb24gb24gbm9uIGNvbXBvc2l0ZSB0eXBlIFwiJHt0eXBlU3RyfVwiLmAsXG4gICAgICAgICAgICAgIHR5cGVDb25kaXRpb24sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgRnJhZ21lbnREZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlRnJvbUFTVChjb250ZXh0LmdldFNjaGVtYSgpLCBub2RlLnR5cGVDb25kaXRpb24pO1xuXG4gICAgICBpZiAodHlwZSAmJiAhaXNDb21wb3NpdGVUeXBlKHR5cGUpKSB7XG4gICAgICAgIGNvbnN0IHR5cGVTdHIgPSBwcmludChub2RlLnR5cGVDb25kaXRpb24pO1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgRnJhZ21lbnQgXCIke25vZGUubmFtZS52YWx1ZX1cIiBjYW5ub3QgY29uZGl0aW9uIG9uIG5vbiBjb21wb3NpdGUgdHlwZSBcIiR7dHlwZVN0cn1cIi5gLFxuICAgICAgICAgICAgbm9kZS50eXBlQ29uZGl0aW9uLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs":
/*!**************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs ***!
  \**************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KnownArgumentNamesOnDirectivesRule\": function() { return /* binding */ KnownArgumentNamesOnDirectivesRule; },\n/* harmony export */   \"KnownArgumentNamesRule\": function() { return /* binding */ KnownArgumentNamesRule; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../jsutils/didYouMean.mjs */ \"./node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/suggestionList.mjs */ \"./node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../type/directives.mjs */ \"./node_modules/graphql/type/directives.mjs\");\n\n\n\n\n\n\n/**\n * Known argument names\n *\n * A GraphQL field is only valid if all supplied arguments are defined by\n * that field.\n *\n * See https://spec.graphql.org/draft/#sec-Argument-Names\n * See https://spec.graphql.org/draft/#sec-Directives-Are-In-Valid-Locations\n */\nfunction KnownArgumentNamesRule(context) {\n  return {\n    // eslint-disable-next-line new-cap\n    ...KnownArgumentNamesOnDirectivesRule(context),\n\n    Argument(argNode) {\n      const argDef = context.getArgument();\n      const fieldDef = context.getFieldDef();\n      const parentType = context.getParentType();\n\n      if (!argDef && fieldDef && parentType) {\n        const argName = argNode.name.value;\n        const knownArgsNames = fieldDef.args.map((arg) => arg.name);\n        const suggestions = (0,_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_0__.suggestionList)(argName, knownArgsNames);\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n            `Unknown argument \"${argName}\" on field \"${parentType.name}.${fieldDef.name}\".` +\n              (0,_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(suggestions),\n            argNode,\n          ),\n        );\n      }\n    },\n  };\n}\n/**\n * @internal\n */\n\nfunction KnownArgumentNamesOnDirectivesRule(context) {\n  const directiveArgs = Object.create(null);\n  const schema = context.getSchema();\n  const definedDirectives = schema\n    ? schema.getDirectives()\n    : _type_directives_mjs__WEBPACK_IMPORTED_MODULE_3__.specifiedDirectives;\n\n  for (const directive of definedDirectives) {\n    directiveArgs[directive.name] = directive.args.map((arg) => arg.name);\n  }\n\n  const astDefinitions = context.getDocument().definitions;\n\n  for (const def of astDefinitions) {\n    if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.DIRECTIVE_DEFINITION) {\n      var _def$arguments;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n      /* c8 ignore next */\n      const argsNodes =\n        (_def$arguments = def.arguments) !== null && _def$arguments !== void 0\n          ? _def$arguments\n          : [];\n      directiveArgs[def.name.value] = argsNodes.map((arg) => arg.name.value);\n    }\n  }\n\n  return {\n    Directive(directiveNode) {\n      const directiveName = directiveNode.name.value;\n      const knownArgs = directiveArgs[directiveName];\n\n      if (directiveNode.arguments && knownArgs) {\n        for (const argNode of directiveNode.arguments) {\n          const argName = argNode.name.value;\n\n          if (!knownArgs.includes(argName)) {\n            const suggestions = (0,_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_0__.suggestionList)(argName, knownArgs);\n            context.reportError(\n              new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n                `Unknown argument \"${argName}\" on directive \"@${directiveName}\".` +\n                  (0,_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_2__.didYouMean)(suggestions),\n                argNode,\n              ),\n            );\n          }\n        }\n      }\n\n      return false;\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0tub3duQXJndW1lbnROYW1lc1J1bGUubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBMEQ7QUFDUTtBQUNOO0FBQ1o7QUFDZ0I7O0FBRWhFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QiwyRUFBYztBQUMxQztBQUNBLGNBQWMsaUVBQVk7QUFDMUIsaUNBQWlDLFFBQVEsY0FBYyxnQkFBZ0IsR0FBRyxjQUFjO0FBQ3hGLGNBQWMsbUVBQVU7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxxRUFBbUI7O0FBRXpCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHFCQUFxQiwwRUFBeUI7QUFDOUM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQ0FBZ0MsMkVBQWM7QUFDOUM7QUFDQSxrQkFBa0IsaUVBQVk7QUFDOUIscUNBQXFDLFFBQVEsbUJBQW1CLGNBQWM7QUFDOUUsa0JBQWtCLG1FQUFVO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvS25vd25Bcmd1bWVudE5hbWVzUnVsZS5tanM/YTlkOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaWRZb3VNZWFuIH0gZnJvbSAnLi4vLi4vanN1dGlscy9kaWRZb3VNZWFuLm1qcyc7XG5pbXBvcnQgeyBzdWdnZXN0aW9uTGlzdCB9IGZyb20gJy4uLy4uL2pzdXRpbHMvc3VnZ2VzdGlvbkxpc3QubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uLy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5pbXBvcnQgeyBzcGVjaWZpZWREaXJlY3RpdmVzIH0gZnJvbSAnLi4vLi4vdHlwZS9kaXJlY3RpdmVzLm1qcyc7XG5cbi8qKlxuICogS25vd24gYXJndW1lbnQgbmFtZXNcbiAqXG4gKiBBIEdyYXBoUUwgZmllbGQgaXMgb25seSB2YWxpZCBpZiBhbGwgc3VwcGxpZWQgYXJndW1lbnRzIGFyZSBkZWZpbmVkIGJ5XG4gKiB0aGF0IGZpZWxkLlxuICpcbiAqIFNlZSBodHRwczovL3NwZWMuZ3JhcGhxbC5vcmcvZHJhZnQvI3NlYy1Bcmd1bWVudC1OYW1lc1xuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLURpcmVjdGl2ZXMtQXJlLUluLVZhbGlkLUxvY2F0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gS25vd25Bcmd1bWVudE5hbWVzUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICAuLi5Lbm93bkFyZ3VtZW50TmFtZXNPbkRpcmVjdGl2ZXNSdWxlKGNvbnRleHQpLFxuXG4gICAgQXJndW1lbnQoYXJnTm9kZSkge1xuICAgICAgY29uc3QgYXJnRGVmID0gY29udGV4dC5nZXRBcmd1bWVudCgpO1xuICAgICAgY29uc3QgZmllbGREZWYgPSBjb250ZXh0LmdldEZpZWxkRGVmKCk7XG4gICAgICBjb25zdCBwYXJlbnRUeXBlID0gY29udGV4dC5nZXRQYXJlbnRUeXBlKCk7XG5cbiAgICAgIGlmICghYXJnRGVmICYmIGZpZWxkRGVmICYmIHBhcmVudFR5cGUpIHtcbiAgICAgICAgY29uc3QgYXJnTmFtZSA9IGFyZ05vZGUubmFtZS52YWx1ZTtcbiAgICAgICAgY29uc3Qga25vd25BcmdzTmFtZXMgPSBmaWVsZERlZi5hcmdzLm1hcCgoYXJnKSA9PiBhcmcubmFtZSk7XG4gICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbkxpc3QoYXJnTmFtZSwga25vd25BcmdzTmFtZXMpO1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgVW5rbm93biBhcmd1bWVudCBcIiR7YXJnTmFtZX1cIiBvbiBmaWVsZCBcIiR7cGFyZW50VHlwZS5uYW1lfS4ke2ZpZWxkRGVmLm5hbWV9XCIuYCArXG4gICAgICAgICAgICAgIGRpZFlvdU1lYW4oc3VnZ2VzdGlvbnMpLFxuICAgICAgICAgICAgYXJnTm9kZSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBLbm93bkFyZ3VtZW50TmFtZXNPbkRpcmVjdGl2ZXNSdWxlKGNvbnRleHQpIHtcbiAgY29uc3QgZGlyZWN0aXZlQXJncyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGNvbnN0IHNjaGVtYSA9IGNvbnRleHQuZ2V0U2NoZW1hKCk7XG4gIGNvbnN0IGRlZmluZWREaXJlY3RpdmVzID0gc2NoZW1hXG4gICAgPyBzY2hlbWEuZ2V0RGlyZWN0aXZlcygpXG4gICAgOiBzcGVjaWZpZWREaXJlY3RpdmVzO1xuXG4gIGZvciAoY29uc3QgZGlyZWN0aXZlIG9mIGRlZmluZWREaXJlY3RpdmVzKSB7XG4gICAgZGlyZWN0aXZlQXJnc1tkaXJlY3RpdmUubmFtZV0gPSBkaXJlY3RpdmUuYXJncy5tYXAoKGFyZykgPT4gYXJnLm5hbWUpO1xuICB9XG5cbiAgY29uc3QgYXN0RGVmaW5pdGlvbnMgPSBjb250ZXh0LmdldERvY3VtZW50KCkuZGVmaW5pdGlvbnM7XG5cbiAgZm9yIChjb25zdCBkZWYgb2YgYXN0RGVmaW5pdGlvbnMpIHtcbiAgICBpZiAoZGVmLmtpbmQgPT09IEtpbmQuRElSRUNUSVZFX0RFRklOSVRJT04pIHtcbiAgICAgIHZhciBfZGVmJGFyZ3VtZW50cztcblxuICAgICAgLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcblxuICAgICAgLyogYzggaWdub3JlIG5leHQgKi9cbiAgICAgIGNvbnN0IGFyZ3NOb2RlcyA9XG4gICAgICAgIChfZGVmJGFyZ3VtZW50cyA9IGRlZi5hcmd1bWVudHMpICE9PSBudWxsICYmIF9kZWYkYXJndW1lbnRzICE9PSB2b2lkIDBcbiAgICAgICAgICA/IF9kZWYkYXJndW1lbnRzXG4gICAgICAgICAgOiBbXTtcbiAgICAgIGRpcmVjdGl2ZUFyZ3NbZGVmLm5hbWUudmFsdWVdID0gYXJnc05vZGVzLm1hcCgoYXJnKSA9PiBhcmcubmFtZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBEaXJlY3RpdmUoZGlyZWN0aXZlTm9kZSkge1xuICAgICAgY29uc3QgZGlyZWN0aXZlTmFtZSA9IGRpcmVjdGl2ZU5vZGUubmFtZS52YWx1ZTtcbiAgICAgIGNvbnN0IGtub3duQXJncyA9IGRpcmVjdGl2ZUFyZ3NbZGlyZWN0aXZlTmFtZV07XG5cbiAgICAgIGlmIChkaXJlY3RpdmVOb2RlLmFyZ3VtZW50cyAmJiBrbm93bkFyZ3MpIHtcbiAgICAgICAgZm9yIChjb25zdCBhcmdOb2RlIG9mIGRpcmVjdGl2ZU5vZGUuYXJndW1lbnRzKSB7XG4gICAgICAgICAgY29uc3QgYXJnTmFtZSA9IGFyZ05vZGUubmFtZS52YWx1ZTtcblxuICAgICAgICAgIGlmICgha25vd25BcmdzLmluY2x1ZGVzKGFyZ05hbWUpKSB7XG4gICAgICAgICAgICBjb25zdCBzdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25MaXN0KGFyZ05hbWUsIGtub3duQXJncyk7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgICAgIGBVbmtub3duIGFyZ3VtZW50IFwiJHthcmdOYW1lfVwiIG9uIGRpcmVjdGl2ZSBcIkAke2RpcmVjdGl2ZU5hbWV9XCIuYCArXG4gICAgICAgICAgICAgICAgICBkaWRZb3VNZWFuKHN1Z2dlc3Rpb25zKSxcbiAgICAgICAgICAgICAgICBhcmdOb2RlLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/KnownDirectivesRule.mjs":
/*!***********************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/KnownDirectivesRule.mjs ***!
  \***********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KnownDirectivesRule\": function() { return /* binding */ KnownDirectivesRule; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../jsutils/invariant.mjs */ \"./node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_ast_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../language/ast.mjs */ \"./node_modules/graphql/language/ast.mjs\");\n/* harmony import */ var _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../language/directiveLocation.mjs */ \"./node_modules/graphql/language/directiveLocation.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../type/directives.mjs */ \"./node_modules/graphql/type/directives.mjs\");\n\n\n\n\n\n\n\n\n/**\n * Known directives\n *\n * A GraphQL document is only valid if all `@directives` are known by the\n * schema and legally positioned.\n *\n * See https://spec.graphql.org/draft/#sec-Directives-Are-Defined\n */\nfunction KnownDirectivesRule(context) {\n  const locationsMap = Object.create(null);\n  const schema = context.getSchema();\n  const definedDirectives = schema\n    ? schema.getDirectives()\n    : _type_directives_mjs__WEBPACK_IMPORTED_MODULE_0__.specifiedDirectives;\n\n  for (const directive of definedDirectives) {\n    locationsMap[directive.name] = directive.locations;\n  }\n\n  const astDefinitions = context.getDocument().definitions;\n\n  for (const def of astDefinitions) {\n    if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.DIRECTIVE_DEFINITION) {\n      locationsMap[def.name.value] = def.locations.map((name) => name.value);\n    }\n  }\n\n  return {\n    Directive(node, _key, _parent, _path, ancestors) {\n      const name = node.name.value;\n      const locations = locationsMap[name];\n\n      if (!locations) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLError(`Unknown directive \"@${name}\".`, node),\n        );\n        return;\n      }\n\n      const candidateLocation = getDirectiveLocationForASTPath(ancestors);\n\n      if (candidateLocation && !locations.includes(candidateLocation)) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLError(\n            `Directive \"@${name}\" may not be used on ${candidateLocation}.`,\n            node,\n          ),\n        );\n      }\n    },\n  };\n}\n\nfunction getDirectiveLocationForASTPath(ancestors) {\n  const appliedTo = ancestors[ancestors.length - 1];\n  'kind' in appliedTo || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_3__.invariant)(false);\n\n  switch (appliedTo.kind) {\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.OPERATION_DEFINITION:\n      return getDirectiveLocationForOperation(appliedTo.operation);\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.FIELD:\n      return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.FIELD;\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.FRAGMENT_SPREAD:\n      return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.FRAGMENT_SPREAD;\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.INLINE_FRAGMENT:\n      return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.INLINE_FRAGMENT;\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.FRAGMENT_DEFINITION:\n      return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.FRAGMENT_DEFINITION;\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.VARIABLE_DEFINITION:\n      return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.VARIABLE_DEFINITION;\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.SCHEMA_DEFINITION:\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.SCHEMA_EXTENSION:\n      return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.SCHEMA;\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.SCALAR_TYPE_DEFINITION:\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.SCALAR_TYPE_EXTENSION:\n      return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.SCALAR;\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.OBJECT_TYPE_DEFINITION:\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.OBJECT_TYPE_EXTENSION:\n      return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.OBJECT;\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.FIELD_DEFINITION:\n      return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.FIELD_DEFINITION;\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.INTERFACE_TYPE_DEFINITION:\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.INTERFACE_TYPE_EXTENSION:\n      return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.INTERFACE;\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.UNION_TYPE_DEFINITION:\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.UNION_TYPE_EXTENSION:\n      return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.UNION;\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.ENUM_TYPE_DEFINITION:\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.ENUM_TYPE_EXTENSION:\n      return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.ENUM;\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.ENUM_VALUE_DEFINITION:\n      return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.ENUM_VALUE;\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.INPUT_OBJECT_TYPE_DEFINITION:\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.INPUT_OBJECT_TYPE_EXTENSION:\n      return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.INPUT_OBJECT;\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.INPUT_VALUE_DEFINITION: {\n      const parentNode = ancestors[ancestors.length - 3];\n      'kind' in parentNode || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_3__.invariant)(false);\n      return parentNode.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.INPUT_OBJECT_TYPE_DEFINITION\n        ? _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.INPUT_FIELD_DEFINITION\n        : _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.ARGUMENT_DEFINITION;\n    }\n    // Not reachable, all possible types have been considered.\n\n    /* c8 ignore next */\n\n    default:\n       false || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_3__.invariant)(false, 'Unexpected kind: ' + (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_5__.inspect)(appliedTo.kind));\n  }\n}\n\nfunction getDirectiveLocationForOperation(operation) {\n  switch (operation) {\n    case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_6__.OperationTypeNode.QUERY:\n      return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.QUERY;\n\n    case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_6__.OperationTypeNode.MUTATION:\n      return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.MUTATION;\n\n    case _language_ast_mjs__WEBPACK_IMPORTED_MODULE_6__.OperationTypeNode.SUBSCRIPTION:\n      return _language_directiveLocation_mjs__WEBPACK_IMPORTED_MODULE_4__.DirectiveLocation.SUBSCRIPTION;\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0tub3duRGlyZWN0aXZlc1J1bGUubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQW9EO0FBQ0k7QUFDSTtBQUNEO0FBQ2M7QUFDekI7QUFDZ0I7O0FBRWhFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxxRUFBbUI7O0FBRXpCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHFCQUFxQiwwRUFBeUI7QUFDOUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLGlFQUFZLHdCQUF3QixLQUFLO0FBQ3ZEO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsY0FBYyxpRUFBWTtBQUMxQiwyQkFBMkIsS0FBSyx1QkFBdUIsa0JBQWtCO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHlCQUF5QixpRUFBUzs7QUFFbEM7QUFDQSxTQUFTLDBFQUF5QjtBQUNsQzs7QUFFQSxTQUFTLDJEQUFVO0FBQ25CLGFBQWEsb0ZBQXVCOztBQUVwQyxTQUFTLHFFQUFvQjtBQUM3QixhQUFhLDhGQUFpQzs7QUFFOUMsU0FBUyxxRUFBb0I7QUFDN0IsYUFBYSw4RkFBaUM7O0FBRTlDLFNBQVMseUVBQXdCO0FBQ2pDLGFBQWEsa0dBQXFDOztBQUVsRCxTQUFTLHlFQUF3QjtBQUNqQyxhQUFhLGtHQUFxQzs7QUFFbEQsU0FBUyx1RUFBc0I7QUFDL0IsU0FBUyxzRUFBcUI7QUFDOUIsYUFBYSxxRkFBd0I7O0FBRXJDLFNBQVMsNEVBQTJCO0FBQ3BDLFNBQVMsMkVBQTBCO0FBQ25DLGFBQWEscUZBQXdCOztBQUVyQyxTQUFTLDRFQUEyQjtBQUNwQyxTQUFTLDJFQUEwQjtBQUNuQyxhQUFhLHFGQUF3Qjs7QUFFckMsU0FBUyxzRUFBcUI7QUFDOUIsYUFBYSwrRkFBa0M7O0FBRS9DLFNBQVMsK0VBQThCO0FBQ3ZDLFNBQVMsOEVBQTZCO0FBQ3RDLGFBQWEsd0ZBQTJCOztBQUV4QyxTQUFTLDJFQUEwQjtBQUNuQyxTQUFTLDBFQUF5QjtBQUNsQyxhQUFhLG9GQUF1Qjs7QUFFcEMsU0FBUywwRUFBeUI7QUFDbEMsU0FBUyx5RUFBd0I7QUFDakMsYUFBYSxtRkFBc0I7O0FBRW5DLFNBQVMsMkVBQTBCO0FBQ25DLGFBQWEseUZBQTRCOztBQUV6QyxTQUFTLGtGQUFpQztBQUMxQyxTQUFTLGlGQUFnQztBQUN6QyxhQUFhLDJGQUE4Qjs7QUFFM0MsU0FBUyw0RUFBMkI7QUFDcEM7QUFDQSw4QkFBOEIsaUVBQVM7QUFDdkMsaUNBQWlDLGtGQUFpQztBQUNsRSxVQUFVLHFHQUF3QztBQUNsRCxVQUFVLGtHQUFxQztBQUMvQztBQUNBOztBQUVBOztBQUVBO0FBQ0EsTUFBTSxNQUFLLElBQUksaUVBQVMsOEJBQThCLDZEQUFPO0FBQzdEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFNBQVMsc0VBQXVCO0FBQ2hDLGFBQWEsb0ZBQXVCOztBQUVwQyxTQUFTLHlFQUEwQjtBQUNuQyxhQUFhLHVGQUEwQjs7QUFFdkMsU0FBUyw2RUFBOEI7QUFDdkMsYUFBYSwyRkFBOEI7QUFDM0M7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0tub3duRGlyZWN0aXZlc1J1bGUubWpzPzk5ZWMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uLy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSAnLi4vLi4vanN1dGlscy9pbnZhcmlhbnQubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgT3BlcmF0aW9uVHlwZU5vZGUgfSBmcm9tICcuLi8uLi9sYW5ndWFnZS9hc3QubWpzJztcbmltcG9ydCB7IERpcmVjdGl2ZUxvY2F0aW9uIH0gZnJvbSAnLi4vLi4vbGFuZ3VhZ2UvZGlyZWN0aXZlTG9jYXRpb24ubWpzJztcbmltcG9ydCB7IEtpbmQgfSBmcm9tICcuLi8uLi9sYW5ndWFnZS9raW5kcy5tanMnO1xuaW1wb3J0IHsgc3BlY2lmaWVkRGlyZWN0aXZlcyB9IGZyb20gJy4uLy4uL3R5cGUvZGlyZWN0aXZlcy5tanMnO1xuXG4vKipcbiAqIEtub3duIGRpcmVjdGl2ZXNcbiAqXG4gKiBBIEdyYXBoUUwgZG9jdW1lbnQgaXMgb25seSB2YWxpZCBpZiBhbGwgYEBkaXJlY3RpdmVzYCBhcmUga25vd24gYnkgdGhlXG4gKiBzY2hlbWEgYW5kIGxlZ2FsbHkgcG9zaXRpb25lZC5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9zcGVjLmdyYXBocWwub3JnL2RyYWZ0LyNzZWMtRGlyZWN0aXZlcy1BcmUtRGVmaW5lZFxuICovXG5leHBvcnQgZnVuY3Rpb24gS25vd25EaXJlY3RpdmVzUnVsZShjb250ZXh0KSB7XG4gIGNvbnN0IGxvY2F0aW9uc01hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGNvbnN0IHNjaGVtYSA9IGNvbnRleHQuZ2V0U2NoZW1hKCk7XG4gIGNvbnN0IGRlZmluZWREaXJlY3RpdmVzID0gc2NoZW1hXG4gICAgPyBzY2hlbWEuZ2V0RGlyZWN0aXZlcygpXG4gICAgOiBzcGVjaWZpZWREaXJlY3RpdmVzO1xuXG4gIGZvciAoY29uc3QgZGlyZWN0aXZlIG9mIGRlZmluZWREaXJlY3RpdmVzKSB7XG4gICAgbG9jYXRpb25zTWFwW2RpcmVjdGl2ZS5uYW1lXSA9IGRpcmVjdGl2ZS5sb2NhdGlvbnM7XG4gIH1cblxuICBjb25zdCBhc3REZWZpbml0aW9ucyA9IGNvbnRleHQuZ2V0RG9jdW1lbnQoKS5kZWZpbml0aW9ucztcblxuICBmb3IgKGNvbnN0IGRlZiBvZiBhc3REZWZpbml0aW9ucykge1xuICAgIGlmIChkZWYua2luZCA9PT0gS2luZC5ESVJFQ1RJVkVfREVGSU5JVElPTikge1xuICAgICAgbG9jYXRpb25zTWFwW2RlZi5uYW1lLnZhbHVlXSA9IGRlZi5sb2NhdGlvbnMubWFwKChuYW1lKSA9PiBuYW1lLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIERpcmVjdGl2ZShub2RlLCBfa2V5LCBfcGFyZW50LCBfcGF0aCwgYW5jZXN0b3JzKSB7XG4gICAgICBjb25zdCBuYW1lID0gbm9kZS5uYW1lLnZhbHVlO1xuICAgICAgY29uc3QgbG9jYXRpb25zID0gbG9jYXRpb25zTWFwW25hbWVdO1xuXG4gICAgICBpZiAoIWxvY2F0aW9ucykge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoYFVua25vd24gZGlyZWN0aXZlIFwiQCR7bmFtZX1cIi5gLCBub2RlKSxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjYW5kaWRhdGVMb2NhdGlvbiA9IGdldERpcmVjdGl2ZUxvY2F0aW9uRm9yQVNUUGF0aChhbmNlc3RvcnMpO1xuXG4gICAgICBpZiAoY2FuZGlkYXRlTG9jYXRpb24gJiYgIWxvY2F0aW9ucy5pbmNsdWRlcyhjYW5kaWRhdGVMb2NhdGlvbikpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYERpcmVjdGl2ZSBcIkAke25hbWV9XCIgbWF5IG5vdCBiZSB1c2VkIG9uICR7Y2FuZGlkYXRlTG9jYXRpb259LmAsXG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RGlyZWN0aXZlTG9jYXRpb25Gb3JBU1RQYXRoKGFuY2VzdG9ycykge1xuICBjb25zdCBhcHBsaWVkVG8gPSBhbmNlc3RvcnNbYW5jZXN0b3JzLmxlbmd0aCAtIDFdO1xuICAna2luZCcgaW4gYXBwbGllZFRvIHx8IGludmFyaWFudChmYWxzZSk7XG5cbiAgc3dpdGNoIChhcHBsaWVkVG8ua2luZCkge1xuICAgIGNhc2UgS2luZC5PUEVSQVRJT05fREVGSU5JVElPTjpcbiAgICAgIHJldHVybiBnZXREaXJlY3RpdmVMb2NhdGlvbkZvck9wZXJhdGlvbihhcHBsaWVkVG8ub3BlcmF0aW9uKTtcblxuICAgIGNhc2UgS2luZC5GSUVMRDpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5GSUVMRDtcblxuICAgIGNhc2UgS2luZC5GUkFHTUVOVF9TUFJFQUQ6XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uRlJBR01FTlRfU1BSRUFEO1xuXG4gICAgY2FzZSBLaW5kLklOTElORV9GUkFHTUVOVDpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5JTkxJTkVfRlJBR01FTlQ7XG5cbiAgICBjYXNlIEtpbmQuRlJBR01FTlRfREVGSU5JVElPTjpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5GUkFHTUVOVF9ERUZJTklUSU9OO1xuXG4gICAgY2FzZSBLaW5kLlZBUklBQkxFX0RFRklOSVRJT046XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uVkFSSUFCTEVfREVGSU5JVElPTjtcblxuICAgIGNhc2UgS2luZC5TQ0hFTUFfREVGSU5JVElPTjpcbiAgICBjYXNlIEtpbmQuU0NIRU1BX0VYVEVOU0lPTjpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5TQ0hFTUE7XG5cbiAgICBjYXNlIEtpbmQuU0NBTEFSX1RZUEVfREVGSU5JVElPTjpcbiAgICBjYXNlIEtpbmQuU0NBTEFSX1RZUEVfRVhURU5TSU9OOlxuICAgICAgcmV0dXJuIERpcmVjdGl2ZUxvY2F0aW9uLlNDQUxBUjtcblxuICAgIGNhc2UgS2luZC5PQkpFQ1RfVFlQRV9ERUZJTklUSU9OOlxuICAgIGNhc2UgS2luZC5PQkpFQ1RfVFlQRV9FWFRFTlNJT046XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uT0JKRUNUO1xuXG4gICAgY2FzZSBLaW5kLkZJRUxEX0RFRklOSVRJT046XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uRklFTERfREVGSU5JVElPTjtcblxuICAgIGNhc2UgS2luZC5JTlRFUkZBQ0VfVFlQRV9ERUZJTklUSU9OOlxuICAgIGNhc2UgS2luZC5JTlRFUkZBQ0VfVFlQRV9FWFRFTlNJT046XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uSU5URVJGQUNFO1xuXG4gICAgY2FzZSBLaW5kLlVOSU9OX1RZUEVfREVGSU5JVElPTjpcbiAgICBjYXNlIEtpbmQuVU5JT05fVFlQRV9FWFRFTlNJT046XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uVU5JT047XG5cbiAgICBjYXNlIEtpbmQuRU5VTV9UWVBFX0RFRklOSVRJT046XG4gICAgY2FzZSBLaW5kLkVOVU1fVFlQRV9FWFRFTlNJT046XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uRU5VTTtcblxuICAgIGNhc2UgS2luZC5FTlVNX1ZBTFVFX0RFRklOSVRJT046XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uRU5VTV9WQUxVRTtcblxuICAgIGNhc2UgS2luZC5JTlBVVF9PQkpFQ1RfVFlQRV9ERUZJTklUSU9OOlxuICAgIGNhc2UgS2luZC5JTlBVVF9PQkpFQ1RfVFlQRV9FWFRFTlNJT046XG4gICAgICByZXR1cm4gRGlyZWN0aXZlTG9jYXRpb24uSU5QVVRfT0JKRUNUO1xuXG4gICAgY2FzZSBLaW5kLklOUFVUX1ZBTFVFX0RFRklOSVRJT046IHtcbiAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBhbmNlc3RvcnNbYW5jZXN0b3JzLmxlbmd0aCAtIDNdO1xuICAgICAgJ2tpbmQnIGluIHBhcmVudE5vZGUgfHwgaW52YXJpYW50KGZhbHNlKTtcbiAgICAgIHJldHVybiBwYXJlbnROb2RlLmtpbmQgPT09IEtpbmQuSU5QVVRfT0JKRUNUX1RZUEVfREVGSU5JVElPTlxuICAgICAgICA/IERpcmVjdGl2ZUxvY2F0aW9uLklOUFVUX0ZJRUxEX0RFRklOSVRJT05cbiAgICAgICAgOiBEaXJlY3RpdmVMb2NhdGlvbi5BUkdVTUVOVF9ERUZJTklUSU9OO1xuICAgIH1cbiAgICAvLyBOb3QgcmVhY2hhYmxlLCBhbGwgcG9zc2libGUgdHlwZXMgaGF2ZSBiZWVuIGNvbnNpZGVyZWQuXG5cbiAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGZhbHNlIHx8IGludmFyaWFudChmYWxzZSwgJ1VuZXhwZWN0ZWQga2luZDogJyArIGluc3BlY3QoYXBwbGllZFRvLmtpbmQpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREaXJlY3RpdmVMb2NhdGlvbkZvck9wZXJhdGlvbihvcGVyYXRpb24pIHtcbiAgc3dpdGNoIChvcGVyYXRpb24pIHtcbiAgICBjYXNlIE9wZXJhdGlvblR5cGVOb2RlLlFVRVJZOlxuICAgICAgcmV0dXJuIERpcmVjdGl2ZUxvY2F0aW9uLlFVRVJZO1xuXG4gICAgY2FzZSBPcGVyYXRpb25UeXBlTm9kZS5NVVRBVElPTjpcbiAgICAgIHJldHVybiBEaXJlY3RpdmVMb2NhdGlvbi5NVVRBVElPTjtcblxuICAgIGNhc2UgT3BlcmF0aW9uVHlwZU5vZGUuU1VCU0NSSVBUSU9OOlxuICAgICAgcmV0dXJuIERpcmVjdGl2ZUxvY2F0aW9uLlNVQlNDUklQVElPTjtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/KnownDirectivesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs":
/*!**************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs ***!
  \**************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KnownFragmentNamesRule\": function() { return /* binding */ KnownFragmentNamesRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Known fragment names\n *\n * A GraphQL document is only valid if all `...Fragment` fragment spreads refer\n * to fragments defined in the same document.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-spread-target-defined\n */\nfunction KnownFragmentNamesRule(context) {\n  return {\n    FragmentSpread(node) {\n      const fragmentName = node.name.value;\n      const fragment = context.getFragment(fragmentName);\n\n      if (!fragment) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(`Unknown fragment \"${fragmentName}\".`, node.name),\n        );\n      }\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0tub3duRnJhZ21lbnROYW1lc1J1bGUubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTREOztBQUU1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsY0FBYyxpRUFBWSxzQkFBc0IsYUFBYTtBQUM3RDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Lbm93bkZyYWdtZW50TmFtZXNSdWxlLm1qcz9hZGU1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuXG4vKipcbiAqIEtub3duIGZyYWdtZW50IG5hbWVzXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgYWxsIGAuLi5GcmFnbWVudGAgZnJhZ21lbnQgc3ByZWFkcyByZWZlclxuICogdG8gZnJhZ21lbnRzIGRlZmluZWQgaW4gdGhlIHNhbWUgZG9jdW1lbnQuXG4gKlxuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLUZyYWdtZW50LXNwcmVhZC10YXJnZXQtZGVmaW5lZFxuICovXG5leHBvcnQgZnVuY3Rpb24gS25vd25GcmFnbWVudE5hbWVzUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgRnJhZ21lbnRTcHJlYWQobm9kZSkge1xuICAgICAgY29uc3QgZnJhZ21lbnROYW1lID0gbm9kZS5uYW1lLnZhbHVlO1xuICAgICAgY29uc3QgZnJhZ21lbnQgPSBjb250ZXh0LmdldEZyYWdtZW50KGZyYWdtZW50TmFtZSk7XG5cbiAgICAgIGlmICghZnJhZ21lbnQpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKGBVbmtub3duIGZyYWdtZW50IFwiJHtmcmFnbWVudE5hbWV9XCIuYCwgbm9kZS5uYW1lKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs":
/*!**********************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs ***!
  \**********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"KnownTypeNamesRule\": function() { return /* binding */ KnownTypeNamesRule; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../jsutils/didYouMean.mjs */ \"./node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/suggestionList.mjs */ \"./node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_predicates_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../language/predicates.mjs */ \"./node_modules/graphql/language/predicates.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../type/introspection.mjs */ \"./node_modules/graphql/type/introspection.mjs\");\n/* harmony import */ var _type_scalars_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../type/scalars.mjs */ \"./node_modules/graphql/type/scalars.mjs\");\n\n\n\n\n\n\n\n/**\n * Known type names\n *\n * A GraphQL document is only valid if referenced types (specifically\n * variable definitions and fragment conditions) are defined by the type schema.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence\n */\nfunction KnownTypeNamesRule(context) {\n  const schema = context.getSchema();\n  const existingTypesMap = schema ? schema.getTypeMap() : Object.create(null);\n  const definedTypes = Object.create(null);\n\n  for (const def of context.getDocument().definitions) {\n    if ((0,_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_0__.isTypeDefinitionNode)(def)) {\n      definedTypes[def.name.value] = true;\n    }\n  }\n\n  const typeNames = [\n    ...Object.keys(existingTypesMap),\n    ...Object.keys(definedTypes),\n  ];\n  return {\n    NamedType(node, _1, parent, _2, ancestors) {\n      const typeName = node.name.value;\n\n      if (!existingTypesMap[typeName] && !definedTypes[typeName]) {\n        var _ancestors$;\n\n        const definitionNode =\n          (_ancestors$ = ancestors[2]) !== null && _ancestors$ !== void 0\n            ? _ancestors$\n            : parent;\n        const isSDL = definitionNode != null && isSDLNode(definitionNode);\n\n        if (isSDL && standardTypeNames.includes(typeName)) {\n          return;\n        }\n\n        const suggestedTypes = (0,_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_1__.suggestionList)(\n          typeName,\n          isSDL ? standardTypeNames.concat(typeNames) : typeNames,\n        );\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLError(\n            `Unknown type \"${typeName}\".` + (0,_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_3__.didYouMean)(suggestedTypes),\n            node,\n          ),\n        );\n      }\n    },\n  };\n}\nconst standardTypeNames = [..._type_scalars_mjs__WEBPACK_IMPORTED_MODULE_4__.specifiedScalarTypes, ..._type_introspection_mjs__WEBPACK_IMPORTED_MODULE_5__.introspectionTypes].map(\n  (type) => type.name,\n);\n\nfunction isSDLNode(value) {\n  return (\n    'kind' in value &&\n    ((0,_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_0__.isTypeSystemDefinitionNode)(value) || (0,_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_0__.isTypeSystemExtensionNode)(value))\n  );\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0tub3duVHlwZU5hbWVzUnVsZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUEwRDtBQUNRO0FBQ047QUFLckI7QUFDMkI7QUFDSjs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSw4RUFBb0I7QUFDNUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsK0JBQStCLDJFQUFjO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxpRUFBWTtBQUMxQiw2QkFBNkIsU0FBUyxNQUFNLG1FQUFVO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSw4QkFBOEIsbUVBQW9CLEtBQUssdUVBQWtCO0FBQ3pFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSyxvRkFBMEIsV0FBVyxtRkFBeUI7QUFDbkU7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0tub3duVHlwZU5hbWVzUnVsZS5tanM/NTQxNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaWRZb3VNZWFuIH0gZnJvbSAnLi4vLi4vanN1dGlscy9kaWRZb3VNZWFuLm1qcyc7XG5pbXBvcnQgeyBzdWdnZXN0aW9uTGlzdCB9IGZyb20gJy4uLy4uL2pzdXRpbHMvc3VnZ2VzdGlvbkxpc3QubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHtcbiAgaXNUeXBlRGVmaW5pdGlvbk5vZGUsXG4gIGlzVHlwZVN5c3RlbURlZmluaXRpb25Ob2RlLFxuICBpc1R5cGVTeXN0ZW1FeHRlbnNpb25Ob2RlLFxufSBmcm9tICcuLi8uLi9sYW5ndWFnZS9wcmVkaWNhdGVzLm1qcyc7XG5pbXBvcnQgeyBpbnRyb3NwZWN0aW9uVHlwZXMgfSBmcm9tICcuLi8uLi90eXBlL2ludHJvc3BlY3Rpb24ubWpzJztcbmltcG9ydCB7IHNwZWNpZmllZFNjYWxhclR5cGVzIH0gZnJvbSAnLi4vLi4vdHlwZS9zY2FsYXJzLm1qcyc7XG5cbi8qKlxuICogS25vd24gdHlwZSBuYW1lc1xuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIHJlZmVyZW5jZWQgdHlwZXMgKHNwZWNpZmljYWxseVxuICogdmFyaWFibGUgZGVmaW5pdGlvbnMgYW5kIGZyYWdtZW50IGNvbmRpdGlvbnMpIGFyZSBkZWZpbmVkIGJ5IHRoZSB0eXBlIHNjaGVtYS5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9zcGVjLmdyYXBocWwub3JnL2RyYWZ0LyNzZWMtRnJhZ21lbnQtU3ByZWFkLVR5cGUtRXhpc3RlbmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBLbm93blR5cGVOYW1lc1J1bGUoY29udGV4dCkge1xuICBjb25zdCBzY2hlbWEgPSBjb250ZXh0LmdldFNjaGVtYSgpO1xuICBjb25zdCBleGlzdGluZ1R5cGVzTWFwID0gc2NoZW1hID8gc2NoZW1hLmdldFR5cGVNYXAoKSA6IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGNvbnN0IGRlZmluZWRUeXBlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgZm9yIChjb25zdCBkZWYgb2YgY29udGV4dC5nZXREb2N1bWVudCgpLmRlZmluaXRpb25zKSB7XG4gICAgaWYgKGlzVHlwZURlZmluaXRpb25Ob2RlKGRlZikpIHtcbiAgICAgIGRlZmluZWRUeXBlc1tkZWYubmFtZS52YWx1ZV0gPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHR5cGVOYW1lcyA9IFtcbiAgICAuLi5PYmplY3Qua2V5cyhleGlzdGluZ1R5cGVzTWFwKSxcbiAgICAuLi5PYmplY3Qua2V5cyhkZWZpbmVkVHlwZXMpLFxuICBdO1xuICByZXR1cm4ge1xuICAgIE5hbWVkVHlwZShub2RlLCBfMSwgcGFyZW50LCBfMiwgYW5jZXN0b3JzKSB7XG4gICAgICBjb25zdCB0eXBlTmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcblxuICAgICAgaWYgKCFleGlzdGluZ1R5cGVzTWFwW3R5cGVOYW1lXSAmJiAhZGVmaW5lZFR5cGVzW3R5cGVOYW1lXSkge1xuICAgICAgICB2YXIgX2FuY2VzdG9ycyQ7XG5cbiAgICAgICAgY29uc3QgZGVmaW5pdGlvbk5vZGUgPVxuICAgICAgICAgIChfYW5jZXN0b3JzJCA9IGFuY2VzdG9yc1syXSkgIT09IG51bGwgJiYgX2FuY2VzdG9ycyQgIT09IHZvaWQgMFxuICAgICAgICAgICAgPyBfYW5jZXN0b3JzJFxuICAgICAgICAgICAgOiBwYXJlbnQ7XG4gICAgICAgIGNvbnN0IGlzU0RMID0gZGVmaW5pdGlvbk5vZGUgIT0gbnVsbCAmJiBpc1NETE5vZGUoZGVmaW5pdGlvbk5vZGUpO1xuXG4gICAgICAgIGlmIChpc1NETCAmJiBzdGFuZGFyZFR5cGVOYW1lcy5pbmNsdWRlcyh0eXBlTmFtZSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdWdnZXN0ZWRUeXBlcyA9IHN1Z2dlc3Rpb25MaXN0KFxuICAgICAgICAgIHR5cGVOYW1lLFxuICAgICAgICAgIGlzU0RMID8gc3RhbmRhcmRUeXBlTmFtZXMuY29uY2F0KHR5cGVOYW1lcykgOiB0eXBlTmFtZXMsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBVbmtub3duIHR5cGUgXCIke3R5cGVOYW1lfVwiLmAgKyBkaWRZb3VNZWFuKHN1Z2dlc3RlZFR5cGVzKSxcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuY29uc3Qgc3RhbmRhcmRUeXBlTmFtZXMgPSBbLi4uc3BlY2lmaWVkU2NhbGFyVHlwZXMsIC4uLmludHJvc3BlY3Rpb25UeXBlc10ubWFwKFxuICAodHlwZSkgPT4gdHlwZS5uYW1lLFxuKTtcblxuZnVuY3Rpb24gaXNTRExOb2RlKHZhbHVlKSB7XG4gIHJldHVybiAoXG4gICAgJ2tpbmQnIGluIHZhbHVlICYmXG4gICAgKGlzVHlwZVN5c3RlbURlZmluaXRpb25Ob2RlKHZhbHVlKSB8fCBpc1R5cGVTeXN0ZW1FeHRlbnNpb25Ob2RlKHZhbHVlKSlcbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs":
/*!******************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs ***!
  \******************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"LoneAnonymousOperationRule\": function() { return /* binding */ LoneAnonymousOperationRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n\n\n\n/**\n * Lone anonymous operation\n *\n * A GraphQL document is only valid if when it contains an anonymous operation\n * (the query short-hand) that it contains only that one operation definition.\n *\n * See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation\n */\nfunction LoneAnonymousOperationRule(context) {\n  let operationCount = 0;\n  return {\n    Document(node) {\n      operationCount = node.definitions.filter(\n        (definition) => definition.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.OPERATION_DEFINITION,\n      ).length;\n    },\n\n    OperationDefinition(node) {\n      if (!node.name && operationCount > 1) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n            'This anonymous operation must be the only defined operation.',\n            node,\n          ),\n        );\n      }\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0xvbmVBbm9ueW1vdXNPcGVyYXRpb25SdWxlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBNEQ7QUFDWjs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsMEVBQXlCO0FBQ3JFO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLGlFQUFZO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0xvbmVBbm9ueW1vdXNPcGVyYXRpb25SdWxlLm1qcz8yY2ExIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uLy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5cbi8qKlxuICogTG9uZSBhbm9ueW1vdXMgb3BlcmF0aW9uXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgd2hlbiBpdCBjb250YWlucyBhbiBhbm9ueW1vdXMgb3BlcmF0aW9uXG4gKiAodGhlIHF1ZXJ5IHNob3J0LWhhbmQpIHRoYXQgaXQgY29udGFpbnMgb25seSB0aGF0IG9uZSBvcGVyYXRpb24gZGVmaW5pdGlvbi5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9zcGVjLmdyYXBocWwub3JnL2RyYWZ0LyNzZWMtTG9uZS1Bbm9ueW1vdXMtT3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBMb25lQW5vbnltb3VzT3BlcmF0aW9uUnVsZShjb250ZXh0KSB7XG4gIGxldCBvcGVyYXRpb25Db3VudCA9IDA7XG4gIHJldHVybiB7XG4gICAgRG9jdW1lbnQobm9kZSkge1xuICAgICAgb3BlcmF0aW9uQ291bnQgPSBub2RlLmRlZmluaXRpb25zLmZpbHRlcihcbiAgICAgICAgKGRlZmluaXRpb24pID0+IGRlZmluaXRpb24ua2luZCA9PT0gS2luZC5PUEVSQVRJT05fREVGSU5JVElPTixcbiAgICAgICkubGVuZ3RoO1xuICAgIH0sXG5cbiAgICBPcGVyYXRpb25EZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgIGlmICghbm9kZS5uYW1lICYmIG9wZXJhdGlvbkNvdW50ID4gMSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICAnVGhpcyBhbm9ueW1vdXMgb3BlcmF0aW9uIG11c3QgYmUgdGhlIG9ubHkgZGVmaW5lZCBvcGVyYXRpb24uJyxcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs":
/*!****************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs ***!
  \****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"LoneSchemaDefinitionRule\": function() { return /* binding */ LoneSchemaDefinitionRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Lone Schema definition\n *\n * A GraphQL document is only valid if it contains only one schema definition.\n */\nfunction LoneSchemaDefinitionRule(context) {\n  var _ref, _ref2, _oldSchema$astNode;\n\n  const oldSchema = context.getSchema();\n  const alreadyDefined =\n    (_ref =\n      (_ref2 =\n        (_oldSchema$astNode =\n          oldSchema === null || oldSchema === void 0\n            ? void 0\n            : oldSchema.astNode) !== null && _oldSchema$astNode !== void 0\n          ? _oldSchema$astNode\n          : oldSchema === null || oldSchema === void 0\n          ? void 0\n          : oldSchema.getQueryType()) !== null && _ref2 !== void 0\n        ? _ref2\n        : oldSchema === null || oldSchema === void 0\n        ? void 0\n        : oldSchema.getMutationType()) !== null && _ref !== void 0\n      ? _ref\n      : oldSchema === null || oldSchema === void 0\n      ? void 0\n      : oldSchema.getSubscriptionType();\n  let schemaDefinitionsCount = 0;\n  return {\n    SchemaDefinition(node) {\n      if (alreadyDefined) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n            'Cannot define a new schema within a schema extension.',\n            node,\n          ),\n        );\n        return;\n      }\n\n      if (schemaDefinitionsCount > 0) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError('Must provide only one schema definition.', node),\n        );\n      }\n\n      ++schemaDefinitionsCount;\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL0xvbmVTY2hlbWFEZWZpbml0aW9uUnVsZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNEQ7O0FBRTVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxpRUFBWTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGNBQWMsaUVBQVk7QUFDMUI7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvTG9uZVNjaGVtYURlZmluaXRpb25SdWxlLm1qcz9iNmY5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuXG4vKipcbiAqIExvbmUgU2NoZW1hIGRlZmluaXRpb25cbiAqXG4gKiBBIEdyYXBoUUwgZG9jdW1lbnQgaXMgb25seSB2YWxpZCBpZiBpdCBjb250YWlucyBvbmx5IG9uZSBzY2hlbWEgZGVmaW5pdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIExvbmVTY2hlbWFEZWZpbml0aW9uUnVsZShjb250ZXh0KSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX29sZFNjaGVtYSRhc3ROb2RlO1xuXG4gIGNvbnN0IG9sZFNjaGVtYSA9IGNvbnRleHQuZ2V0U2NoZW1hKCk7XG4gIGNvbnN0IGFscmVhZHlEZWZpbmVkID1cbiAgICAoX3JlZiA9XG4gICAgICAoX3JlZjIgPVxuICAgICAgICAoX29sZFNjaGVtYSRhc3ROb2RlID1cbiAgICAgICAgICBvbGRTY2hlbWEgPT09IG51bGwgfHwgb2xkU2NoZW1hID09PSB2b2lkIDBcbiAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICA6IG9sZFNjaGVtYS5hc3ROb2RlKSAhPT0gbnVsbCAmJiBfb2xkU2NoZW1hJGFzdE5vZGUgIT09IHZvaWQgMFxuICAgICAgICAgID8gX29sZFNjaGVtYSRhc3ROb2RlXG4gICAgICAgICAgOiBvbGRTY2hlbWEgPT09IG51bGwgfHwgb2xkU2NoZW1hID09PSB2b2lkIDBcbiAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgIDogb2xkU2NoZW1hLmdldFF1ZXJ5VHlwZSgpKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwXG4gICAgICAgID8gX3JlZjJcbiAgICAgICAgOiBvbGRTY2hlbWEgPT09IG51bGwgfHwgb2xkU2NoZW1hID09PSB2b2lkIDBcbiAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgOiBvbGRTY2hlbWEuZ2V0TXV0YXRpb25UeXBlKCkpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMFxuICAgICAgPyBfcmVmXG4gICAgICA6IG9sZFNjaGVtYSA9PT0gbnVsbCB8fCBvbGRTY2hlbWEgPT09IHZvaWQgMFxuICAgICAgPyB2b2lkIDBcbiAgICAgIDogb2xkU2NoZW1hLmdldFN1YnNjcmlwdGlvblR5cGUoKTtcbiAgbGV0IHNjaGVtYURlZmluaXRpb25zQ291bnQgPSAwO1xuICByZXR1cm4ge1xuICAgIFNjaGVtYURlZmluaXRpb24obm9kZSkge1xuICAgICAgaWYgKGFscmVhZHlEZWZpbmVkKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICdDYW5ub3QgZGVmaW5lIGEgbmV3IHNjaGVtYSB3aXRoaW4gYSBzY2hlbWEgZXh0ZW5zaW9uLicsXG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHNjaGVtYURlZmluaXRpb25zQ291bnQgPiAwKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcignTXVzdCBwcm92aWRlIG9ubHkgb25lIHNjaGVtYSBkZWZpbml0aW9uLicsIG5vZGUpLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICArK3NjaGVtYURlZmluaXRpb25zQ291bnQ7XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs":
/*!************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs ***!
  \************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NoFragmentCyclesRule\": function() { return /* binding */ NoFragmentCyclesRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * No fragment cycles\n *\n * The graph of fragment spreads must not form any cycles including spreading itself.\n * Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles\n */\nfunction NoFragmentCyclesRule(context) {\n  // Tracks already visited fragments to maintain O(N) and to ensure that cycles\n  // are not redundantly reported.\n  const visitedFrags = Object.create(null); // Array of AST nodes used to produce meaningful errors\n\n  const spreadPath = []; // Position in the spread path\n\n  const spreadPathIndexByName = Object.create(null);\n  return {\n    OperationDefinition: () => false,\n\n    FragmentDefinition(node) {\n      detectCycleRecursive(node);\n      return false;\n    },\n  }; // This does a straight-forward DFS to find cycles.\n  // It does not terminate when a cycle was found but continues to explore\n  // the graph to find all possible cycles.\n\n  function detectCycleRecursive(fragment) {\n    if (visitedFrags[fragment.name.value]) {\n      return;\n    }\n\n    const fragmentName = fragment.name.value;\n    visitedFrags[fragmentName] = true;\n    const spreadNodes = context.getFragmentSpreads(fragment.selectionSet);\n\n    if (spreadNodes.length === 0) {\n      return;\n    }\n\n    spreadPathIndexByName[fragmentName] = spreadPath.length;\n\n    for (const spreadNode of spreadNodes) {\n      const spreadName = spreadNode.name.value;\n      const cycleIndex = spreadPathIndexByName[spreadName];\n      spreadPath.push(spreadNode);\n\n      if (cycleIndex === undefined) {\n        const spreadFragment = context.getFragment(spreadName);\n\n        if (spreadFragment) {\n          detectCycleRecursive(spreadFragment);\n        }\n      } else {\n        const cyclePath = spreadPath.slice(cycleIndex);\n        const viaPath = cyclePath\n          .slice(0, -1)\n          .map((s) => '\"' + s.name.value + '\"')\n          .join(', ');\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n            `Cannot spread fragment \"${spreadName}\" within itself` +\n              (viaPath !== '' ? ` via ${viaPath}.` : '.'),\n            cyclePath,\n          ),\n        );\n      }\n\n      spreadPath.pop();\n    }\n\n    spreadPathIndexByName[fragmentName] = undefined;\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL05vRnJhZ21lbnRDeWNsZXNSdWxlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUE0RDs7QUFFNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLDRDQUE0Qzs7QUFFNUMseUJBQXlCOztBQUV6QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxpRUFBWTtBQUMxQix1Q0FBdUMsV0FBVztBQUNsRCx3Q0FBd0MsUUFBUTtBQUNoRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL05vRnJhZ21lbnRDeWNsZXNSdWxlLm1qcz9lZjM2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuXG4vKipcbiAqIE5vIGZyYWdtZW50IGN5Y2xlc1xuICpcbiAqIFRoZSBncmFwaCBvZiBmcmFnbWVudCBzcHJlYWRzIG11c3Qgbm90IGZvcm0gYW55IGN5Y2xlcyBpbmNsdWRpbmcgc3ByZWFkaW5nIGl0c2VsZi5cbiAqIE90aGVyd2lzZSBhbiBvcGVyYXRpb24gY291bGQgaW5maW5pdGVseSBzcHJlYWQgb3IgaW5maW5pdGVseSBleGVjdXRlIG9uIGN5Y2xlcyBpbiB0aGUgdW5kZXJseWluZyBkYXRhLlxuICpcbiAqIFNlZSBodHRwczovL3NwZWMuZ3JhcGhxbC5vcmcvZHJhZnQvI3NlYy1GcmFnbWVudC1zcHJlYWRzLW11c3Qtbm90LWZvcm0tY3ljbGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBOb0ZyYWdtZW50Q3ljbGVzUnVsZShjb250ZXh0KSB7XG4gIC8vIFRyYWNrcyBhbHJlYWR5IHZpc2l0ZWQgZnJhZ21lbnRzIHRvIG1haW50YWluIE8oTikgYW5kIHRvIGVuc3VyZSB0aGF0IGN5Y2xlc1xuICAvLyBhcmUgbm90IHJlZHVuZGFudGx5IHJlcG9ydGVkLlxuICBjb25zdCB2aXNpdGVkRnJhZ3MgPSBPYmplY3QuY3JlYXRlKG51bGwpOyAvLyBBcnJheSBvZiBBU1Qgbm9kZXMgdXNlZCB0byBwcm9kdWNlIG1lYW5pbmdmdWwgZXJyb3JzXG5cbiAgY29uc3Qgc3ByZWFkUGF0aCA9IFtdOyAvLyBQb3NpdGlvbiBpbiB0aGUgc3ByZWFkIHBhdGhcblxuICBjb25zdCBzcHJlYWRQYXRoSW5kZXhCeU5hbWUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4ge1xuICAgIE9wZXJhdGlvbkRlZmluaXRpb246ICgpID0+IGZhbHNlLFxuXG4gICAgRnJhZ21lbnREZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgIGRldGVjdEN5Y2xlUmVjdXJzaXZlKG5vZGUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gIH07IC8vIFRoaXMgZG9lcyBhIHN0cmFpZ2h0LWZvcndhcmQgREZTIHRvIGZpbmQgY3ljbGVzLlxuICAvLyBJdCBkb2VzIG5vdCB0ZXJtaW5hdGUgd2hlbiBhIGN5Y2xlIHdhcyBmb3VuZCBidXQgY29udGludWVzIHRvIGV4cGxvcmVcbiAgLy8gdGhlIGdyYXBoIHRvIGZpbmQgYWxsIHBvc3NpYmxlIGN5Y2xlcy5cblxuICBmdW5jdGlvbiBkZXRlY3RDeWNsZVJlY3Vyc2l2ZShmcmFnbWVudCkge1xuICAgIGlmICh2aXNpdGVkRnJhZ3NbZnJhZ21lbnQubmFtZS52YWx1ZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmcmFnbWVudE5hbWUgPSBmcmFnbWVudC5uYW1lLnZhbHVlO1xuICAgIHZpc2l0ZWRGcmFnc1tmcmFnbWVudE5hbWVdID0gdHJ1ZTtcbiAgICBjb25zdCBzcHJlYWROb2RlcyA9IGNvbnRleHQuZ2V0RnJhZ21lbnRTcHJlYWRzKGZyYWdtZW50LnNlbGVjdGlvblNldCk7XG5cbiAgICBpZiAoc3ByZWFkTm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3ByZWFkUGF0aEluZGV4QnlOYW1lW2ZyYWdtZW50TmFtZV0gPSBzcHJlYWRQYXRoLmxlbmd0aDtcblxuICAgIGZvciAoY29uc3Qgc3ByZWFkTm9kZSBvZiBzcHJlYWROb2Rlcykge1xuICAgICAgY29uc3Qgc3ByZWFkTmFtZSA9IHNwcmVhZE5vZGUubmFtZS52YWx1ZTtcbiAgICAgIGNvbnN0IGN5Y2xlSW5kZXggPSBzcHJlYWRQYXRoSW5kZXhCeU5hbWVbc3ByZWFkTmFtZV07XG4gICAgICBzcHJlYWRQYXRoLnB1c2goc3ByZWFkTm9kZSk7XG5cbiAgICAgIGlmIChjeWNsZUluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgc3ByZWFkRnJhZ21lbnQgPSBjb250ZXh0LmdldEZyYWdtZW50KHNwcmVhZE5hbWUpO1xuXG4gICAgICAgIGlmIChzcHJlYWRGcmFnbWVudCkge1xuICAgICAgICAgIGRldGVjdEN5Y2xlUmVjdXJzaXZlKHNwcmVhZEZyYWdtZW50KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY3ljbGVQYXRoID0gc3ByZWFkUGF0aC5zbGljZShjeWNsZUluZGV4KTtcbiAgICAgICAgY29uc3QgdmlhUGF0aCA9IGN5Y2xlUGF0aFxuICAgICAgICAgIC5zbGljZSgwLCAtMSlcbiAgICAgICAgICAubWFwKChzKSA9PiAnXCInICsgcy5uYW1lLnZhbHVlICsgJ1wiJylcbiAgICAgICAgICAuam9pbignLCAnKTtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYENhbm5vdCBzcHJlYWQgZnJhZ21lbnQgXCIke3NwcmVhZE5hbWV9XCIgd2l0aGluIGl0c2VsZmAgK1xuICAgICAgICAgICAgICAodmlhUGF0aCAhPT0gJycgPyBgIHZpYSAke3ZpYVBhdGh9LmAgOiAnLicpLFxuICAgICAgICAgICAgY3ljbGVQYXRoLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHNwcmVhZFBhdGgucG9wKCk7XG4gICAgfVxuXG4gICAgc3ByZWFkUGF0aEluZGV4QnlOYW1lW2ZyYWdtZW50TmFtZV0gPSB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs":
/*!****************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs ***!
  \****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NoUndefinedVariablesRule\": function() { return /* binding */ NoUndefinedVariablesRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * No undefined variables\n *\n * A GraphQL operation is only valid if all variables encountered, both directly\n * and via fragment spreads, are defined by that operation.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined\n */\nfunction NoUndefinedVariablesRule(context) {\n  let variableNameDefined = Object.create(null);\n  return {\n    OperationDefinition: {\n      enter() {\n        variableNameDefined = Object.create(null);\n      },\n\n      leave(operation) {\n        const usages = context.getRecursiveVariableUsages(operation);\n\n        for (const { node } of usages) {\n          const varName = node.name.value;\n\n          if (variableNameDefined[varName] !== true) {\n            context.reportError(\n              new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n                operation.name\n                  ? `Variable \"$${varName}\" is not defined by operation \"${operation.name.value}\".`\n                  : `Variable \"$${varName}\" is not defined.`,\n                [node, operation],\n              ),\n            );\n          }\n        }\n      },\n    },\n\n    VariableDefinition(node) {\n      variableNameDefined[node.variable.name.value] = true;\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL05vVW5kZWZpbmVkVmFyaWFibGVzUnVsZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNEQ7O0FBRTVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7O0FBRUEscUJBQXFCLE9BQU87QUFDNUI7O0FBRUE7QUFDQTtBQUNBLGtCQUFrQixpRUFBWTtBQUM5QjtBQUNBLGtDQUFrQyxRQUFRLGlDQUFpQyxxQkFBcUI7QUFDaEcsa0NBQWtDLFFBQVE7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL05vVW5kZWZpbmVkVmFyaWFibGVzUnVsZS5tanM/OTM5YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcblxuLyoqXG4gKiBObyB1bmRlZmluZWQgdmFyaWFibGVzXG4gKlxuICogQSBHcmFwaFFMIG9wZXJhdGlvbiBpcyBvbmx5IHZhbGlkIGlmIGFsbCB2YXJpYWJsZXMgZW5jb3VudGVyZWQsIGJvdGggZGlyZWN0bHlcbiAqIGFuZCB2aWEgZnJhZ21lbnQgc3ByZWFkcywgYXJlIGRlZmluZWQgYnkgdGhhdCBvcGVyYXRpb24uXG4gKlxuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLUFsbC1WYXJpYWJsZS1Vc2VzLURlZmluZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE5vVW5kZWZpbmVkVmFyaWFibGVzUnVsZShjb250ZXh0KSB7XG4gIGxldCB2YXJpYWJsZU5hbWVEZWZpbmVkID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIHtcbiAgICBPcGVyYXRpb25EZWZpbml0aW9uOiB7XG4gICAgICBlbnRlcigpIHtcbiAgICAgICAgdmFyaWFibGVOYW1lRGVmaW5lZCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICB9LFxuXG4gICAgICBsZWF2ZShvcGVyYXRpb24pIHtcbiAgICAgICAgY29uc3QgdXNhZ2VzID0gY29udGV4dC5nZXRSZWN1cnNpdmVWYXJpYWJsZVVzYWdlcyhvcGVyYXRpb24pO1xuXG4gICAgICAgIGZvciAoY29uc3QgeyBub2RlIH0gb2YgdXNhZ2VzKSB7XG4gICAgICAgICAgY29uc3QgdmFyTmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcblxuICAgICAgICAgIGlmICh2YXJpYWJsZU5hbWVEZWZpbmVkW3Zhck5hbWVdICE9PSB0cnVlKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5uYW1lXG4gICAgICAgICAgICAgICAgICA/IGBWYXJpYWJsZSBcIiQke3Zhck5hbWV9XCIgaXMgbm90IGRlZmluZWQgYnkgb3BlcmF0aW9uIFwiJHtvcGVyYXRpb24ubmFtZS52YWx1ZX1cIi5gXG4gICAgICAgICAgICAgICAgICA6IGBWYXJpYWJsZSBcIiQke3Zhck5hbWV9XCIgaXMgbm90IGRlZmluZWQuYCxcbiAgICAgICAgICAgICAgICBbbm9kZSwgb3BlcmF0aW9uXSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG5cbiAgICBWYXJpYWJsZURlZmluaXRpb24obm9kZSkge1xuICAgICAgdmFyaWFibGVOYW1lRGVmaW5lZFtub2RlLnZhcmlhYmxlLm5hbWUudmFsdWVdID0gdHJ1ZTtcbiAgICB9LFxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs":
/*!*************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs ***!
  \*************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NoUnusedFragmentsRule\": function() { return /* binding */ NoUnusedFragmentsRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * No unused fragments\n *\n * A GraphQL document is only valid if all fragment definitions are spread\n * within operations, or spread within other fragments spread within operations.\n *\n * See https://spec.graphql.org/draft/#sec-Fragments-Must-Be-Used\n */\nfunction NoUnusedFragmentsRule(context) {\n  const operationDefs = [];\n  const fragmentDefs = [];\n  return {\n    OperationDefinition(node) {\n      operationDefs.push(node);\n      return false;\n    },\n\n    FragmentDefinition(node) {\n      fragmentDefs.push(node);\n      return false;\n    },\n\n    Document: {\n      leave() {\n        const fragmentNameUsed = Object.create(null);\n\n        for (const operation of operationDefs) {\n          for (const fragment of context.getRecursivelyReferencedFragments(\n            operation,\n          )) {\n            fragmentNameUsed[fragment.name.value] = true;\n          }\n        }\n\n        for (const fragmentDef of fragmentDefs) {\n          const fragName = fragmentDef.name.value;\n\n          if (fragmentNameUsed[fragName] !== true) {\n            context.reportError(\n              new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n                `Fragment \"${fragName}\" is never used.`,\n                fragmentDef,\n              ),\n            );\n          }\n        }\n      },\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL05vVW51c2VkRnJhZ21lbnRzUnVsZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNEQ7O0FBRTVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCLGlFQUFZO0FBQzlCLDZCQUE2QixTQUFTO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Ob1VudXNlZEZyYWdtZW50c1J1bGUubWpzP2Y5OGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5cbi8qKlxuICogTm8gdW51c2VkIGZyYWdtZW50c1xuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGFsbCBmcmFnbWVudCBkZWZpbml0aW9ucyBhcmUgc3ByZWFkXG4gKiB3aXRoaW4gb3BlcmF0aW9ucywgb3Igc3ByZWFkIHdpdGhpbiBvdGhlciBmcmFnbWVudHMgc3ByZWFkIHdpdGhpbiBvcGVyYXRpb25zLlxuICpcbiAqIFNlZSBodHRwczovL3NwZWMuZ3JhcGhxbC5vcmcvZHJhZnQvI3NlYy1GcmFnbWVudHMtTXVzdC1CZS1Vc2VkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBOb1VudXNlZEZyYWdtZW50c1J1bGUoY29udGV4dCkge1xuICBjb25zdCBvcGVyYXRpb25EZWZzID0gW107XG4gIGNvbnN0IGZyYWdtZW50RGVmcyA9IFtdO1xuICByZXR1cm4ge1xuICAgIE9wZXJhdGlvbkRlZmluaXRpb24obm9kZSkge1xuICAgICAgb3BlcmF0aW9uRGVmcy5wdXNoKG5vZGUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG5cbiAgICBGcmFnbWVudERlZmluaXRpb24obm9kZSkge1xuICAgICAgZnJhZ21lbnREZWZzLnB1c2gobm9kZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcblxuICAgIERvY3VtZW50OiB7XG4gICAgICBsZWF2ZSgpIHtcbiAgICAgICAgY29uc3QgZnJhZ21lbnROYW1lVXNlZCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBvcGVyYXRpb24gb2Ygb3BlcmF0aW9uRGVmcykge1xuICAgICAgICAgIGZvciAoY29uc3QgZnJhZ21lbnQgb2YgY29udGV4dC5nZXRSZWN1cnNpdmVseVJlZmVyZW5jZWRGcmFnbWVudHMoXG4gICAgICAgICAgICBvcGVyYXRpb24sXG4gICAgICAgICAgKSkge1xuICAgICAgICAgICAgZnJhZ21lbnROYW1lVXNlZFtmcmFnbWVudC5uYW1lLnZhbHVlXSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBmcmFnbWVudERlZiBvZiBmcmFnbWVudERlZnMpIHtcbiAgICAgICAgICBjb25zdCBmcmFnTmFtZSA9IGZyYWdtZW50RGVmLm5hbWUudmFsdWU7XG5cbiAgICAgICAgICBpZiAoZnJhZ21lbnROYW1lVXNlZFtmcmFnTmFtZV0gIT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICAgICAgYEZyYWdtZW50IFwiJHtmcmFnTmFtZX1cIiBpcyBuZXZlciB1c2VkLmAsXG4gICAgICAgICAgICAgICAgZnJhZ21lbnREZWYsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs":
/*!*************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs ***!
  \*************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NoUnusedVariablesRule\": function() { return /* binding */ NoUnusedVariablesRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * No unused variables\n *\n * A GraphQL operation is only valid if all variables defined by an operation\n * are used, either directly or within a spread fragment.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variables-Used\n */\nfunction NoUnusedVariablesRule(context) {\n  let variableDefs = [];\n  return {\n    OperationDefinition: {\n      enter() {\n        variableDefs = [];\n      },\n\n      leave(operation) {\n        const variableNameUsed = Object.create(null);\n        const usages = context.getRecursiveVariableUsages(operation);\n\n        for (const { node } of usages) {\n          variableNameUsed[node.name.value] = true;\n        }\n\n        for (const variableDef of variableDefs) {\n          const variableName = variableDef.variable.name.value;\n\n          if (variableNameUsed[variableName] !== true) {\n            context.reportError(\n              new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n                operation.name\n                  ? `Variable \"$${variableName}\" is never used in operation \"${operation.name.value}\".`\n                  : `Variable \"$${variableName}\" is never used.`,\n                variableDef,\n              ),\n            );\n          }\n        }\n      },\n    },\n\n    VariableDefinition(def) {\n      variableDefs.push(def);\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL05vVW51c2VkVmFyaWFibGVzUnVsZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNEQ7O0FBRTVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsT0FBTztBQUM1QjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtCQUFrQixpRUFBWTtBQUM5QjtBQUNBLGtDQUFrQyxhQUFhLGdDQUFnQyxxQkFBcUI7QUFDcEcsa0NBQWtDLGFBQWE7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL05vVW51c2VkVmFyaWFibGVzUnVsZS5tanM/ZDMwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcblxuLyoqXG4gKiBObyB1bnVzZWQgdmFyaWFibGVzXG4gKlxuICogQSBHcmFwaFFMIG9wZXJhdGlvbiBpcyBvbmx5IHZhbGlkIGlmIGFsbCB2YXJpYWJsZXMgZGVmaW5lZCBieSBhbiBvcGVyYXRpb25cbiAqIGFyZSB1c2VkLCBlaXRoZXIgZGlyZWN0bHkgb3Igd2l0aGluIGEgc3ByZWFkIGZyYWdtZW50LlxuICpcbiAqIFNlZSBodHRwczovL3NwZWMuZ3JhcGhxbC5vcmcvZHJhZnQvI3NlYy1BbGwtVmFyaWFibGVzLVVzZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE5vVW51c2VkVmFyaWFibGVzUnVsZShjb250ZXh0KSB7XG4gIGxldCB2YXJpYWJsZURlZnMgPSBbXTtcbiAgcmV0dXJuIHtcbiAgICBPcGVyYXRpb25EZWZpbml0aW9uOiB7XG4gICAgICBlbnRlcigpIHtcbiAgICAgICAgdmFyaWFibGVEZWZzID0gW107XG4gICAgICB9LFxuXG4gICAgICBsZWF2ZShvcGVyYXRpb24pIHtcbiAgICAgICAgY29uc3QgdmFyaWFibGVOYW1lVXNlZCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGNvbnN0IHVzYWdlcyA9IGNvbnRleHQuZ2V0UmVjdXJzaXZlVmFyaWFibGVVc2FnZXMob3BlcmF0aW9uKTtcblxuICAgICAgICBmb3IgKGNvbnN0IHsgbm9kZSB9IG9mIHVzYWdlcykge1xuICAgICAgICAgIHZhcmlhYmxlTmFtZVVzZWRbbm9kZS5uYW1lLnZhbHVlXSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHZhcmlhYmxlRGVmIG9mIHZhcmlhYmxlRGVmcykge1xuICAgICAgICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlRGVmLnZhcmlhYmxlLm5hbWUudmFsdWU7XG5cbiAgICAgICAgICBpZiAodmFyaWFibGVOYW1lVXNlZFt2YXJpYWJsZU5hbWVdICE9PSB0cnVlKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5uYW1lXG4gICAgICAgICAgICAgICAgICA/IGBWYXJpYWJsZSBcIiQke3ZhcmlhYmxlTmFtZX1cIiBpcyBuZXZlciB1c2VkIGluIG9wZXJhdGlvbiBcIiR7b3BlcmF0aW9uLm5hbWUudmFsdWV9XCIuYFxuICAgICAgICAgICAgICAgICAgOiBgVmFyaWFibGUgXCIkJHt2YXJpYWJsZU5hbWV9XCIgaXMgbmV2ZXIgdXNlZC5gLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlRGVmLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcblxuICAgIFZhcmlhYmxlRGVmaW5pdGlvbihkZWYpIHtcbiAgICAgIHZhcmlhYmxlRGVmcy5wdXNoKGRlZik7XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs":
/*!************************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs ***!
  \************************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"OverlappingFieldsCanBeMergedRule\": function() { return /* binding */ OverlappingFieldsCanBeMergedRule; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../language/printer.mjs */ \"./node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_sortValueNode_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utilities/sortValueNode.mjs */ \"./node_modules/graphql/utilities/sortValueNode.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utilities/typeFromAST.mjs */ \"./node_modules/graphql/utilities/typeFromAST.mjs\");\n\n\n\n\n\n\n\n\nfunction reasonMessage(reason) {\n  if (Array.isArray(reason)) {\n    return reason\n      .map(\n        ([responseName, subReason]) =>\n          `subfields \"${responseName}\" conflict because ` +\n          reasonMessage(subReason),\n      )\n      .join(' and ');\n  }\n\n  return reason;\n}\n/**\n * Overlapping fields can be merged\n *\n * A selection set is only valid if all fields (including spreading any\n * fragments) either correspond to distinct response names or can be merged\n * without ambiguity.\n *\n * See https://spec.graphql.org/draft/#sec-Field-Selection-Merging\n */\n\nfunction OverlappingFieldsCanBeMergedRule(context) {\n  // A memoization for when two fragments are compared \"between\" each other for\n  // conflicts. Two fragments may be compared many times, so memoizing this can\n  // dramatically improve the performance of this validator.\n  const comparedFragmentPairs = new PairSet(); // A cache for the \"field map\" and list of fragment names found in any given\n  // selection set. Selection sets may be asked for this information multiple\n  // times, so this improves the performance of this validator.\n\n  const cachedFieldsAndFragmentNames = new Map();\n  return {\n    SelectionSet(selectionSet) {\n      const conflicts = findConflictsWithinSelectionSet(\n        context,\n        cachedFieldsAndFragmentNames,\n        comparedFragmentPairs,\n        context.getParentType(),\n        selectionSet,\n      );\n\n      for (const [[responseName, reason], fields1, fields2] of conflicts) {\n        const reasonMsg = reasonMessage(reason);\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n            `Fields \"${responseName}\" conflict because ${reasonMsg}. Use different aliases on the fields to fetch both if this was intentional.`,\n            fields1.concat(fields2),\n          ),\n        );\n      }\n    },\n  };\n}\n\n/**\n * Algorithm:\n *\n * Conflicts occur when two fields exist in a query which will produce the same\n * response name, but represent differing values, thus creating a conflict.\n * The algorithm below finds all conflicts via making a series of comparisons\n * between fields. In order to compare as few fields as possible, this makes\n * a series of comparisons \"within\" sets of fields and \"between\" sets of fields.\n *\n * Given any selection set, a collection produces both a set of fields by\n * also including all inline fragments, as well as a list of fragments\n * referenced by fragment spreads.\n *\n * A) Each selection set represented in the document first compares \"within\" its\n * collected set of fields, finding any conflicts between every pair of\n * overlapping fields.\n * Note: This is the *only time* that a the fields \"within\" a set are compared\n * to each other. After this only fields \"between\" sets are compared.\n *\n * B) Also, if any fragment is referenced in a selection set, then a\n * comparison is made \"between\" the original set of fields and the\n * referenced fragment.\n *\n * C) Also, if multiple fragments are referenced, then comparisons\n * are made \"between\" each referenced fragment.\n *\n * D) When comparing \"between\" a set of fields and a referenced fragment, first\n * a comparison is made between each field in the original set of fields and\n * each field in the the referenced set of fields.\n *\n * E) Also, if any fragment is referenced in the referenced selection set,\n * then a comparison is made \"between\" the original set of fields and the\n * referenced fragment (recursively referring to step D).\n *\n * F) When comparing \"between\" two fragments, first a comparison is made between\n * each field in the first referenced set of fields and each field in the the\n * second referenced set of fields.\n *\n * G) Also, any fragments referenced by the first must be compared to the\n * second, and any fragments referenced by the second must be compared to the\n * first (recursively referring to step F).\n *\n * H) When comparing two fields, if both have selection sets, then a comparison\n * is made \"between\" both selection sets, first comparing the set of fields in\n * the first selection set with the set of fields in the second.\n *\n * I) Also, if any fragment is referenced in either selection set, then a\n * comparison is made \"between\" the other set of fields and the\n * referenced fragment.\n *\n * J) Also, if two fragments are referenced in both selection sets, then a\n * comparison is made \"between\" the two fragments.\n *\n */\n// Find all conflicts found \"within\" a selection set, including those found\n// via spreading in fragments. Called when visiting each SelectionSet in the\n// GraphQL Document.\nfunction findConflictsWithinSelectionSet(\n  context,\n  cachedFieldsAndFragmentNames,\n  comparedFragmentPairs,\n  parentType,\n  selectionSet,\n) {\n  const conflicts = [];\n  const [fieldMap, fragmentNames] = getFieldsAndFragmentNames(\n    context,\n    cachedFieldsAndFragmentNames,\n    parentType,\n    selectionSet,\n  ); // (A) Find find all conflicts \"within\" the fields of this selection set.\n  // Note: this is the *only place* `collectConflictsWithin` is called.\n\n  collectConflictsWithin(\n    context,\n    conflicts,\n    cachedFieldsAndFragmentNames,\n    comparedFragmentPairs,\n    fieldMap,\n  );\n\n  if (fragmentNames.length !== 0) {\n    // (B) Then collect conflicts between these fields and those represented by\n    // each spread fragment name found.\n    for (let i = 0; i < fragmentNames.length; i++) {\n      collectConflictsBetweenFieldsAndFragment(\n        context,\n        conflicts,\n        cachedFieldsAndFragmentNames,\n        comparedFragmentPairs,\n        false,\n        fieldMap,\n        fragmentNames[i],\n      ); // (C) Then compare this fragment with all other fragments found in this\n      // selection set to collect conflicts between fragments spread together.\n      // This compares each item in the list of fragment names to every other\n      // item in that same list (except for itself).\n\n      for (let j = i + 1; j < fragmentNames.length; j++) {\n        collectConflictsBetweenFragments(\n          context,\n          conflicts,\n          cachedFieldsAndFragmentNames,\n          comparedFragmentPairs,\n          false,\n          fragmentNames[i],\n          fragmentNames[j],\n        );\n      }\n    }\n  }\n\n  return conflicts;\n} // Collect all conflicts found between a set of fields and a fragment reference\n// including via spreading in any nested fragments.\n\nfunction collectConflictsBetweenFieldsAndFragment(\n  context,\n  conflicts,\n  cachedFieldsAndFragmentNames,\n  comparedFragmentPairs,\n  areMutuallyExclusive,\n  fieldMap,\n  fragmentName,\n) {\n  const fragment = context.getFragment(fragmentName);\n\n  if (!fragment) {\n    return;\n  }\n\n  const [fieldMap2, referencedFragmentNames] =\n    getReferencedFieldsAndFragmentNames(\n      context,\n      cachedFieldsAndFragmentNames,\n      fragment,\n    ); // Do not compare a fragment's fieldMap to itself.\n\n  if (fieldMap === fieldMap2) {\n    return;\n  } // (D) First collect any conflicts between the provided collection of fields\n  // and the collection of fields represented by the given fragment.\n\n  collectConflictsBetween(\n    context,\n    conflicts,\n    cachedFieldsAndFragmentNames,\n    comparedFragmentPairs,\n    areMutuallyExclusive,\n    fieldMap,\n    fieldMap2,\n  ); // (E) Then collect any conflicts between the provided collection of fields\n  // and any fragment names found in the given fragment.\n\n  for (const referencedFragmentName of referencedFragmentNames) {\n    // Memoize so two fragments are not compared for conflicts more than once.\n    if (\n      comparedFragmentPairs.has(\n        referencedFragmentName,\n        fragmentName,\n        areMutuallyExclusive,\n      )\n    ) {\n      continue;\n    }\n\n    comparedFragmentPairs.add(\n      referencedFragmentName,\n      fragmentName,\n      areMutuallyExclusive,\n    );\n    collectConflictsBetweenFieldsAndFragment(\n      context,\n      conflicts,\n      cachedFieldsAndFragmentNames,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      fieldMap,\n      referencedFragmentName,\n    );\n  }\n} // Collect all conflicts found between two fragments, including via spreading in\n// any nested fragments.\n\nfunction collectConflictsBetweenFragments(\n  context,\n  conflicts,\n  cachedFieldsAndFragmentNames,\n  comparedFragmentPairs,\n  areMutuallyExclusive,\n  fragmentName1,\n  fragmentName2,\n) {\n  // No need to compare a fragment to itself.\n  if (fragmentName1 === fragmentName2) {\n    return;\n  } // Memoize so two fragments are not compared for conflicts more than once.\n\n  if (\n    comparedFragmentPairs.has(\n      fragmentName1,\n      fragmentName2,\n      areMutuallyExclusive,\n    )\n  ) {\n    return;\n  }\n\n  comparedFragmentPairs.add(fragmentName1, fragmentName2, areMutuallyExclusive);\n  const fragment1 = context.getFragment(fragmentName1);\n  const fragment2 = context.getFragment(fragmentName2);\n\n  if (!fragment1 || !fragment2) {\n    return;\n  }\n\n  const [fieldMap1, referencedFragmentNames1] =\n    getReferencedFieldsAndFragmentNames(\n      context,\n      cachedFieldsAndFragmentNames,\n      fragment1,\n    );\n  const [fieldMap2, referencedFragmentNames2] =\n    getReferencedFieldsAndFragmentNames(\n      context,\n      cachedFieldsAndFragmentNames,\n      fragment2,\n    ); // (F) First, collect all conflicts between these two collections of fields\n  // (not including any nested fragments).\n\n  collectConflictsBetween(\n    context,\n    conflicts,\n    cachedFieldsAndFragmentNames,\n    comparedFragmentPairs,\n    areMutuallyExclusive,\n    fieldMap1,\n    fieldMap2,\n  ); // (G) Then collect conflicts between the first fragment and any nested\n  // fragments spread in the second fragment.\n\n  for (const referencedFragmentName2 of referencedFragmentNames2) {\n    collectConflictsBetweenFragments(\n      context,\n      conflicts,\n      cachedFieldsAndFragmentNames,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      fragmentName1,\n      referencedFragmentName2,\n    );\n  } // (G) Then collect conflicts between the second fragment and any nested\n  // fragments spread in the first fragment.\n\n  for (const referencedFragmentName1 of referencedFragmentNames1) {\n    collectConflictsBetweenFragments(\n      context,\n      conflicts,\n      cachedFieldsAndFragmentNames,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      referencedFragmentName1,\n      fragmentName2,\n    );\n  }\n} // Find all conflicts found between two selection sets, including those found\n// via spreading in fragments. Called when determining if conflicts exist\n// between the sub-fields of two overlapping fields.\n\nfunction findConflictsBetweenSubSelectionSets(\n  context,\n  cachedFieldsAndFragmentNames,\n  comparedFragmentPairs,\n  areMutuallyExclusive,\n  parentType1,\n  selectionSet1,\n  parentType2,\n  selectionSet2,\n) {\n  const conflicts = [];\n  const [fieldMap1, fragmentNames1] = getFieldsAndFragmentNames(\n    context,\n    cachedFieldsAndFragmentNames,\n    parentType1,\n    selectionSet1,\n  );\n  const [fieldMap2, fragmentNames2] = getFieldsAndFragmentNames(\n    context,\n    cachedFieldsAndFragmentNames,\n    parentType2,\n    selectionSet2,\n  ); // (H) First, collect all conflicts between these two collections of field.\n\n  collectConflictsBetween(\n    context,\n    conflicts,\n    cachedFieldsAndFragmentNames,\n    comparedFragmentPairs,\n    areMutuallyExclusive,\n    fieldMap1,\n    fieldMap2,\n  ); // (I) Then collect conflicts between the first collection of fields and\n  // those referenced by each fragment name associated with the second.\n\n  for (const fragmentName2 of fragmentNames2) {\n    collectConflictsBetweenFieldsAndFragment(\n      context,\n      conflicts,\n      cachedFieldsAndFragmentNames,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      fieldMap1,\n      fragmentName2,\n    );\n  } // (I) Then collect conflicts between the second collection of fields and\n  // those referenced by each fragment name associated with the first.\n\n  for (const fragmentName1 of fragmentNames1) {\n    collectConflictsBetweenFieldsAndFragment(\n      context,\n      conflicts,\n      cachedFieldsAndFragmentNames,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      fieldMap2,\n      fragmentName1,\n    );\n  } // (J) Also collect conflicts between any fragment names by the first and\n  // fragment names by the second. This compares each item in the first set of\n  // names to each item in the second set of names.\n\n  for (const fragmentName1 of fragmentNames1) {\n    for (const fragmentName2 of fragmentNames2) {\n      collectConflictsBetweenFragments(\n        context,\n        conflicts,\n        cachedFieldsAndFragmentNames,\n        comparedFragmentPairs,\n        areMutuallyExclusive,\n        fragmentName1,\n        fragmentName2,\n      );\n    }\n  }\n\n  return conflicts;\n} // Collect all Conflicts \"within\" one collection of fields.\n\nfunction collectConflictsWithin(\n  context,\n  conflicts,\n  cachedFieldsAndFragmentNames,\n  comparedFragmentPairs,\n  fieldMap,\n) {\n  // A field map is a keyed collection, where each key represents a response\n  // name and the value at that key is a list of all fields which provide that\n  // response name. For every response name, if there are multiple fields, they\n  // must be compared to find a potential conflict.\n  for (const [responseName, fields] of Object.entries(fieldMap)) {\n    // This compares every field in the list to every other field in this list\n    // (except to itself). If the list only has one item, nothing needs to\n    // be compared.\n    if (fields.length > 1) {\n      for (let i = 0; i < fields.length; i++) {\n        for (let j = i + 1; j < fields.length; j++) {\n          const conflict = findConflict(\n            context,\n            cachedFieldsAndFragmentNames,\n            comparedFragmentPairs,\n            false, // within one collection is never mutually exclusive\n            responseName,\n            fields[i],\n            fields[j],\n          );\n\n          if (conflict) {\n            conflicts.push(conflict);\n          }\n        }\n      }\n    }\n  }\n} // Collect all Conflicts between two collections of fields. This is similar to,\n// but different from the `collectConflictsWithin` function above. This check\n// assumes that `collectConflictsWithin` has already been called on each\n// provided collection of fields. This is true because this validator traverses\n// each individual selection set.\n\nfunction collectConflictsBetween(\n  context,\n  conflicts,\n  cachedFieldsAndFragmentNames,\n  comparedFragmentPairs,\n  parentFieldsAreMutuallyExclusive,\n  fieldMap1,\n  fieldMap2,\n) {\n  // A field map is a keyed collection, where each key represents a response\n  // name and the value at that key is a list of all fields which provide that\n  // response name. For any response name which appears in both provided field\n  // maps, each field from the first field map must be compared to every field\n  // in the second field map to find potential conflicts.\n  for (const [responseName, fields1] of Object.entries(fieldMap1)) {\n    const fields2 = fieldMap2[responseName];\n\n    if (fields2) {\n      for (const field1 of fields1) {\n        for (const field2 of fields2) {\n          const conflict = findConflict(\n            context,\n            cachedFieldsAndFragmentNames,\n            comparedFragmentPairs,\n            parentFieldsAreMutuallyExclusive,\n            responseName,\n            field1,\n            field2,\n          );\n\n          if (conflict) {\n            conflicts.push(conflict);\n          }\n        }\n      }\n    }\n  }\n} // Determines if there is a conflict between two particular fields, including\n// comparing their sub-fields.\n\nfunction findConflict(\n  context,\n  cachedFieldsAndFragmentNames,\n  comparedFragmentPairs,\n  parentFieldsAreMutuallyExclusive,\n  responseName,\n  field1,\n  field2,\n) {\n  const [parentType1, node1, def1] = field1;\n  const [parentType2, node2, def2] = field2; // If it is known that two fields could not possibly apply at the same\n  // time, due to the parent types, then it is safe to permit them to diverge\n  // in aliased field or arguments used as they will not present any ambiguity\n  // by differing.\n  // It is known that two parent types could never overlap if they are\n  // different Object types. Interface or Union types might overlap - if not\n  // in the current state of the schema, then perhaps in some future version,\n  // thus may not safely diverge.\n\n  const areMutuallyExclusive =\n    parentFieldsAreMutuallyExclusive ||\n    (parentType1 !== parentType2 &&\n      (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isObjectType)(parentType1) &&\n      (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isObjectType)(parentType2));\n\n  if (!areMutuallyExclusive) {\n    // Two aliases must refer to the same field.\n    const name1 = node1.name.value;\n    const name2 = node2.name.value;\n\n    if (name1 !== name2) {\n      return [\n        [responseName, `\"${name1}\" and \"${name2}\" are different fields`],\n        [node1],\n        [node2],\n      ];\n    } // Two field calls must have the same arguments.\n\n    if (stringifyArguments(node1) !== stringifyArguments(node2)) {\n      return [\n        [responseName, 'they have differing arguments'],\n        [node1],\n        [node2],\n      ];\n    }\n  } // The return type for each field.\n\n  const type1 = def1 === null || def1 === void 0 ? void 0 : def1.type;\n  const type2 = def2 === null || def2 === void 0 ? void 0 : def2.type;\n\n  if (type1 && type2 && doTypesConflict(type1, type2)) {\n    return [\n      [\n        responseName,\n        `they return conflicting types \"${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(type1)}\" and \"${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(\n          type2,\n        )}\"`,\n      ],\n      [node1],\n      [node2],\n    ];\n  } // Collect and compare sub-fields. Use the same \"visited fragment names\" list\n  // for both collections so fields in a fragment reference are never\n  // compared to themselves.\n\n  const selectionSet1 = node1.selectionSet;\n  const selectionSet2 = node2.selectionSet;\n\n  if (selectionSet1 && selectionSet2) {\n    const conflicts = findConflictsBetweenSubSelectionSets(\n      context,\n      cachedFieldsAndFragmentNames,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.getNamedType)(type1),\n      selectionSet1,\n      (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.getNamedType)(type2),\n      selectionSet2,\n    );\n    return subfieldConflicts(conflicts, responseName, node1, node2);\n  }\n}\n\nfunction stringifyArguments(fieldNode) {\n  var _fieldNode$arguments;\n\n  // FIXME https://github.com/graphql/graphql-js/issues/2203\n  const args =\n    /* c8 ignore next */\n    (_fieldNode$arguments = fieldNode.arguments) !== null &&\n    _fieldNode$arguments !== void 0\n      ? _fieldNode$arguments\n      : [];\n  const inputObjectWithArgs = {\n    kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.OBJECT,\n    fields: args.map((argNode) => ({\n      kind: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.OBJECT_FIELD,\n      name: argNode.name,\n      value: argNode.value,\n    })),\n  };\n  return (0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_4__.print)((0,_utilities_sortValueNode_mjs__WEBPACK_IMPORTED_MODULE_5__.sortValueNode)(inputObjectWithArgs));\n} // Two types conflict if both types could not apply to a value simultaneously.\n// Composite types are ignored as their individual field types will be compared\n// later recursively. However List and Non-Null types must match.\n\nfunction doTypesConflict(type1, type2) {\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isListType)(type1)) {\n    return (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isListType)(type2)\n      ? doTypesConflict(type1.ofType, type2.ofType)\n      : true;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isListType)(type2)) {\n    return true;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isNonNullType)(type1)) {\n    return (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isNonNullType)(type2)\n      ? doTypesConflict(type1.ofType, type2.ofType)\n      : true;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isNonNullType)(type2)) {\n    return true;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isLeafType)(type1) || (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isLeafType)(type2)) {\n    return type1 !== type2;\n  }\n\n  return false;\n} // Given a selection set, return the collection of fields (a mapping of response\n// name to field nodes and definitions) as well as a list of fragment names\n// referenced via fragment spreads.\n\nfunction getFieldsAndFragmentNames(\n  context,\n  cachedFieldsAndFragmentNames,\n  parentType,\n  selectionSet,\n) {\n  const cached = cachedFieldsAndFragmentNames.get(selectionSet);\n\n  if (cached) {\n    return cached;\n  }\n\n  const nodeAndDefs = Object.create(null);\n  const fragmentNames = Object.create(null);\n\n  _collectFieldsAndFragmentNames(\n    context,\n    parentType,\n    selectionSet,\n    nodeAndDefs,\n    fragmentNames,\n  );\n\n  const result = [nodeAndDefs, Object.keys(fragmentNames)];\n  cachedFieldsAndFragmentNames.set(selectionSet, result);\n  return result;\n} // Given a reference to a fragment, return the represented collection of fields\n// as well as a list of nested fragment names referenced via fragment spreads.\n\nfunction getReferencedFieldsAndFragmentNames(\n  context,\n  cachedFieldsAndFragmentNames,\n  fragment,\n) {\n  // Short-circuit building a type from the node if possible.\n  const cached = cachedFieldsAndFragmentNames.get(fragment.selectionSet);\n\n  if (cached) {\n    return cached;\n  }\n\n  const fragmentType = (0,_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_6__.typeFromAST)(context.getSchema(), fragment.typeCondition);\n  return getFieldsAndFragmentNames(\n    context,\n    cachedFieldsAndFragmentNames,\n    fragmentType,\n    fragment.selectionSet,\n  );\n}\n\nfunction _collectFieldsAndFragmentNames(\n  context,\n  parentType,\n  selectionSet,\n  nodeAndDefs,\n  fragmentNames,\n) {\n  for (const selection of selectionSet.selections) {\n    switch (selection.kind) {\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.FIELD: {\n        const fieldName = selection.name.value;\n        let fieldDef;\n\n        if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isObjectType)(parentType) || (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isInterfaceType)(parentType)) {\n          fieldDef = parentType.getFields()[fieldName];\n        }\n\n        const responseName = selection.alias\n          ? selection.alias.value\n          : fieldName;\n\n        if (!nodeAndDefs[responseName]) {\n          nodeAndDefs[responseName] = [];\n        }\n\n        nodeAndDefs[responseName].push([parentType, selection, fieldDef]);\n        break;\n      }\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.FRAGMENT_SPREAD:\n        fragmentNames[selection.name.value] = true;\n        break;\n\n      case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_3__.Kind.INLINE_FRAGMENT: {\n        const typeCondition = selection.typeCondition;\n        const inlineFragmentType = typeCondition\n          ? (0,_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_6__.typeFromAST)(context.getSchema(), typeCondition)\n          : parentType;\n\n        _collectFieldsAndFragmentNames(\n          context,\n          inlineFragmentType,\n          selection.selectionSet,\n          nodeAndDefs,\n          fragmentNames,\n        );\n\n        break;\n      }\n    }\n  }\n} // Given a series of Conflicts which occurred between two sub-fields, generate\n// a single Conflict.\n\nfunction subfieldConflicts(conflicts, responseName, node1, node2) {\n  if (conflicts.length > 0) {\n    return [\n      [responseName, conflicts.map(([reason]) => reason)],\n      [node1, ...conflicts.map(([, fields1]) => fields1).flat()],\n      [node2, ...conflicts.map(([, , fields2]) => fields2).flat()],\n    ];\n  }\n}\n/**\n * A way to keep track of pairs of things when the ordering of the pair does not matter.\n */\n\nclass PairSet {\n  constructor() {\n    this._data = new Map();\n  }\n\n  has(a, b, areMutuallyExclusive) {\n    var _this$_data$get;\n\n    const [key1, key2] = a < b ? [a, b] : [b, a];\n    const result =\n      (_this$_data$get = this._data.get(key1)) === null ||\n      _this$_data$get === void 0\n        ? void 0\n        : _this$_data$get.get(key2);\n\n    if (result === undefined) {\n      return false;\n    } // areMutuallyExclusive being false is a superset of being true, hence if\n    // we want to know if this PairSet \"has\" these two with no exclusivity,\n    // we have to ensure it was added as such.\n\n    return areMutuallyExclusive ? true : areMutuallyExclusive === result;\n  }\n\n  add(a, b, areMutuallyExclusive) {\n    const [key1, key2] = a < b ? [a, b] : [b, a];\n\n    const map = this._data.get(key1);\n\n    if (map === undefined) {\n      this._data.set(key1, new Map([[key2, areMutuallyExclusive]]));\n    } else {\n      map.set(key2, areMutuallyExclusive);\n    }\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL092ZXJsYXBwaW5nRmllbGRzQ2FuQmVNZXJnZWRSdWxlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFvRDtBQUNRO0FBQ1o7QUFDRztBQVFoQjtBQUMrQjtBQUNKOztBQUU5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGFBQWE7QUFDckM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTtBQUNBLCtDQUErQztBQUMvQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsaUVBQVk7QUFDMUIsdUJBQXVCLGFBQWEscUJBQXFCLFVBQVU7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMEJBQTBCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBLDBCQUEwQiwwQkFBMEI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsRUFBRTtBQUNGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOztBQUVGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLG1CQUFtQjtBQUN6Qyw0QkFBNEIsbUJBQW1CO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTSxrRUFBWTtBQUNsQixNQUFNLGtFQUFZOztBQUVsQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkJBQTJCLE1BQU0sU0FBUyxNQUFNO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsNkRBQU8sUUFBUSxTQUFTLDZEQUFPO0FBQ3pFO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGtFQUFZO0FBQ2xCO0FBQ0EsTUFBTSxrRUFBWTtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsNERBQVc7QUFDckI7QUFDQSxZQUFZLGtFQUFpQjtBQUM3QjtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsU0FBUyw0REFBSyxDQUFDLDJFQUFhO0FBQzVCLEVBQUU7QUFDRjtBQUNBOztBQUVBO0FBQ0EsTUFBTSxnRUFBVTtBQUNoQixXQUFXLGdFQUFVO0FBQ3JCO0FBQ0E7QUFDQTs7QUFFQSxNQUFNLGdFQUFVO0FBQ2hCO0FBQ0E7O0FBRUEsTUFBTSxtRUFBYTtBQUNuQixXQUFXLG1FQUFhO0FBQ3hCO0FBQ0E7QUFDQTs7QUFFQSxNQUFNLG1FQUFhO0FBQ25CO0FBQ0E7O0FBRUEsTUFBTSxnRUFBVSxXQUFXLGdFQUFVO0FBQ3JDO0FBQ0E7O0FBRUE7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVCQUF1Qix1RUFBVztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLDJEQUFVO0FBQ3JCO0FBQ0E7O0FBRUEsWUFBWSxrRUFBWSxnQkFBZ0IscUVBQWU7QUFDdkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxXQUFXLHFFQUFvQjtBQUMvQjtBQUNBOztBQUVBLFdBQVcscUVBQW9CO0FBQy9CO0FBQ0E7QUFDQSxZQUFZLHVFQUFXO0FBQ3ZCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9PdmVybGFwcGluZ0ZpZWxkc0NhbkJlTWVyZ2VkUnVsZS5tanM/MGNhMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSAnLi4vLi4vanN1dGlscy9pbnNwZWN0Lm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcbmltcG9ydCB7IEtpbmQgfSBmcm9tICcuLi8uLi9sYW5ndWFnZS9raW5kcy5tanMnO1xuaW1wb3J0IHsgcHJpbnQgfSBmcm9tICcuLi8uLi9sYW5ndWFnZS9wcmludGVyLm1qcyc7XG5pbXBvcnQge1xuICBnZXROYW1lZFR5cGUsXG4gIGlzSW50ZXJmYWNlVHlwZSxcbiAgaXNMZWFmVHlwZSxcbiAgaXNMaXN0VHlwZSxcbiAgaXNOb25OdWxsVHlwZSxcbiAgaXNPYmplY3RUeXBlLFxufSBmcm9tICcuLi8uLi90eXBlL2RlZmluaXRpb24ubWpzJztcbmltcG9ydCB7IHNvcnRWYWx1ZU5vZGUgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvc29ydFZhbHVlTm9kZS5tanMnO1xuaW1wb3J0IHsgdHlwZUZyb21BU1QgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvdHlwZUZyb21BU1QubWpzJztcblxuZnVuY3Rpb24gcmVhc29uTWVzc2FnZShyZWFzb24pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocmVhc29uKSkge1xuICAgIHJldHVybiByZWFzb25cbiAgICAgIC5tYXAoXG4gICAgICAgIChbcmVzcG9uc2VOYW1lLCBzdWJSZWFzb25dKSA9PlxuICAgICAgICAgIGBzdWJmaWVsZHMgXCIke3Jlc3BvbnNlTmFtZX1cIiBjb25mbGljdCBiZWNhdXNlIGAgK1xuICAgICAgICAgIHJlYXNvbk1lc3NhZ2Uoc3ViUmVhc29uKSxcbiAgICAgIClcbiAgICAgIC5qb2luKCcgYW5kICcpO1xuICB9XG5cbiAgcmV0dXJuIHJlYXNvbjtcbn1cbi8qKlxuICogT3ZlcmxhcHBpbmcgZmllbGRzIGNhbiBiZSBtZXJnZWRcbiAqXG4gKiBBIHNlbGVjdGlvbiBzZXQgaXMgb25seSB2YWxpZCBpZiBhbGwgZmllbGRzIChpbmNsdWRpbmcgc3ByZWFkaW5nIGFueVxuICogZnJhZ21lbnRzKSBlaXRoZXIgY29ycmVzcG9uZCB0byBkaXN0aW5jdCByZXNwb25zZSBuYW1lcyBvciBjYW4gYmUgbWVyZ2VkXG4gKiB3aXRob3V0IGFtYmlndWl0eS5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9zcGVjLmdyYXBocWwub3JnL2RyYWZ0LyNzZWMtRmllbGQtU2VsZWN0aW9uLU1lcmdpbmdcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gT3ZlcmxhcHBpbmdGaWVsZHNDYW5CZU1lcmdlZFJ1bGUoY29udGV4dCkge1xuICAvLyBBIG1lbW9pemF0aW9uIGZvciB3aGVuIHR3byBmcmFnbWVudHMgYXJlIGNvbXBhcmVkIFwiYmV0d2VlblwiIGVhY2ggb3RoZXIgZm9yXG4gIC8vIGNvbmZsaWN0cy4gVHdvIGZyYWdtZW50cyBtYXkgYmUgY29tcGFyZWQgbWFueSB0aW1lcywgc28gbWVtb2l6aW5nIHRoaXMgY2FuXG4gIC8vIGRyYW1hdGljYWxseSBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGlzIHZhbGlkYXRvci5cbiAgY29uc3QgY29tcGFyZWRGcmFnbWVudFBhaXJzID0gbmV3IFBhaXJTZXQoKTsgLy8gQSBjYWNoZSBmb3IgdGhlIFwiZmllbGQgbWFwXCIgYW5kIGxpc3Qgb2YgZnJhZ21lbnQgbmFtZXMgZm91bmQgaW4gYW55IGdpdmVuXG4gIC8vIHNlbGVjdGlvbiBzZXQuIFNlbGVjdGlvbiBzZXRzIG1heSBiZSBhc2tlZCBmb3IgdGhpcyBpbmZvcm1hdGlvbiBtdWx0aXBsZVxuICAvLyB0aW1lcywgc28gdGhpcyBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhpcyB2YWxpZGF0b3IuXG5cbiAgY29uc3QgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcyA9IG5ldyBNYXAoKTtcbiAgcmV0dXJuIHtcbiAgICBTZWxlY3Rpb25TZXQoc2VsZWN0aW9uU2V0KSB7XG4gICAgICBjb25zdCBjb25mbGljdHMgPSBmaW5kQ29uZmxpY3RzV2l0aGluU2VsZWN0aW9uU2V0KFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgICAgICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gICAgICAgIGNvbnRleHQuZ2V0UGFyZW50VHlwZSgpLFxuICAgICAgICBzZWxlY3Rpb25TZXQsXG4gICAgICApO1xuXG4gICAgICBmb3IgKGNvbnN0IFtbcmVzcG9uc2VOYW1lLCByZWFzb25dLCBmaWVsZHMxLCBmaWVsZHMyXSBvZiBjb25mbGljdHMpIHtcbiAgICAgICAgY29uc3QgcmVhc29uTXNnID0gcmVhc29uTWVzc2FnZShyZWFzb24pO1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgRmllbGRzIFwiJHtyZXNwb25zZU5hbWV9XCIgY29uZmxpY3QgYmVjYXVzZSAke3JlYXNvbk1zZ30uIFVzZSBkaWZmZXJlbnQgYWxpYXNlcyBvbiB0aGUgZmllbGRzIHRvIGZldGNoIGJvdGggaWYgdGhpcyB3YXMgaW50ZW50aW9uYWwuYCxcbiAgICAgICAgICAgIGZpZWxkczEuY29uY2F0KGZpZWxkczIpLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBBbGdvcml0aG06XG4gKlxuICogQ29uZmxpY3RzIG9jY3VyIHdoZW4gdHdvIGZpZWxkcyBleGlzdCBpbiBhIHF1ZXJ5IHdoaWNoIHdpbGwgcHJvZHVjZSB0aGUgc2FtZVxuICogcmVzcG9uc2UgbmFtZSwgYnV0IHJlcHJlc2VudCBkaWZmZXJpbmcgdmFsdWVzLCB0aHVzIGNyZWF0aW5nIGEgY29uZmxpY3QuXG4gKiBUaGUgYWxnb3JpdGhtIGJlbG93IGZpbmRzIGFsbCBjb25mbGljdHMgdmlhIG1ha2luZyBhIHNlcmllcyBvZiBjb21wYXJpc29uc1xuICogYmV0d2VlbiBmaWVsZHMuIEluIG9yZGVyIHRvIGNvbXBhcmUgYXMgZmV3IGZpZWxkcyBhcyBwb3NzaWJsZSwgdGhpcyBtYWtlc1xuICogYSBzZXJpZXMgb2YgY29tcGFyaXNvbnMgXCJ3aXRoaW5cIiBzZXRzIG9mIGZpZWxkcyBhbmQgXCJiZXR3ZWVuXCIgc2V0cyBvZiBmaWVsZHMuXG4gKlxuICogR2l2ZW4gYW55IHNlbGVjdGlvbiBzZXQsIGEgY29sbGVjdGlvbiBwcm9kdWNlcyBib3RoIGEgc2V0IG9mIGZpZWxkcyBieVxuICogYWxzbyBpbmNsdWRpbmcgYWxsIGlubGluZSBmcmFnbWVudHMsIGFzIHdlbGwgYXMgYSBsaXN0IG9mIGZyYWdtZW50c1xuICogcmVmZXJlbmNlZCBieSBmcmFnbWVudCBzcHJlYWRzLlxuICpcbiAqIEEpIEVhY2ggc2VsZWN0aW9uIHNldCByZXByZXNlbnRlZCBpbiB0aGUgZG9jdW1lbnQgZmlyc3QgY29tcGFyZXMgXCJ3aXRoaW5cIiBpdHNcbiAqIGNvbGxlY3RlZCBzZXQgb2YgZmllbGRzLCBmaW5kaW5nIGFueSBjb25mbGljdHMgYmV0d2VlbiBldmVyeSBwYWlyIG9mXG4gKiBvdmVybGFwcGluZyBmaWVsZHMuXG4gKiBOb3RlOiBUaGlzIGlzIHRoZSAqb25seSB0aW1lKiB0aGF0IGEgdGhlIGZpZWxkcyBcIndpdGhpblwiIGEgc2V0IGFyZSBjb21wYXJlZFxuICogdG8gZWFjaCBvdGhlci4gQWZ0ZXIgdGhpcyBvbmx5IGZpZWxkcyBcImJldHdlZW5cIiBzZXRzIGFyZSBjb21wYXJlZC5cbiAqXG4gKiBCKSBBbHNvLCBpZiBhbnkgZnJhZ21lbnQgaXMgcmVmZXJlbmNlZCBpbiBhIHNlbGVjdGlvbiBzZXQsIHRoZW4gYVxuICogY29tcGFyaXNvbiBpcyBtYWRlIFwiYmV0d2VlblwiIHRoZSBvcmlnaW5hbCBzZXQgb2YgZmllbGRzIGFuZCB0aGVcbiAqIHJlZmVyZW5jZWQgZnJhZ21lbnQuXG4gKlxuICogQykgQWxzbywgaWYgbXVsdGlwbGUgZnJhZ21lbnRzIGFyZSByZWZlcmVuY2VkLCB0aGVuIGNvbXBhcmlzb25zXG4gKiBhcmUgbWFkZSBcImJldHdlZW5cIiBlYWNoIHJlZmVyZW5jZWQgZnJhZ21lbnQuXG4gKlxuICogRCkgV2hlbiBjb21wYXJpbmcgXCJiZXR3ZWVuXCIgYSBzZXQgb2YgZmllbGRzIGFuZCBhIHJlZmVyZW5jZWQgZnJhZ21lbnQsIGZpcnN0XG4gKiBhIGNvbXBhcmlzb24gaXMgbWFkZSBiZXR3ZWVuIGVhY2ggZmllbGQgaW4gdGhlIG9yaWdpbmFsIHNldCBvZiBmaWVsZHMgYW5kXG4gKiBlYWNoIGZpZWxkIGluIHRoZSB0aGUgcmVmZXJlbmNlZCBzZXQgb2YgZmllbGRzLlxuICpcbiAqIEUpIEFsc28sIGlmIGFueSBmcmFnbWVudCBpcyByZWZlcmVuY2VkIGluIHRoZSByZWZlcmVuY2VkIHNlbGVjdGlvbiBzZXQsXG4gKiB0aGVuIGEgY29tcGFyaXNvbiBpcyBtYWRlIFwiYmV0d2VlblwiIHRoZSBvcmlnaW5hbCBzZXQgb2YgZmllbGRzIGFuZCB0aGVcbiAqIHJlZmVyZW5jZWQgZnJhZ21lbnQgKHJlY3Vyc2l2ZWx5IHJlZmVycmluZyB0byBzdGVwIEQpLlxuICpcbiAqIEYpIFdoZW4gY29tcGFyaW5nIFwiYmV0d2VlblwiIHR3byBmcmFnbWVudHMsIGZpcnN0IGEgY29tcGFyaXNvbiBpcyBtYWRlIGJldHdlZW5cbiAqIGVhY2ggZmllbGQgaW4gdGhlIGZpcnN0IHJlZmVyZW5jZWQgc2V0IG9mIGZpZWxkcyBhbmQgZWFjaCBmaWVsZCBpbiB0aGUgdGhlXG4gKiBzZWNvbmQgcmVmZXJlbmNlZCBzZXQgb2YgZmllbGRzLlxuICpcbiAqIEcpIEFsc28sIGFueSBmcmFnbWVudHMgcmVmZXJlbmNlZCBieSB0aGUgZmlyc3QgbXVzdCBiZSBjb21wYXJlZCB0byB0aGVcbiAqIHNlY29uZCwgYW5kIGFueSBmcmFnbWVudHMgcmVmZXJlbmNlZCBieSB0aGUgc2Vjb25kIG11c3QgYmUgY29tcGFyZWQgdG8gdGhlXG4gKiBmaXJzdCAocmVjdXJzaXZlbHkgcmVmZXJyaW5nIHRvIHN0ZXAgRikuXG4gKlxuICogSCkgV2hlbiBjb21wYXJpbmcgdHdvIGZpZWxkcywgaWYgYm90aCBoYXZlIHNlbGVjdGlvbiBzZXRzLCB0aGVuIGEgY29tcGFyaXNvblxuICogaXMgbWFkZSBcImJldHdlZW5cIiBib3RoIHNlbGVjdGlvbiBzZXRzLCBmaXJzdCBjb21wYXJpbmcgdGhlIHNldCBvZiBmaWVsZHMgaW5cbiAqIHRoZSBmaXJzdCBzZWxlY3Rpb24gc2V0IHdpdGggdGhlIHNldCBvZiBmaWVsZHMgaW4gdGhlIHNlY29uZC5cbiAqXG4gKiBJKSBBbHNvLCBpZiBhbnkgZnJhZ21lbnQgaXMgcmVmZXJlbmNlZCBpbiBlaXRoZXIgc2VsZWN0aW9uIHNldCwgdGhlbiBhXG4gKiBjb21wYXJpc29uIGlzIG1hZGUgXCJiZXR3ZWVuXCIgdGhlIG90aGVyIHNldCBvZiBmaWVsZHMgYW5kIHRoZVxuICogcmVmZXJlbmNlZCBmcmFnbWVudC5cbiAqXG4gKiBKKSBBbHNvLCBpZiB0d28gZnJhZ21lbnRzIGFyZSByZWZlcmVuY2VkIGluIGJvdGggc2VsZWN0aW9uIHNldHMsIHRoZW4gYVxuICogY29tcGFyaXNvbiBpcyBtYWRlIFwiYmV0d2VlblwiIHRoZSB0d28gZnJhZ21lbnRzLlxuICpcbiAqL1xuLy8gRmluZCBhbGwgY29uZmxpY3RzIGZvdW5kIFwid2l0aGluXCIgYSBzZWxlY3Rpb24gc2V0LCBpbmNsdWRpbmcgdGhvc2UgZm91bmRcbi8vIHZpYSBzcHJlYWRpbmcgaW4gZnJhZ21lbnRzLiBDYWxsZWQgd2hlbiB2aXNpdGluZyBlYWNoIFNlbGVjdGlvblNldCBpbiB0aGVcbi8vIEdyYXBoUUwgRG9jdW1lbnQuXG5mdW5jdGlvbiBmaW5kQ29uZmxpY3RzV2l0aGluU2VsZWN0aW9uU2V0KFxuICBjb250ZXh0LFxuICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gIHBhcmVudFR5cGUsXG4gIHNlbGVjdGlvblNldCxcbikge1xuICBjb25zdCBjb25mbGljdHMgPSBbXTtcbiAgY29uc3QgW2ZpZWxkTWFwLCBmcmFnbWVudE5hbWVzXSA9IGdldEZpZWxkc0FuZEZyYWdtZW50TmFtZXMoXG4gICAgY29udGV4dCxcbiAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgIHBhcmVudFR5cGUsXG4gICAgc2VsZWN0aW9uU2V0LFxuICApOyAvLyAoQSkgRmluZCBmaW5kIGFsbCBjb25mbGljdHMgXCJ3aXRoaW5cIiB0aGUgZmllbGRzIG9mIHRoaXMgc2VsZWN0aW9uIHNldC5cbiAgLy8gTm90ZTogdGhpcyBpcyB0aGUgKm9ubHkgcGxhY2UqIGBjb2xsZWN0Q29uZmxpY3RzV2l0aGluYCBpcyBjYWxsZWQuXG5cbiAgY29sbGVjdENvbmZsaWN0c1dpdGhpbihcbiAgICBjb250ZXh0LFxuICAgIGNvbmZsaWN0cyxcbiAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgIGNvbXBhcmVkRnJhZ21lbnRQYWlycyxcbiAgICBmaWVsZE1hcCxcbiAgKTtcblxuICBpZiAoZnJhZ21lbnROYW1lcy5sZW5ndGggIT09IDApIHtcbiAgICAvLyAoQikgVGhlbiBjb2xsZWN0IGNvbmZsaWN0cyBiZXR3ZWVuIHRoZXNlIGZpZWxkcyBhbmQgdGhvc2UgcmVwcmVzZW50ZWQgYnlcbiAgICAvLyBlYWNoIHNwcmVhZCBmcmFnbWVudCBuYW1lIGZvdW5kLlxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJhZ21lbnROYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29sbGVjdENvbmZsaWN0c0JldHdlZW5GaWVsZHNBbmRGcmFnbWVudChcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgY29uZmxpY3RzLFxuICAgICAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgICAgICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBmaWVsZE1hcCxcbiAgICAgICAgZnJhZ21lbnROYW1lc1tpXSxcbiAgICAgICk7IC8vIChDKSBUaGVuIGNvbXBhcmUgdGhpcyBmcmFnbWVudCB3aXRoIGFsbCBvdGhlciBmcmFnbWVudHMgZm91bmQgaW4gdGhpc1xuICAgICAgLy8gc2VsZWN0aW9uIHNldCB0byBjb2xsZWN0IGNvbmZsaWN0cyBiZXR3ZWVuIGZyYWdtZW50cyBzcHJlYWQgdG9nZXRoZXIuXG4gICAgICAvLyBUaGlzIGNvbXBhcmVzIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBvZiBmcmFnbWVudCBuYW1lcyB0byBldmVyeSBvdGhlclxuICAgICAgLy8gaXRlbSBpbiB0aGF0IHNhbWUgbGlzdCAoZXhjZXB0IGZvciBpdHNlbGYpLlxuXG4gICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBmcmFnbWVudE5hbWVzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGNvbGxlY3RDb25mbGljdHNCZXR3ZWVuRnJhZ21lbnRzKFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgY29uZmxpY3RzLFxuICAgICAgICAgIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsXG4gICAgICAgICAgY29tcGFyZWRGcmFnbWVudFBhaXJzLFxuICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgIGZyYWdtZW50TmFtZXNbaV0sXG4gICAgICAgICAgZnJhZ21lbnROYW1lc1tqXSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uZmxpY3RzO1xufSAvLyBDb2xsZWN0IGFsbCBjb25mbGljdHMgZm91bmQgYmV0d2VlbiBhIHNldCBvZiBmaWVsZHMgYW5kIGEgZnJhZ21lbnQgcmVmZXJlbmNlXG4vLyBpbmNsdWRpbmcgdmlhIHNwcmVhZGluZyBpbiBhbnkgbmVzdGVkIGZyYWdtZW50cy5cblxuZnVuY3Rpb24gY29sbGVjdENvbmZsaWN0c0JldHdlZW5GaWVsZHNBbmRGcmFnbWVudChcbiAgY29udGV4dCxcbiAgY29uZmxpY3RzLFxuICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gIGFyZU11dHVhbGx5RXhjbHVzaXZlLFxuICBmaWVsZE1hcCxcbiAgZnJhZ21lbnROYW1lLFxuKSB7XG4gIGNvbnN0IGZyYWdtZW50ID0gY29udGV4dC5nZXRGcmFnbWVudChmcmFnbWVudE5hbWUpO1xuXG4gIGlmICghZnJhZ21lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBbZmllbGRNYXAyLCByZWZlcmVuY2VkRnJhZ21lbnROYW1lc10gPVxuICAgIGdldFJlZmVyZW5jZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzKFxuICAgICAgY29udGV4dCxcbiAgICAgIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsXG4gICAgICBmcmFnbWVudCxcbiAgICApOyAvLyBEbyBub3QgY29tcGFyZSBhIGZyYWdtZW50J3MgZmllbGRNYXAgdG8gaXRzZWxmLlxuXG4gIGlmIChmaWVsZE1hcCA9PT0gZmllbGRNYXAyKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIChEKSBGaXJzdCBjb2xsZWN0IGFueSBjb25mbGljdHMgYmV0d2VlbiB0aGUgcHJvdmlkZWQgY29sbGVjdGlvbiBvZiBmaWVsZHNcbiAgLy8gYW5kIHRoZSBjb2xsZWN0aW9uIG9mIGZpZWxkcyByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4gZnJhZ21lbnQuXG5cbiAgY29sbGVjdENvbmZsaWN0c0JldHdlZW4oXG4gICAgY29udGV4dCxcbiAgICBjb25mbGljdHMsXG4gICAgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcyxcbiAgICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gICAgYXJlTXV0dWFsbHlFeGNsdXNpdmUsXG4gICAgZmllbGRNYXAsXG4gICAgZmllbGRNYXAyLFxuICApOyAvLyAoRSkgVGhlbiBjb2xsZWN0IGFueSBjb25mbGljdHMgYmV0d2VlbiB0aGUgcHJvdmlkZWQgY29sbGVjdGlvbiBvZiBmaWVsZHNcbiAgLy8gYW5kIGFueSBmcmFnbWVudCBuYW1lcyBmb3VuZCBpbiB0aGUgZ2l2ZW4gZnJhZ21lbnQuXG5cbiAgZm9yIChjb25zdCByZWZlcmVuY2VkRnJhZ21lbnROYW1lIG9mIHJlZmVyZW5jZWRGcmFnbWVudE5hbWVzKSB7XG4gICAgLy8gTWVtb2l6ZSBzbyB0d28gZnJhZ21lbnRzIGFyZSBub3QgY29tcGFyZWQgZm9yIGNvbmZsaWN0cyBtb3JlIHRoYW4gb25jZS5cbiAgICBpZiAoXG4gICAgICBjb21wYXJlZEZyYWdtZW50UGFpcnMuaGFzKFxuICAgICAgICByZWZlcmVuY2VkRnJhZ21lbnROYW1lLFxuICAgICAgICBmcmFnbWVudE5hbWUsXG4gICAgICAgIGFyZU11dHVhbGx5RXhjbHVzaXZlLFxuICAgICAgKVxuICAgICkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29tcGFyZWRGcmFnbWVudFBhaXJzLmFkZChcbiAgICAgIHJlZmVyZW5jZWRGcmFnbWVudE5hbWUsXG4gICAgICBmcmFnbWVudE5hbWUsXG4gICAgICBhcmVNdXR1YWxseUV4Y2x1c2l2ZSxcbiAgICApO1xuICAgIGNvbGxlY3RDb25mbGljdHNCZXR3ZWVuRmllbGRzQW5kRnJhZ21lbnQoXG4gICAgICBjb250ZXh0LFxuICAgICAgY29uZmxpY3RzLFxuICAgICAgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcyxcbiAgICAgIGNvbXBhcmVkRnJhZ21lbnRQYWlycyxcbiAgICAgIGFyZU11dHVhbGx5RXhjbHVzaXZlLFxuICAgICAgZmllbGRNYXAsXG4gICAgICByZWZlcmVuY2VkRnJhZ21lbnROYW1lLFxuICAgICk7XG4gIH1cbn0gLy8gQ29sbGVjdCBhbGwgY29uZmxpY3RzIGZvdW5kIGJldHdlZW4gdHdvIGZyYWdtZW50cywgaW5jbHVkaW5nIHZpYSBzcHJlYWRpbmcgaW5cbi8vIGFueSBuZXN0ZWQgZnJhZ21lbnRzLlxuXG5mdW5jdGlvbiBjb2xsZWN0Q29uZmxpY3RzQmV0d2VlbkZyYWdtZW50cyhcbiAgY29udGV4dCxcbiAgY29uZmxpY3RzLFxuICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gIGFyZU11dHVhbGx5RXhjbHVzaXZlLFxuICBmcmFnbWVudE5hbWUxLFxuICBmcmFnbWVudE5hbWUyLFxuKSB7XG4gIC8vIE5vIG5lZWQgdG8gY29tcGFyZSBhIGZyYWdtZW50IHRvIGl0c2VsZi5cbiAgaWYgKGZyYWdtZW50TmFtZTEgPT09IGZyYWdtZW50TmFtZTIpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gTWVtb2l6ZSBzbyB0d28gZnJhZ21lbnRzIGFyZSBub3QgY29tcGFyZWQgZm9yIGNvbmZsaWN0cyBtb3JlIHRoYW4gb25jZS5cblxuICBpZiAoXG4gICAgY29tcGFyZWRGcmFnbWVudFBhaXJzLmhhcyhcbiAgICAgIGZyYWdtZW50TmFtZTEsXG4gICAgICBmcmFnbWVudE5hbWUyLFxuICAgICAgYXJlTXV0dWFsbHlFeGNsdXNpdmUsXG4gICAgKVxuICApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb21wYXJlZEZyYWdtZW50UGFpcnMuYWRkKGZyYWdtZW50TmFtZTEsIGZyYWdtZW50TmFtZTIsIGFyZU11dHVhbGx5RXhjbHVzaXZlKTtcbiAgY29uc3QgZnJhZ21lbnQxID0gY29udGV4dC5nZXRGcmFnbWVudChmcmFnbWVudE5hbWUxKTtcbiAgY29uc3QgZnJhZ21lbnQyID0gY29udGV4dC5nZXRGcmFnbWVudChmcmFnbWVudE5hbWUyKTtcblxuICBpZiAoIWZyYWdtZW50MSB8fCAhZnJhZ21lbnQyKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgW2ZpZWxkTWFwMSwgcmVmZXJlbmNlZEZyYWdtZW50TmFtZXMxXSA9XG4gICAgZ2V0UmVmZXJlbmNlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMoXG4gICAgICBjb250ZXh0LFxuICAgICAgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcyxcbiAgICAgIGZyYWdtZW50MSxcbiAgICApO1xuICBjb25zdCBbZmllbGRNYXAyLCByZWZlcmVuY2VkRnJhZ21lbnROYW1lczJdID1cbiAgICBnZXRSZWZlcmVuY2VkRmllbGRzQW5kRnJhZ21lbnROYW1lcyhcbiAgICAgIGNvbnRleHQsXG4gICAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgICAgZnJhZ21lbnQyLFxuICAgICk7IC8vIChGKSBGaXJzdCwgY29sbGVjdCBhbGwgY29uZmxpY3RzIGJldHdlZW4gdGhlc2UgdHdvIGNvbGxlY3Rpb25zIG9mIGZpZWxkc1xuICAvLyAobm90IGluY2x1ZGluZyBhbnkgbmVzdGVkIGZyYWdtZW50cykuXG5cbiAgY29sbGVjdENvbmZsaWN0c0JldHdlZW4oXG4gICAgY29udGV4dCxcbiAgICBjb25mbGljdHMsXG4gICAgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcyxcbiAgICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gICAgYXJlTXV0dWFsbHlFeGNsdXNpdmUsXG4gICAgZmllbGRNYXAxLFxuICAgIGZpZWxkTWFwMixcbiAgKTsgLy8gKEcpIFRoZW4gY29sbGVjdCBjb25mbGljdHMgYmV0d2VlbiB0aGUgZmlyc3QgZnJhZ21lbnQgYW5kIGFueSBuZXN0ZWRcbiAgLy8gZnJhZ21lbnRzIHNwcmVhZCBpbiB0aGUgc2Vjb25kIGZyYWdtZW50LlxuXG4gIGZvciAoY29uc3QgcmVmZXJlbmNlZEZyYWdtZW50TmFtZTIgb2YgcmVmZXJlbmNlZEZyYWdtZW50TmFtZXMyKSB7XG4gICAgY29sbGVjdENvbmZsaWN0c0JldHdlZW5GcmFnbWVudHMoXG4gICAgICBjb250ZXh0LFxuICAgICAgY29uZmxpY3RzLFxuICAgICAgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcyxcbiAgICAgIGNvbXBhcmVkRnJhZ21lbnRQYWlycyxcbiAgICAgIGFyZU11dHVhbGx5RXhjbHVzaXZlLFxuICAgICAgZnJhZ21lbnROYW1lMSxcbiAgICAgIHJlZmVyZW5jZWRGcmFnbWVudE5hbWUyLFxuICAgICk7XG4gIH0gLy8gKEcpIFRoZW4gY29sbGVjdCBjb25mbGljdHMgYmV0d2VlbiB0aGUgc2Vjb25kIGZyYWdtZW50IGFuZCBhbnkgbmVzdGVkXG4gIC8vIGZyYWdtZW50cyBzcHJlYWQgaW4gdGhlIGZpcnN0IGZyYWdtZW50LlxuXG4gIGZvciAoY29uc3QgcmVmZXJlbmNlZEZyYWdtZW50TmFtZTEgb2YgcmVmZXJlbmNlZEZyYWdtZW50TmFtZXMxKSB7XG4gICAgY29sbGVjdENvbmZsaWN0c0JldHdlZW5GcmFnbWVudHMoXG4gICAgICBjb250ZXh0LFxuICAgICAgY29uZmxpY3RzLFxuICAgICAgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcyxcbiAgICAgIGNvbXBhcmVkRnJhZ21lbnRQYWlycyxcbiAgICAgIGFyZU11dHVhbGx5RXhjbHVzaXZlLFxuICAgICAgcmVmZXJlbmNlZEZyYWdtZW50TmFtZTEsXG4gICAgICBmcmFnbWVudE5hbWUyLFxuICAgICk7XG4gIH1cbn0gLy8gRmluZCBhbGwgY29uZmxpY3RzIGZvdW5kIGJldHdlZW4gdHdvIHNlbGVjdGlvbiBzZXRzLCBpbmNsdWRpbmcgdGhvc2UgZm91bmRcbi8vIHZpYSBzcHJlYWRpbmcgaW4gZnJhZ21lbnRzLiBDYWxsZWQgd2hlbiBkZXRlcm1pbmluZyBpZiBjb25mbGljdHMgZXhpc3Rcbi8vIGJldHdlZW4gdGhlIHN1Yi1maWVsZHMgb2YgdHdvIG92ZXJsYXBwaW5nIGZpZWxkcy5cblxuZnVuY3Rpb24gZmluZENvbmZsaWN0c0JldHdlZW5TdWJTZWxlY3Rpb25TZXRzKFxuICBjb250ZXh0LFxuICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gIGFyZU11dHVhbGx5RXhjbHVzaXZlLFxuICBwYXJlbnRUeXBlMSxcbiAgc2VsZWN0aW9uU2V0MSxcbiAgcGFyZW50VHlwZTIsXG4gIHNlbGVjdGlvblNldDIsXG4pIHtcbiAgY29uc3QgY29uZmxpY3RzID0gW107XG4gIGNvbnN0IFtmaWVsZE1hcDEsIGZyYWdtZW50TmFtZXMxXSA9IGdldEZpZWxkc0FuZEZyYWdtZW50TmFtZXMoXG4gICAgY29udGV4dCxcbiAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgIHBhcmVudFR5cGUxLFxuICAgIHNlbGVjdGlvblNldDEsXG4gICk7XG4gIGNvbnN0IFtmaWVsZE1hcDIsIGZyYWdtZW50TmFtZXMyXSA9IGdldEZpZWxkc0FuZEZyYWdtZW50TmFtZXMoXG4gICAgY29udGV4dCxcbiAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgIHBhcmVudFR5cGUyLFxuICAgIHNlbGVjdGlvblNldDIsXG4gICk7IC8vIChIKSBGaXJzdCwgY29sbGVjdCBhbGwgY29uZmxpY3RzIGJldHdlZW4gdGhlc2UgdHdvIGNvbGxlY3Rpb25zIG9mIGZpZWxkLlxuXG4gIGNvbGxlY3RDb25mbGljdHNCZXR3ZWVuKFxuICAgIGNvbnRleHQsXG4gICAgY29uZmxpY3RzLFxuICAgIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsXG4gICAgY29tcGFyZWRGcmFnbWVudFBhaXJzLFxuICAgIGFyZU11dHVhbGx5RXhjbHVzaXZlLFxuICAgIGZpZWxkTWFwMSxcbiAgICBmaWVsZE1hcDIsXG4gICk7IC8vIChJKSBUaGVuIGNvbGxlY3QgY29uZmxpY3RzIGJldHdlZW4gdGhlIGZpcnN0IGNvbGxlY3Rpb24gb2YgZmllbGRzIGFuZFxuICAvLyB0aG9zZSByZWZlcmVuY2VkIGJ5IGVhY2ggZnJhZ21lbnQgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNlY29uZC5cblxuICBmb3IgKGNvbnN0IGZyYWdtZW50TmFtZTIgb2YgZnJhZ21lbnROYW1lczIpIHtcbiAgICBjb2xsZWN0Q29uZmxpY3RzQmV0d2VlbkZpZWxkc0FuZEZyYWdtZW50KFxuICAgICAgY29udGV4dCxcbiAgICAgIGNvbmZsaWN0cyxcbiAgICAgIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsXG4gICAgICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gICAgICBhcmVNdXR1YWxseUV4Y2x1c2l2ZSxcbiAgICAgIGZpZWxkTWFwMSxcbiAgICAgIGZyYWdtZW50TmFtZTIsXG4gICAgKTtcbiAgfSAvLyAoSSkgVGhlbiBjb2xsZWN0IGNvbmZsaWN0cyBiZXR3ZWVuIHRoZSBzZWNvbmQgY29sbGVjdGlvbiBvZiBmaWVsZHMgYW5kXG4gIC8vIHRob3NlIHJlZmVyZW5jZWQgYnkgZWFjaCBmcmFnbWVudCBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlyc3QuXG5cbiAgZm9yIChjb25zdCBmcmFnbWVudE5hbWUxIG9mIGZyYWdtZW50TmFtZXMxKSB7XG4gICAgY29sbGVjdENvbmZsaWN0c0JldHdlZW5GaWVsZHNBbmRGcmFnbWVudChcbiAgICAgIGNvbnRleHQsXG4gICAgICBjb25mbGljdHMsXG4gICAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgICAgY29tcGFyZWRGcmFnbWVudFBhaXJzLFxuICAgICAgYXJlTXV0dWFsbHlFeGNsdXNpdmUsXG4gICAgICBmaWVsZE1hcDIsXG4gICAgICBmcmFnbWVudE5hbWUxLFxuICAgICk7XG4gIH0gLy8gKEopIEFsc28gY29sbGVjdCBjb25mbGljdHMgYmV0d2VlbiBhbnkgZnJhZ21lbnQgbmFtZXMgYnkgdGhlIGZpcnN0IGFuZFxuICAvLyBmcmFnbWVudCBuYW1lcyBieSB0aGUgc2Vjb25kLiBUaGlzIGNvbXBhcmVzIGVhY2ggaXRlbSBpbiB0aGUgZmlyc3Qgc2V0IG9mXG4gIC8vIG5hbWVzIHRvIGVhY2ggaXRlbSBpbiB0aGUgc2Vjb25kIHNldCBvZiBuYW1lcy5cblxuICBmb3IgKGNvbnN0IGZyYWdtZW50TmFtZTEgb2YgZnJhZ21lbnROYW1lczEpIHtcbiAgICBmb3IgKGNvbnN0IGZyYWdtZW50TmFtZTIgb2YgZnJhZ21lbnROYW1lczIpIHtcbiAgICAgIGNvbGxlY3RDb25mbGljdHNCZXR3ZWVuRnJhZ21lbnRzKFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBjb25mbGljdHMsXG4gICAgICAgIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsXG4gICAgICAgIGNvbXBhcmVkRnJhZ21lbnRQYWlycyxcbiAgICAgICAgYXJlTXV0dWFsbHlFeGNsdXNpdmUsXG4gICAgICAgIGZyYWdtZW50TmFtZTEsXG4gICAgICAgIGZyYWdtZW50TmFtZTIsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25mbGljdHM7XG59IC8vIENvbGxlY3QgYWxsIENvbmZsaWN0cyBcIndpdGhpblwiIG9uZSBjb2xsZWN0aW9uIG9mIGZpZWxkcy5cblxuZnVuY3Rpb24gY29sbGVjdENvbmZsaWN0c1dpdGhpbihcbiAgY29udGV4dCxcbiAgY29uZmxpY3RzLFxuICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gIGZpZWxkTWFwLFxuKSB7XG4gIC8vIEEgZmllbGQgbWFwIGlzIGEga2V5ZWQgY29sbGVjdGlvbiwgd2hlcmUgZWFjaCBrZXkgcmVwcmVzZW50cyBhIHJlc3BvbnNlXG4gIC8vIG5hbWUgYW5kIHRoZSB2YWx1ZSBhdCB0aGF0IGtleSBpcyBhIGxpc3Qgb2YgYWxsIGZpZWxkcyB3aGljaCBwcm92aWRlIHRoYXRcbiAgLy8gcmVzcG9uc2UgbmFtZS4gRm9yIGV2ZXJ5IHJlc3BvbnNlIG5hbWUsIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBmaWVsZHMsIHRoZXlcbiAgLy8gbXVzdCBiZSBjb21wYXJlZCB0byBmaW5kIGEgcG90ZW50aWFsIGNvbmZsaWN0LlxuICBmb3IgKGNvbnN0IFtyZXNwb25zZU5hbWUsIGZpZWxkc10gb2YgT2JqZWN0LmVudHJpZXMoZmllbGRNYXApKSB7XG4gICAgLy8gVGhpcyBjb21wYXJlcyBldmVyeSBmaWVsZCBpbiB0aGUgbGlzdCB0byBldmVyeSBvdGhlciBmaWVsZCBpbiB0aGlzIGxpc3RcbiAgICAvLyAoZXhjZXB0IHRvIGl0c2VsZikuIElmIHRoZSBsaXN0IG9ubHkgaGFzIG9uZSBpdGVtLCBub3RoaW5nIG5lZWRzIHRvXG4gICAgLy8gYmUgY29tcGFyZWQuXG4gICAgaWYgKGZpZWxkcy5sZW5ndGggPiAxKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBmaWVsZHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBjb25zdCBjb25mbGljdCA9IGZpbmRDb25mbGljdChcbiAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgICAgICAgICAgY29tcGFyZWRGcmFnbWVudFBhaXJzLFxuICAgICAgICAgICAgZmFsc2UsIC8vIHdpdGhpbiBvbmUgY29sbGVjdGlvbiBpcyBuZXZlciBtdXR1YWxseSBleGNsdXNpdmVcbiAgICAgICAgICAgIHJlc3BvbnNlTmFtZSxcbiAgICAgICAgICAgIGZpZWxkc1tpXSxcbiAgICAgICAgICAgIGZpZWxkc1tqXSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGNvbmZsaWN0KSB7XG4gICAgICAgICAgICBjb25mbGljdHMucHVzaChjb25mbGljdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59IC8vIENvbGxlY3QgYWxsIENvbmZsaWN0cyBiZXR3ZWVuIHR3byBjb2xsZWN0aW9ucyBvZiBmaWVsZHMuIFRoaXMgaXMgc2ltaWxhciB0byxcbi8vIGJ1dCBkaWZmZXJlbnQgZnJvbSB0aGUgYGNvbGxlY3RDb25mbGljdHNXaXRoaW5gIGZ1bmN0aW9uIGFib3ZlLiBUaGlzIGNoZWNrXG4vLyBhc3N1bWVzIHRoYXQgYGNvbGxlY3RDb25mbGljdHNXaXRoaW5gIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIG9uIGVhY2hcbi8vIHByb3ZpZGVkIGNvbGxlY3Rpb24gb2YgZmllbGRzLiBUaGlzIGlzIHRydWUgYmVjYXVzZSB0aGlzIHZhbGlkYXRvciB0cmF2ZXJzZXNcbi8vIGVhY2ggaW5kaXZpZHVhbCBzZWxlY3Rpb24gc2V0LlxuXG5mdW5jdGlvbiBjb2xsZWN0Q29uZmxpY3RzQmV0d2VlbihcbiAgY29udGV4dCxcbiAgY29uZmxpY3RzLFxuICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gIHBhcmVudEZpZWxkc0FyZU11dHVhbGx5RXhjbHVzaXZlLFxuICBmaWVsZE1hcDEsXG4gIGZpZWxkTWFwMixcbikge1xuICAvLyBBIGZpZWxkIG1hcCBpcyBhIGtleWVkIGNvbGxlY3Rpb24sIHdoZXJlIGVhY2gga2V5IHJlcHJlc2VudHMgYSByZXNwb25zZVxuICAvLyBuYW1lIGFuZCB0aGUgdmFsdWUgYXQgdGhhdCBrZXkgaXMgYSBsaXN0IG9mIGFsbCBmaWVsZHMgd2hpY2ggcHJvdmlkZSB0aGF0XG4gIC8vIHJlc3BvbnNlIG5hbWUuIEZvciBhbnkgcmVzcG9uc2UgbmFtZSB3aGljaCBhcHBlYXJzIGluIGJvdGggcHJvdmlkZWQgZmllbGRcbiAgLy8gbWFwcywgZWFjaCBmaWVsZCBmcm9tIHRoZSBmaXJzdCBmaWVsZCBtYXAgbXVzdCBiZSBjb21wYXJlZCB0byBldmVyeSBmaWVsZFxuICAvLyBpbiB0aGUgc2Vjb25kIGZpZWxkIG1hcCB0byBmaW5kIHBvdGVudGlhbCBjb25mbGljdHMuXG4gIGZvciAoY29uc3QgW3Jlc3BvbnNlTmFtZSwgZmllbGRzMV0gb2YgT2JqZWN0LmVudHJpZXMoZmllbGRNYXAxKSkge1xuICAgIGNvbnN0IGZpZWxkczIgPSBmaWVsZE1hcDJbcmVzcG9uc2VOYW1lXTtcblxuICAgIGlmIChmaWVsZHMyKSB7XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkMSBvZiBmaWVsZHMxKSB7XG4gICAgICAgIGZvciAoY29uc3QgZmllbGQyIG9mIGZpZWxkczIpIHtcbiAgICAgICAgICBjb25zdCBjb25mbGljdCA9IGZpbmRDb25mbGljdChcbiAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLFxuICAgICAgICAgICAgY29tcGFyZWRGcmFnbWVudFBhaXJzLFxuICAgICAgICAgICAgcGFyZW50RmllbGRzQXJlTXV0dWFsbHlFeGNsdXNpdmUsXG4gICAgICAgICAgICByZXNwb25zZU5hbWUsXG4gICAgICAgICAgICBmaWVsZDEsXG4gICAgICAgICAgICBmaWVsZDIsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChjb25mbGljdCkge1xuICAgICAgICAgICAgY29uZmxpY3RzLnB1c2goY29uZmxpY3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSAvLyBEZXRlcm1pbmVzIGlmIHRoZXJlIGlzIGEgY29uZmxpY3QgYmV0d2VlbiB0d28gcGFydGljdWxhciBmaWVsZHMsIGluY2x1ZGluZ1xuLy8gY29tcGFyaW5nIHRoZWlyIHN1Yi1maWVsZHMuXG5cbmZ1bmN0aW9uIGZpbmRDb25mbGljdChcbiAgY29udGV4dCxcbiAgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcyxcbiAgY29tcGFyZWRGcmFnbWVudFBhaXJzLFxuICBwYXJlbnRGaWVsZHNBcmVNdXR1YWxseUV4Y2x1c2l2ZSxcbiAgcmVzcG9uc2VOYW1lLFxuICBmaWVsZDEsXG4gIGZpZWxkMixcbikge1xuICBjb25zdCBbcGFyZW50VHlwZTEsIG5vZGUxLCBkZWYxXSA9IGZpZWxkMTtcbiAgY29uc3QgW3BhcmVudFR5cGUyLCBub2RlMiwgZGVmMl0gPSBmaWVsZDI7IC8vIElmIGl0IGlzIGtub3duIHRoYXQgdHdvIGZpZWxkcyBjb3VsZCBub3QgcG9zc2libHkgYXBwbHkgYXQgdGhlIHNhbWVcbiAgLy8gdGltZSwgZHVlIHRvIHRoZSBwYXJlbnQgdHlwZXMsIHRoZW4gaXQgaXMgc2FmZSB0byBwZXJtaXQgdGhlbSB0byBkaXZlcmdlXG4gIC8vIGluIGFsaWFzZWQgZmllbGQgb3IgYXJndW1lbnRzIHVzZWQgYXMgdGhleSB3aWxsIG5vdCBwcmVzZW50IGFueSBhbWJpZ3VpdHlcbiAgLy8gYnkgZGlmZmVyaW5nLlxuICAvLyBJdCBpcyBrbm93biB0aGF0IHR3byBwYXJlbnQgdHlwZXMgY291bGQgbmV2ZXIgb3ZlcmxhcCBpZiB0aGV5IGFyZVxuICAvLyBkaWZmZXJlbnQgT2JqZWN0IHR5cGVzLiBJbnRlcmZhY2Ugb3IgVW5pb24gdHlwZXMgbWlnaHQgb3ZlcmxhcCAtIGlmIG5vdFxuICAvLyBpbiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgc2NoZW1hLCB0aGVuIHBlcmhhcHMgaW4gc29tZSBmdXR1cmUgdmVyc2lvbixcbiAgLy8gdGh1cyBtYXkgbm90IHNhZmVseSBkaXZlcmdlLlxuXG4gIGNvbnN0IGFyZU11dHVhbGx5RXhjbHVzaXZlID1cbiAgICBwYXJlbnRGaWVsZHNBcmVNdXR1YWxseUV4Y2x1c2l2ZSB8fFxuICAgIChwYXJlbnRUeXBlMSAhPT0gcGFyZW50VHlwZTIgJiZcbiAgICAgIGlzT2JqZWN0VHlwZShwYXJlbnRUeXBlMSkgJiZcbiAgICAgIGlzT2JqZWN0VHlwZShwYXJlbnRUeXBlMikpO1xuXG4gIGlmICghYXJlTXV0dWFsbHlFeGNsdXNpdmUpIHtcbiAgICAvLyBUd28gYWxpYXNlcyBtdXN0IHJlZmVyIHRvIHRoZSBzYW1lIGZpZWxkLlxuICAgIGNvbnN0IG5hbWUxID0gbm9kZTEubmFtZS52YWx1ZTtcbiAgICBjb25zdCBuYW1lMiA9IG5vZGUyLm5hbWUudmFsdWU7XG5cbiAgICBpZiAobmFtZTEgIT09IG5hbWUyKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBbcmVzcG9uc2VOYW1lLCBgXCIke25hbWUxfVwiIGFuZCBcIiR7bmFtZTJ9XCIgYXJlIGRpZmZlcmVudCBmaWVsZHNgXSxcbiAgICAgICAgW25vZGUxXSxcbiAgICAgICAgW25vZGUyXSxcbiAgICAgIF07XG4gICAgfSAvLyBUd28gZmllbGQgY2FsbHMgbXVzdCBoYXZlIHRoZSBzYW1lIGFyZ3VtZW50cy5cblxuICAgIGlmIChzdHJpbmdpZnlBcmd1bWVudHMobm9kZTEpICE9PSBzdHJpbmdpZnlBcmd1bWVudHMobm9kZTIpKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBbcmVzcG9uc2VOYW1lLCAndGhleSBoYXZlIGRpZmZlcmluZyBhcmd1bWVudHMnXSxcbiAgICAgICAgW25vZGUxXSxcbiAgICAgICAgW25vZGUyXSxcbiAgICAgIF07XG4gICAgfVxuICB9IC8vIFRoZSByZXR1cm4gdHlwZSBmb3IgZWFjaCBmaWVsZC5cblxuICBjb25zdCB0eXBlMSA9IGRlZjEgPT09IG51bGwgfHwgZGVmMSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVmMS50eXBlO1xuICBjb25zdCB0eXBlMiA9IGRlZjIgPT09IG51bGwgfHwgZGVmMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVmMi50eXBlO1xuXG4gIGlmICh0eXBlMSAmJiB0eXBlMiAmJiBkb1R5cGVzQ29uZmxpY3QodHlwZTEsIHR5cGUyKSkge1xuICAgIHJldHVybiBbXG4gICAgICBbXG4gICAgICAgIHJlc3BvbnNlTmFtZSxcbiAgICAgICAgYHRoZXkgcmV0dXJuIGNvbmZsaWN0aW5nIHR5cGVzIFwiJHtpbnNwZWN0KHR5cGUxKX1cIiBhbmQgXCIke2luc3BlY3QoXG4gICAgICAgICAgdHlwZTIsXG4gICAgICAgICl9XCJgLFxuICAgICAgXSxcbiAgICAgIFtub2RlMV0sXG4gICAgICBbbm9kZTJdLFxuICAgIF07XG4gIH0gLy8gQ29sbGVjdCBhbmQgY29tcGFyZSBzdWItZmllbGRzLiBVc2UgdGhlIHNhbWUgXCJ2aXNpdGVkIGZyYWdtZW50IG5hbWVzXCIgbGlzdFxuICAvLyBmb3IgYm90aCBjb2xsZWN0aW9ucyBzbyBmaWVsZHMgaW4gYSBmcmFnbWVudCByZWZlcmVuY2UgYXJlIG5ldmVyXG4gIC8vIGNvbXBhcmVkIHRvIHRoZW1zZWx2ZXMuXG5cbiAgY29uc3Qgc2VsZWN0aW9uU2V0MSA9IG5vZGUxLnNlbGVjdGlvblNldDtcbiAgY29uc3Qgc2VsZWN0aW9uU2V0MiA9IG5vZGUyLnNlbGVjdGlvblNldDtcblxuICBpZiAoc2VsZWN0aW9uU2V0MSAmJiBzZWxlY3Rpb25TZXQyKSB7XG4gICAgY29uc3QgY29uZmxpY3RzID0gZmluZENvbmZsaWN0c0JldHdlZW5TdWJTZWxlY3Rpb25TZXRzKFxuICAgICAgY29udGV4dCxcbiAgICAgIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsXG4gICAgICBjb21wYXJlZEZyYWdtZW50UGFpcnMsXG4gICAgICBhcmVNdXR1YWxseUV4Y2x1c2l2ZSxcbiAgICAgIGdldE5hbWVkVHlwZSh0eXBlMSksXG4gICAgICBzZWxlY3Rpb25TZXQxLFxuICAgICAgZ2V0TmFtZWRUeXBlKHR5cGUyKSxcbiAgICAgIHNlbGVjdGlvblNldDIsXG4gICAgKTtcbiAgICByZXR1cm4gc3ViZmllbGRDb25mbGljdHMoY29uZmxpY3RzLCByZXNwb25zZU5hbWUsIG5vZGUxLCBub2RlMik7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5QXJndW1lbnRzKGZpZWxkTm9kZSkge1xuICB2YXIgX2ZpZWxkTm9kZSRhcmd1bWVudHM7XG5cbiAgLy8gRklYTUUgaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuICBjb25zdCBhcmdzID1cbiAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICAgIChfZmllbGROb2RlJGFyZ3VtZW50cyA9IGZpZWxkTm9kZS5hcmd1bWVudHMpICE9PSBudWxsICYmXG4gICAgX2ZpZWxkTm9kZSRhcmd1bWVudHMgIT09IHZvaWQgMFxuICAgICAgPyBfZmllbGROb2RlJGFyZ3VtZW50c1xuICAgICAgOiBbXTtcbiAgY29uc3QgaW5wdXRPYmplY3RXaXRoQXJncyA9IHtcbiAgICBraW5kOiBLaW5kLk9CSkVDVCxcbiAgICBmaWVsZHM6IGFyZ3MubWFwKChhcmdOb2RlKSA9PiAoe1xuICAgICAga2luZDogS2luZC5PQkpFQ1RfRklFTEQsXG4gICAgICBuYW1lOiBhcmdOb2RlLm5hbWUsXG4gICAgICB2YWx1ZTogYXJnTm9kZS52YWx1ZSxcbiAgICB9KSksXG4gIH07XG4gIHJldHVybiBwcmludChzb3J0VmFsdWVOb2RlKGlucHV0T2JqZWN0V2l0aEFyZ3MpKTtcbn0gLy8gVHdvIHR5cGVzIGNvbmZsaWN0IGlmIGJvdGggdHlwZXMgY291bGQgbm90IGFwcGx5IHRvIGEgdmFsdWUgc2ltdWx0YW5lb3VzbHkuXG4vLyBDb21wb3NpdGUgdHlwZXMgYXJlIGlnbm9yZWQgYXMgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZCB0eXBlcyB3aWxsIGJlIGNvbXBhcmVkXG4vLyBsYXRlciByZWN1cnNpdmVseS4gSG93ZXZlciBMaXN0IGFuZCBOb24tTnVsbCB0eXBlcyBtdXN0IG1hdGNoLlxuXG5mdW5jdGlvbiBkb1R5cGVzQ29uZmxpY3QodHlwZTEsIHR5cGUyKSB7XG4gIGlmIChpc0xpc3RUeXBlKHR5cGUxKSkge1xuICAgIHJldHVybiBpc0xpc3RUeXBlKHR5cGUyKVxuICAgICAgPyBkb1R5cGVzQ29uZmxpY3QodHlwZTEub2ZUeXBlLCB0eXBlMi5vZlR5cGUpXG4gICAgICA6IHRydWU7XG4gIH1cblxuICBpZiAoaXNMaXN0VHlwZSh0eXBlMikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChpc05vbk51bGxUeXBlKHR5cGUxKSkge1xuICAgIHJldHVybiBpc05vbk51bGxUeXBlKHR5cGUyKVxuICAgICAgPyBkb1R5cGVzQ29uZmxpY3QodHlwZTEub2ZUeXBlLCB0eXBlMi5vZlR5cGUpXG4gICAgICA6IHRydWU7XG4gIH1cblxuICBpZiAoaXNOb25OdWxsVHlwZSh0eXBlMikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChpc0xlYWZUeXBlKHR5cGUxKSB8fCBpc0xlYWZUeXBlKHR5cGUyKSkge1xuICAgIHJldHVybiB0eXBlMSAhPT0gdHlwZTI7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59IC8vIEdpdmVuIGEgc2VsZWN0aW9uIHNldCwgcmV0dXJuIHRoZSBjb2xsZWN0aW9uIG9mIGZpZWxkcyAoYSBtYXBwaW5nIG9mIHJlc3BvbnNlXG4vLyBuYW1lIHRvIGZpZWxkIG5vZGVzIGFuZCBkZWZpbml0aW9ucykgYXMgd2VsbCBhcyBhIGxpc3Qgb2YgZnJhZ21lbnQgbmFtZXNcbi8vIHJlZmVyZW5jZWQgdmlhIGZyYWdtZW50IHNwcmVhZHMuXG5cbmZ1bmN0aW9uIGdldEZpZWxkc0FuZEZyYWdtZW50TmFtZXMoXG4gIGNvbnRleHQsXG4gIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsXG4gIHBhcmVudFR5cGUsXG4gIHNlbGVjdGlvblNldCxcbikge1xuICBjb25zdCBjYWNoZWQgPSBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLmdldChzZWxlY3Rpb25TZXQpO1xuXG4gIGlmIChjYWNoZWQpIHtcbiAgICByZXR1cm4gY2FjaGVkO1xuICB9XG5cbiAgY29uc3Qgbm9kZUFuZERlZnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBjb25zdCBmcmFnbWVudE5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBfY29sbGVjdEZpZWxkc0FuZEZyYWdtZW50TmFtZXMoXG4gICAgY29udGV4dCxcbiAgICBwYXJlbnRUeXBlLFxuICAgIHNlbGVjdGlvblNldCxcbiAgICBub2RlQW5kRGVmcyxcbiAgICBmcmFnbWVudE5hbWVzLFxuICApO1xuXG4gIGNvbnN0IHJlc3VsdCA9IFtub2RlQW5kRGVmcywgT2JqZWN0LmtleXMoZnJhZ21lbnROYW1lcyldO1xuICBjYWNoZWRGaWVsZHNBbmRGcmFnbWVudE5hbWVzLnNldChzZWxlY3Rpb25TZXQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59IC8vIEdpdmVuIGEgcmVmZXJlbmNlIHRvIGEgZnJhZ21lbnQsIHJldHVybiB0aGUgcmVwcmVzZW50ZWQgY29sbGVjdGlvbiBvZiBmaWVsZHNcbi8vIGFzIHdlbGwgYXMgYSBsaXN0IG9mIG5lc3RlZCBmcmFnbWVudCBuYW1lcyByZWZlcmVuY2VkIHZpYSBmcmFnbWVudCBzcHJlYWRzLlxuXG5mdW5jdGlvbiBnZXRSZWZlcmVuY2VkRmllbGRzQW5kRnJhZ21lbnROYW1lcyhcbiAgY29udGV4dCxcbiAgY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcyxcbiAgZnJhZ21lbnQsXG4pIHtcbiAgLy8gU2hvcnQtY2lyY3VpdCBidWlsZGluZyBhIHR5cGUgZnJvbSB0aGUgbm9kZSBpZiBwb3NzaWJsZS5cbiAgY29uc3QgY2FjaGVkID0gY2FjaGVkRmllbGRzQW5kRnJhZ21lbnROYW1lcy5nZXQoZnJhZ21lbnQuc2VsZWN0aW9uU2V0KTtcblxuICBpZiAoY2FjaGVkKSB7XG4gICAgcmV0dXJuIGNhY2hlZDtcbiAgfVxuXG4gIGNvbnN0IGZyYWdtZW50VHlwZSA9IHR5cGVGcm9tQVNUKGNvbnRleHQuZ2V0U2NoZW1hKCksIGZyYWdtZW50LnR5cGVDb25kaXRpb24pO1xuICByZXR1cm4gZ2V0RmllbGRzQW5kRnJhZ21lbnROYW1lcyhcbiAgICBjb250ZXh0LFxuICAgIGNhY2hlZEZpZWxkc0FuZEZyYWdtZW50TmFtZXMsXG4gICAgZnJhZ21lbnRUeXBlLFxuICAgIGZyYWdtZW50LnNlbGVjdGlvblNldCxcbiAgKTtcbn1cblxuZnVuY3Rpb24gX2NvbGxlY3RGaWVsZHNBbmRGcmFnbWVudE5hbWVzKFxuICBjb250ZXh0LFxuICBwYXJlbnRUeXBlLFxuICBzZWxlY3Rpb25TZXQsXG4gIG5vZGVBbmREZWZzLFxuICBmcmFnbWVudE5hbWVzLFxuKSB7XG4gIGZvciAoY29uc3Qgc2VsZWN0aW9uIG9mIHNlbGVjdGlvblNldC5zZWxlY3Rpb25zKSB7XG4gICAgc3dpdGNoIChzZWxlY3Rpb24ua2luZCkge1xuICAgICAgY2FzZSBLaW5kLkZJRUxEOiB7XG4gICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IHNlbGVjdGlvbi5uYW1lLnZhbHVlO1xuICAgICAgICBsZXQgZmllbGREZWY7XG5cbiAgICAgICAgaWYgKGlzT2JqZWN0VHlwZShwYXJlbnRUeXBlKSB8fCBpc0ludGVyZmFjZVR5cGUocGFyZW50VHlwZSkpIHtcbiAgICAgICAgICBmaWVsZERlZiA9IHBhcmVudFR5cGUuZ2V0RmllbGRzKClbZmllbGROYW1lXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlTmFtZSA9IHNlbGVjdGlvbi5hbGlhc1xuICAgICAgICAgID8gc2VsZWN0aW9uLmFsaWFzLnZhbHVlXG4gICAgICAgICAgOiBmaWVsZE5hbWU7XG5cbiAgICAgICAgaWYgKCFub2RlQW5kRGVmc1tyZXNwb25zZU5hbWVdKSB7XG4gICAgICAgICAgbm9kZUFuZERlZnNbcmVzcG9uc2VOYW1lXSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZUFuZERlZnNbcmVzcG9uc2VOYW1lXS5wdXNoKFtwYXJlbnRUeXBlLCBzZWxlY3Rpb24sIGZpZWxkRGVmXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIEtpbmQuRlJBR01FTlRfU1BSRUFEOlxuICAgICAgICBmcmFnbWVudE5hbWVzW3NlbGVjdGlvbi5uYW1lLnZhbHVlXSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIEtpbmQuSU5MSU5FX0ZSQUdNRU5UOiB7XG4gICAgICAgIGNvbnN0IHR5cGVDb25kaXRpb24gPSBzZWxlY3Rpb24udHlwZUNvbmRpdGlvbjtcbiAgICAgICAgY29uc3QgaW5saW5lRnJhZ21lbnRUeXBlID0gdHlwZUNvbmRpdGlvblxuICAgICAgICAgID8gdHlwZUZyb21BU1QoY29udGV4dC5nZXRTY2hlbWEoKSwgdHlwZUNvbmRpdGlvbilcbiAgICAgICAgICA6IHBhcmVudFR5cGU7XG5cbiAgICAgICAgX2NvbGxlY3RGaWVsZHNBbmRGcmFnbWVudE5hbWVzKFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgaW5saW5lRnJhZ21lbnRUeXBlLFxuICAgICAgICAgIHNlbGVjdGlvbi5zZWxlY3Rpb25TZXQsXG4gICAgICAgICAgbm9kZUFuZERlZnMsXG4gICAgICAgICAgZnJhZ21lbnROYW1lcyxcbiAgICAgICAgKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0gLy8gR2l2ZW4gYSBzZXJpZXMgb2YgQ29uZmxpY3RzIHdoaWNoIG9jY3VycmVkIGJldHdlZW4gdHdvIHN1Yi1maWVsZHMsIGdlbmVyYXRlXG4vLyBhIHNpbmdsZSBDb25mbGljdC5cblxuZnVuY3Rpb24gc3ViZmllbGRDb25mbGljdHMoY29uZmxpY3RzLCByZXNwb25zZU5hbWUsIG5vZGUxLCBub2RlMikge1xuICBpZiAoY29uZmxpY3RzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gW1xuICAgICAgW3Jlc3BvbnNlTmFtZSwgY29uZmxpY3RzLm1hcCgoW3JlYXNvbl0pID0+IHJlYXNvbildLFxuICAgICAgW25vZGUxLCAuLi5jb25mbGljdHMubWFwKChbLCBmaWVsZHMxXSkgPT4gZmllbGRzMSkuZmxhdCgpXSxcbiAgICAgIFtub2RlMiwgLi4uY29uZmxpY3RzLm1hcCgoWywgLCBmaWVsZHMyXSkgPT4gZmllbGRzMikuZmxhdCgpXSxcbiAgICBdO1xuICB9XG59XG4vKipcbiAqIEEgd2F5IHRvIGtlZXAgdHJhY2sgb2YgcGFpcnMgb2YgdGhpbmdzIHdoZW4gdGhlIG9yZGVyaW5nIG9mIHRoZSBwYWlyIGRvZXMgbm90IG1hdHRlci5cbiAqL1xuXG5jbGFzcyBQYWlyU2V0IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fZGF0YSA9IG5ldyBNYXAoKTtcbiAgfVxuXG4gIGhhcyhhLCBiLCBhcmVNdXR1YWxseUV4Y2x1c2l2ZSkge1xuICAgIHZhciBfdGhpcyRfZGF0YSRnZXQ7XG5cbiAgICBjb25zdCBba2V5MSwga2V5Ml0gPSBhIDwgYiA/IFthLCBiXSA6IFtiLCBhXTtcbiAgICBjb25zdCByZXN1bHQgPVxuICAgICAgKF90aGlzJF9kYXRhJGdldCA9IHRoaXMuX2RhdGEuZ2V0KGtleTEpKSA9PT0gbnVsbCB8fFxuICAgICAgX3RoaXMkX2RhdGEkZ2V0ID09PSB2b2lkIDBcbiAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgOiBfdGhpcyRfZGF0YSRnZXQuZ2V0KGtleTIpO1xuXG4gICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSAvLyBhcmVNdXR1YWxseUV4Y2x1c2l2ZSBiZWluZyBmYWxzZSBpcyBhIHN1cGVyc2V0IG9mIGJlaW5nIHRydWUsIGhlbmNlIGlmXG4gICAgLy8gd2Ugd2FudCB0byBrbm93IGlmIHRoaXMgUGFpclNldCBcImhhc1wiIHRoZXNlIHR3byB3aXRoIG5vIGV4Y2x1c2l2aXR5LFxuICAgIC8vIHdlIGhhdmUgdG8gZW5zdXJlIGl0IHdhcyBhZGRlZCBhcyBzdWNoLlxuXG4gICAgcmV0dXJuIGFyZU11dHVhbGx5RXhjbHVzaXZlID8gdHJ1ZSA6IGFyZU11dHVhbGx5RXhjbHVzaXZlID09PSByZXN1bHQ7XG4gIH1cblxuICBhZGQoYSwgYiwgYXJlTXV0dWFsbHlFeGNsdXNpdmUpIHtcbiAgICBjb25zdCBba2V5MSwga2V5Ml0gPSBhIDwgYiA/IFthLCBiXSA6IFtiLCBhXTtcblxuICAgIGNvbnN0IG1hcCA9IHRoaXMuX2RhdGEuZ2V0KGtleTEpO1xuXG4gICAgaWYgKG1hcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9kYXRhLnNldChrZXkxLCBuZXcgTWFwKFtba2V5MiwgYXJlTXV0dWFsbHlFeGNsdXNpdmVdXSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXAuc2V0KGtleTIsIGFyZU11dHVhbGx5RXhjbHVzaXZlKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs":
/*!*******************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs ***!
  \*******************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PossibleFragmentSpreadsRule\": function() { return /* binding */ PossibleFragmentSpreadsRule; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utilities/typeComparators.mjs */ \"./node_modules/graphql/utilities/typeComparators.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utilities/typeFromAST.mjs */ \"./node_modules/graphql/utilities/typeFromAST.mjs\");\n\n\n\n\n\n\n/**\n * Possible fragment spread\n *\n * A fragment spread is only valid if the type condition could ever possibly\n * be true: if there is a non-empty intersection of the possible parent types,\n * and possible types which pass the type condition.\n */\nfunction PossibleFragmentSpreadsRule(context) {\n  return {\n    InlineFragment(node) {\n      const fragType = context.getType();\n      const parentType = context.getParentType();\n\n      if (\n        (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isCompositeType)(fragType) &&\n        (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isCompositeType)(parentType) &&\n        !(0,_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_1__.doTypesOverlap)(context.getSchema(), fragType, parentType)\n      ) {\n        const parentTypeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(parentType);\n        const fragTypeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(fragType);\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLError(\n            `Fragment cannot be spread here as objects of type \"${parentTypeStr}\" can never be of type \"${fragTypeStr}\".`,\n            node,\n          ),\n        );\n      }\n    },\n\n    FragmentSpread(node) {\n      const fragName = node.name.value;\n      const fragType = getFragmentType(context, fragName);\n      const parentType = context.getParentType();\n\n      if (\n        fragType &&\n        parentType &&\n        !(0,_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_1__.doTypesOverlap)(context.getSchema(), fragType, parentType)\n      ) {\n        const parentTypeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(parentType);\n        const fragTypeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(fragType);\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLError(\n            `Fragment \"${fragName}\" cannot be spread here as objects of type \"${parentTypeStr}\" can never be of type \"${fragTypeStr}\".`,\n            node,\n          ),\n        );\n      }\n    },\n  };\n}\n\nfunction getFragmentType(context, name) {\n  const frag = context.getFragment(name);\n\n  if (frag) {\n    const type = (0,_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_4__.typeFromAST)(context.getSchema(), frag.typeCondition);\n\n    if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isCompositeType)(type)) {\n      return type;\n    }\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1Bvc3NpYmxlRnJhZ21lbnRTcHJlYWRzUnVsZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQW9EO0FBQ1E7QUFDQTtBQUNTO0FBQ1A7O0FBRTlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEscUVBQWU7QUFDdkIsUUFBUSxxRUFBZTtBQUN2QixTQUFTLDhFQUFjO0FBQ3ZCO0FBQ0EsOEJBQThCLDZEQUFPO0FBQ3JDLDRCQUE0Qiw2REFBTztBQUNuQztBQUNBLGNBQWMsaUVBQVk7QUFDMUIsa0VBQWtFLGNBQWMsMEJBQTBCLFlBQVk7QUFDdEg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsOEVBQWM7QUFDdkI7QUFDQSw4QkFBOEIsNkRBQU87QUFDckMsNEJBQTRCLDZEQUFPO0FBQ25DO0FBQ0EsY0FBYyxpRUFBWTtBQUMxQix5QkFBeUIsU0FBUyw4Q0FBOEMsY0FBYywwQkFBMEIsWUFBWTtBQUNwSTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsdUVBQVc7O0FBRTVCLFFBQVEscUVBQWU7QUFDdkI7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9Qb3NzaWJsZUZyYWdtZW50U3ByZWFkc1J1bGUubWpzP2IwZTgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uLy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBpc0NvbXBvc2l0ZVR5cGUgfSBmcm9tICcuLi8uLi90eXBlL2RlZmluaXRpb24ubWpzJztcbmltcG9ydCB7IGRvVHlwZXNPdmVybGFwIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL3R5cGVDb21wYXJhdG9ycy5tanMnO1xuaW1wb3J0IHsgdHlwZUZyb21BU1QgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvdHlwZUZyb21BU1QubWpzJztcblxuLyoqXG4gKiBQb3NzaWJsZSBmcmFnbWVudCBzcHJlYWRcbiAqXG4gKiBBIGZyYWdtZW50IHNwcmVhZCBpcyBvbmx5IHZhbGlkIGlmIHRoZSB0eXBlIGNvbmRpdGlvbiBjb3VsZCBldmVyIHBvc3NpYmx5XG4gKiBiZSB0cnVlOiBpZiB0aGVyZSBpcyBhIG5vbi1lbXB0eSBpbnRlcnNlY3Rpb24gb2YgdGhlIHBvc3NpYmxlIHBhcmVudCB0eXBlcyxcbiAqIGFuZCBwb3NzaWJsZSB0eXBlcyB3aGljaCBwYXNzIHRoZSB0eXBlIGNvbmRpdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFBvc3NpYmxlRnJhZ21lbnRTcHJlYWRzUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgSW5saW5lRnJhZ21lbnQobm9kZSkge1xuICAgICAgY29uc3QgZnJhZ1R5cGUgPSBjb250ZXh0LmdldFR5cGUoKTtcbiAgICAgIGNvbnN0IHBhcmVudFR5cGUgPSBjb250ZXh0LmdldFBhcmVudFR5cGUoKTtcblxuICAgICAgaWYgKFxuICAgICAgICBpc0NvbXBvc2l0ZVR5cGUoZnJhZ1R5cGUpICYmXG4gICAgICAgIGlzQ29tcG9zaXRlVHlwZShwYXJlbnRUeXBlKSAmJlxuICAgICAgICAhZG9UeXBlc092ZXJsYXAoY29udGV4dC5nZXRTY2hlbWEoKSwgZnJhZ1R5cGUsIHBhcmVudFR5cGUpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgcGFyZW50VHlwZVN0ciA9IGluc3BlY3QocGFyZW50VHlwZSk7XG4gICAgICAgIGNvbnN0IGZyYWdUeXBlU3RyID0gaW5zcGVjdChmcmFnVHlwZSk7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBGcmFnbWVudCBjYW5ub3QgYmUgc3ByZWFkIGhlcmUgYXMgb2JqZWN0cyBvZiB0eXBlIFwiJHtwYXJlbnRUeXBlU3RyfVwiIGNhbiBuZXZlciBiZSBvZiB0eXBlIFwiJHtmcmFnVHlwZVN0cn1cIi5gLFxuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBGcmFnbWVudFNwcmVhZChub2RlKSB7XG4gICAgICBjb25zdCBmcmFnTmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcbiAgICAgIGNvbnN0IGZyYWdUeXBlID0gZ2V0RnJhZ21lbnRUeXBlKGNvbnRleHQsIGZyYWdOYW1lKTtcbiAgICAgIGNvbnN0IHBhcmVudFR5cGUgPSBjb250ZXh0LmdldFBhcmVudFR5cGUoKTtcblxuICAgICAgaWYgKFxuICAgICAgICBmcmFnVHlwZSAmJlxuICAgICAgICBwYXJlbnRUeXBlICYmXG4gICAgICAgICFkb1R5cGVzT3ZlcmxhcChjb250ZXh0LmdldFNjaGVtYSgpLCBmcmFnVHlwZSwgcGFyZW50VHlwZSlcbiAgICAgICkge1xuICAgICAgICBjb25zdCBwYXJlbnRUeXBlU3RyID0gaW5zcGVjdChwYXJlbnRUeXBlKTtcbiAgICAgICAgY29uc3QgZnJhZ1R5cGVTdHIgPSBpbnNwZWN0KGZyYWdUeXBlKTtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYEZyYWdtZW50IFwiJHtmcmFnTmFtZX1cIiBjYW5ub3QgYmUgc3ByZWFkIGhlcmUgYXMgb2JqZWN0cyBvZiB0eXBlIFwiJHtwYXJlbnRUeXBlU3RyfVwiIGNhbiBuZXZlciBiZSBvZiB0eXBlIFwiJHtmcmFnVHlwZVN0cn1cIi5gLFxuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldEZyYWdtZW50VHlwZShjb250ZXh0LCBuYW1lKSB7XG4gIGNvbnN0IGZyYWcgPSBjb250ZXh0LmdldEZyYWdtZW50KG5hbWUpO1xuXG4gIGlmIChmcmFnKSB7XG4gICAgY29uc3QgdHlwZSA9IHR5cGVGcm9tQVNUKGNvbnRleHQuZ2V0U2NoZW1hKCksIGZyYWcudHlwZUNvbmRpdGlvbik7XG5cbiAgICBpZiAoaXNDb21wb3NpdGVUeXBlKHR5cGUpKSB7XG4gICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs":
/*!******************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs ***!
  \******************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PossibleTypeExtensionsRule\": function() { return /* binding */ PossibleTypeExtensionsRule; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../jsutils/didYouMean.mjs */ \"./node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../jsutils/invariant.mjs */ \"./node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../jsutils/suggestionList.mjs */ \"./node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_predicates_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../language/predicates.mjs */ \"./node_modules/graphql/language/predicates.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n\n\n\n/**\n * Possible type extension\n *\n * A type extension is only valid if the type is defined and has the same kind.\n */\nfunction PossibleTypeExtensionsRule(context) {\n  const schema = context.getSchema();\n  const definedTypes = Object.create(null);\n\n  for (const def of context.getDocument().definitions) {\n    if ((0,_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_0__.isTypeDefinitionNode)(def)) {\n      definedTypes[def.name.value] = def;\n    }\n  }\n\n  return {\n    ScalarTypeExtension: checkExtension,\n    ObjectTypeExtension: checkExtension,\n    InterfaceTypeExtension: checkExtension,\n    UnionTypeExtension: checkExtension,\n    EnumTypeExtension: checkExtension,\n    InputObjectTypeExtension: checkExtension,\n  };\n\n  function checkExtension(node) {\n    const typeName = node.name.value;\n    const defNode = definedTypes[typeName];\n    const existingType =\n      schema === null || schema === void 0 ? void 0 : schema.getType(typeName);\n    let expectedKind;\n\n    if (defNode) {\n      expectedKind = defKindToExtKind[defNode.kind];\n    } else if (existingType) {\n      expectedKind = typeToExtKind(existingType);\n    }\n\n    if (expectedKind) {\n      if (expectedKind !== node.kind) {\n        const kindStr = extensionKindToTypeName(node.kind);\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n            `Cannot extend non-${kindStr} type \"${typeName}\".`,\n            defNode ? [defNode, node] : node,\n          ),\n        );\n      }\n    } else {\n      const allTypeNames = Object.keys({\n        ...definedTypes,\n        ...(schema === null || schema === void 0\n          ? void 0\n          : schema.getTypeMap()),\n      });\n      const suggestedTypes = (0,_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_2__.suggestionList)(typeName, allTypeNames);\n      context.reportError(\n        new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n          `Cannot extend type \"${typeName}\" because it is not defined.` +\n            (0,_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_3__.didYouMean)(suggestedTypes),\n          node.name,\n        ),\n      );\n    }\n  }\n}\nconst defKindToExtKind = {\n  [_language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.SCALAR_TYPE_DEFINITION]: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.SCALAR_TYPE_EXTENSION,\n  [_language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.OBJECT_TYPE_DEFINITION]: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.OBJECT_TYPE_EXTENSION,\n  [_language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.INTERFACE_TYPE_DEFINITION]: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.INTERFACE_TYPE_EXTENSION,\n  [_language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.UNION_TYPE_DEFINITION]: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.UNION_TYPE_EXTENSION,\n  [_language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.ENUM_TYPE_DEFINITION]: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.ENUM_TYPE_EXTENSION,\n  [_language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.INPUT_OBJECT_TYPE_DEFINITION]: _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.INPUT_OBJECT_TYPE_EXTENSION,\n};\n\nfunction typeToExtKind(type) {\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.isScalarType)(type)) {\n    return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.SCALAR_TYPE_EXTENSION;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.isObjectType)(type)) {\n    return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.OBJECT_TYPE_EXTENSION;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.isInterfaceType)(type)) {\n    return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.INTERFACE_TYPE_EXTENSION;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.isUnionType)(type)) {\n    return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.UNION_TYPE_EXTENSION;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.isEnumType)(type)) {\n    return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.ENUM_TYPE_EXTENSION;\n  }\n\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_5__.isInputObjectType)(type)) {\n    return _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.INPUT_OBJECT_TYPE_EXTENSION;\n  }\n  /* c8 ignore next 3 */\n  // Not reachable. All possible types have been considered\n\n   false || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_6__.invariant)(false, 'Unexpected type: ' + (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_7__.inspect)(type));\n}\n\nfunction extensionKindToTypeName(kind) {\n  switch (kind) {\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.SCALAR_TYPE_EXTENSION:\n      return 'scalar';\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.OBJECT_TYPE_EXTENSION:\n      return 'object';\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.INTERFACE_TYPE_EXTENSION:\n      return 'interface';\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.UNION_TYPE_EXTENSION:\n      return 'union';\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.ENUM_TYPE_EXTENSION:\n      return 'enum';\n\n    case _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.INPUT_OBJECT_TYPE_EXTENSION:\n      return 'input object';\n    // Not reachable. All possible types have been considered\n\n    /* c8 ignore next */\n\n    default:\n       false || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_6__.invariant)(false, 'Unexpected kind: ' + (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_7__.inspect)(kind));\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1Bvc3NpYmxlVHlwZUV4dGVuc2lvbnNSdWxlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBMEQ7QUFDTjtBQUNJO0FBQ1U7QUFDTjtBQUNaO0FBQ3FCO0FBUWxDOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBOztBQUVBO0FBQ0EsUUFBUSw4RUFBb0I7QUFDNUI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsaUVBQVk7QUFDMUIsaUNBQWlDLFNBQVMsUUFBUSxTQUFTO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsNkJBQTZCLDJFQUFjO0FBQzNDO0FBQ0EsWUFBWSxpRUFBWTtBQUN4QixpQ0FBaUMsU0FBUztBQUMxQyxZQUFZLG1FQUFVO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRyw0RUFBMkIsR0FBRywyRUFBMEI7QUFDM0QsR0FBRyw0RUFBMkIsR0FBRywyRUFBMEI7QUFDM0QsR0FBRywrRUFBOEIsR0FBRyw4RUFBNkI7QUFDakUsR0FBRywyRUFBMEIsR0FBRywwRUFBeUI7QUFDekQsR0FBRywwRUFBeUIsR0FBRyx5RUFBd0I7QUFDdkQsR0FBRyxrRkFBaUMsR0FBRyxpRkFBZ0M7QUFDdkU7O0FBRUE7QUFDQSxNQUFNLGtFQUFZO0FBQ2xCLFdBQVcsMkVBQTBCO0FBQ3JDOztBQUVBLE1BQU0sa0VBQVk7QUFDbEIsV0FBVywyRUFBMEI7QUFDckM7O0FBRUEsTUFBTSxxRUFBZTtBQUNyQixXQUFXLDhFQUE2QjtBQUN4Qzs7QUFFQSxNQUFNLGlFQUFXO0FBQ2pCLFdBQVcsMEVBQXlCO0FBQ3BDOztBQUVBLE1BQU0sZ0VBQVU7QUFDaEIsV0FBVyx5RUFBd0I7QUFDbkM7O0FBRUEsTUFBTSx1RUFBaUI7QUFDdkIsV0FBVyxpRkFBZ0M7QUFDM0M7QUFDQTtBQUNBOztBQUVBLEVBQUUsTUFBSyxJQUFJLGlFQUFTLDhCQUE4Qiw2REFBTztBQUN6RDs7QUFFQTtBQUNBO0FBQ0EsU0FBUywyRUFBMEI7QUFDbkM7O0FBRUEsU0FBUywyRUFBMEI7QUFDbkM7O0FBRUEsU0FBUyw4RUFBNkI7QUFDdEM7O0FBRUEsU0FBUywwRUFBeUI7QUFDbEM7O0FBRUEsU0FBUyx5RUFBd0I7QUFDakM7O0FBRUEsU0FBUyxpRkFBZ0M7QUFDekM7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLE1BQU0sTUFBSyxJQUFJLGlFQUFTLDhCQUE4Qiw2REFBTztBQUM3RDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvUG9zc2libGVUeXBlRXh0ZW5zaW9uc1J1bGUubWpzP2QyMDQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlkWW91TWVhbiB9IGZyb20gJy4uLy4uL2pzdXRpbHMvZGlkWW91TWVhbi5tanMnO1xuaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uLy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSAnLi4vLi4vanN1dGlscy9pbnZhcmlhbnQubWpzJztcbmltcG9ydCB7IHN1Z2dlc3Rpb25MaXN0IH0gZnJvbSAnLi4vLi4vanN1dGlscy9zdWdnZXN0aW9uTGlzdC5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbmltcG9ydCB7IGlzVHlwZURlZmluaXRpb25Ob2RlIH0gZnJvbSAnLi4vLi4vbGFuZ3VhZ2UvcHJlZGljYXRlcy5tanMnO1xuaW1wb3J0IHtcbiAgaXNFbnVtVHlwZSxcbiAgaXNJbnB1dE9iamVjdFR5cGUsXG4gIGlzSW50ZXJmYWNlVHlwZSxcbiAgaXNPYmplY3RUeXBlLFxuICBpc1NjYWxhclR5cGUsXG4gIGlzVW5pb25UeXBlLFxufSBmcm9tICcuLi8uLi90eXBlL2RlZmluaXRpb24ubWpzJztcblxuLyoqXG4gKiBQb3NzaWJsZSB0eXBlIGV4dGVuc2lvblxuICpcbiAqIEEgdHlwZSBleHRlbnNpb24gaXMgb25seSB2YWxpZCBpZiB0aGUgdHlwZSBpcyBkZWZpbmVkIGFuZCBoYXMgdGhlIHNhbWUga2luZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFBvc3NpYmxlVHlwZUV4dGVuc2lvbnNSdWxlKGNvbnRleHQpIHtcbiAgY29uc3Qgc2NoZW1hID0gY29udGV4dC5nZXRTY2hlbWEoKTtcbiAgY29uc3QgZGVmaW5lZFR5cGVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKGNvbnN0IGRlZiBvZiBjb250ZXh0LmdldERvY3VtZW50KCkuZGVmaW5pdGlvbnMpIHtcbiAgICBpZiAoaXNUeXBlRGVmaW5pdGlvbk5vZGUoZGVmKSkge1xuICAgICAgZGVmaW5lZFR5cGVzW2RlZi5uYW1lLnZhbHVlXSA9IGRlZjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIFNjYWxhclR5cGVFeHRlbnNpb246IGNoZWNrRXh0ZW5zaW9uLFxuICAgIE9iamVjdFR5cGVFeHRlbnNpb246IGNoZWNrRXh0ZW5zaW9uLFxuICAgIEludGVyZmFjZVR5cGVFeHRlbnNpb246IGNoZWNrRXh0ZW5zaW9uLFxuICAgIFVuaW9uVHlwZUV4dGVuc2lvbjogY2hlY2tFeHRlbnNpb24sXG4gICAgRW51bVR5cGVFeHRlbnNpb246IGNoZWNrRXh0ZW5zaW9uLFxuICAgIElucHV0T2JqZWN0VHlwZUV4dGVuc2lvbjogY2hlY2tFeHRlbnNpb24sXG4gIH07XG5cbiAgZnVuY3Rpb24gY2hlY2tFeHRlbnNpb24obm9kZSkge1xuICAgIGNvbnN0IHR5cGVOYW1lID0gbm9kZS5uYW1lLnZhbHVlO1xuICAgIGNvbnN0IGRlZk5vZGUgPSBkZWZpbmVkVHlwZXNbdHlwZU5hbWVdO1xuICAgIGNvbnN0IGV4aXN0aW5nVHlwZSA9XG4gICAgICBzY2hlbWEgPT09IG51bGwgfHwgc2NoZW1hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzY2hlbWEuZ2V0VHlwZSh0eXBlTmFtZSk7XG4gICAgbGV0IGV4cGVjdGVkS2luZDtcblxuICAgIGlmIChkZWZOb2RlKSB7XG4gICAgICBleHBlY3RlZEtpbmQgPSBkZWZLaW5kVG9FeHRLaW5kW2RlZk5vZGUua2luZF07XG4gICAgfSBlbHNlIGlmIChleGlzdGluZ1R5cGUpIHtcbiAgICAgIGV4cGVjdGVkS2luZCA9IHR5cGVUb0V4dEtpbmQoZXhpc3RpbmdUeXBlKTtcbiAgICB9XG5cbiAgICBpZiAoZXhwZWN0ZWRLaW5kKSB7XG4gICAgICBpZiAoZXhwZWN0ZWRLaW5kICE9PSBub2RlLmtpbmQpIHtcbiAgICAgICAgY29uc3Qga2luZFN0ciA9IGV4dGVuc2lvbktpbmRUb1R5cGVOYW1lKG5vZGUua2luZCk7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBDYW5ub3QgZXh0ZW5kIG5vbi0ke2tpbmRTdHJ9IHR5cGUgXCIke3R5cGVOYW1lfVwiLmAsXG4gICAgICAgICAgICBkZWZOb2RlID8gW2RlZk5vZGUsIG5vZGVdIDogbm9kZSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhbGxUeXBlTmFtZXMgPSBPYmplY3Qua2V5cyh7XG4gICAgICAgIC4uLmRlZmluZWRUeXBlcyxcbiAgICAgICAgLi4uKHNjaGVtYSA9PT0gbnVsbCB8fCBzY2hlbWEgPT09IHZvaWQgMFxuICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgOiBzY2hlbWEuZ2V0VHlwZU1hcCgpKSxcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgc3VnZ2VzdGVkVHlwZXMgPSBzdWdnZXN0aW9uTGlzdCh0eXBlTmFtZSwgYWxsVHlwZU5hbWVzKTtcbiAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgYENhbm5vdCBleHRlbmQgdHlwZSBcIiR7dHlwZU5hbWV9XCIgYmVjYXVzZSBpdCBpcyBub3QgZGVmaW5lZC5gICtcbiAgICAgICAgICAgIGRpZFlvdU1lYW4oc3VnZ2VzdGVkVHlwZXMpLFxuICAgICAgICAgIG5vZGUubmFtZSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5jb25zdCBkZWZLaW5kVG9FeHRLaW5kID0ge1xuICBbS2luZC5TQ0FMQVJfVFlQRV9ERUZJTklUSU9OXTogS2luZC5TQ0FMQVJfVFlQRV9FWFRFTlNJT04sXG4gIFtLaW5kLk9CSkVDVF9UWVBFX0RFRklOSVRJT05dOiBLaW5kLk9CSkVDVF9UWVBFX0VYVEVOU0lPTixcbiAgW0tpbmQuSU5URVJGQUNFX1RZUEVfREVGSU5JVElPTl06IEtpbmQuSU5URVJGQUNFX1RZUEVfRVhURU5TSU9OLFxuICBbS2luZC5VTklPTl9UWVBFX0RFRklOSVRJT05dOiBLaW5kLlVOSU9OX1RZUEVfRVhURU5TSU9OLFxuICBbS2luZC5FTlVNX1RZUEVfREVGSU5JVElPTl06IEtpbmQuRU5VTV9UWVBFX0VYVEVOU0lPTixcbiAgW0tpbmQuSU5QVVRfT0JKRUNUX1RZUEVfREVGSU5JVElPTl06IEtpbmQuSU5QVVRfT0JKRUNUX1RZUEVfRVhURU5TSU9OLFxufTtcblxuZnVuY3Rpb24gdHlwZVRvRXh0S2luZCh0eXBlKSB7XG4gIGlmIChpc1NjYWxhclR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gS2luZC5TQ0FMQVJfVFlQRV9FWFRFTlNJT047XG4gIH1cblxuICBpZiAoaXNPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIEtpbmQuT0JKRUNUX1RZUEVfRVhURU5TSU9OO1xuICB9XG5cbiAgaWYgKGlzSW50ZXJmYWNlVHlwZSh0eXBlKSkge1xuICAgIHJldHVybiBLaW5kLklOVEVSRkFDRV9UWVBFX0VYVEVOU0lPTjtcbiAgfVxuXG4gIGlmIChpc1VuaW9uVHlwZSh0eXBlKSkge1xuICAgIHJldHVybiBLaW5kLlVOSU9OX1RZUEVfRVhURU5TSU9OO1xuICB9XG5cbiAgaWYgKGlzRW51bVR5cGUodHlwZSkpIHtcbiAgICByZXR1cm4gS2luZC5FTlVNX1RZUEVfRVhURU5TSU9OO1xuICB9XG5cbiAgaWYgKGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIEtpbmQuSU5QVVRfT0JKRUNUX1RZUEVfRVhURU5TSU9OO1xuICB9XG4gIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbiAgLy8gTm90IHJlYWNoYWJsZS4gQWxsIHBvc3NpYmxlIHR5cGVzIGhhdmUgYmVlbiBjb25zaWRlcmVkXG5cbiAgZmFsc2UgfHwgaW52YXJpYW50KGZhbHNlLCAnVW5leHBlY3RlZCB0eXBlOiAnICsgaW5zcGVjdCh0eXBlKSk7XG59XG5cbmZ1bmN0aW9uIGV4dGVuc2lvbktpbmRUb1R5cGVOYW1lKGtpbmQpIHtcbiAgc3dpdGNoIChraW5kKSB7XG4gICAgY2FzZSBLaW5kLlNDQUxBUl9UWVBFX0VYVEVOU0lPTjpcbiAgICAgIHJldHVybiAnc2NhbGFyJztcblxuICAgIGNhc2UgS2luZC5PQkpFQ1RfVFlQRV9FWFRFTlNJT046XG4gICAgICByZXR1cm4gJ29iamVjdCc7XG5cbiAgICBjYXNlIEtpbmQuSU5URVJGQUNFX1RZUEVfRVhURU5TSU9OOlxuICAgICAgcmV0dXJuICdpbnRlcmZhY2UnO1xuXG4gICAgY2FzZSBLaW5kLlVOSU9OX1RZUEVfRVhURU5TSU9OOlxuICAgICAgcmV0dXJuICd1bmlvbic7XG5cbiAgICBjYXNlIEtpbmQuRU5VTV9UWVBFX0VYVEVOU0lPTjpcbiAgICAgIHJldHVybiAnZW51bSc7XG5cbiAgICBjYXNlIEtpbmQuSU5QVVRfT0JKRUNUX1RZUEVfRVhURU5TSU9OOlxuICAgICAgcmV0dXJuICdpbnB1dCBvYmplY3QnO1xuICAgIC8vIE5vdCByZWFjaGFibGUuIEFsbCBwb3NzaWJsZSB0eXBlcyBoYXZlIGJlZW4gY29uc2lkZXJlZFxuXG4gICAgLyogYzggaWdub3JlIG5leHQgKi9cblxuICAgIGRlZmF1bHQ6XG4gICAgICBmYWxzZSB8fCBpbnZhcmlhbnQoZmFsc2UsICdVbmV4cGVjdGVkIGtpbmQ6ICcgKyBpbnNwZWN0KGtpbmQpKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs":
/*!*********************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs ***!
  \*********************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ProvidedRequiredArgumentsOnDirectivesRule\": function() { return /* binding */ ProvidedRequiredArgumentsOnDirectivesRule; },\n/* harmony export */   \"ProvidedRequiredArgumentsRule\": function() { return /* binding */ ProvidedRequiredArgumentsRule; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../jsutils/keyMap.mjs */ \"./node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../language/printer.mjs */ \"./node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../type/directives.mjs */ \"./node_modules/graphql/type/directives.mjs\");\n\n\n\n\n\n\n\n\n/**\n * Provided required arguments\n *\n * A field or directive is only valid if all required (non-null without a\n * default value) field arguments have been provided.\n */\nfunction ProvidedRequiredArgumentsRule(context) {\n  return {\n    // eslint-disable-next-line new-cap\n    ...ProvidedRequiredArgumentsOnDirectivesRule(context),\n    Field: {\n      // Validate on leave to allow for deeper errors to appear first.\n      leave(fieldNode) {\n        var _fieldNode$arguments;\n\n        const fieldDef = context.getFieldDef();\n\n        if (!fieldDef) {\n          return false;\n        }\n\n        const providedArgs = new Set( // FIXME: https://github.com/graphql/graphql-js/issues/2203\n          /* c8 ignore next */\n          (_fieldNode$arguments = fieldNode.arguments) === null ||\n          _fieldNode$arguments === void 0\n            ? void 0\n            : _fieldNode$arguments.map((arg) => arg.name.value),\n        );\n\n        for (const argDef of fieldDef.args) {\n          if (!providedArgs.has(argDef.name) && (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isRequiredArgument)(argDef)) {\n            const argTypeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__.inspect)(argDef.type);\n            context.reportError(\n              new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLError(\n                `Field \"${fieldDef.name}\" argument \"${argDef.name}\" of type \"${argTypeStr}\" is required, but it was not provided.`,\n                fieldNode,\n              ),\n            );\n          }\n        }\n      },\n    },\n  };\n}\n/**\n * @internal\n */\n\nfunction ProvidedRequiredArgumentsOnDirectivesRule(context) {\n  var _schema$getDirectives;\n\n  const requiredArgsMap = Object.create(null);\n  const schema = context.getSchema();\n  const definedDirectives =\n    (_schema$getDirectives =\n      schema === null || schema === void 0\n        ? void 0\n        : schema.getDirectives()) !== null && _schema$getDirectives !== void 0\n      ? _schema$getDirectives\n      : _type_directives_mjs__WEBPACK_IMPORTED_MODULE_3__.specifiedDirectives;\n\n  for (const directive of definedDirectives) {\n    requiredArgsMap[directive.name] = (0,_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_4__.keyMap)(\n      directive.args.filter(_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isRequiredArgument),\n      (arg) => arg.name,\n    );\n  }\n\n  const astDefinitions = context.getDocument().definitions;\n\n  for (const def of astDefinitions) {\n    if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__.Kind.DIRECTIVE_DEFINITION) {\n      var _def$arguments;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n      /* c8 ignore next */\n      const argNodes =\n        (_def$arguments = def.arguments) !== null && _def$arguments !== void 0\n          ? _def$arguments\n          : [];\n      requiredArgsMap[def.name.value] = (0,_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_4__.keyMap)(\n        argNodes.filter(isRequiredArgumentNode),\n        (arg) => arg.name.value,\n      );\n    }\n  }\n\n  return {\n    Directive: {\n      // Validate on leave to allow for deeper errors to appear first.\n      leave(directiveNode) {\n        const directiveName = directiveNode.name.value;\n        const requiredArgs = requiredArgsMap[directiveName];\n\n        if (requiredArgs) {\n          var _directiveNode$argume;\n\n          // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n          /* c8 ignore next */\n          const argNodes =\n            (_directiveNode$argume = directiveNode.arguments) !== null &&\n            _directiveNode$argume !== void 0\n              ? _directiveNode$argume\n              : [];\n          const argNodeMap = new Set(argNodes.map((arg) => arg.name.value));\n\n          for (const [argName, argDef] of Object.entries(requiredArgs)) {\n            if (!argNodeMap.has(argName)) {\n              const argType = (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isType)(argDef.type)\n                ? (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__.inspect)(argDef.type)\n                : (0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_6__.print)(argDef.type);\n              context.reportError(\n                new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLError(\n                  `Directive \"@${directiveName}\" argument \"${argName}\" of type \"${argType}\" is required, but it was not provided.`,\n                  directiveNode,\n                ),\n              );\n            }\n          }\n        }\n      },\n    },\n  };\n}\n\nfunction isRequiredArgumentNode(arg) {\n  return arg.type.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_5__.Kind.NON_NULL_TYPE && arg.defaultValue == null;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1Byb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNSdWxlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBb0Q7QUFDRjtBQUNVO0FBQ1o7QUFDRztBQUNvQjtBQUNQOztBQUVoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdEQUFnRCx3RUFBa0I7QUFDbEUsK0JBQStCLDZEQUFPO0FBQ3RDO0FBQ0Esa0JBQWtCLGlFQUFZO0FBQzlCLDBCQUEwQixjQUFjLGNBQWMsWUFBWSxhQUFhLFdBQVc7QUFDMUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLHFFQUFtQjs7QUFFM0I7QUFDQSxzQ0FBc0MsMkRBQU07QUFDNUMsNEJBQTRCLG9FQUFrQjtBQUM5QztBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxxQkFBcUIsMEVBQXlCO0FBQzlDOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0MsMkRBQU07QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOEJBQThCLDREQUFNO0FBQ3BDLGtCQUFrQiw2REFBTztBQUN6QixrQkFBa0IsNERBQUs7QUFDdkI7QUFDQSxvQkFBb0IsaUVBQVk7QUFDaEMsaUNBQWlDLGNBQWMsY0FBYyxRQUFRLGFBQWEsUUFBUTtBQUMxRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkIsbUVBQWtCO0FBQzdDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvUHJvdmlkZWRSZXF1aXJlZEFyZ3VtZW50c1J1bGUubWpzPzY2ZjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uLy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsga2V5TWFwIH0gZnJvbSAnLi4vLi4vanN1dGlscy9rZXlNYXAubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uLy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5pbXBvcnQgeyBwcmludCB9IGZyb20gJy4uLy4uL2xhbmd1YWdlL3ByaW50ZXIubWpzJztcbmltcG9ydCB7IGlzUmVxdWlyZWRBcmd1bWVudCwgaXNUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5pbXBvcnQgeyBzcGVjaWZpZWREaXJlY3RpdmVzIH0gZnJvbSAnLi4vLi4vdHlwZS9kaXJlY3RpdmVzLm1qcyc7XG5cbi8qKlxuICogUHJvdmlkZWQgcmVxdWlyZWQgYXJndW1lbnRzXG4gKlxuICogQSBmaWVsZCBvciBkaXJlY3RpdmUgaXMgb25seSB2YWxpZCBpZiBhbGwgcmVxdWlyZWQgKG5vbi1udWxsIHdpdGhvdXQgYVxuICogZGVmYXVsdCB2YWx1ZSkgZmllbGQgYXJndW1lbnRzIGhhdmUgYmVlbiBwcm92aWRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFByb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNSdWxlKGNvbnRleHQpIHtcbiAgcmV0dXJuIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuICAgIC4uLlByb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNPbkRpcmVjdGl2ZXNSdWxlKGNvbnRleHQpLFxuICAgIEZpZWxkOiB7XG4gICAgICAvLyBWYWxpZGF0ZSBvbiBsZWF2ZSB0byBhbGxvdyBmb3IgZGVlcGVyIGVycm9ycyB0byBhcHBlYXIgZmlyc3QuXG4gICAgICBsZWF2ZShmaWVsZE5vZGUpIHtcbiAgICAgICAgdmFyIF9maWVsZE5vZGUkYXJndW1lbnRzO1xuXG4gICAgICAgIGNvbnN0IGZpZWxkRGVmID0gY29udGV4dC5nZXRGaWVsZERlZigpO1xuXG4gICAgICAgIGlmICghZmllbGREZWYpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm92aWRlZEFyZ3MgPSBuZXcgU2V0KCAvLyBGSVhNRTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuICAgICAgICAgIC8qIGM4IGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgKF9maWVsZE5vZGUkYXJndW1lbnRzID0gZmllbGROb2RlLmFyZ3VtZW50cykgPT09IG51bGwgfHxcbiAgICAgICAgICBfZmllbGROb2RlJGFyZ3VtZW50cyA9PT0gdm9pZCAwXG4gICAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgICAgOiBfZmllbGROb2RlJGFyZ3VtZW50cy5tYXAoKGFyZykgPT4gYXJnLm5hbWUudmFsdWUpLFxuICAgICAgICApO1xuXG4gICAgICAgIGZvciAoY29uc3QgYXJnRGVmIG9mIGZpZWxkRGVmLmFyZ3MpIHtcbiAgICAgICAgICBpZiAoIXByb3ZpZGVkQXJncy5oYXMoYXJnRGVmLm5hbWUpICYmIGlzUmVxdWlyZWRBcmd1bWVudChhcmdEZWYpKSB7XG4gICAgICAgICAgICBjb25zdCBhcmdUeXBlU3RyID0gaW5zcGVjdChhcmdEZWYudHlwZSk7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgICAgIGBGaWVsZCBcIiR7ZmllbGREZWYubmFtZX1cIiBhcmd1bWVudCBcIiR7YXJnRGVmLm5hbWV9XCIgb2YgdHlwZSBcIiR7YXJnVHlwZVN0cn1cIiBpcyByZXF1aXJlZCwgYnV0IGl0IHdhcyBub3QgcHJvdmlkZWQuYCxcbiAgICAgICAgICAgICAgICBmaWVsZE5vZGUsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufVxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gUHJvdmlkZWRSZXF1aXJlZEFyZ3VtZW50c09uRGlyZWN0aXZlc1J1bGUoY29udGV4dCkge1xuICB2YXIgX3NjaGVtYSRnZXREaXJlY3RpdmVzO1xuXG4gIGNvbnN0IHJlcXVpcmVkQXJnc01hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGNvbnN0IHNjaGVtYSA9IGNvbnRleHQuZ2V0U2NoZW1hKCk7XG4gIGNvbnN0IGRlZmluZWREaXJlY3RpdmVzID1cbiAgICAoX3NjaGVtYSRnZXREaXJlY3RpdmVzID1cbiAgICAgIHNjaGVtYSA9PT0gbnVsbCB8fCBzY2hlbWEgPT09IHZvaWQgMFxuICAgICAgICA/IHZvaWQgMFxuICAgICAgICA6IHNjaGVtYS5nZXREaXJlY3RpdmVzKCkpICE9PSBudWxsICYmIF9zY2hlbWEkZ2V0RGlyZWN0aXZlcyAhPT0gdm9pZCAwXG4gICAgICA/IF9zY2hlbWEkZ2V0RGlyZWN0aXZlc1xuICAgICAgOiBzcGVjaWZpZWREaXJlY3RpdmVzO1xuXG4gIGZvciAoY29uc3QgZGlyZWN0aXZlIG9mIGRlZmluZWREaXJlY3RpdmVzKSB7XG4gICAgcmVxdWlyZWRBcmdzTWFwW2RpcmVjdGl2ZS5uYW1lXSA9IGtleU1hcChcbiAgICAgIGRpcmVjdGl2ZS5hcmdzLmZpbHRlcihpc1JlcXVpcmVkQXJndW1lbnQpLFxuICAgICAgKGFyZykgPT4gYXJnLm5hbWUsXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGFzdERlZmluaXRpb25zID0gY29udGV4dC5nZXREb2N1bWVudCgpLmRlZmluaXRpb25zO1xuXG4gIGZvciAoY29uc3QgZGVmIG9mIGFzdERlZmluaXRpb25zKSB7XG4gICAgaWYgKGRlZi5raW5kID09PSBLaW5kLkRJUkVDVElWRV9ERUZJTklUSU9OKSB7XG4gICAgICB2YXIgX2RlZiRhcmd1bWVudHM7XG5cbiAgICAgIC8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzXG5cbiAgICAgIC8qIGM4IGlnbm9yZSBuZXh0ICovXG4gICAgICBjb25zdCBhcmdOb2RlcyA9XG4gICAgICAgIChfZGVmJGFyZ3VtZW50cyA9IGRlZi5hcmd1bWVudHMpICE9PSBudWxsICYmIF9kZWYkYXJndW1lbnRzICE9PSB2b2lkIDBcbiAgICAgICAgICA/IF9kZWYkYXJndW1lbnRzXG4gICAgICAgICAgOiBbXTtcbiAgICAgIHJlcXVpcmVkQXJnc01hcFtkZWYubmFtZS52YWx1ZV0gPSBrZXlNYXAoXG4gICAgICAgIGFyZ05vZGVzLmZpbHRlcihpc1JlcXVpcmVkQXJndW1lbnROb2RlKSxcbiAgICAgICAgKGFyZykgPT4gYXJnLm5hbWUudmFsdWUsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgRGlyZWN0aXZlOiB7XG4gICAgICAvLyBWYWxpZGF0ZSBvbiBsZWF2ZSB0byBhbGxvdyBmb3IgZGVlcGVyIGVycm9ycyB0byBhcHBlYXIgZmlyc3QuXG4gICAgICBsZWF2ZShkaXJlY3RpdmVOb2RlKSB7XG4gICAgICAgIGNvbnN0IGRpcmVjdGl2ZU5hbWUgPSBkaXJlY3RpdmVOb2RlLm5hbWUudmFsdWU7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkQXJncyA9IHJlcXVpcmVkQXJnc01hcFtkaXJlY3RpdmVOYW1lXTtcblxuICAgICAgICBpZiAocmVxdWlyZWRBcmdzKSB7XG4gICAgICAgICAgdmFyIF9kaXJlY3RpdmVOb2RlJGFyZ3VtZTtcblxuICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzXG5cbiAgICAgICAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGNvbnN0IGFyZ05vZGVzID1cbiAgICAgICAgICAgIChfZGlyZWN0aXZlTm9kZSRhcmd1bWUgPSBkaXJlY3RpdmVOb2RlLmFyZ3VtZW50cykgIT09IG51bGwgJiZcbiAgICAgICAgICAgIF9kaXJlY3RpdmVOb2RlJGFyZ3VtZSAhPT0gdm9pZCAwXG4gICAgICAgICAgICAgID8gX2RpcmVjdGl2ZU5vZGUkYXJndW1lXG4gICAgICAgICAgICAgIDogW107XG4gICAgICAgICAgY29uc3QgYXJnTm9kZU1hcCA9IG5ldyBTZXQoYXJnTm9kZXMubWFwKChhcmcpID0+IGFyZy5uYW1lLnZhbHVlKSk7XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IFthcmdOYW1lLCBhcmdEZWZdIG9mIE9iamVjdC5lbnRyaWVzKHJlcXVpcmVkQXJncykpIHtcbiAgICAgICAgICAgIGlmICghYXJnTm9kZU1hcC5oYXMoYXJnTmFtZSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYXJnVHlwZSA9IGlzVHlwZShhcmdEZWYudHlwZSlcbiAgICAgICAgICAgICAgICA/IGluc3BlY3QoYXJnRGVmLnR5cGUpXG4gICAgICAgICAgICAgICAgOiBwcmludChhcmdEZWYudHlwZSk7XG4gICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBEaXJlY3RpdmUgXCJAJHtkaXJlY3RpdmVOYW1lfVwiIGFyZ3VtZW50IFwiJHthcmdOYW1lfVwiIG9mIHR5cGUgXCIke2FyZ1R5cGV9XCIgaXMgcmVxdWlyZWQsIGJ1dCBpdCB3YXMgbm90IHByb3ZpZGVkLmAsXG4gICAgICAgICAgICAgICAgICBkaXJlY3RpdmVOb2RlLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzUmVxdWlyZWRBcmd1bWVudE5vZGUoYXJnKSB7XG4gIHJldHVybiBhcmcudHlwZS5raW5kID09PSBLaW5kLk5PTl9OVUxMX1RZUEUgJiYgYXJnLmRlZmF1bHRWYWx1ZSA9PSBudWxsO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/ScalarLeafsRule.mjs":
/*!*******************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/ScalarLeafsRule.mjs ***!
  \*******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ScalarLeafsRule\": function() { return /* binding */ ScalarLeafsRule; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n\n\n\n\n/**\n * Scalar leafs\n *\n * A GraphQL document is valid only if all leaf fields (fields without\n * sub selections) are of scalar or enum types.\n */\nfunction ScalarLeafsRule(context) {\n  return {\n    Field(node) {\n      const type = context.getType();\n      const selectionSet = node.selectionSet;\n\n      if (type) {\n        if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isLeafType)((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.getNamedType)(type))) {\n          if (selectionSet) {\n            const fieldName = node.name.value;\n            const typeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__.inspect)(type);\n            context.reportError(\n              new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLError(\n                `Field \"${fieldName}\" must not have a selection since type \"${typeStr}\" has no subfields.`,\n                selectionSet,\n              ),\n            );\n          }\n        } else if (!selectionSet) {\n          const fieldName = node.name.value;\n          const typeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__.inspect)(type);\n          context.reportError(\n            new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLError(\n              `Field \"${fieldName}\" of type \"${typeStr}\" must have a selection of subfields. Did you mean \"${fieldName} { ... }\"?`,\n              node,\n            ),\n          );\n        }\n      }\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1NjYWxhckxlYWZzUnVsZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFvRDtBQUNRO0FBQ1M7O0FBRXJFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZLGdFQUFVLENBQUMsa0VBQVk7QUFDbkM7QUFDQTtBQUNBLDRCQUE0Qiw2REFBTztBQUNuQztBQUNBLGtCQUFrQixpRUFBWTtBQUM5QiwwQkFBMEIsVUFBVSwwQ0FBMEMsUUFBUTtBQUN0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLDBCQUEwQiw2REFBTztBQUNqQztBQUNBLGdCQUFnQixpRUFBWTtBQUM1Qix3QkFBd0IsVUFBVSxhQUFhLFFBQVEsc0RBQXNELGFBQWEsS0FBSztBQUMvSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9TY2FsYXJMZWFmc1J1bGUubWpzPzMwM2YiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJy4uLy4uL2pzdXRpbHMvaW5zcGVjdC5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBnZXROYW1lZFR5cGUsIGlzTGVhZlR5cGUgfSBmcm9tICcuLi8uLi90eXBlL2RlZmluaXRpb24ubWpzJztcblxuLyoqXG4gKiBTY2FsYXIgbGVhZnNcbiAqXG4gKiBBIEdyYXBoUUwgZG9jdW1lbnQgaXMgdmFsaWQgb25seSBpZiBhbGwgbGVhZiBmaWVsZHMgKGZpZWxkcyB3aXRob3V0XG4gKiBzdWIgc2VsZWN0aW9ucykgYXJlIG9mIHNjYWxhciBvciBlbnVtIHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gU2NhbGFyTGVhZnNSdWxlKGNvbnRleHQpIHtcbiAgcmV0dXJuIHtcbiAgICBGaWVsZChub2RlKSB7XG4gICAgICBjb25zdCB0eXBlID0gY29udGV4dC5nZXRUeXBlKCk7XG4gICAgICBjb25zdCBzZWxlY3Rpb25TZXQgPSBub2RlLnNlbGVjdGlvblNldDtcblxuICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgaWYgKGlzTGVhZlR5cGUoZ2V0TmFtZWRUeXBlKHR5cGUpKSkge1xuICAgICAgICAgIGlmIChzZWxlY3Rpb25TZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVTdHIgPSBpbnNwZWN0KHR5cGUpO1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgICBgRmllbGQgXCIke2ZpZWxkTmFtZX1cIiBtdXN0IG5vdCBoYXZlIGEgc2VsZWN0aW9uIHNpbmNlIHR5cGUgXCIke3R5cGVTdHJ9XCIgaGFzIG5vIHN1YmZpZWxkcy5gLFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvblNldCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFzZWxlY3Rpb25TZXQpIHtcbiAgICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG4gICAgICAgICAgY29uc3QgdHlwZVN0ciA9IGluc3BlY3QodHlwZSk7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICAgIGBGaWVsZCBcIiR7ZmllbGROYW1lfVwiIG9mIHR5cGUgXCIke3R5cGVTdHJ9XCIgbXVzdCBoYXZlIGEgc2VsZWN0aW9uIG9mIHN1YmZpZWxkcy4gRGlkIHlvdSBtZWFuIFwiJHtmaWVsZE5hbWV9IHsgLi4uIH1cIj9gLFxuICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/ScalarLeafsRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs":
/*!********************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs ***!
  \********************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SingleFieldSubscriptionsRule\": function() { return /* binding */ SingleFieldSubscriptionsRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _execution_collectFields_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../execution/collectFields.mjs */ \"./node_modules/graphql/execution/collectFields.mjs\");\n\n\n\n\n/**\n * Subscriptions must only include a non-introspection field.\n *\n * A GraphQL subscription is valid only if it contains a single root field and\n * that root field is not an introspection field.\n *\n * See https://spec.graphql.org/draft/#sec-Single-root-field\n */\nfunction SingleFieldSubscriptionsRule(context) {\n  return {\n    OperationDefinition(node) {\n      if (node.operation === 'subscription') {\n        const schema = context.getSchema();\n        const subscriptionType = schema.getSubscriptionType();\n\n        if (subscriptionType) {\n          const operationName = node.name ? node.name.value : null;\n          const variableValues = Object.create(null);\n          const document = context.getDocument();\n          const fragments = Object.create(null);\n\n          for (const definition of document.definitions) {\n            if (definition.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_0__.Kind.FRAGMENT_DEFINITION) {\n              fragments[definition.name.value] = definition;\n            }\n          }\n\n          const fields = (0,_execution_collectFields_mjs__WEBPACK_IMPORTED_MODULE_1__.collectFields)(\n            schema,\n            fragments,\n            variableValues,\n            subscriptionType,\n            node.selectionSet,\n          );\n\n          if (fields.size > 1) {\n            const fieldSelectionLists = [...fields.values()];\n            const extraFieldSelectionLists = fieldSelectionLists.slice(1);\n            const extraFieldSelections = extraFieldSelectionLists.flat();\n            context.reportError(\n              new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLError(\n                operationName != null\n                  ? `Subscription \"${operationName}\" must select only one top level field.`\n                  : 'Anonymous Subscription must select only one top level field.',\n                extraFieldSelections,\n              ),\n            );\n          }\n\n          for (const fieldNodes of fields.values()) {\n            const field = fieldNodes[0];\n            const fieldName = field.name.value;\n\n            if (fieldName.startsWith('__')) {\n              context.reportError(\n                new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLError(\n                  operationName != null\n                    ? `Subscription \"${operationName}\" must not select an introspection top level field.`\n                    : 'Anonymous Subscription must not select an introspection top level field.',\n                  fieldNodes,\n                ),\n              );\n            }\n          }\n        }\n      }\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1NpbmdsZUZpZWxkU3Vic2NyaXB0aW9uc1J1bGUubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBNEQ7QUFDWjtBQUNrQjs7QUFFbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0NBQW9DLHlFQUF3QjtBQUM1RDtBQUNBO0FBQ0E7O0FBRUEseUJBQXlCLDJFQUFhO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGlFQUFZO0FBQzlCO0FBQ0EscUNBQXFDLGNBQWM7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQixpRUFBWTtBQUNoQztBQUNBLHVDQUF1QyxjQUFjO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1NpbmdsZUZpZWxkU3Vic2NyaXB0aW9uc1J1bGUubWpzP2MwOTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbmltcG9ydCB7IGNvbGxlY3RGaWVsZHMgfSBmcm9tICcuLi8uLi9leGVjdXRpb24vY29sbGVjdEZpZWxkcy5tanMnO1xuXG4vKipcbiAqIFN1YnNjcmlwdGlvbnMgbXVzdCBvbmx5IGluY2x1ZGUgYSBub24taW50cm9zcGVjdGlvbiBmaWVsZC5cbiAqXG4gKiBBIEdyYXBoUUwgc3Vic2NyaXB0aW9uIGlzIHZhbGlkIG9ubHkgaWYgaXQgY29udGFpbnMgYSBzaW5nbGUgcm9vdCBmaWVsZCBhbmRcbiAqIHRoYXQgcm9vdCBmaWVsZCBpcyBub3QgYW4gaW50cm9zcGVjdGlvbiBmaWVsZC5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9zcGVjLmdyYXBocWwub3JnL2RyYWZ0LyNzZWMtU2luZ2xlLXJvb3QtZmllbGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFNpbmdsZUZpZWxkU3Vic2NyaXB0aW9uc1J1bGUoY29udGV4dCkge1xuICByZXR1cm4ge1xuICAgIE9wZXJhdGlvbkRlZmluaXRpb24obm9kZSkge1xuICAgICAgaWYgKG5vZGUub3BlcmF0aW9uID09PSAnc3Vic2NyaXB0aW9uJykge1xuICAgICAgICBjb25zdCBzY2hlbWEgPSBjb250ZXh0LmdldFNjaGVtYSgpO1xuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb25UeXBlID0gc2NoZW1hLmdldFN1YnNjcmlwdGlvblR5cGUoKTtcblxuICAgICAgICBpZiAoc3Vic2NyaXB0aW9uVHlwZSkge1xuICAgICAgICAgIGNvbnN0IG9wZXJhdGlvbk5hbWUgPSBub2RlLm5hbWUgPyBub2RlLm5hbWUudmFsdWUgOiBudWxsO1xuICAgICAgICAgIGNvbnN0IHZhcmlhYmxlVmFsdWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgICBjb25zdCBkb2N1bWVudCA9IGNvbnRleHQuZ2V0RG9jdW1lbnQoKTtcbiAgICAgICAgICBjb25zdCBmcmFnbWVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBkZWZpbml0aW9uIG9mIGRvY3VtZW50LmRlZmluaXRpb25zKSB7XG4gICAgICAgICAgICBpZiAoZGVmaW5pdGlvbi5raW5kID09PSBLaW5kLkZSQUdNRU5UX0RFRklOSVRJT04pIHtcbiAgICAgICAgICAgICAgZnJhZ21lbnRzW2RlZmluaXRpb24ubmFtZS52YWx1ZV0gPSBkZWZpbml0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGZpZWxkcyA9IGNvbGxlY3RGaWVsZHMoXG4gICAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgICBmcmFnbWVudHMsXG4gICAgICAgICAgICB2YXJpYWJsZVZhbHVlcyxcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvblR5cGUsXG4gICAgICAgICAgICBub2RlLnNlbGVjdGlvblNldCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGZpZWxkcy5zaXplID4gMSkge1xuICAgICAgICAgICAgY29uc3QgZmllbGRTZWxlY3Rpb25MaXN0cyA9IFsuLi5maWVsZHMudmFsdWVzKCldO1xuICAgICAgICAgICAgY29uc3QgZXh0cmFGaWVsZFNlbGVjdGlvbkxpc3RzID0gZmllbGRTZWxlY3Rpb25MaXN0cy5zbGljZSgxKTtcbiAgICAgICAgICAgIGNvbnN0IGV4dHJhRmllbGRTZWxlY3Rpb25zID0gZXh0cmFGaWVsZFNlbGVjdGlvbkxpc3RzLmZsYXQoKTtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uTmFtZSAhPSBudWxsXG4gICAgICAgICAgICAgICAgICA/IGBTdWJzY3JpcHRpb24gXCIke29wZXJhdGlvbk5hbWV9XCIgbXVzdCBzZWxlY3Qgb25seSBvbmUgdG9wIGxldmVsIGZpZWxkLmBcbiAgICAgICAgICAgICAgICAgIDogJ0Fub255bW91cyBTdWJzY3JpcHRpb24gbXVzdCBzZWxlY3Qgb25seSBvbmUgdG9wIGxldmVsIGZpZWxkLicsXG4gICAgICAgICAgICAgICAgZXh0cmFGaWVsZFNlbGVjdGlvbnMsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAoY29uc3QgZmllbGROb2RlcyBvZiBmaWVsZHMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZmllbGROb2Rlc1swXTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGZpZWxkLm5hbWUudmFsdWU7XG5cbiAgICAgICAgICAgIGlmIChmaWVsZE5hbWUuc3RhcnRzV2l0aCgnX18nKSkge1xuICAgICAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICAgICAgICBvcGVyYXRpb25OYW1lICE9IG51bGxcbiAgICAgICAgICAgICAgICAgICAgPyBgU3Vic2NyaXB0aW9uIFwiJHtvcGVyYXRpb25OYW1lfVwiIG11c3Qgbm90IHNlbGVjdCBhbiBpbnRyb3NwZWN0aW9uIHRvcCBsZXZlbCBmaWVsZC5gXG4gICAgICAgICAgICAgICAgICAgIDogJ0Fub255bW91cyBTdWJzY3JpcHRpb24gbXVzdCBub3Qgc2VsZWN0IGFuIGludHJvc3BlY3Rpb24gdG9wIGxldmVsIGZpZWxkLicsXG4gICAgICAgICAgICAgICAgICBmaWVsZE5vZGVzLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.mjs":
/*!*************************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.mjs ***!
  \*************************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UniqueArgumentDefinitionNamesRule\": function() { return /* binding */ UniqueArgumentDefinitionNamesRule; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_groupBy_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/groupBy.mjs */ \"./node_modules/graphql/jsutils/groupBy.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n\n\n/**\n * Unique argument definition names\n *\n * A GraphQL Object or Interface type is only valid if all its fields have uniquely named arguments.\n * A GraphQL Directive is only valid if all its arguments are uniquely named.\n */\nfunction UniqueArgumentDefinitionNamesRule(context) {\n  return {\n    DirectiveDefinition(directiveNode) {\n      var _directiveNode$argume;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n      /* c8 ignore next */\n      const argumentNodes =\n        (_directiveNode$argume = directiveNode.arguments) !== null &&\n        _directiveNode$argume !== void 0\n          ? _directiveNode$argume\n          : [];\n      return checkArgUniqueness(`@${directiveNode.name.value}`, argumentNodes);\n    },\n\n    InterfaceTypeDefinition: checkArgUniquenessPerField,\n    InterfaceTypeExtension: checkArgUniquenessPerField,\n    ObjectTypeDefinition: checkArgUniquenessPerField,\n    ObjectTypeExtension: checkArgUniquenessPerField,\n  };\n\n  function checkArgUniquenessPerField(typeNode) {\n    var _typeNode$fields;\n\n    const typeName = typeNode.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n    /* c8 ignore next */\n\n    const fieldNodes =\n      (_typeNode$fields = typeNode.fields) !== null &&\n      _typeNode$fields !== void 0\n        ? _typeNode$fields\n        : [];\n\n    for (const fieldDef of fieldNodes) {\n      var _fieldDef$arguments;\n\n      const fieldName = fieldDef.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n      /* c8 ignore next */\n\n      const argumentNodes =\n        (_fieldDef$arguments = fieldDef.arguments) !== null &&\n        _fieldDef$arguments !== void 0\n          ? _fieldDef$arguments\n          : [];\n      checkArgUniqueness(`${typeName}.${fieldName}`, argumentNodes);\n    }\n\n    return false;\n  }\n\n  function checkArgUniqueness(parentName, argumentNodes) {\n    const seenArgs = (0,_jsutils_groupBy_mjs__WEBPACK_IMPORTED_MODULE_0__.groupBy)(argumentNodes, (arg) => arg.name.value);\n\n    for (const [argName, argNodes] of seenArgs) {\n      if (argNodes.length > 1) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n            `Argument \"${parentName}(${argName}:)\" can only be defined once.`,\n            argNodes.map((node) => node.name),\n          ),\n        );\n      }\n    }\n\n    return false;\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZUFyZ3VtZW50RGVmaW5pdGlvbk5hbWVzUnVsZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQW9EO0FBQ1E7O0FBRTVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyx5QkFBeUI7QUFDN0QsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsMENBQTBDOztBQUUxQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsNkNBQTZDOztBQUU3Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFNBQVMsR0FBRyxVQUFVO0FBQ2xEOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUIsNkRBQU87O0FBRTVCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsaUVBQVk7QUFDMUIseUJBQXlCLFdBQVcsR0FBRyxRQUFRO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvVW5pcXVlQXJndW1lbnREZWZpbml0aW9uTmFtZXNSdWxlLm1qcz85MzQwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdyb3VwQnkgfSBmcm9tICcuLi8uLi9qc3V0aWxzL2dyb3VwQnkubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuXG4vKipcbiAqIFVuaXF1ZSBhcmd1bWVudCBkZWZpbml0aW9uIG5hbWVzXG4gKlxuICogQSBHcmFwaFFMIE9iamVjdCBvciBJbnRlcmZhY2UgdHlwZSBpcyBvbmx5IHZhbGlkIGlmIGFsbCBpdHMgZmllbGRzIGhhdmUgdW5pcXVlbHkgbmFtZWQgYXJndW1lbnRzLlxuICogQSBHcmFwaFFMIERpcmVjdGl2ZSBpcyBvbmx5IHZhbGlkIGlmIGFsbCBpdHMgYXJndW1lbnRzIGFyZSB1bmlxdWVseSBuYW1lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVuaXF1ZUFyZ3VtZW50RGVmaW5pdGlvbk5hbWVzUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgRGlyZWN0aXZlRGVmaW5pdGlvbihkaXJlY3RpdmVOb2RlKSB7XG4gICAgICB2YXIgX2RpcmVjdGl2ZU5vZGUkYXJndW1lO1xuXG4gICAgICAvLyBGSVhNRTogaHR0cHM6Ly9naXRodWIuY29tL2dyYXBocWwvZ3JhcGhxbC1qcy9pc3N1ZXMvMjIwM1xuXG4gICAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICAgICAgY29uc3QgYXJndW1lbnROb2RlcyA9XG4gICAgICAgIChfZGlyZWN0aXZlTm9kZSRhcmd1bWUgPSBkaXJlY3RpdmVOb2RlLmFyZ3VtZW50cykgIT09IG51bGwgJiZcbiAgICAgICAgX2RpcmVjdGl2ZU5vZGUkYXJndW1lICE9PSB2b2lkIDBcbiAgICAgICAgICA/IF9kaXJlY3RpdmVOb2RlJGFyZ3VtZVxuICAgICAgICAgIDogW107XG4gICAgICByZXR1cm4gY2hlY2tBcmdVbmlxdWVuZXNzKGBAJHtkaXJlY3RpdmVOb2RlLm5hbWUudmFsdWV9YCwgYXJndW1lbnROb2Rlcyk7XG4gICAgfSxcblxuICAgIEludGVyZmFjZVR5cGVEZWZpbml0aW9uOiBjaGVja0FyZ1VuaXF1ZW5lc3NQZXJGaWVsZCxcbiAgICBJbnRlcmZhY2VUeXBlRXh0ZW5zaW9uOiBjaGVja0FyZ1VuaXF1ZW5lc3NQZXJGaWVsZCxcbiAgICBPYmplY3RUeXBlRGVmaW5pdGlvbjogY2hlY2tBcmdVbmlxdWVuZXNzUGVyRmllbGQsXG4gICAgT2JqZWN0VHlwZUV4dGVuc2lvbjogY2hlY2tBcmdVbmlxdWVuZXNzUGVyRmllbGQsXG4gIH07XG5cbiAgZnVuY3Rpb24gY2hlY2tBcmdVbmlxdWVuZXNzUGVyRmllbGQodHlwZU5vZGUpIHtcbiAgICB2YXIgX3R5cGVOb2RlJGZpZWxkcztcblxuICAgIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5vZGUubmFtZS52YWx1ZTsgLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcblxuICAgIC8qIGM4IGlnbm9yZSBuZXh0ICovXG5cbiAgICBjb25zdCBmaWVsZE5vZGVzID1cbiAgICAgIChfdHlwZU5vZGUkZmllbGRzID0gdHlwZU5vZGUuZmllbGRzKSAhPT0gbnVsbCAmJlxuICAgICAgX3R5cGVOb2RlJGZpZWxkcyAhPT0gdm9pZCAwXG4gICAgICAgID8gX3R5cGVOb2RlJGZpZWxkc1xuICAgICAgICA6IFtdO1xuXG4gICAgZm9yIChjb25zdCBmaWVsZERlZiBvZiBmaWVsZE5vZGVzKSB7XG4gICAgICB2YXIgX2ZpZWxkRGVmJGFyZ3VtZW50cztcblxuICAgICAgY29uc3QgZmllbGROYW1lID0gZmllbGREZWYubmFtZS52YWx1ZTsgLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcblxuICAgICAgLyogYzggaWdub3JlIG5leHQgKi9cblxuICAgICAgY29uc3QgYXJndW1lbnROb2RlcyA9XG4gICAgICAgIChfZmllbGREZWYkYXJndW1lbnRzID0gZmllbGREZWYuYXJndW1lbnRzKSAhPT0gbnVsbCAmJlxuICAgICAgICBfZmllbGREZWYkYXJndW1lbnRzICE9PSB2b2lkIDBcbiAgICAgICAgICA/IF9maWVsZERlZiRhcmd1bWVudHNcbiAgICAgICAgICA6IFtdO1xuICAgICAgY2hlY2tBcmdVbmlxdWVuZXNzKGAke3R5cGVOYW1lfS4ke2ZpZWxkTmFtZX1gLCBhcmd1bWVudE5vZGVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmdW5jdGlvbiBjaGVja0FyZ1VuaXF1ZW5lc3MocGFyZW50TmFtZSwgYXJndW1lbnROb2Rlcykge1xuICAgIGNvbnN0IHNlZW5BcmdzID0gZ3JvdXBCeShhcmd1bWVudE5vZGVzLCAoYXJnKSA9PiBhcmcubmFtZS52YWx1ZSk7XG5cbiAgICBmb3IgKGNvbnN0IFthcmdOYW1lLCBhcmdOb2Rlc10gb2Ygc2VlbkFyZ3MpIHtcbiAgICAgIGlmIChhcmdOb2Rlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBBcmd1bWVudCBcIiR7cGFyZW50TmFtZX0oJHthcmdOYW1lfTopXCIgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbmNlLmAsXG4gICAgICAgICAgICBhcmdOb2Rlcy5tYXAoKG5vZGUpID0+IG5vZGUubmFtZSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs":
/*!***************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs ***!
  \***************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UniqueArgumentNamesRule\": function() { return /* binding */ UniqueArgumentNamesRule; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_groupBy_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/groupBy.mjs */ \"./node_modules/graphql/jsutils/groupBy.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n\n\n/**\n * Unique argument names\n *\n * A GraphQL field or directive is only valid if all supplied arguments are\n * uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Argument-Names\n */\nfunction UniqueArgumentNamesRule(context) {\n  return {\n    Field: checkArgUniqueness,\n    Directive: checkArgUniqueness,\n  };\n\n  function checkArgUniqueness(parentNode) {\n    var _parentNode$arguments;\n\n    // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n    /* c8 ignore next */\n    const argumentNodes =\n      (_parentNode$arguments = parentNode.arguments) !== null &&\n      _parentNode$arguments !== void 0\n        ? _parentNode$arguments\n        : [];\n    const seenArgs = (0,_jsutils_groupBy_mjs__WEBPACK_IMPORTED_MODULE_0__.groupBy)(argumentNodes, (arg) => arg.name.value);\n\n    for (const [argName, argNodes] of seenArgs) {\n      if (argNodes.length > 1) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n            `There can be only one argument named \"${argName}\".`,\n            argNodes.map((node) => node.name),\n          ),\n        );\n      }\n    }\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZUFyZ3VtZW50TmFtZXNSdWxlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBb0Q7QUFDUTs7QUFFNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNkRBQU87O0FBRTVCO0FBQ0E7QUFDQTtBQUNBLGNBQWMsaUVBQVk7QUFDMUIscURBQXFELFFBQVE7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVBcmd1bWVudE5hbWVzUnVsZS5tanM/MDQ2NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBncm91cEJ5IH0gZnJvbSAnLi4vLi4vanN1dGlscy9ncm91cEJ5Lm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcblxuLyoqXG4gKiBVbmlxdWUgYXJndW1lbnQgbmFtZXNcbiAqXG4gKiBBIEdyYXBoUUwgZmllbGQgb3IgZGlyZWN0aXZlIGlzIG9ubHkgdmFsaWQgaWYgYWxsIHN1cHBsaWVkIGFyZ3VtZW50cyBhcmVcbiAqIHVuaXF1ZWx5IG5hbWVkLlxuICpcbiAqIFNlZSBodHRwczovL3NwZWMuZ3JhcGhxbC5vcmcvZHJhZnQvI3NlYy1Bcmd1bWVudC1OYW1lc1xuICovXG5leHBvcnQgZnVuY3Rpb24gVW5pcXVlQXJndW1lbnROYW1lc1J1bGUoY29udGV4dCkge1xuICByZXR1cm4ge1xuICAgIEZpZWxkOiBjaGVja0FyZ1VuaXF1ZW5lc3MsXG4gICAgRGlyZWN0aXZlOiBjaGVja0FyZ1VuaXF1ZW5lc3MsXG4gIH07XG5cbiAgZnVuY3Rpb24gY2hlY2tBcmdVbmlxdWVuZXNzKHBhcmVudE5vZGUpIHtcbiAgICB2YXIgX3BhcmVudE5vZGUkYXJndW1lbnRzO1xuXG4gICAgLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcblxuICAgIC8qIGM4IGlnbm9yZSBuZXh0ICovXG4gICAgY29uc3QgYXJndW1lbnROb2RlcyA9XG4gICAgICAoX3BhcmVudE5vZGUkYXJndW1lbnRzID0gcGFyZW50Tm9kZS5hcmd1bWVudHMpICE9PSBudWxsICYmXG4gICAgICBfcGFyZW50Tm9kZSRhcmd1bWVudHMgIT09IHZvaWQgMFxuICAgICAgICA/IF9wYXJlbnROb2RlJGFyZ3VtZW50c1xuICAgICAgICA6IFtdO1xuICAgIGNvbnN0IHNlZW5BcmdzID0gZ3JvdXBCeShhcmd1bWVudE5vZGVzLCAoYXJnKSA9PiBhcmcubmFtZS52YWx1ZSk7XG5cbiAgICBmb3IgKGNvbnN0IFthcmdOYW1lLCBhcmdOb2Rlc10gb2Ygc2VlbkFyZ3MpIHtcbiAgICAgIGlmIChhcmdOb2Rlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBUaGVyZSBjYW4gYmUgb25seSBvbmUgYXJndW1lbnQgbmFtZWQgXCIke2FyZ05hbWV9XCIuYCxcbiAgICAgICAgICAgIGFyZ05vZGVzLm1hcCgobm9kZSkgPT4gbm9kZS5uYW1lKSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs":
/*!****************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs ***!
  \****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UniqueDirectiveNamesRule\": function() { return /* binding */ UniqueDirectiveNamesRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique directive names\n *\n * A GraphQL document is only valid if all defined directives have unique names.\n */\nfunction UniqueDirectiveNamesRule(context) {\n  const knownDirectiveNames = Object.create(null);\n  const schema = context.getSchema();\n  return {\n    DirectiveDefinition(node) {\n      const directiveName = node.name.value;\n\n      if (\n        schema !== null &&\n        schema !== void 0 &&\n        schema.getDirective(directiveName)\n      ) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n            `Directive \"@${directiveName}\" already exists in the schema. It cannot be redefined.`,\n            node.name,\n          ),\n        );\n        return;\n      }\n\n      if (knownDirectiveNames[directiveName]) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n            `There can be only one directive named \"@${directiveName}\".`,\n            [knownDirectiveNames[directiveName], node.name],\n          ),\n        );\n      } else {\n        knownDirectiveNames[directiveName] = node.name;\n      }\n\n      return false;\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZURpcmVjdGl2ZU5hbWVzUnVsZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNEQ7O0FBRTVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxpRUFBWTtBQUMxQiwyQkFBMkIsY0FBYztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLGlFQUFZO0FBQzFCLHVEQUF1RCxjQUFjO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVEaXJlY3RpdmVOYW1lc1J1bGUubWpzPzgwOTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5cbi8qKlxuICogVW5pcXVlIGRpcmVjdGl2ZSBuYW1lc1xuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGFsbCBkZWZpbmVkIGRpcmVjdGl2ZXMgaGF2ZSB1bmlxdWUgbmFtZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBVbmlxdWVEaXJlY3RpdmVOYW1lc1J1bGUoY29udGV4dCkge1xuICBjb25zdCBrbm93bkRpcmVjdGl2ZU5hbWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgY29uc3Qgc2NoZW1hID0gY29udGV4dC5nZXRTY2hlbWEoKTtcbiAgcmV0dXJuIHtcbiAgICBEaXJlY3RpdmVEZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgIGNvbnN0IGRpcmVjdGl2ZU5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG5cbiAgICAgIGlmIChcbiAgICAgICAgc2NoZW1hICE9PSBudWxsICYmXG4gICAgICAgIHNjaGVtYSAhPT0gdm9pZCAwICYmXG4gICAgICAgIHNjaGVtYS5nZXREaXJlY3RpdmUoZGlyZWN0aXZlTmFtZSlcbiAgICAgICkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgRGlyZWN0aXZlIFwiQCR7ZGlyZWN0aXZlTmFtZX1cIiBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgc2NoZW1hLiBJdCBjYW5ub3QgYmUgcmVkZWZpbmVkLmAsXG4gICAgICAgICAgICBub2RlLm5hbWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoa25vd25EaXJlY3RpdmVOYW1lc1tkaXJlY3RpdmVOYW1lXSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgVGhlcmUgY2FuIGJlIG9ubHkgb25lIGRpcmVjdGl2ZSBuYW1lZCBcIkAke2RpcmVjdGl2ZU5hbWV9XCIuYCxcbiAgICAgICAgICAgIFtrbm93bkRpcmVjdGl2ZU5hbWVzW2RpcmVjdGl2ZU5hbWVdLCBub2RlLm5hbWVdLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrbm93bkRpcmVjdGl2ZU5hbWVzW2RpcmVjdGl2ZU5hbWVdID0gbm9kZS5uYW1lO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs":
/*!***********************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs ***!
  \***********************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UniqueDirectivesPerLocationRule\": function() { return /* binding */ UniqueDirectivesPerLocationRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _language_predicates_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../language/predicates.mjs */ \"./node_modules/graphql/language/predicates.mjs\");\n/* harmony import */ var _type_directives_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../type/directives.mjs */ \"./node_modules/graphql/type/directives.mjs\");\n\n\n\n\n\n/**\n * Unique directive names per location\n *\n * A GraphQL document is only valid if all non-repeatable directives at\n * a given location are uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Directives-Are-Unique-Per-Location\n */\nfunction UniqueDirectivesPerLocationRule(context) {\n  const uniqueDirectiveMap = Object.create(null);\n  const schema = context.getSchema();\n  const definedDirectives = schema\n    ? schema.getDirectives()\n    : _type_directives_mjs__WEBPACK_IMPORTED_MODULE_0__.specifiedDirectives;\n\n  for (const directive of definedDirectives) {\n    uniqueDirectiveMap[directive.name] = !directive.isRepeatable;\n  }\n\n  const astDefinitions = context.getDocument().definitions;\n\n  for (const def of astDefinitions) {\n    if (def.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.DIRECTIVE_DEFINITION) {\n      uniqueDirectiveMap[def.name.value] = !def.repeatable;\n    }\n  }\n\n  const schemaDirectives = Object.create(null);\n  const typeDirectivesMap = Object.create(null);\n  return {\n    // Many different AST nodes may contain directives. Rather than listing\n    // them all, just listen for entering any node, and check to see if it\n    // defines any directives.\n    enter(node) {\n      if (!('directives' in node) || !node.directives) {\n        return;\n      }\n\n      let seenDirectives;\n\n      if (\n        node.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.SCHEMA_DEFINITION ||\n        node.kind === _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_1__.Kind.SCHEMA_EXTENSION\n      ) {\n        seenDirectives = schemaDirectives;\n      } else if ((0,_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_2__.isTypeDefinitionNode)(node) || (0,_language_predicates_mjs__WEBPACK_IMPORTED_MODULE_2__.isTypeExtensionNode)(node)) {\n        const typeName = node.name.value;\n        seenDirectives = typeDirectivesMap[typeName];\n\n        if (seenDirectives === undefined) {\n          typeDirectivesMap[typeName] = seenDirectives = Object.create(null);\n        }\n      } else {\n        seenDirectives = Object.create(null);\n      }\n\n      for (const directive of node.directives) {\n        const directiveName = directive.name.value;\n\n        if (uniqueDirectiveMap[directiveName]) {\n          if (seenDirectives[directiveName]) {\n            context.reportError(\n              new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLError(\n                `The directive \"@${directiveName}\" can only be used once at this location.`,\n                [seenDirectives[directiveName], directive],\n              ),\n            );\n          } else {\n            seenDirectives[directiveName] = directive;\n          }\n        }\n      }\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZURpcmVjdGl2ZXNQZXJMb2NhdGlvblJ1bGUubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQTREO0FBQ1o7QUFJVDtBQUN5Qjs7QUFFaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLHFFQUFtQjs7QUFFekI7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscUJBQXFCLDBFQUF5QjtBQUM5QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxzQkFBc0IsdUVBQXNCO0FBQzVDLHNCQUFzQixzRUFBcUI7QUFDM0M7QUFDQTtBQUNBLFFBQVEsU0FBUyw4RUFBb0IsVUFBVSw2RUFBbUI7QUFDbEU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixpRUFBWTtBQUM5QixtQ0FBbUMsY0FBYztBQUNqRDtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZURpcmVjdGl2ZXNQZXJMb2NhdGlvblJ1bGUubWpzP2U3MWMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBLaW5kIH0gZnJvbSAnLi4vLi4vbGFuZ3VhZ2Uva2luZHMubWpzJztcbmltcG9ydCB7XG4gIGlzVHlwZURlZmluaXRpb25Ob2RlLFxuICBpc1R5cGVFeHRlbnNpb25Ob2RlLFxufSBmcm9tICcuLi8uLi9sYW5ndWFnZS9wcmVkaWNhdGVzLm1qcyc7XG5pbXBvcnQgeyBzcGVjaWZpZWREaXJlY3RpdmVzIH0gZnJvbSAnLi4vLi4vdHlwZS9kaXJlY3RpdmVzLm1qcyc7XG5cbi8qKlxuICogVW5pcXVlIGRpcmVjdGl2ZSBuYW1lcyBwZXIgbG9jYXRpb25cbiAqXG4gKiBBIEdyYXBoUUwgZG9jdW1lbnQgaXMgb25seSB2YWxpZCBpZiBhbGwgbm9uLXJlcGVhdGFibGUgZGlyZWN0aXZlcyBhdFxuICogYSBnaXZlbiBsb2NhdGlvbiBhcmUgdW5pcXVlbHkgbmFtZWQuXG4gKlxuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLURpcmVjdGl2ZXMtQXJlLVVuaXF1ZS1QZXItTG9jYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVuaXF1ZURpcmVjdGl2ZXNQZXJMb2NhdGlvblJ1bGUoY29udGV4dCkge1xuICBjb25zdCB1bmlxdWVEaXJlY3RpdmVNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBjb25zdCBzY2hlbWEgPSBjb250ZXh0LmdldFNjaGVtYSgpO1xuICBjb25zdCBkZWZpbmVkRGlyZWN0aXZlcyA9IHNjaGVtYVxuICAgID8gc2NoZW1hLmdldERpcmVjdGl2ZXMoKVxuICAgIDogc3BlY2lmaWVkRGlyZWN0aXZlcztcblxuICBmb3IgKGNvbnN0IGRpcmVjdGl2ZSBvZiBkZWZpbmVkRGlyZWN0aXZlcykge1xuICAgIHVuaXF1ZURpcmVjdGl2ZU1hcFtkaXJlY3RpdmUubmFtZV0gPSAhZGlyZWN0aXZlLmlzUmVwZWF0YWJsZTtcbiAgfVxuXG4gIGNvbnN0IGFzdERlZmluaXRpb25zID0gY29udGV4dC5nZXREb2N1bWVudCgpLmRlZmluaXRpb25zO1xuXG4gIGZvciAoY29uc3QgZGVmIG9mIGFzdERlZmluaXRpb25zKSB7XG4gICAgaWYgKGRlZi5raW5kID09PSBLaW5kLkRJUkVDVElWRV9ERUZJTklUSU9OKSB7XG4gICAgICB1bmlxdWVEaXJlY3RpdmVNYXBbZGVmLm5hbWUudmFsdWVdID0gIWRlZi5yZXBlYXRhYmxlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNjaGVtYURpcmVjdGl2ZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBjb25zdCB0eXBlRGlyZWN0aXZlc01hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiB7XG4gICAgLy8gTWFueSBkaWZmZXJlbnQgQVNUIG5vZGVzIG1heSBjb250YWluIGRpcmVjdGl2ZXMuIFJhdGhlciB0aGFuIGxpc3RpbmdcbiAgICAvLyB0aGVtIGFsbCwganVzdCBsaXN0ZW4gZm9yIGVudGVyaW5nIGFueSBub2RlLCBhbmQgY2hlY2sgdG8gc2VlIGlmIGl0XG4gICAgLy8gZGVmaW5lcyBhbnkgZGlyZWN0aXZlcy5cbiAgICBlbnRlcihub2RlKSB7XG4gICAgICBpZiAoISgnZGlyZWN0aXZlcycgaW4gbm9kZSkgfHwgIW5vZGUuZGlyZWN0aXZlcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGxldCBzZWVuRGlyZWN0aXZlcztcblxuICAgICAgaWYgKFxuICAgICAgICBub2RlLmtpbmQgPT09IEtpbmQuU0NIRU1BX0RFRklOSVRJT04gfHxcbiAgICAgICAgbm9kZS5raW5kID09PSBLaW5kLlNDSEVNQV9FWFRFTlNJT05cbiAgICAgICkge1xuICAgICAgICBzZWVuRGlyZWN0aXZlcyA9IHNjaGVtYURpcmVjdGl2ZXM7XG4gICAgICB9IGVsc2UgaWYgKGlzVHlwZURlZmluaXRpb25Ob2RlKG5vZGUpIHx8IGlzVHlwZUV4dGVuc2lvbk5vZGUobm9kZSkpIHtcbiAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG4gICAgICAgIHNlZW5EaXJlY3RpdmVzID0gdHlwZURpcmVjdGl2ZXNNYXBbdHlwZU5hbWVdO1xuXG4gICAgICAgIGlmIChzZWVuRGlyZWN0aXZlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdHlwZURpcmVjdGl2ZXNNYXBbdHlwZU5hbWVdID0gc2VlbkRpcmVjdGl2ZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWVuRGlyZWN0aXZlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgZGlyZWN0aXZlIG9mIG5vZGUuZGlyZWN0aXZlcykge1xuICAgICAgICBjb25zdCBkaXJlY3RpdmVOYW1lID0gZGlyZWN0aXZlLm5hbWUudmFsdWU7XG5cbiAgICAgICAgaWYgKHVuaXF1ZURpcmVjdGl2ZU1hcFtkaXJlY3RpdmVOYW1lXSkge1xuICAgICAgICAgIGlmIChzZWVuRGlyZWN0aXZlc1tkaXJlY3RpdmVOYW1lXSkge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgICBgVGhlIGRpcmVjdGl2ZSBcIkAke2RpcmVjdGl2ZU5hbWV9XCIgY2FuIG9ubHkgYmUgdXNlZCBvbmNlIGF0IHRoaXMgbG9jYXRpb24uYCxcbiAgICAgICAgICAgICAgICBbc2VlbkRpcmVjdGl2ZXNbZGlyZWN0aXZlTmFtZV0sIGRpcmVjdGl2ZV0sXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWVuRGlyZWN0aXZlc1tkaXJlY3RpdmVOYW1lXSA9IGRpcmVjdGl2ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs":
/*!****************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs ***!
  \****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UniqueEnumValueNamesRule\": function() { return /* binding */ UniqueEnumValueNamesRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n\n\n\n/**\n * Unique enum value names\n *\n * A GraphQL enum type is only valid if all its values are uniquely named.\n */\nfunction UniqueEnumValueNamesRule(context) {\n  const schema = context.getSchema();\n  const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n  const knownValueNames = Object.create(null);\n  return {\n    EnumTypeDefinition: checkValueUniqueness,\n    EnumTypeExtension: checkValueUniqueness,\n  };\n\n  function checkValueUniqueness(node) {\n    var _node$values;\n\n    const typeName = node.name.value;\n\n    if (!knownValueNames[typeName]) {\n      knownValueNames[typeName] = Object.create(null);\n    } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n    /* c8 ignore next */\n\n    const valueNodes =\n      (_node$values = node.values) !== null && _node$values !== void 0\n        ? _node$values\n        : [];\n    const valueNames = knownValueNames[typeName];\n\n    for (const valueDef of valueNodes) {\n      const valueName = valueDef.name.value;\n      const existingType = existingTypeMap[typeName];\n\n      if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isEnumType)(existingType) && existingType.getValue(valueName)) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n            `Enum value \"${typeName}.${valueName}\" already exists in the schema. It cannot also be defined in this type extension.`,\n            valueDef.name,\n          ),\n        );\n      } else if (valueNames[valueName]) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n            `Enum value \"${typeName}.${valueName}\" can only be defined once.`,\n            [valueNames[valueName], valueDef.name],\n          ),\n        );\n      } else {\n        valueNames[valueName] = valueDef.name;\n      }\n    }\n\n    return false;\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZUVudW1WYWx1ZU5hbWVzUnVsZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTREO0FBQ0w7O0FBRXZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU07O0FBRU47O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsVUFBVSxnRUFBVTtBQUNwQjtBQUNBLGNBQWMsaUVBQVk7QUFDMUIsMkJBQTJCLFNBQVMsR0FBRyxVQUFVO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLGNBQWMsaUVBQVk7QUFDMUIsMkJBQTJCLFNBQVMsR0FBRyxVQUFVO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvVW5pcXVlRW51bVZhbHVlTmFtZXNSdWxlLm1qcz81YzMwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgaXNFbnVtVHlwZSB9IGZyb20gJy4uLy4uL3R5cGUvZGVmaW5pdGlvbi5tanMnO1xuXG4vKipcbiAqIFVuaXF1ZSBlbnVtIHZhbHVlIG5hbWVzXG4gKlxuICogQSBHcmFwaFFMIGVudW0gdHlwZSBpcyBvbmx5IHZhbGlkIGlmIGFsbCBpdHMgdmFsdWVzIGFyZSB1bmlxdWVseSBuYW1lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVuaXF1ZUVudW1WYWx1ZU5hbWVzUnVsZShjb250ZXh0KSB7XG4gIGNvbnN0IHNjaGVtYSA9IGNvbnRleHQuZ2V0U2NoZW1hKCk7XG4gIGNvbnN0IGV4aXN0aW5nVHlwZU1hcCA9IHNjaGVtYSA/IHNjaGVtYS5nZXRUeXBlTWFwKCkgOiBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBjb25zdCBrbm93blZhbHVlTmFtZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4ge1xuICAgIEVudW1UeXBlRGVmaW5pdGlvbjogY2hlY2tWYWx1ZVVuaXF1ZW5lc3MsXG4gICAgRW51bVR5cGVFeHRlbnNpb246IGNoZWNrVmFsdWVVbmlxdWVuZXNzLFxuICB9O1xuXG4gIGZ1bmN0aW9uIGNoZWNrVmFsdWVVbmlxdWVuZXNzKG5vZGUpIHtcbiAgICB2YXIgX25vZGUkdmFsdWVzO1xuXG4gICAgY29uc3QgdHlwZU5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG5cbiAgICBpZiAoIWtub3duVmFsdWVOYW1lc1t0eXBlTmFtZV0pIHtcbiAgICAgIGtub3duVmFsdWVOYW1lc1t0eXBlTmFtZV0gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIH0gLy8gRklYTUU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcblxuICAgIC8qIGM4IGlnbm9yZSBuZXh0ICovXG5cbiAgICBjb25zdCB2YWx1ZU5vZGVzID1cbiAgICAgIChfbm9kZSR2YWx1ZXMgPSBub2RlLnZhbHVlcykgIT09IG51bGwgJiYgX25vZGUkdmFsdWVzICE9PSB2b2lkIDBcbiAgICAgICAgPyBfbm9kZSR2YWx1ZXNcbiAgICAgICAgOiBbXTtcbiAgICBjb25zdCB2YWx1ZU5hbWVzID0ga25vd25WYWx1ZU5hbWVzW3R5cGVOYW1lXTtcblxuICAgIGZvciAoY29uc3QgdmFsdWVEZWYgb2YgdmFsdWVOb2Rlcykge1xuICAgICAgY29uc3QgdmFsdWVOYW1lID0gdmFsdWVEZWYubmFtZS52YWx1ZTtcbiAgICAgIGNvbnN0IGV4aXN0aW5nVHlwZSA9IGV4aXN0aW5nVHlwZU1hcFt0eXBlTmFtZV07XG5cbiAgICAgIGlmIChpc0VudW1UeXBlKGV4aXN0aW5nVHlwZSkgJiYgZXhpc3RpbmdUeXBlLmdldFZhbHVlKHZhbHVlTmFtZSkpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYEVudW0gdmFsdWUgXCIke3R5cGVOYW1lfS4ke3ZhbHVlTmFtZX1cIiBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgc2NoZW1hLiBJdCBjYW5ub3QgYWxzbyBiZSBkZWZpbmVkIGluIHRoaXMgdHlwZSBleHRlbnNpb24uYCxcbiAgICAgICAgICAgIHZhbHVlRGVmLm5hbWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWVOYW1lc1t2YWx1ZU5hbWVdKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBFbnVtIHZhbHVlIFwiJHt0eXBlTmFtZX0uJHt2YWx1ZU5hbWV9XCIgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbmNlLmAsXG4gICAgICAgICAgICBbdmFsdWVOYW1lc1t2YWx1ZU5hbWVdLCB2YWx1ZURlZi5uYW1lXSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWVOYW1lc1t2YWx1ZU5hbWVdID0gdmFsdWVEZWYubmFtZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs":
/*!**********************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs ***!
  \**********************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UniqueFieldDefinitionNamesRule\": function() { return /* binding */ UniqueFieldDefinitionNamesRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n\n\n\n/**\n * Unique field definition names\n *\n * A GraphQL complex type is only valid if all its fields are uniquely named.\n */\nfunction UniqueFieldDefinitionNamesRule(context) {\n  const schema = context.getSchema();\n  const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n  const knownFieldNames = Object.create(null);\n  return {\n    InputObjectTypeDefinition: checkFieldUniqueness,\n    InputObjectTypeExtension: checkFieldUniqueness,\n    InterfaceTypeDefinition: checkFieldUniqueness,\n    InterfaceTypeExtension: checkFieldUniqueness,\n    ObjectTypeDefinition: checkFieldUniqueness,\n    ObjectTypeExtension: checkFieldUniqueness,\n  };\n\n  function checkFieldUniqueness(node) {\n    var _node$fields;\n\n    const typeName = node.name.value;\n\n    if (!knownFieldNames[typeName]) {\n      knownFieldNames[typeName] = Object.create(null);\n    } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n    /* c8 ignore next */\n\n    const fieldNodes =\n      (_node$fields = node.fields) !== null && _node$fields !== void 0\n        ? _node$fields\n        : [];\n    const fieldNames = knownFieldNames[typeName];\n\n    for (const fieldDef of fieldNodes) {\n      const fieldName = fieldDef.name.value;\n\n      if (hasField(existingTypeMap[typeName], fieldName)) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n            `Field \"${typeName}.${fieldName}\" already exists in the schema. It cannot also be defined in this type extension.`,\n            fieldDef.name,\n          ),\n        );\n      } else if (fieldNames[fieldName]) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n            `Field \"${typeName}.${fieldName}\" can only be defined once.`,\n            [fieldNames[fieldName], fieldDef.name],\n          ),\n        );\n      } else {\n        fieldNames[fieldName] = fieldDef.name;\n      }\n    }\n\n    return false;\n  }\n}\n\nfunction hasField(type, fieldName) {\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isObjectType)(type) || (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isInterfaceType)(type) || (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isInputObjectType)(type)) {\n    return type.getFields()[fieldName] != null;\n  }\n\n  return false;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZUZpZWxkRGVmaW5pdGlvbk5hbWVzUnVsZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTREO0FBS3pCOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU07O0FBRU47O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLGlFQUFZO0FBQzFCLHNCQUFzQixTQUFTLEdBQUcsVUFBVTtBQUM1QztBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxjQUFjLGlFQUFZO0FBQzFCLHNCQUFzQixTQUFTLEdBQUcsVUFBVTtBQUM1QztBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU0sa0VBQVksVUFBVSxxRUFBZSxVQUFVLHVFQUFpQjtBQUN0RTtBQUNBOztBQUVBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVGaWVsZERlZmluaXRpb25OYW1lc1J1bGUubWpzPzYyNDIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQge1xuICBpc0lucHV0T2JqZWN0VHlwZSxcbiAgaXNJbnRlcmZhY2VUeXBlLFxuICBpc09iamVjdFR5cGUsXG59IGZyb20gJy4uLy4uL3R5cGUvZGVmaW5pdGlvbi5tanMnO1xuXG4vKipcbiAqIFVuaXF1ZSBmaWVsZCBkZWZpbml0aW9uIG5hbWVzXG4gKlxuICogQSBHcmFwaFFMIGNvbXBsZXggdHlwZSBpcyBvbmx5IHZhbGlkIGlmIGFsbCBpdHMgZmllbGRzIGFyZSB1bmlxdWVseSBuYW1lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVuaXF1ZUZpZWxkRGVmaW5pdGlvbk5hbWVzUnVsZShjb250ZXh0KSB7XG4gIGNvbnN0IHNjaGVtYSA9IGNvbnRleHQuZ2V0U2NoZW1hKCk7XG4gIGNvbnN0IGV4aXN0aW5nVHlwZU1hcCA9IHNjaGVtYSA/IHNjaGVtYS5nZXRUeXBlTWFwKCkgOiBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBjb25zdCBrbm93bkZpZWxkTmFtZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4ge1xuICAgIElucHV0T2JqZWN0VHlwZURlZmluaXRpb246IGNoZWNrRmllbGRVbmlxdWVuZXNzLFxuICAgIElucHV0T2JqZWN0VHlwZUV4dGVuc2lvbjogY2hlY2tGaWVsZFVuaXF1ZW5lc3MsXG4gICAgSW50ZXJmYWNlVHlwZURlZmluaXRpb246IGNoZWNrRmllbGRVbmlxdWVuZXNzLFxuICAgIEludGVyZmFjZVR5cGVFeHRlbnNpb246IGNoZWNrRmllbGRVbmlxdWVuZXNzLFxuICAgIE9iamVjdFR5cGVEZWZpbml0aW9uOiBjaGVja0ZpZWxkVW5pcXVlbmVzcyxcbiAgICBPYmplY3RUeXBlRXh0ZW5zaW9uOiBjaGVja0ZpZWxkVW5pcXVlbmVzcyxcbiAgfTtcblxuICBmdW5jdGlvbiBjaGVja0ZpZWxkVW5pcXVlbmVzcyhub2RlKSB7XG4gICAgdmFyIF9ub2RlJGZpZWxkcztcblxuICAgIGNvbnN0IHR5cGVOYW1lID0gbm9kZS5uYW1lLnZhbHVlO1xuXG4gICAgaWYgKCFrbm93bkZpZWxkTmFtZXNbdHlwZU5hbWVdKSB7XG4gICAgICBrbm93bkZpZWxkTmFtZXNbdHlwZU5hbWVdID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB9IC8vIEZJWE1FOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhcGhxbC9ncmFwaHFsLWpzL2lzc3Vlcy8yMjAzXG5cbiAgICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuXG4gICAgY29uc3QgZmllbGROb2RlcyA9XG4gICAgICAoX25vZGUkZmllbGRzID0gbm9kZS5maWVsZHMpICE9PSBudWxsICYmIF9ub2RlJGZpZWxkcyAhPT0gdm9pZCAwXG4gICAgICAgID8gX25vZGUkZmllbGRzXG4gICAgICAgIDogW107XG4gICAgY29uc3QgZmllbGROYW1lcyA9IGtub3duRmllbGROYW1lc1t0eXBlTmFtZV07XG5cbiAgICBmb3IgKGNvbnN0IGZpZWxkRGVmIG9mIGZpZWxkTm9kZXMpIHtcbiAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGZpZWxkRGVmLm5hbWUudmFsdWU7XG5cbiAgICAgIGlmIChoYXNGaWVsZChleGlzdGluZ1R5cGVNYXBbdHlwZU5hbWVdLCBmaWVsZE5hbWUpKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBGaWVsZCBcIiR7dHlwZU5hbWV9LiR7ZmllbGROYW1lfVwiIGFscmVhZHkgZXhpc3RzIGluIHRoZSBzY2hlbWEuIEl0IGNhbm5vdCBhbHNvIGJlIGRlZmluZWQgaW4gdGhpcyB0eXBlIGV4dGVuc2lvbi5gLFxuICAgICAgICAgICAgZmllbGREZWYubmFtZSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChmaWVsZE5hbWVzW2ZpZWxkTmFtZV0pIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYEZpZWxkIFwiJHt0eXBlTmFtZX0uJHtmaWVsZE5hbWV9XCIgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbmNlLmAsXG4gICAgICAgICAgICBbZmllbGROYW1lc1tmaWVsZE5hbWVdLCBmaWVsZERlZi5uYW1lXSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmllbGROYW1lc1tmaWVsZE5hbWVdID0gZmllbGREZWYubmFtZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFzRmllbGQodHlwZSwgZmllbGROYW1lKSB7XG4gIGlmIChpc09iamVjdFR5cGUodHlwZSkgfHwgaXNJbnRlcmZhY2VUeXBlKHR5cGUpIHx8IGlzSW5wdXRPYmplY3RUeXBlKHR5cGUpKSB7XG4gICAgcmV0dXJuIHR5cGUuZ2V0RmllbGRzKClbZmllbGROYW1lXSAhPSBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs":
/*!***************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs ***!
  \***************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UniqueFragmentNamesRule\": function() { return /* binding */ UniqueFragmentNamesRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique fragment names\n *\n * A GraphQL document is only valid if all defined fragments have unique names.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-Name-Uniqueness\n */\nfunction UniqueFragmentNamesRule(context) {\n  const knownFragmentNames = Object.create(null);\n  return {\n    OperationDefinition: () => false,\n\n    FragmentDefinition(node) {\n      const fragmentName = node.name.value;\n\n      if (knownFragmentNames[fragmentName]) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n            `There can be only one fragment named \"${fragmentName}\".`,\n            [knownFragmentNames[fragmentName], node.name],\n          ),\n        );\n      } else {\n        knownFragmentNames[fragmentName] = node.name;\n      }\n\n      return false;\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZUZyYWdtZW50TmFtZXNSdWxlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUE0RDs7QUFFNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxjQUFjLGlFQUFZO0FBQzFCLHFEQUFxRCxhQUFhO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVGcmFnbWVudE5hbWVzUnVsZS5tanM/NTc3YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcblxuLyoqXG4gKiBVbmlxdWUgZnJhZ21lbnQgbmFtZXNcbiAqXG4gKiBBIEdyYXBoUUwgZG9jdW1lbnQgaXMgb25seSB2YWxpZCBpZiBhbGwgZGVmaW5lZCBmcmFnbWVudHMgaGF2ZSB1bmlxdWUgbmFtZXMuXG4gKlxuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLUZyYWdtZW50LU5hbWUtVW5pcXVlbmVzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gVW5pcXVlRnJhZ21lbnROYW1lc1J1bGUoY29udGV4dCkge1xuICBjb25zdCBrbm93bkZyYWdtZW50TmFtZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4ge1xuICAgIE9wZXJhdGlvbkRlZmluaXRpb246ICgpID0+IGZhbHNlLFxuXG4gICAgRnJhZ21lbnREZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgIGNvbnN0IGZyYWdtZW50TmFtZSA9IG5vZGUubmFtZS52YWx1ZTtcblxuICAgICAgaWYgKGtub3duRnJhZ21lbnROYW1lc1tmcmFnbWVudE5hbWVdKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBUaGVyZSBjYW4gYmUgb25seSBvbmUgZnJhZ21lbnQgbmFtZWQgXCIke2ZyYWdtZW50TmFtZX1cIi5gLFxuICAgICAgICAgICAgW2tub3duRnJhZ21lbnROYW1lc1tmcmFnbWVudE5hbWVdLCBub2RlLm5hbWVdLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrbm93bkZyYWdtZW50TmFtZXNbZnJhZ21lbnROYW1lXSA9IG5vZGUubmFtZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs":
/*!*****************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs ***!
  \*****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UniqueInputFieldNamesRule\": function() { return /* binding */ UniqueInputFieldNamesRule; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/invariant.mjs */ \"./node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n\n\n/**\n * Unique input field names\n *\n * A GraphQL input object value is only valid if all supplied fields are\n * uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness\n */\nfunction UniqueInputFieldNamesRule(context) {\n  const knownNameStack = [];\n  let knownNames = Object.create(null);\n  return {\n    ObjectValue: {\n      enter() {\n        knownNameStack.push(knownNames);\n        knownNames = Object.create(null);\n      },\n\n      leave() {\n        const prevKnownNames = knownNameStack.pop();\n        prevKnownNames || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__.invariant)(false);\n        knownNames = prevKnownNames;\n      },\n    },\n\n    ObjectField(node) {\n      const fieldName = node.name.value;\n\n      if (knownNames[fieldName]) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n            `There can be only one input field named \"${fieldName}\".`,\n            [knownNames[fieldName], node.name],\n          ),\n        );\n      } else {\n        knownNames[fieldName] = node.name;\n      }\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZUlucHV0RmllbGROYW1lc1J1bGUubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUF3RDtBQUNJOztBQUU1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBLDBCQUEwQixpRUFBUztBQUNuQztBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGNBQWMsaUVBQVk7QUFDMUIsd0RBQXdELFVBQVU7QUFDbEU7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZUlucHV0RmllbGROYW1lc1J1bGUubWpzPzU1YzIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW52YXJpYW50IH0gZnJvbSAnLi4vLi4vanN1dGlscy9pbnZhcmlhbnQubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuXG4vKipcbiAqIFVuaXF1ZSBpbnB1dCBmaWVsZCBuYW1lc1xuICpcbiAqIEEgR3JhcGhRTCBpbnB1dCBvYmplY3QgdmFsdWUgaXMgb25seSB2YWxpZCBpZiBhbGwgc3VwcGxpZWQgZmllbGRzIGFyZVxuICogdW5pcXVlbHkgbmFtZWQuXG4gKlxuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLUlucHV0LU9iamVjdC1GaWVsZC1VbmlxdWVuZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBVbmlxdWVJbnB1dEZpZWxkTmFtZXNSdWxlKGNvbnRleHQpIHtcbiAgY29uc3Qga25vd25OYW1lU3RhY2sgPSBbXTtcbiAgbGV0IGtub3duTmFtZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4ge1xuICAgIE9iamVjdFZhbHVlOiB7XG4gICAgICBlbnRlcigpIHtcbiAgICAgICAga25vd25OYW1lU3RhY2sucHVzaChrbm93bk5hbWVzKTtcbiAgICAgICAga25vd25OYW1lcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICB9LFxuXG4gICAgICBsZWF2ZSgpIHtcbiAgICAgICAgY29uc3QgcHJldktub3duTmFtZXMgPSBrbm93bk5hbWVTdGFjay5wb3AoKTtcbiAgICAgICAgcHJldktub3duTmFtZXMgfHwgaW52YXJpYW50KGZhbHNlKTtcbiAgICAgICAga25vd25OYW1lcyA9IHByZXZLbm93bk5hbWVzO1xuICAgICAgfSxcbiAgICB9LFxuXG4gICAgT2JqZWN0RmllbGQobm9kZSkge1xuICAgICAgY29uc3QgZmllbGROYW1lID0gbm9kZS5uYW1lLnZhbHVlO1xuXG4gICAgICBpZiAoa25vd25OYW1lc1tmaWVsZE5hbWVdKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBUaGVyZSBjYW4gYmUgb25seSBvbmUgaW5wdXQgZmllbGQgbmFtZWQgXCIke2ZpZWxkTmFtZX1cIi5gLFxuICAgICAgICAgICAgW2tub3duTmFtZXNbZmllbGROYW1lXSwgbm9kZS5uYW1lXSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAga25vd25OYW1lc1tmaWVsZE5hbWVdID0gbm9kZS5uYW1lO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs":
/*!****************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs ***!
  \****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UniqueOperationNamesRule\": function() { return /* binding */ UniqueOperationNamesRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique operation names\n *\n * A GraphQL document is only valid if all defined operations have unique names.\n *\n * See https://spec.graphql.org/draft/#sec-Operation-Name-Uniqueness\n */\nfunction UniqueOperationNamesRule(context) {\n  const knownOperationNames = Object.create(null);\n  return {\n    OperationDefinition(node) {\n      const operationName = node.name;\n\n      if (operationName) {\n        if (knownOperationNames[operationName.value]) {\n          context.reportError(\n            new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n              `There can be only one operation named \"${operationName.value}\".`,\n              [knownOperationNames[operationName.value], operationName],\n            ),\n          );\n        } else {\n          knownOperationNames[operationName.value] = operationName;\n        }\n      }\n\n      return false;\n    },\n\n    FragmentDefinition: () => false,\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZU9wZXJhdGlvbk5hbWVzUnVsZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNEQ7O0FBRTVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsaUVBQVk7QUFDNUIsd0RBQXdELG9CQUFvQjtBQUM1RTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVPcGVyYXRpb25OYW1lc1J1bGUubWpzPzdiMDIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5cbi8qKlxuICogVW5pcXVlIG9wZXJhdGlvbiBuYW1lc1xuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGFsbCBkZWZpbmVkIG9wZXJhdGlvbnMgaGF2ZSB1bmlxdWUgbmFtZXMuXG4gKlxuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLU9wZXJhdGlvbi1OYW1lLVVuaXF1ZW5lc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFVuaXF1ZU9wZXJhdGlvbk5hbWVzUnVsZShjb250ZXh0KSB7XG4gIGNvbnN0IGtub3duT3BlcmF0aW9uTmFtZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4ge1xuICAgIE9wZXJhdGlvbkRlZmluaXRpb24obm9kZSkge1xuICAgICAgY29uc3Qgb3BlcmF0aW9uTmFtZSA9IG5vZGUubmFtZTtcblxuICAgICAgaWYgKG9wZXJhdGlvbk5hbWUpIHtcbiAgICAgICAgaWYgKGtub3duT3BlcmF0aW9uTmFtZXNbb3BlcmF0aW9uTmFtZS52YWx1ZV0pIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgYFRoZXJlIGNhbiBiZSBvbmx5IG9uZSBvcGVyYXRpb24gbmFtZWQgXCIke29wZXJhdGlvbk5hbWUudmFsdWV9XCIuYCxcbiAgICAgICAgICAgICAgW2tub3duT3BlcmF0aW9uTmFtZXNbb3BlcmF0aW9uTmFtZS52YWx1ZV0sIG9wZXJhdGlvbk5hbWVdLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGtub3duT3BlcmF0aW9uTmFtZXNbb3BlcmF0aW9uTmFtZS52YWx1ZV0gPSBvcGVyYXRpb25OYW1lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuXG4gICAgRnJhZ21lbnREZWZpbml0aW9uOiAoKSA9PiBmYWxzZSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs":
/*!****************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs ***!
  \****************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UniqueOperationTypesRule\": function() { return /* binding */ UniqueOperationTypesRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique operation types\n *\n * A GraphQL document is only valid if it has only one type per operation.\n */\nfunction UniqueOperationTypesRule(context) {\n  const schema = context.getSchema();\n  const definedOperationTypes = Object.create(null);\n  const existingOperationTypes = schema\n    ? {\n        query: schema.getQueryType(),\n        mutation: schema.getMutationType(),\n        subscription: schema.getSubscriptionType(),\n      }\n    : {};\n  return {\n    SchemaDefinition: checkOperationTypes,\n    SchemaExtension: checkOperationTypes,\n  };\n\n  function checkOperationTypes(node) {\n    var _node$operationTypes;\n\n    // See: https://github.com/graphql/graphql-js/issues/2203\n\n    /* c8 ignore next */\n    const operationTypesNodes =\n      (_node$operationTypes = node.operationTypes) !== null &&\n      _node$operationTypes !== void 0\n        ? _node$operationTypes\n        : [];\n\n    for (const operationType of operationTypesNodes) {\n      const operation = operationType.operation;\n      const alreadyDefinedOperationType = definedOperationTypes[operation];\n\n      if (existingOperationTypes[operation]) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n            `Type for ${operation} already defined in the schema. It cannot be redefined.`,\n            operationType,\n          ),\n        );\n      } else if (alreadyDefinedOperationType) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n            `There can be only one ${operation} type in schema.`,\n            [alreadyDefinedOperationType, operationType],\n          ),\n        );\n      } else {\n        definedOperationTypes[operation] = operationType;\n      }\n    }\n\n    return false;\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZU9wZXJhdGlvblR5cGVzUnVsZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBNEQ7O0FBRTVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsY0FBYyxpRUFBWTtBQUMxQix3QkFBd0IsV0FBVztBQUNuQztBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxjQUFjLGlFQUFZO0FBQzFCLHFDQUFxQyxXQUFXO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvVW5pcXVlT3BlcmF0aW9uVHlwZXNSdWxlLm1qcz85NzkxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuXG4vKipcbiAqIFVuaXF1ZSBvcGVyYXRpb24gdHlwZXNcbiAqXG4gKiBBIEdyYXBoUUwgZG9jdW1lbnQgaXMgb25seSB2YWxpZCBpZiBpdCBoYXMgb25seSBvbmUgdHlwZSBwZXIgb3BlcmF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVW5pcXVlT3BlcmF0aW9uVHlwZXNSdWxlKGNvbnRleHQpIHtcbiAgY29uc3Qgc2NoZW1hID0gY29udGV4dC5nZXRTY2hlbWEoKTtcbiAgY29uc3QgZGVmaW5lZE9wZXJhdGlvblR5cGVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgY29uc3QgZXhpc3RpbmdPcGVyYXRpb25UeXBlcyA9IHNjaGVtYVxuICAgID8ge1xuICAgICAgICBxdWVyeTogc2NoZW1hLmdldFF1ZXJ5VHlwZSgpLFxuICAgICAgICBtdXRhdGlvbjogc2NoZW1hLmdldE11dGF0aW9uVHlwZSgpLFxuICAgICAgICBzdWJzY3JpcHRpb246IHNjaGVtYS5nZXRTdWJzY3JpcHRpb25UeXBlKCksXG4gICAgICB9XG4gICAgOiB7fTtcbiAgcmV0dXJuIHtcbiAgICBTY2hlbWFEZWZpbml0aW9uOiBjaGVja09wZXJhdGlvblR5cGVzLFxuICAgIFNjaGVtYUV4dGVuc2lvbjogY2hlY2tPcGVyYXRpb25UeXBlcyxcbiAgfTtcblxuICBmdW5jdGlvbiBjaGVja09wZXJhdGlvblR5cGVzKG5vZGUpIHtcbiAgICB2YXIgX25vZGUkb3BlcmF0aW9uVHlwZXM7XG5cbiAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcblxuICAgIC8qIGM4IGlnbm9yZSBuZXh0ICovXG4gICAgY29uc3Qgb3BlcmF0aW9uVHlwZXNOb2RlcyA9XG4gICAgICAoX25vZGUkb3BlcmF0aW9uVHlwZXMgPSBub2RlLm9wZXJhdGlvblR5cGVzKSAhPT0gbnVsbCAmJlxuICAgICAgX25vZGUkb3BlcmF0aW9uVHlwZXMgIT09IHZvaWQgMFxuICAgICAgICA/IF9ub2RlJG9wZXJhdGlvblR5cGVzXG4gICAgICAgIDogW107XG5cbiAgICBmb3IgKGNvbnN0IG9wZXJhdGlvblR5cGUgb2Ygb3BlcmF0aW9uVHlwZXNOb2Rlcykge1xuICAgICAgY29uc3Qgb3BlcmF0aW9uID0gb3BlcmF0aW9uVHlwZS5vcGVyYXRpb247XG4gICAgICBjb25zdCBhbHJlYWR5RGVmaW5lZE9wZXJhdGlvblR5cGUgPSBkZWZpbmVkT3BlcmF0aW9uVHlwZXNbb3BlcmF0aW9uXTtcblxuICAgICAgaWYgKGV4aXN0aW5nT3BlcmF0aW9uVHlwZXNbb3BlcmF0aW9uXSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgVHlwZSBmb3IgJHtvcGVyYXRpb259IGFscmVhZHkgZGVmaW5lZCBpbiB0aGUgc2NoZW1hLiBJdCBjYW5ub3QgYmUgcmVkZWZpbmVkLmAsXG4gICAgICAgICAgICBvcGVyYXRpb25UeXBlLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGFscmVhZHlEZWZpbmVkT3BlcmF0aW9uVHlwZSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgVGhlcmUgY2FuIGJlIG9ubHkgb25lICR7b3BlcmF0aW9ufSB0eXBlIGluIHNjaGVtYS5gLFxuICAgICAgICAgICAgW2FscmVhZHlEZWZpbmVkT3BlcmF0aW9uVHlwZSwgb3BlcmF0aW9uVHlwZV0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlZmluZWRPcGVyYXRpb25UeXBlc1tvcGVyYXRpb25dID0gb3BlcmF0aW9uVHlwZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs":
/*!***********************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs ***!
  \***********************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UniqueTypeNamesRule\": function() { return /* binding */ UniqueTypeNamesRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n\n/**\n * Unique type names\n *\n * A GraphQL document is only valid if all defined types have unique names.\n */\nfunction UniqueTypeNamesRule(context) {\n  const knownTypeNames = Object.create(null);\n  const schema = context.getSchema();\n  return {\n    ScalarTypeDefinition: checkTypeName,\n    ObjectTypeDefinition: checkTypeName,\n    InterfaceTypeDefinition: checkTypeName,\n    UnionTypeDefinition: checkTypeName,\n    EnumTypeDefinition: checkTypeName,\n    InputObjectTypeDefinition: checkTypeName,\n  };\n\n  function checkTypeName(node) {\n    const typeName = node.name.value;\n\n    if (schema !== null && schema !== void 0 && schema.getType(typeName)) {\n      context.reportError(\n        new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(\n          `Type \"${typeName}\" already exists in the schema. It cannot also be defined in this type definition.`,\n          node.name,\n        ),\n      );\n      return;\n    }\n\n    if (knownTypeNames[typeName]) {\n      context.reportError(\n        new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_0__.GraphQLError(`There can be only one type named \"${typeName}\".`, [\n          knownTypeNames[typeName],\n          node.name,\n        ]),\n      );\n    } else {\n      knownTypeNames[typeName] = node.name;\n    }\n\n    return false;\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZVR5cGVOYW1lc1J1bGUubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQTREOztBQUU1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZLGlFQUFZO0FBQ3hCLG1CQUFtQixTQUFTO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFlBQVksaUVBQVksc0NBQXNDLFNBQVM7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9VbmlxdWVUeXBlTmFtZXNSdWxlLm1qcz80MTY3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuXG4vKipcbiAqIFVuaXF1ZSB0eXBlIG5hbWVzXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgYWxsIGRlZmluZWQgdHlwZXMgaGF2ZSB1bmlxdWUgbmFtZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBVbmlxdWVUeXBlTmFtZXNSdWxlKGNvbnRleHQpIHtcbiAgY29uc3Qga25vd25UeXBlTmFtZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBjb25zdCBzY2hlbWEgPSBjb250ZXh0LmdldFNjaGVtYSgpO1xuICByZXR1cm4ge1xuICAgIFNjYWxhclR5cGVEZWZpbml0aW9uOiBjaGVja1R5cGVOYW1lLFxuICAgIE9iamVjdFR5cGVEZWZpbml0aW9uOiBjaGVja1R5cGVOYW1lLFxuICAgIEludGVyZmFjZVR5cGVEZWZpbml0aW9uOiBjaGVja1R5cGVOYW1lLFxuICAgIFVuaW9uVHlwZURlZmluaXRpb246IGNoZWNrVHlwZU5hbWUsXG4gICAgRW51bVR5cGVEZWZpbml0aW9uOiBjaGVja1R5cGVOYW1lLFxuICAgIElucHV0T2JqZWN0VHlwZURlZmluaXRpb246IGNoZWNrVHlwZU5hbWUsXG4gIH07XG5cbiAgZnVuY3Rpb24gY2hlY2tUeXBlTmFtZShub2RlKSB7XG4gICAgY29uc3QgdHlwZU5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG5cbiAgICBpZiAoc2NoZW1hICE9PSBudWxsICYmIHNjaGVtYSAhPT0gdm9pZCAwICYmIHNjaGVtYS5nZXRUeXBlKHR5cGVOYW1lKSkge1xuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICBgVHlwZSBcIiR7dHlwZU5hbWV9XCIgYWxyZWFkeSBleGlzdHMgaW4gdGhlIHNjaGVtYS4gSXQgY2Fubm90IGFsc28gYmUgZGVmaW5lZCBpbiB0aGlzIHR5cGUgZGVmaW5pdGlvbi5gLFxuICAgICAgICAgIG5vZGUubmFtZSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGtub3duVHlwZU5hbWVzW3R5cGVOYW1lXSkge1xuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihgVGhlcmUgY2FuIGJlIG9ubHkgb25lIHR5cGUgbmFtZWQgXCIke3R5cGVOYW1lfVwiLmAsIFtcbiAgICAgICAgICBrbm93blR5cGVOYW1lc1t0eXBlTmFtZV0sXG4gICAgICAgICAgbm9kZS5uYW1lLFxuICAgICAgICBdKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGtub3duVHlwZU5hbWVzW3R5cGVOYW1lXSA9IG5vZGUubmFtZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs":
/*!***************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs ***!
  \***************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UniqueVariableNamesRule\": function() { return /* binding */ UniqueVariableNamesRule; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_groupBy_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../jsutils/groupBy.mjs */ \"./node_modules/graphql/jsutils/groupBy.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n\n\n\n/**\n * Unique variable names\n *\n * A GraphQL operation is only valid if all its variables are uniquely named.\n */\nfunction UniqueVariableNamesRule(context) {\n  return {\n    OperationDefinition(operationNode) {\n      var _operationNode$variab;\n\n      // See: https://github.com/graphql/graphql-js/issues/2203\n\n      /* c8 ignore next */\n      const variableDefinitions =\n        (_operationNode$variab = operationNode.variableDefinitions) !== null &&\n        _operationNode$variab !== void 0\n          ? _operationNode$variab\n          : [];\n      const seenVariableDefinitions = (0,_jsutils_groupBy_mjs__WEBPACK_IMPORTED_MODULE_0__.groupBy)(\n        variableDefinitions,\n        (node) => node.variable.name.value,\n      );\n\n      for (const [variableName, variableNodes] of seenVariableDefinitions) {\n        if (variableNodes.length > 1) {\n          context.reportError(\n            new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n              `There can be only one variable named \"$${variableName}\".`,\n              variableNodes.map((node) => node.variable.name),\n            ),\n          );\n        }\n      }\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZVZhcmlhYmxlTmFtZXNSdWxlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBb0Q7QUFDUTs7QUFFNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyw2REFBTztBQUM3QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGlFQUFZO0FBQzVCLHdEQUF3RCxhQUFhO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1VuaXF1ZVZhcmlhYmxlTmFtZXNSdWxlLm1qcz84Y2VlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdyb3VwQnkgfSBmcm9tICcuLi8uLi9qc3V0aWxzL2dyb3VwQnkubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuXG4vKipcbiAqIFVuaXF1ZSB2YXJpYWJsZSBuYW1lc1xuICpcbiAqIEEgR3JhcGhRTCBvcGVyYXRpb24gaXMgb25seSB2YWxpZCBpZiBhbGwgaXRzIHZhcmlhYmxlcyBhcmUgdW5pcXVlbHkgbmFtZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBVbmlxdWVWYXJpYWJsZU5hbWVzUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgT3BlcmF0aW9uRGVmaW5pdGlvbihvcGVyYXRpb25Ob2RlKSB7XG4gICAgICB2YXIgX29wZXJhdGlvbk5vZGUkdmFyaWFiO1xuXG4gICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFwaHFsL2dyYXBocWwtanMvaXNzdWVzLzIyMDNcblxuICAgICAgLyogYzggaWdub3JlIG5leHQgKi9cbiAgICAgIGNvbnN0IHZhcmlhYmxlRGVmaW5pdGlvbnMgPVxuICAgICAgICAoX29wZXJhdGlvbk5vZGUkdmFyaWFiID0gb3BlcmF0aW9uTm9kZS52YXJpYWJsZURlZmluaXRpb25zKSAhPT0gbnVsbCAmJlxuICAgICAgICBfb3BlcmF0aW9uTm9kZSR2YXJpYWIgIT09IHZvaWQgMFxuICAgICAgICAgID8gX29wZXJhdGlvbk5vZGUkdmFyaWFiXG4gICAgICAgICAgOiBbXTtcbiAgICAgIGNvbnN0IHNlZW5WYXJpYWJsZURlZmluaXRpb25zID0gZ3JvdXBCeShcbiAgICAgICAgdmFyaWFibGVEZWZpbml0aW9ucyxcbiAgICAgICAgKG5vZGUpID0+IG5vZGUudmFyaWFibGUubmFtZS52YWx1ZSxcbiAgICAgICk7XG5cbiAgICAgIGZvciAoY29uc3QgW3ZhcmlhYmxlTmFtZSwgdmFyaWFibGVOb2Rlc10gb2Ygc2VlblZhcmlhYmxlRGVmaW5pdGlvbnMpIHtcbiAgICAgICAgaWYgKHZhcmlhYmxlTm9kZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgICBgVGhlcmUgY2FuIGJlIG9ubHkgb25lIHZhcmlhYmxlIG5hbWVkIFwiJCR7dmFyaWFibGVOYW1lfVwiLmAsXG4gICAgICAgICAgICAgIHZhcmlhYmxlTm9kZXMubWFwKChub2RlKSA9PiBub2RlLnZhcmlhYmxlLm5hbWUpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs":
/*!***************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs ***!
  \***************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ValuesOfCorrectTypeRule\": function() { return /* binding */ ValuesOfCorrectTypeRule; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../jsutils/didYouMean.mjs */ \"./node_modules/graphql/jsutils/didYouMean.mjs\");\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/keyMap.mjs */ \"./node_modules/graphql/jsutils/keyMap.mjs\");\n/* harmony import */ var _jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../jsutils/suggestionList.mjs */ \"./node_modules/graphql/jsutils/suggestionList.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../language/printer.mjs */ \"./node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n\n\n\n\n\n\n\n\n/**\n * Value literals of correct type\n *\n * A GraphQL document is only valid if all value literals are of the type\n * expected at their position.\n *\n * See https://spec.graphql.org/draft/#sec-Values-of-Correct-Type\n */\nfunction ValuesOfCorrectTypeRule(context) {\n  return {\n    ListValue(node) {\n      // Note: TypeInfo will traverse into a list's item type, so look to the\n      // parent input type to check if it is a list.\n      const type = (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.getNullableType)(context.getParentInputType());\n\n      if (!(0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isListType)(type)) {\n        isValidValueNode(context, node);\n        return false; // Don't traverse further.\n      }\n    },\n\n    ObjectValue(node) {\n      const type = (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.getNamedType)(context.getInputType());\n\n      if (!(0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInputObjectType)(type)) {\n        isValidValueNode(context, node);\n        return false; // Don't traverse further.\n      } // Ensure every required field exists.\n\n      const fieldNodeMap = (0,_jsutils_keyMap_mjs__WEBPACK_IMPORTED_MODULE_1__.keyMap)(node.fields, (field) => field.name.value);\n\n      for (const fieldDef of Object.values(type.getFields())) {\n        const fieldNode = fieldNodeMap[fieldDef.name];\n\n        if (!fieldNode && (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isRequiredInputField)(fieldDef)) {\n          const typeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(fieldDef.type);\n          context.reportError(\n            new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLError(\n              `Field \"${type.name}.${fieldDef.name}\" of required type \"${typeStr}\" was not provided.`,\n              node,\n            ),\n          );\n        }\n      }\n    },\n\n    ObjectField(node) {\n      const parentType = (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.getNamedType)(context.getParentInputType());\n      const fieldType = context.getInputType();\n\n      if (!fieldType && (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isInputObjectType)(parentType)) {\n        const suggestions = (0,_jsutils_suggestionList_mjs__WEBPACK_IMPORTED_MODULE_4__.suggestionList)(\n          node.name.value,\n          Object.keys(parentType.getFields()),\n        );\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLError(\n            `Field \"${node.name.value}\" is not defined by type \"${parentType.name}\".` +\n              (0,_jsutils_didYouMean_mjs__WEBPACK_IMPORTED_MODULE_5__.didYouMean)(suggestions),\n            node,\n          ),\n        );\n      }\n    },\n\n    NullValue(node) {\n      const type = context.getInputType();\n\n      if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isNonNullType)(type)) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLError(\n            `Expected value of type \"${(0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(type)}\", found ${(0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_6__.print)(node)}.`,\n            node,\n          ),\n        );\n      }\n    },\n\n    EnumValue: (node) => isValidValueNode(context, node),\n    IntValue: (node) => isValidValueNode(context, node),\n    FloatValue: (node) => isValidValueNode(context, node),\n    StringValue: (node) => isValidValueNode(context, node),\n    BooleanValue: (node) => isValidValueNode(context, node),\n  };\n}\n/**\n * Any value literal may be a valid representation of a Scalar, depending on\n * that scalar type.\n */\n\nfunction isValidValueNode(context, node) {\n  // Report any error at the full type expected by the location.\n  const locationType = context.getInputType();\n\n  if (!locationType) {\n    return;\n  }\n\n  const type = (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.getNamedType)(locationType);\n\n  if (!(0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.isLeafType)(type)) {\n    const typeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(locationType);\n    context.reportError(\n      new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLError(\n        `Expected value of type \"${typeStr}\", found ${(0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_6__.print)(node)}.`,\n        node,\n      ),\n    );\n    return;\n  } // Scalars and Enums determine if a literal value is valid via parseLiteral(),\n  // which may throw or return an invalid value to indicate failure.\n\n  try {\n    const parseResult = type.parseLiteral(\n      node,\n      undefined,\n      /* variables */\n    );\n\n    if (parseResult === undefined) {\n      const typeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(locationType);\n      context.reportError(\n        new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLError(\n          `Expected value of type \"${typeStr}\", found ${(0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_6__.print)(node)}.`,\n          node,\n        ),\n      );\n    }\n  } catch (error) {\n    const typeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_2__.inspect)(locationType);\n\n    if (error instanceof _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLError) {\n      context.reportError(error);\n    } else {\n      context.reportError(\n        new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLError(\n          `Expected value of type \"${typeStr}\", found ${(0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_6__.print)(node)}; ` +\n            error.message,\n          node,\n          undefined,\n          undefined,\n          undefined,\n          error,\n        ),\n      );\n    }\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1ZhbHVlc09mQ29ycmVjdFR5cGVSdWxlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUEwRDtBQUNOO0FBQ0Y7QUFDZ0I7QUFDTjtBQUNUO0FBU2hCOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxRUFBZTs7QUFFbEMsV0FBVyxnRUFBVTtBQUNyQjtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBLEtBQUs7O0FBRUw7QUFDQSxtQkFBbUIsa0VBQVk7O0FBRS9CLFdBQVcsdUVBQWlCO0FBQzVCO0FBQ0Esc0JBQXNCO0FBQ3RCLFFBQVE7O0FBRVIsMkJBQTJCLDJEQUFNOztBQUVqQztBQUNBOztBQUVBLDBCQUEwQiwwRUFBb0I7QUFDOUMsMEJBQTBCLDZEQUFPO0FBQ2pDO0FBQ0EsZ0JBQWdCLGlFQUFZO0FBQzVCLHdCQUF3QixVQUFVLEdBQUcsY0FBYyxzQkFBc0IsUUFBUTtBQUNqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLHlCQUF5QixrRUFBWTtBQUNyQzs7QUFFQSx3QkFBd0IsdUVBQWlCO0FBQ3pDLDRCQUE0QiwyRUFBYztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsaUVBQVk7QUFDMUIsc0JBQXNCLGdCQUFnQiw0QkFBNEIsZ0JBQWdCO0FBQ2xGLGNBQWMsbUVBQVU7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUEsVUFBVSxtRUFBYTtBQUN2QjtBQUNBLGNBQWMsaUVBQVk7QUFDMUIsdUNBQXVDLDZEQUFPLE9BQU8sV0FBVyw0REFBSyxPQUFPO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsZUFBZSxrRUFBWTs7QUFFM0IsT0FBTyxnRUFBVTtBQUNqQixvQkFBb0IsNkRBQU87QUFDM0I7QUFDQSxVQUFVLGlFQUFZO0FBQ3RCLG1DQUFtQyxRQUFRLFdBQVcsNERBQUssT0FBTztBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0IsNkRBQU87QUFDN0I7QUFDQSxZQUFZLGlFQUFZO0FBQ3hCLHFDQUFxQyxRQUFRLFdBQVcsNERBQUssT0FBTztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSixvQkFBb0IsNkRBQU87O0FBRTNCLHlCQUF5QixpRUFBWTtBQUNyQztBQUNBLE1BQU07QUFDTjtBQUNBLFlBQVksaUVBQVk7QUFDeEIscUNBQXFDLFFBQVEsV0FBVyw0REFBSyxTQUFTO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9WYWx1ZXNPZkNvcnJlY3RUeXBlUnVsZS5tanM/NDIyMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaWRZb3VNZWFuIH0gZnJvbSAnLi4vLi4vanN1dGlscy9kaWRZb3VNZWFuLm1qcyc7XG5pbXBvcnQgeyBpbnNwZWN0IH0gZnJvbSAnLi4vLi4vanN1dGlscy9pbnNwZWN0Lm1qcyc7XG5pbXBvcnQgeyBrZXlNYXAgfSBmcm9tICcuLi8uLi9qc3V0aWxzL2tleU1hcC5tanMnO1xuaW1wb3J0IHsgc3VnZ2VzdGlvbkxpc3QgfSBmcm9tICcuLi8uLi9qc3V0aWxzL3N1Z2dlc3Rpb25MaXN0Lm1qcyc7XG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci9HcmFwaFFMRXJyb3IubWpzJztcbmltcG9ydCB7IHByaW50IH0gZnJvbSAnLi4vLi4vbGFuZ3VhZ2UvcHJpbnRlci5tanMnO1xuaW1wb3J0IHtcbiAgZ2V0TmFtZWRUeXBlLFxuICBnZXROdWxsYWJsZVR5cGUsXG4gIGlzSW5wdXRPYmplY3RUeXBlLFxuICBpc0xlYWZUeXBlLFxuICBpc0xpc3RUeXBlLFxuICBpc05vbk51bGxUeXBlLFxuICBpc1JlcXVpcmVkSW5wdXRGaWVsZCxcbn0gZnJvbSAnLi4vLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5cbi8qKlxuICogVmFsdWUgbGl0ZXJhbHMgb2YgY29ycmVjdCB0eXBlXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgYWxsIHZhbHVlIGxpdGVyYWxzIGFyZSBvZiB0aGUgdHlwZVxuICogZXhwZWN0ZWQgYXQgdGhlaXIgcG9zaXRpb24uXG4gKlxuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLVZhbHVlcy1vZi1Db3JyZWN0LVR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFZhbHVlc09mQ29ycmVjdFR5cGVSdWxlKGNvbnRleHQpIHtcbiAgcmV0dXJuIHtcbiAgICBMaXN0VmFsdWUobm9kZSkge1xuICAgICAgLy8gTm90ZTogVHlwZUluZm8gd2lsbCB0cmF2ZXJzZSBpbnRvIGEgbGlzdCdzIGl0ZW0gdHlwZSwgc28gbG9vayB0byB0aGVcbiAgICAgIC8vIHBhcmVudCBpbnB1dCB0eXBlIHRvIGNoZWNrIGlmIGl0IGlzIGEgbGlzdC5cbiAgICAgIGNvbnN0IHR5cGUgPSBnZXROdWxsYWJsZVR5cGUoY29udGV4dC5nZXRQYXJlbnRJbnB1dFR5cGUoKSk7XG5cbiAgICAgIGlmICghaXNMaXN0VHlwZSh0eXBlKSkge1xuICAgICAgICBpc1ZhbGlkVmFsdWVOb2RlKGNvbnRleHQsIG5vZGUpO1xuICAgICAgICByZXR1cm4gZmFsc2U7IC8vIERvbid0IHRyYXZlcnNlIGZ1cnRoZXIuXG4gICAgICB9XG4gICAgfSxcblxuICAgIE9iamVjdFZhbHVlKG5vZGUpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSBnZXROYW1lZFR5cGUoY29udGV4dC5nZXRJbnB1dFR5cGUoKSk7XG5cbiAgICAgIGlmICghaXNJbnB1dE9iamVjdFR5cGUodHlwZSkpIHtcbiAgICAgICAgaXNWYWxpZFZhbHVlTm9kZShjb250ZXh0LCBub2RlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBEb24ndCB0cmF2ZXJzZSBmdXJ0aGVyLlxuICAgICAgfSAvLyBFbnN1cmUgZXZlcnkgcmVxdWlyZWQgZmllbGQgZXhpc3RzLlxuXG4gICAgICBjb25zdCBmaWVsZE5vZGVNYXAgPSBrZXlNYXAobm9kZS5maWVsZHMsIChmaWVsZCkgPT4gZmllbGQubmFtZS52YWx1ZSk7XG5cbiAgICAgIGZvciAoY29uc3QgZmllbGREZWYgb2YgT2JqZWN0LnZhbHVlcyh0eXBlLmdldEZpZWxkcygpKSkge1xuICAgICAgICBjb25zdCBmaWVsZE5vZGUgPSBmaWVsZE5vZGVNYXBbZmllbGREZWYubmFtZV07XG5cbiAgICAgICAgaWYgKCFmaWVsZE5vZGUgJiYgaXNSZXF1aXJlZElucHV0RmllbGQoZmllbGREZWYpKSB7XG4gICAgICAgICAgY29uc3QgdHlwZVN0ciA9IGluc3BlY3QoZmllbGREZWYudHlwZSk7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICAgIGBGaWVsZCBcIiR7dHlwZS5uYW1lfS4ke2ZpZWxkRGVmLm5hbWV9XCIgb2YgcmVxdWlyZWQgdHlwZSBcIiR7dHlwZVN0cn1cIiB3YXMgbm90IHByb3ZpZGVkLmAsXG4gICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgT2JqZWN0RmllbGQobm9kZSkge1xuICAgICAgY29uc3QgcGFyZW50VHlwZSA9IGdldE5hbWVkVHlwZShjb250ZXh0LmdldFBhcmVudElucHV0VHlwZSgpKTtcbiAgICAgIGNvbnN0IGZpZWxkVHlwZSA9IGNvbnRleHQuZ2V0SW5wdXRUeXBlKCk7XG5cbiAgICAgIGlmICghZmllbGRUeXBlICYmIGlzSW5wdXRPYmplY3RUeXBlKHBhcmVudFR5cGUpKSB7XG4gICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbkxpc3QoXG4gICAgICAgICAgbm9kZS5uYW1lLnZhbHVlLFxuICAgICAgICAgIE9iamVjdC5rZXlzKHBhcmVudFR5cGUuZ2V0RmllbGRzKCkpLFxuICAgICAgICApO1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgRmllbGQgXCIke25vZGUubmFtZS52YWx1ZX1cIiBpcyBub3QgZGVmaW5lZCBieSB0eXBlIFwiJHtwYXJlbnRUeXBlLm5hbWV9XCIuYCArXG4gICAgICAgICAgICAgIGRpZFlvdU1lYW4oc3VnZ2VzdGlvbnMpLFxuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBOdWxsVmFsdWUobm9kZSkge1xuICAgICAgY29uc3QgdHlwZSA9IGNvbnRleHQuZ2V0SW5wdXRUeXBlKCk7XG5cbiAgICAgIGlmIChpc05vbk51bGxUeXBlKHR5cGUpKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgIGBFeHBlY3RlZCB2YWx1ZSBvZiB0eXBlIFwiJHtpbnNwZWN0KHR5cGUpfVwiLCBmb3VuZCAke3ByaW50KG5vZGUpfS5gLFxuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBFbnVtVmFsdWU6IChub2RlKSA9PiBpc1ZhbGlkVmFsdWVOb2RlKGNvbnRleHQsIG5vZGUpLFxuICAgIEludFZhbHVlOiAobm9kZSkgPT4gaXNWYWxpZFZhbHVlTm9kZShjb250ZXh0LCBub2RlKSxcbiAgICBGbG9hdFZhbHVlOiAobm9kZSkgPT4gaXNWYWxpZFZhbHVlTm9kZShjb250ZXh0LCBub2RlKSxcbiAgICBTdHJpbmdWYWx1ZTogKG5vZGUpID0+IGlzVmFsaWRWYWx1ZU5vZGUoY29udGV4dCwgbm9kZSksXG4gICAgQm9vbGVhblZhbHVlOiAobm9kZSkgPT4gaXNWYWxpZFZhbHVlTm9kZShjb250ZXh0LCBub2RlKSxcbiAgfTtcbn1cbi8qKlxuICogQW55IHZhbHVlIGxpdGVyYWwgbWF5IGJlIGEgdmFsaWQgcmVwcmVzZW50YXRpb24gb2YgYSBTY2FsYXIsIGRlcGVuZGluZyBvblxuICogdGhhdCBzY2FsYXIgdHlwZS5cbiAqL1xuXG5mdW5jdGlvbiBpc1ZhbGlkVmFsdWVOb2RlKGNvbnRleHQsIG5vZGUpIHtcbiAgLy8gUmVwb3J0IGFueSBlcnJvciBhdCB0aGUgZnVsbCB0eXBlIGV4cGVjdGVkIGJ5IHRoZSBsb2NhdGlvbi5cbiAgY29uc3QgbG9jYXRpb25UeXBlID0gY29udGV4dC5nZXRJbnB1dFR5cGUoKTtcblxuICBpZiAoIWxvY2F0aW9uVHlwZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHR5cGUgPSBnZXROYW1lZFR5cGUobG9jYXRpb25UeXBlKTtcblxuICBpZiAoIWlzTGVhZlR5cGUodHlwZSkpIHtcbiAgICBjb25zdCB0eXBlU3RyID0gaW5zcGVjdChsb2NhdGlvblR5cGUpO1xuICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICBgRXhwZWN0ZWQgdmFsdWUgb2YgdHlwZSBcIiR7dHlwZVN0cn1cIiwgZm91bmQgJHtwcmludChub2RlKX0uYCxcbiAgICAgICAgbm9kZSxcbiAgICAgICksXG4gICAgKTtcbiAgICByZXR1cm47XG4gIH0gLy8gU2NhbGFycyBhbmQgRW51bXMgZGV0ZXJtaW5lIGlmIGEgbGl0ZXJhbCB2YWx1ZSBpcyB2YWxpZCB2aWEgcGFyc2VMaXRlcmFsKCksXG4gIC8vIHdoaWNoIG1heSB0aHJvdyBvciByZXR1cm4gYW4gaW52YWxpZCB2YWx1ZSB0byBpbmRpY2F0ZSBmYWlsdXJlLlxuXG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VSZXN1bHQgPSB0eXBlLnBhcnNlTGl0ZXJhbChcbiAgICAgIG5vZGUsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICAvKiB2YXJpYWJsZXMgKi9cbiAgICApO1xuXG4gICAgaWYgKHBhcnNlUmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHR5cGVTdHIgPSBpbnNwZWN0KGxvY2F0aW9uVHlwZSk7XG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgIGBFeHBlY3RlZCB2YWx1ZSBvZiB0eXBlIFwiJHt0eXBlU3RyfVwiLCBmb3VuZCAke3ByaW50KG5vZGUpfS5gLFxuICAgICAgICAgIG5vZGUsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCB0eXBlU3RyID0gaW5zcGVjdChsb2NhdGlvblR5cGUpO1xuXG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgR3JhcGhRTEVycm9yKSB7XG4gICAgICBjb250ZXh0LnJlcG9ydEVycm9yKGVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICBgRXhwZWN0ZWQgdmFsdWUgb2YgdHlwZSBcIiR7dHlwZVN0cn1cIiwgZm91bmQgJHtwcmludChub2RlKX07IGAgK1xuICAgICAgICAgICAgZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICBub2RlLFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIGVycm9yLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs":
/*!******************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs ***!
  \******************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"VariablesAreInputTypesRule\": function() { return /* binding */ VariablesAreInputTypesRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_printer_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../language/printer.mjs */ \"./node_modules/graphql/language/printer.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/typeFromAST.mjs */ \"./node_modules/graphql/utilities/typeFromAST.mjs\");\n\n\n\n\n\n/**\n * Variables are input types\n *\n * A GraphQL operation is only valid if all the variables it defines are of\n * input types (scalar, enum, or input object).\n *\n * See https://spec.graphql.org/draft/#sec-Variables-Are-Input-Types\n */\nfunction VariablesAreInputTypesRule(context) {\n  return {\n    VariableDefinition(node) {\n      const type = (0,_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_0__.typeFromAST)(context.getSchema(), node.type);\n\n      if (type !== undefined && !(0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_1__.isInputType)(type)) {\n        const variableName = node.variable.name.value;\n        const typeName = (0,_language_printer_mjs__WEBPACK_IMPORTED_MODULE_2__.print)(node.type);\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_3__.GraphQLError(\n            `Variable \"$${variableName}\" cannot be non-input type \"${typeName}\".`,\n            node.type,\n          ),\n        );\n      }\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1ZhcmlhYmxlc0FyZUlucHV0VHlwZXNSdWxlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUE0RDtBQUNUO0FBQ0s7QUFDTTs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBLG1CQUFtQix1RUFBVzs7QUFFOUIsaUNBQWlDLGlFQUFXO0FBQzVDO0FBQ0EseUJBQXlCLDREQUFLO0FBQzlCO0FBQ0EsY0FBYyxpRUFBWTtBQUMxQiwwQkFBMEIsYUFBYSw4QkFBOEIsU0FBUztBQUM5RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvVmFyaWFibGVzQXJlSW5wdXRUeXBlc1J1bGUubWpzPzRlOWIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBwcmludCB9IGZyb20gJy4uLy4uL2xhbmd1YWdlL3ByaW50ZXIubWpzJztcbmltcG9ydCB7IGlzSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5pbXBvcnQgeyB0eXBlRnJvbUFTVCB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy90eXBlRnJvbUFTVC5tanMnO1xuXG4vKipcbiAqIFZhcmlhYmxlcyBhcmUgaW5wdXQgdHlwZXNcbiAqXG4gKiBBIEdyYXBoUUwgb3BlcmF0aW9uIGlzIG9ubHkgdmFsaWQgaWYgYWxsIHRoZSB2YXJpYWJsZXMgaXQgZGVmaW5lcyBhcmUgb2ZcbiAqIGlucHV0IHR5cGVzIChzY2FsYXIsIGVudW0sIG9yIGlucHV0IG9iamVjdCkuXG4gKlxuICogU2VlIGh0dHBzOi8vc3BlYy5ncmFwaHFsLm9yZy9kcmFmdC8jc2VjLVZhcmlhYmxlcy1BcmUtSW5wdXQtVHlwZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFZhcmlhYmxlc0FyZUlucHV0VHlwZXNSdWxlKGNvbnRleHQpIHtcbiAgcmV0dXJuIHtcbiAgICBWYXJpYWJsZURlZmluaXRpb24obm9kZSkge1xuICAgICAgY29uc3QgdHlwZSA9IHR5cGVGcm9tQVNUKGNvbnRleHQuZ2V0U2NoZW1hKCksIG5vZGUudHlwZSk7XG5cbiAgICAgIGlmICh0eXBlICE9PSB1bmRlZmluZWQgJiYgIWlzSW5wdXRUeXBlKHR5cGUpKSB7XG4gICAgICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IG5vZGUudmFyaWFibGUubmFtZS52YWx1ZTtcbiAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBwcmludChub2RlLnR5cGUpO1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgVmFyaWFibGUgXCIkJHt2YXJpYWJsZU5hbWV9XCIgY2Fubm90IGJlIG5vbi1pbnB1dCB0eXBlIFwiJHt0eXBlTmFtZX1cIi5gLFxuICAgICAgICAgICAgbm9kZS50eXBlLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs":
/*!**********************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs ***!
  \**********************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"VariablesInAllowedPositionRule\": function() { return /* binding */ VariablesInAllowedPositionRule; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../jsutils/inspect.mjs */ \"./node_modules/graphql/jsutils/inspect.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../language/kinds.mjs */ \"./node_modules/graphql/language/kinds.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utilities/typeComparators.mjs */ \"./node_modules/graphql/utilities/typeComparators.mjs\");\n/* harmony import */ var _utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utilities/typeFromAST.mjs */ \"./node_modules/graphql/utilities/typeFromAST.mjs\");\n\n\n\n\n\n\n\n/**\n * Variables in allowed position\n *\n * Variable usages must be compatible with the arguments they are passed to.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variable-Usages-are-Allowed\n */\nfunction VariablesInAllowedPositionRule(context) {\n  let varDefMap = Object.create(null);\n  return {\n    OperationDefinition: {\n      enter() {\n        varDefMap = Object.create(null);\n      },\n\n      leave(operation) {\n        const usages = context.getRecursiveVariableUsages(operation);\n\n        for (const { node, type, defaultValue } of usages) {\n          const varName = node.name.value;\n          const varDef = varDefMap[varName];\n\n          if (varDef && type) {\n            // A var type is allowed if it is the same or more strict (e.g. is\n            // a subtype of) than the expected type. It can be more strict if\n            // the variable type is non-null when the expected type is nullable.\n            // If both are list types, the variable item type can be more strict\n            // than the expected item type (contravariant).\n            const schema = context.getSchema();\n            const varType = (0,_utilities_typeFromAST_mjs__WEBPACK_IMPORTED_MODULE_0__.typeFromAST)(schema, varDef.type);\n\n            if (\n              varType &&\n              !allowedVariableUsage(\n                schema,\n                varType,\n                varDef.defaultValue,\n                type,\n                defaultValue,\n              )\n            ) {\n              const varTypeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__.inspect)(varType);\n              const typeStr = (0,_jsutils_inspect_mjs__WEBPACK_IMPORTED_MODULE_1__.inspect)(type);\n              context.reportError(\n                new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLError(\n                  `Variable \"$${varName}\" of type \"${varTypeStr}\" used in position expecting type \"${typeStr}\".`,\n                  [varDef, node],\n                ),\n              );\n            }\n          }\n        }\n      },\n    },\n\n    VariableDefinition(node) {\n      varDefMap[node.variable.name.value] = node;\n    },\n  };\n}\n/**\n * Returns true if the variable is allowed in the location it was found,\n * which includes considering if default values exist for either the variable\n * or the location at which it is located.\n */\n\nfunction allowedVariableUsage(\n  schema,\n  varType,\n  varDefaultValue,\n  locationType,\n  locationDefaultValue,\n) {\n  if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__.isNonNullType)(locationType) && !(0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_3__.isNonNullType)(varType)) {\n    const hasNonNullVariableDefaultValue =\n      varDefaultValue != null && varDefaultValue.kind !== _language_kinds_mjs__WEBPACK_IMPORTED_MODULE_4__.Kind.NULL;\n    const hasLocationDefaultValue = locationDefaultValue !== undefined;\n\n    if (!hasNonNullVariableDefaultValue && !hasLocationDefaultValue) {\n      return false;\n    }\n\n    const nullableLocationType = locationType.ofType;\n    return (0,_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_5__.isTypeSubTypeOf)(schema, varType, nullableLocationType);\n  }\n\n  return (0,_utilities_typeComparators_mjs__WEBPACK_IMPORTED_MODULE_5__.isTypeSubTypeOf)(schema, varType, locationType);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL1ZhcmlhYmxlc0luQWxsb3dlZFBvc2l0aW9uUnVsZS5tanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFvRDtBQUNRO0FBQ1o7QUFDVTtBQUNZO0FBQ1I7O0FBRTlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBOztBQUVBLHFCQUFxQiwyQkFBMkI7QUFDaEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qix1RUFBVzs7QUFFdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsNkRBQU87QUFDeEMsOEJBQThCLDZEQUFPO0FBQ3JDO0FBQ0Esb0JBQW9CLGlFQUFZO0FBQ2hDLGdDQUFnQyxRQUFRLGFBQWEsV0FBVyxxQ0FBcUMsUUFBUTtBQUM3RztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxtRUFBYSxtQkFBbUIsbUVBQWE7QUFDbkQ7QUFDQSwwREFBMEQsMERBQVM7QUFDbkU7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVywrRUFBZTtBQUMxQjs7QUFFQSxTQUFTLCtFQUFlO0FBQ3hCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ncmFwaHFsL3ZhbGlkYXRpb24vcnVsZXMvVmFyaWFibGVzSW5BbGxvd2VkUG9zaXRpb25SdWxlLm1qcz9lMWQ2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuLi8uLi9qc3V0aWxzL2luc3BlY3QubWpzJztcbmltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgS2luZCB9IGZyb20gJy4uLy4uL2xhbmd1YWdlL2tpbmRzLm1qcyc7XG5pbXBvcnQgeyBpc05vbk51bGxUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5pbXBvcnQgeyBpc1R5cGVTdWJUeXBlT2YgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvdHlwZUNvbXBhcmF0b3JzLm1qcyc7XG5pbXBvcnQgeyB0eXBlRnJvbUFTVCB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy90eXBlRnJvbUFTVC5tanMnO1xuXG4vKipcbiAqIFZhcmlhYmxlcyBpbiBhbGxvd2VkIHBvc2l0aW9uXG4gKlxuICogVmFyaWFibGUgdXNhZ2VzIG11c3QgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBhcmd1bWVudHMgdGhleSBhcmUgcGFzc2VkIHRvLlxuICpcbiAqIFNlZSBodHRwczovL3NwZWMuZ3JhcGhxbC5vcmcvZHJhZnQvI3NlYy1BbGwtVmFyaWFibGUtVXNhZ2VzLWFyZS1BbGxvd2VkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBWYXJpYWJsZXNJbkFsbG93ZWRQb3NpdGlvblJ1bGUoY29udGV4dCkge1xuICBsZXQgdmFyRGVmTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIHtcbiAgICBPcGVyYXRpb25EZWZpbml0aW9uOiB7XG4gICAgICBlbnRlcigpIHtcbiAgICAgICAgdmFyRGVmTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgIH0sXG5cbiAgICAgIGxlYXZlKG9wZXJhdGlvbikge1xuICAgICAgICBjb25zdCB1c2FnZXMgPSBjb250ZXh0LmdldFJlY3Vyc2l2ZVZhcmlhYmxlVXNhZ2VzKG9wZXJhdGlvbik7XG5cbiAgICAgICAgZm9yIChjb25zdCB7IG5vZGUsIHR5cGUsIGRlZmF1bHRWYWx1ZSB9IG9mIHVzYWdlcykge1xuICAgICAgICAgIGNvbnN0IHZhck5hbWUgPSBub2RlLm5hbWUudmFsdWU7XG4gICAgICAgICAgY29uc3QgdmFyRGVmID0gdmFyRGVmTWFwW3Zhck5hbWVdO1xuXG4gICAgICAgICAgaWYgKHZhckRlZiAmJiB0eXBlKSB7XG4gICAgICAgICAgICAvLyBBIHZhciB0eXBlIGlzIGFsbG93ZWQgaWYgaXQgaXMgdGhlIHNhbWUgb3IgbW9yZSBzdHJpY3QgKGUuZy4gaXNcbiAgICAgICAgICAgIC8vIGEgc3VidHlwZSBvZikgdGhhbiB0aGUgZXhwZWN0ZWQgdHlwZS4gSXQgY2FuIGJlIG1vcmUgc3RyaWN0IGlmXG4gICAgICAgICAgICAvLyB0aGUgdmFyaWFibGUgdHlwZSBpcyBub24tbnVsbCB3aGVuIHRoZSBleHBlY3RlZCB0eXBlIGlzIG51bGxhYmxlLlxuICAgICAgICAgICAgLy8gSWYgYm90aCBhcmUgbGlzdCB0eXBlcywgdGhlIHZhcmlhYmxlIGl0ZW0gdHlwZSBjYW4gYmUgbW9yZSBzdHJpY3RcbiAgICAgICAgICAgIC8vIHRoYW4gdGhlIGV4cGVjdGVkIGl0ZW0gdHlwZSAoY29udHJhdmFyaWFudCkuXG4gICAgICAgICAgICBjb25zdCBzY2hlbWEgPSBjb250ZXh0LmdldFNjaGVtYSgpO1xuICAgICAgICAgICAgY29uc3QgdmFyVHlwZSA9IHR5cGVGcm9tQVNUKHNjaGVtYSwgdmFyRGVmLnR5cGUpO1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHZhclR5cGUgJiZcbiAgICAgICAgICAgICAgIWFsbG93ZWRWYXJpYWJsZVVzYWdlKFxuICAgICAgICAgICAgICAgIHNjaGVtYSxcbiAgICAgICAgICAgICAgICB2YXJUeXBlLFxuICAgICAgICAgICAgICAgIHZhckRlZi5kZWZhdWx0VmFsdWUsXG4gICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWUsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBjb25zdCB2YXJUeXBlU3RyID0gaW5zcGVjdCh2YXJUeXBlKTtcbiAgICAgICAgICAgICAgY29uc3QgdHlwZVN0ciA9IGluc3BlY3QodHlwZSk7XG4gICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0RXJyb3IoXG4gICAgICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgICAgIGBWYXJpYWJsZSBcIiQke3Zhck5hbWV9XCIgb2YgdHlwZSBcIiR7dmFyVHlwZVN0cn1cIiB1c2VkIGluIHBvc2l0aW9uIGV4cGVjdGluZyB0eXBlIFwiJHt0eXBlU3RyfVwiLmAsXG4gICAgICAgICAgICAgICAgICBbdmFyRGVmLCBub2RlXSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgVmFyaWFibGVEZWZpbml0aW9uKG5vZGUpIHtcbiAgICAgIHZhckRlZk1hcFtub2RlLnZhcmlhYmxlLm5hbWUudmFsdWVdID0gbm9kZTtcbiAgICB9LFxuICB9O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIHZhcmlhYmxlIGlzIGFsbG93ZWQgaW4gdGhlIGxvY2F0aW9uIGl0IHdhcyBmb3VuZCxcbiAqIHdoaWNoIGluY2x1ZGVzIGNvbnNpZGVyaW5nIGlmIGRlZmF1bHQgdmFsdWVzIGV4aXN0IGZvciBlaXRoZXIgdGhlIHZhcmlhYmxlXG4gKiBvciB0aGUgbG9jYXRpb24gYXQgd2hpY2ggaXQgaXMgbG9jYXRlZC5cbiAqL1xuXG5mdW5jdGlvbiBhbGxvd2VkVmFyaWFibGVVc2FnZShcbiAgc2NoZW1hLFxuICB2YXJUeXBlLFxuICB2YXJEZWZhdWx0VmFsdWUsXG4gIGxvY2F0aW9uVHlwZSxcbiAgbG9jYXRpb25EZWZhdWx0VmFsdWUsXG4pIHtcbiAgaWYgKGlzTm9uTnVsbFR5cGUobG9jYXRpb25UeXBlKSAmJiAhaXNOb25OdWxsVHlwZSh2YXJUeXBlKSkge1xuICAgIGNvbnN0IGhhc05vbk51bGxWYXJpYWJsZURlZmF1bHRWYWx1ZSA9XG4gICAgICB2YXJEZWZhdWx0VmFsdWUgIT0gbnVsbCAmJiB2YXJEZWZhdWx0VmFsdWUua2luZCAhPT0gS2luZC5OVUxMO1xuICAgIGNvbnN0IGhhc0xvY2F0aW9uRGVmYXVsdFZhbHVlID0gbG9jYXRpb25EZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZDtcblxuICAgIGlmICghaGFzTm9uTnVsbFZhcmlhYmxlRGVmYXVsdFZhbHVlICYmICFoYXNMb2NhdGlvbkRlZmF1bHRWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IG51bGxhYmxlTG9jYXRpb25UeXBlID0gbG9jYXRpb25UeXBlLm9mVHlwZTtcbiAgICByZXR1cm4gaXNUeXBlU3ViVHlwZU9mKHNjaGVtYSwgdmFyVHlwZSwgbnVsbGFibGVMb2NhdGlvblR5cGUpO1xuICB9XG5cbiAgcmV0dXJuIGlzVHlwZVN1YlR5cGVPZihzY2hlbWEsIHZhclR5cGUsIGxvY2F0aW9uVHlwZSk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs":
/*!*********************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs ***!
  \*********************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NoDeprecatedCustomRule\": function() { return /* binding */ NoDeprecatedCustomRule; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../jsutils/invariant.mjs */ \"./node_modules/graphql/jsutils/invariant.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n\n\n\n\n/**\n * No deprecated\n *\n * A GraphQL document is only valid if all selected fields and all used enum values have not been\n * deprecated.\n *\n * Note: This rule is optional and is not part of the Validation section of the GraphQL\n * Specification. The main purpose of this rule is detection of deprecated usages and not\n * necessarily to forbid their use when querying a service.\n */\nfunction NoDeprecatedCustomRule(context) {\n  return {\n    Field(node) {\n      const fieldDef = context.getFieldDef();\n      const deprecationReason =\n        fieldDef === null || fieldDef === void 0\n          ? void 0\n          : fieldDef.deprecationReason;\n\n      if (fieldDef && deprecationReason != null) {\n        const parentType = context.getParentType();\n        parentType != null || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__.invariant)(false);\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n            `The field ${parentType.name}.${fieldDef.name} is deprecated. ${deprecationReason}`,\n            node,\n          ),\n        );\n      }\n    },\n\n    Argument(node) {\n      const argDef = context.getArgument();\n      const deprecationReason =\n        argDef === null || argDef === void 0\n          ? void 0\n          : argDef.deprecationReason;\n\n      if (argDef && deprecationReason != null) {\n        const directiveDef = context.getDirective();\n\n        if (directiveDef != null) {\n          context.reportError(\n            new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n              `Directive \"@${directiveDef.name}\" argument \"${argDef.name}\" is deprecated. ${deprecationReason}`,\n              node,\n            ),\n          );\n        } else {\n          const parentType = context.getParentType();\n          const fieldDef = context.getFieldDef();\n          (parentType != null && fieldDef != null) || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__.invariant)(false);\n          context.reportError(\n            new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n              `Field \"${parentType.name}.${fieldDef.name}\" argument \"${argDef.name}\" is deprecated. ${deprecationReason}`,\n              node,\n            ),\n          );\n        }\n      }\n    },\n\n    ObjectField(node) {\n      const inputObjectDef = (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.getNamedType)(context.getParentInputType());\n\n      if ((0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.isInputObjectType)(inputObjectDef)) {\n        const inputFieldDef = inputObjectDef.getFields()[node.name.value];\n        const deprecationReason =\n          inputFieldDef === null || inputFieldDef === void 0\n            ? void 0\n            : inputFieldDef.deprecationReason;\n\n        if (deprecationReason != null) {\n          context.reportError(\n            new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n              `The input field ${inputObjectDef.name}.${inputFieldDef.name} is deprecated. ${deprecationReason}`,\n              node,\n            ),\n          );\n        }\n      }\n    },\n\n    EnumValue(node) {\n      const enumValueDef = context.getEnumValue();\n      const deprecationReason =\n        enumValueDef === null || enumValueDef === void 0\n          ? void 0\n          : enumValueDef.deprecationReason;\n\n      if (enumValueDef && deprecationReason != null) {\n        const enumTypeDef = (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_2__.getNamedType)(context.getInputType());\n        enumTypeDef != null || (0,_jsutils_invariant_mjs__WEBPACK_IMPORTED_MODULE_0__.invariant)(false);\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_1__.GraphQLError(\n            `The enum value \"${enumTypeDef.name}.${enumValueDef.name}\" is deprecated. ${deprecationReason}`,\n            node,\n          ),\n        );\n      }\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL2N1c3RvbS9Ob0RlcHJlY2F0ZWRDdXN0b21SdWxlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTJEO0FBQ0k7QUFDZ0I7O0FBRS9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsOEJBQThCLGlFQUFTO0FBQ3ZDO0FBQ0EsY0FBYyxpRUFBWTtBQUMxQix5QkFBeUIsZ0JBQWdCLEdBQUcsZUFBZSxpQkFBaUIsa0JBQWtCO0FBQzlGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCLGlFQUFZO0FBQzVCLDZCQUE2QixrQkFBa0IsY0FBYyxZQUFZLG1CQUFtQixrQkFBa0I7QUFDOUc7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQSxzREFBc0QsaUVBQVM7QUFDL0Q7QUFDQSxnQkFBZ0IsaUVBQVk7QUFDNUIsd0JBQXdCLGdCQUFnQixHQUFHLGNBQWMsY0FBYyxZQUFZLG1CQUFtQixrQkFBa0I7QUFDeEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSw2QkFBNkIsa0VBQVk7O0FBRXpDLFVBQVUsdUVBQWlCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdCQUFnQixpRUFBWTtBQUM1QixpQ0FBaUMsb0JBQW9CLEdBQUcsb0JBQW9CLGlCQUFpQixrQkFBa0I7QUFDL0c7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLGtFQUFZO0FBQ3hDLCtCQUErQixpRUFBUztBQUN4QztBQUNBLGNBQWMsaUVBQVk7QUFDMUIsK0JBQStCLGlCQUFpQixHQUFHLGtCQUFrQixtQkFBbUIsa0JBQWtCO0FBQzFHO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9ydWxlcy9jdXN0b20vTm9EZXByZWNhdGVkQ3VzdG9tUnVsZS5tanM/YTE2NiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnZhcmlhbnQgfSBmcm9tICcuLi8uLi8uLi9qc3V0aWxzL2ludmFyaWFudC5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyBnZXROYW1lZFR5cGUsIGlzSW5wdXRPYmplY3RUeXBlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5cbi8qKlxuICogTm8gZGVwcmVjYXRlZFxuICpcbiAqIEEgR3JhcGhRTCBkb2N1bWVudCBpcyBvbmx5IHZhbGlkIGlmIGFsbCBzZWxlY3RlZCBmaWVsZHMgYW5kIGFsbCB1c2VkIGVudW0gdmFsdWVzIGhhdmUgbm90IGJlZW5cbiAqIGRlcHJlY2F0ZWQuXG4gKlxuICogTm90ZTogVGhpcyBydWxlIGlzIG9wdGlvbmFsIGFuZCBpcyBub3QgcGFydCBvZiB0aGUgVmFsaWRhdGlvbiBzZWN0aW9uIG9mIHRoZSBHcmFwaFFMXG4gKiBTcGVjaWZpY2F0aW9uLiBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMgcnVsZSBpcyBkZXRlY3Rpb24gb2YgZGVwcmVjYXRlZCB1c2FnZXMgYW5kIG5vdFxuICogbmVjZXNzYXJpbHkgdG8gZm9yYmlkIHRoZWlyIHVzZSB3aGVuIHF1ZXJ5aW5nIGEgc2VydmljZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE5vRGVwcmVjYXRlZEN1c3RvbVJ1bGUoY29udGV4dCkge1xuICByZXR1cm4ge1xuICAgIEZpZWxkKG5vZGUpIHtcbiAgICAgIGNvbnN0IGZpZWxkRGVmID0gY29udGV4dC5nZXRGaWVsZERlZigpO1xuICAgICAgY29uc3QgZGVwcmVjYXRpb25SZWFzb24gPVxuICAgICAgICBmaWVsZERlZiA9PT0gbnVsbCB8fCBmaWVsZERlZiA9PT0gdm9pZCAwXG4gICAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgICA6IGZpZWxkRGVmLmRlcHJlY2F0aW9uUmVhc29uO1xuXG4gICAgICBpZiAoZmllbGREZWYgJiYgZGVwcmVjYXRpb25SZWFzb24gIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBwYXJlbnRUeXBlID0gY29udGV4dC5nZXRQYXJlbnRUeXBlKCk7XG4gICAgICAgIHBhcmVudFR5cGUgIT0gbnVsbCB8fCBpbnZhcmlhbnQoZmFsc2UpO1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgVGhlIGZpZWxkICR7cGFyZW50VHlwZS5uYW1lfS4ke2ZpZWxkRGVmLm5hbWV9IGlzIGRlcHJlY2F0ZWQuICR7ZGVwcmVjYXRpb25SZWFzb259YCxcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgQXJndW1lbnQobm9kZSkge1xuICAgICAgY29uc3QgYXJnRGVmID0gY29udGV4dC5nZXRBcmd1bWVudCgpO1xuICAgICAgY29uc3QgZGVwcmVjYXRpb25SZWFzb24gPVxuICAgICAgICBhcmdEZWYgPT09IG51bGwgfHwgYXJnRGVmID09PSB2b2lkIDBcbiAgICAgICAgICA/IHZvaWQgMFxuICAgICAgICAgIDogYXJnRGVmLmRlcHJlY2F0aW9uUmVhc29uO1xuXG4gICAgICBpZiAoYXJnRGVmICYmIGRlcHJlY2F0aW9uUmVhc29uICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgZGlyZWN0aXZlRGVmID0gY29udGV4dC5nZXREaXJlY3RpdmUoKTtcblxuICAgICAgICBpZiAoZGlyZWN0aXZlRGVmICE9IG51bGwpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgYERpcmVjdGl2ZSBcIkAke2RpcmVjdGl2ZURlZi5uYW1lfVwiIGFyZ3VtZW50IFwiJHthcmdEZWYubmFtZX1cIiBpcyBkZXByZWNhdGVkLiAke2RlcHJlY2F0aW9uUmVhc29ufWAsXG4gICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50VHlwZSA9IGNvbnRleHQuZ2V0UGFyZW50VHlwZSgpO1xuICAgICAgICAgIGNvbnN0IGZpZWxkRGVmID0gY29udGV4dC5nZXRGaWVsZERlZigpO1xuICAgICAgICAgIChwYXJlbnRUeXBlICE9IG51bGwgJiYgZmllbGREZWYgIT0gbnVsbCkgfHwgaW52YXJpYW50KGZhbHNlKTtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgYEZpZWxkIFwiJHtwYXJlbnRUeXBlLm5hbWV9LiR7ZmllbGREZWYubmFtZX1cIiBhcmd1bWVudCBcIiR7YXJnRGVmLm5hbWV9XCIgaXMgZGVwcmVjYXRlZC4gJHtkZXByZWNhdGlvblJlYXNvbn1gLFxuICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIE9iamVjdEZpZWxkKG5vZGUpIHtcbiAgICAgIGNvbnN0IGlucHV0T2JqZWN0RGVmID0gZ2V0TmFtZWRUeXBlKGNvbnRleHQuZ2V0UGFyZW50SW5wdXRUeXBlKCkpO1xuXG4gICAgICBpZiAoaXNJbnB1dE9iamVjdFR5cGUoaW5wdXRPYmplY3REZWYpKSB7XG4gICAgICAgIGNvbnN0IGlucHV0RmllbGREZWYgPSBpbnB1dE9iamVjdERlZi5nZXRGaWVsZHMoKVtub2RlLm5hbWUudmFsdWVdO1xuICAgICAgICBjb25zdCBkZXByZWNhdGlvblJlYXNvbiA9XG4gICAgICAgICAgaW5wdXRGaWVsZERlZiA9PT0gbnVsbCB8fCBpbnB1dEZpZWxkRGVmID09PSB2b2lkIDBcbiAgICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgICA6IGlucHV0RmllbGREZWYuZGVwcmVjYXRpb25SZWFzb247XG5cbiAgICAgICAgaWYgKGRlcHJlY2F0aW9uUmVhc29uICE9IG51bGwpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgICAgbmV3IEdyYXBoUUxFcnJvcihcbiAgICAgICAgICAgICAgYFRoZSBpbnB1dCBmaWVsZCAke2lucHV0T2JqZWN0RGVmLm5hbWV9LiR7aW5wdXRGaWVsZERlZi5uYW1lfSBpcyBkZXByZWNhdGVkLiAke2RlcHJlY2F0aW9uUmVhc29ufWAsXG4gICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgRW51bVZhbHVlKG5vZGUpIHtcbiAgICAgIGNvbnN0IGVudW1WYWx1ZURlZiA9IGNvbnRleHQuZ2V0RW51bVZhbHVlKCk7XG4gICAgICBjb25zdCBkZXByZWNhdGlvblJlYXNvbiA9XG4gICAgICAgIGVudW1WYWx1ZURlZiA9PT0gbnVsbCB8fCBlbnVtVmFsdWVEZWYgPT09IHZvaWQgMFxuICAgICAgICAgID8gdm9pZCAwXG4gICAgICAgICAgOiBlbnVtVmFsdWVEZWYuZGVwcmVjYXRpb25SZWFzb247XG5cbiAgICAgIGlmIChlbnVtVmFsdWVEZWYgJiYgZGVwcmVjYXRpb25SZWFzb24gIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBlbnVtVHlwZURlZiA9IGdldE5hbWVkVHlwZShjb250ZXh0LmdldElucHV0VHlwZSgpKTtcbiAgICAgICAgZW51bVR5cGVEZWYgIT0gbnVsbCB8fCBpbnZhcmlhbnQoZmFsc2UpO1xuICAgICAgICBjb250ZXh0LnJlcG9ydEVycm9yKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICBgVGhlIGVudW0gdmFsdWUgXCIke2VudW1UeXBlRGVmLm5hbWV9LiR7ZW51bVZhbHVlRGVmLm5hbWV9XCIgaXMgZGVwcmVjYXRlZC4gJHtkZXByZWNhdGlvblJlYXNvbn1gLFxuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs":
/*!******************************************************************************************!*\
  !*** ./node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs ***!
  \******************************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"NoSchemaIntrospectionCustomRule\": function() { return /* binding */ NoSchemaIntrospectionCustomRule; }\n/* harmony export */ });\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../type/definition.mjs */ \"./node_modules/graphql/type/definition.mjs\");\n/* harmony import */ var _type_introspection_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../type/introspection.mjs */ \"./node_modules/graphql/type/introspection.mjs\");\n\n\n\n\n/**\n * Prohibit introspection queries\n *\n * A GraphQL document is only valid if all fields selected are not fields that\n * return an introspection type.\n *\n * Note: This rule is optional and is not part of the Validation section of the\n * GraphQL Specification. This rule effectively disables introspection, which\n * does not reflect best practices and should only be done if absolutely necessary.\n */\nfunction NoSchemaIntrospectionCustomRule(context) {\n  return {\n    Field(node) {\n      const type = (0,_type_definition_mjs__WEBPACK_IMPORTED_MODULE_0__.getNamedType)(context.getType());\n\n      if (type && (0,_type_introspection_mjs__WEBPACK_IMPORTED_MODULE_1__.isIntrospectionType)(type)) {\n        context.reportError(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_2__.GraphQLError(\n            `GraphQL introspection has been disabled, but the requested query contained the field \"${node.name.value}\".`,\n            node,\n          ),\n        );\n      }\n    },\n  };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL2N1c3RvbS9Ob1NjaGVtYUludHJvc3BlY3Rpb25DdXN0b21SdWxlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQStEO0FBQ0g7QUFDVTs7QUFFdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSxtQkFBbUIsa0VBQVk7O0FBRS9CLGtCQUFrQiw0RUFBbUI7QUFDckM7QUFDQSxjQUFjLGlFQUFZO0FBQzFCLHFHQUFxRyxnQkFBZ0I7QUFDckg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3J1bGVzL2N1c3RvbS9Ob1NjaGVtYUludHJvc3BlY3Rpb25DdXN0b21SdWxlLm1qcz9lNDU0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxFcnJvciB9IGZyb20gJy4uLy4uLy4uL2Vycm9yL0dyYXBoUUxFcnJvci5tanMnO1xuaW1wb3J0IHsgZ2V0TmFtZWRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZS9kZWZpbml0aW9uLm1qcyc7XG5pbXBvcnQgeyBpc0ludHJvc3BlY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZS9pbnRyb3NwZWN0aW9uLm1qcyc7XG5cbi8qKlxuICogUHJvaGliaXQgaW50cm9zcGVjdGlvbiBxdWVyaWVzXG4gKlxuICogQSBHcmFwaFFMIGRvY3VtZW50IGlzIG9ubHkgdmFsaWQgaWYgYWxsIGZpZWxkcyBzZWxlY3RlZCBhcmUgbm90IGZpZWxkcyB0aGF0XG4gKiByZXR1cm4gYW4gaW50cm9zcGVjdGlvbiB0eXBlLlxuICpcbiAqIE5vdGU6IFRoaXMgcnVsZSBpcyBvcHRpb25hbCBhbmQgaXMgbm90IHBhcnQgb2YgdGhlIFZhbGlkYXRpb24gc2VjdGlvbiBvZiB0aGVcbiAqIEdyYXBoUUwgU3BlY2lmaWNhdGlvbi4gVGhpcyBydWxlIGVmZmVjdGl2ZWx5IGRpc2FibGVzIGludHJvc3BlY3Rpb24sIHdoaWNoXG4gKiBkb2VzIG5vdCByZWZsZWN0IGJlc3QgcHJhY3RpY2VzIGFuZCBzaG91bGQgb25seSBiZSBkb25lIGlmIGFic29sdXRlbHkgbmVjZXNzYXJ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gTm9TY2hlbWFJbnRyb3NwZWN0aW9uQ3VzdG9tUnVsZShjb250ZXh0KSB7XG4gIHJldHVybiB7XG4gICAgRmllbGQobm9kZSkge1xuICAgICAgY29uc3QgdHlwZSA9IGdldE5hbWVkVHlwZShjb250ZXh0LmdldFR5cGUoKSk7XG5cbiAgICAgIGlmICh0eXBlICYmIGlzSW50cm9zcGVjdGlvblR5cGUodHlwZSkpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnRFcnJvcihcbiAgICAgICAgICBuZXcgR3JhcGhRTEVycm9yKFxuICAgICAgICAgICAgYEdyYXBoUUwgaW50cm9zcGVjdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCwgYnV0IHRoZSByZXF1ZXN0ZWQgcXVlcnkgY29udGFpbmVkIHRoZSBmaWVsZCBcIiR7bm9kZS5uYW1lLnZhbHVlfVwiLmAsXG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/specifiedRules.mjs":
/*!************************************************************!*\
  !*** ./node_modules/graphql/validation/specifiedRules.mjs ***!
  \************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"specifiedRules\": function() { return /* binding */ specifiedRules; },\n/* harmony export */   \"specifiedSDLRules\": function() { return /* binding */ specifiedSDLRules; }\n/* harmony export */ });\n/* harmony import */ var _rules_ExecutableDefinitionsRule_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./rules/ExecutableDefinitionsRule.mjs */ \"./node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs\");\n/* harmony import */ var _rules_FieldsOnCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./rules/FieldsOnCorrectTypeRule.mjs */ \"./node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs\");\n/* harmony import */ var _rules_FragmentsOnCompositeTypesRule_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./rules/FragmentsOnCompositeTypesRule.mjs */ \"./node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs\");\n/* harmony import */ var _rules_KnownArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./rules/KnownArgumentNamesRule.mjs */ \"./node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs\");\n/* harmony import */ var _rules_KnownDirectivesRule_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./rules/KnownDirectivesRule.mjs */ \"./node_modules/graphql/validation/rules/KnownDirectivesRule.mjs\");\n/* harmony import */ var _rules_KnownFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./rules/KnownFragmentNamesRule.mjs */ \"./node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs\");\n/* harmony import */ var _rules_KnownTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./rules/KnownTypeNamesRule.mjs */ \"./node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs\");\n/* harmony import */ var _rules_LoneAnonymousOperationRule_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rules/LoneAnonymousOperationRule.mjs */ \"./node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs\");\n/* harmony import */ var _rules_LoneSchemaDefinitionRule_mjs__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./rules/LoneSchemaDefinitionRule.mjs */ \"./node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs\");\n/* harmony import */ var _rules_NoFragmentCyclesRule_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./rules/NoFragmentCyclesRule.mjs */ \"./node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs\");\n/* harmony import */ var _rules_NoUndefinedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./rules/NoUndefinedVariablesRule.mjs */ \"./node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs\");\n/* harmony import */ var _rules_NoUnusedFragmentsRule_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./rules/NoUnusedFragmentsRule.mjs */ \"./node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs\");\n/* harmony import */ var _rules_NoUnusedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./rules/NoUnusedVariablesRule.mjs */ \"./node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs\");\n/* harmony import */ var _rules_OverlappingFieldsCanBeMergedRule_mjs__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./rules/OverlappingFieldsCanBeMergedRule.mjs */ \"./node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs\");\n/* harmony import */ var _rules_PossibleFragmentSpreadsRule_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./rules/PossibleFragmentSpreadsRule.mjs */ \"./node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs\");\n/* harmony import */ var _rules_PossibleTypeExtensionsRule_mjs__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./rules/PossibleTypeExtensionsRule.mjs */ \"./node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs\");\n/* harmony import */ var _rules_ProvidedRequiredArgumentsRule_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./rules/ProvidedRequiredArgumentsRule.mjs */ \"./node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs\");\n/* harmony import */ var _rules_ScalarLeafsRule_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./rules/ScalarLeafsRule.mjs */ \"./node_modules/graphql/validation/rules/ScalarLeafsRule.mjs\");\n/* harmony import */ var _rules_SingleFieldSubscriptionsRule_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./rules/SingleFieldSubscriptionsRule.mjs */ \"./node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs\");\n/* harmony import */ var _rules_UniqueArgumentDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./rules/UniqueArgumentDefinitionNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./rules/UniqueArgumentNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueDirectiveNamesRule_mjs__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./rules/UniqueDirectiveNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueDirectivesPerLocationRule_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./rules/UniqueDirectivesPerLocationRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs\");\n/* harmony import */ var _rules_UniqueEnumValueNamesRule_mjs__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./rules/UniqueEnumValueNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueFieldDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./rules/UniqueFieldDefinitionNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./rules/UniqueFragmentNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueInputFieldNamesRule_mjs__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./rules/UniqueInputFieldNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueOperationNamesRule_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rules/UniqueOperationNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueOperationTypesRule_mjs__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./rules/UniqueOperationTypesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs\");\n/* harmony import */ var _rules_UniqueTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./rules/UniqueTypeNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs\");\n/* harmony import */ var _rules_UniqueVariableNamesRule_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./rules/UniqueVariableNamesRule.mjs */ \"./node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs\");\n/* harmony import */ var _rules_ValuesOfCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./rules/ValuesOfCorrectTypeRule.mjs */ \"./node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs\");\n/* harmony import */ var _rules_VariablesAreInputTypesRule_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./rules/VariablesAreInputTypesRule.mjs */ \"./node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs\");\n/* harmony import */ var _rules_VariablesInAllowedPositionRule_mjs__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./rules/VariablesInAllowedPositionRule.mjs */ \"./node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs\");\n// Spec Section: \"Executable Definitions\"\n // Spec Section: \"Field Selections on Objects, Interfaces, and Unions Types\"\n\n // Spec Section: \"Fragments on Composite Types\"\n\n // Spec Section: \"Argument Names\"\n\n // Spec Section: \"Directives Are Defined\"\n\n // Spec Section: \"Fragment spread target defined\"\n\n // Spec Section: \"Fragment Spread Type Existence\"\n\n // Spec Section: \"Lone Anonymous Operation\"\n\n // SDL-specific validation rules\n\n // Spec Section: \"Fragments must not form cycles\"\n\n // Spec Section: \"All Variable Used Defined\"\n\n // Spec Section: \"Fragments must be used\"\n\n // Spec Section: \"All Variables Used\"\n\n // Spec Section: \"Field Selection Merging\"\n\n // Spec Section: \"Fragment spread is possible\"\n\n\n // Spec Section: \"Argument Optionality\"\n\n // Spec Section: \"Leaf Field Selections\"\n\n // Spec Section: \"Subscriptions with Single Root Field\"\n\n\n // Spec Section: \"Argument Uniqueness\"\n\n\n // Spec Section: \"Directives Are Unique Per Location\"\n\n\n\n // Spec Section: \"Fragment Name Uniqueness\"\n\n // Spec Section: \"Input Object Field Uniqueness\"\n\n // Spec Section: \"Operation Name Uniqueness\"\n\n\n\n // Spec Section: \"Variable Uniqueness\"\n\n // Spec Section: \"Value Type Correctness\"\n\n // Spec Section: \"Variables are Input Types\"\n\n // Spec Section: \"All Variable Usages Are Allowed\"\n\n\n\n/**\n * This set includes all validation rules defined by the GraphQL spec.\n *\n * The order of the rules in this list has been adjusted to lead to the\n * most clear output when encountering multiple validation errors.\n */\nconst specifiedRules = Object.freeze([\n  _rules_ExecutableDefinitionsRule_mjs__WEBPACK_IMPORTED_MODULE_0__.ExecutableDefinitionsRule,\n  _rules_UniqueOperationNamesRule_mjs__WEBPACK_IMPORTED_MODULE_1__.UniqueOperationNamesRule,\n  _rules_LoneAnonymousOperationRule_mjs__WEBPACK_IMPORTED_MODULE_2__.LoneAnonymousOperationRule,\n  _rules_SingleFieldSubscriptionsRule_mjs__WEBPACK_IMPORTED_MODULE_3__.SingleFieldSubscriptionsRule,\n  _rules_KnownTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_4__.KnownTypeNamesRule,\n  _rules_FragmentsOnCompositeTypesRule_mjs__WEBPACK_IMPORTED_MODULE_5__.FragmentsOnCompositeTypesRule,\n  _rules_VariablesAreInputTypesRule_mjs__WEBPACK_IMPORTED_MODULE_6__.VariablesAreInputTypesRule,\n  _rules_ScalarLeafsRule_mjs__WEBPACK_IMPORTED_MODULE_7__.ScalarLeafsRule,\n  _rules_FieldsOnCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_8__.FieldsOnCorrectTypeRule,\n  _rules_UniqueFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_9__.UniqueFragmentNamesRule,\n  _rules_KnownFragmentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_10__.KnownFragmentNamesRule,\n  _rules_NoUnusedFragmentsRule_mjs__WEBPACK_IMPORTED_MODULE_11__.NoUnusedFragmentsRule,\n  _rules_PossibleFragmentSpreadsRule_mjs__WEBPACK_IMPORTED_MODULE_12__.PossibleFragmentSpreadsRule,\n  _rules_NoFragmentCyclesRule_mjs__WEBPACK_IMPORTED_MODULE_13__.NoFragmentCyclesRule,\n  _rules_UniqueVariableNamesRule_mjs__WEBPACK_IMPORTED_MODULE_14__.UniqueVariableNamesRule,\n  _rules_NoUndefinedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_15__.NoUndefinedVariablesRule,\n  _rules_NoUnusedVariablesRule_mjs__WEBPACK_IMPORTED_MODULE_16__.NoUnusedVariablesRule,\n  _rules_KnownDirectivesRule_mjs__WEBPACK_IMPORTED_MODULE_17__.KnownDirectivesRule,\n  _rules_UniqueDirectivesPerLocationRule_mjs__WEBPACK_IMPORTED_MODULE_18__.UniqueDirectivesPerLocationRule,\n  _rules_KnownArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_19__.KnownArgumentNamesRule,\n  _rules_UniqueArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_20__.UniqueArgumentNamesRule,\n  _rules_ValuesOfCorrectTypeRule_mjs__WEBPACK_IMPORTED_MODULE_21__.ValuesOfCorrectTypeRule,\n  _rules_ProvidedRequiredArgumentsRule_mjs__WEBPACK_IMPORTED_MODULE_22__.ProvidedRequiredArgumentsRule,\n  _rules_VariablesInAllowedPositionRule_mjs__WEBPACK_IMPORTED_MODULE_23__.VariablesInAllowedPositionRule,\n  _rules_OverlappingFieldsCanBeMergedRule_mjs__WEBPACK_IMPORTED_MODULE_24__.OverlappingFieldsCanBeMergedRule,\n  _rules_UniqueInputFieldNamesRule_mjs__WEBPACK_IMPORTED_MODULE_25__.UniqueInputFieldNamesRule,\n]);\n/**\n * @internal\n */\n\nconst specifiedSDLRules = Object.freeze([\n  _rules_LoneSchemaDefinitionRule_mjs__WEBPACK_IMPORTED_MODULE_26__.LoneSchemaDefinitionRule,\n  _rules_UniqueOperationTypesRule_mjs__WEBPACK_IMPORTED_MODULE_27__.UniqueOperationTypesRule,\n  _rules_UniqueTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_28__.UniqueTypeNamesRule,\n  _rules_UniqueEnumValueNamesRule_mjs__WEBPACK_IMPORTED_MODULE_29__.UniqueEnumValueNamesRule,\n  _rules_UniqueFieldDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_30__.UniqueFieldDefinitionNamesRule,\n  _rules_UniqueArgumentDefinitionNamesRule_mjs__WEBPACK_IMPORTED_MODULE_31__.UniqueArgumentDefinitionNamesRule,\n  _rules_UniqueDirectiveNamesRule_mjs__WEBPACK_IMPORTED_MODULE_32__.UniqueDirectiveNamesRule,\n  _rules_KnownTypeNamesRule_mjs__WEBPACK_IMPORTED_MODULE_4__.KnownTypeNamesRule,\n  _rules_KnownDirectivesRule_mjs__WEBPACK_IMPORTED_MODULE_17__.KnownDirectivesRule,\n  _rules_UniqueDirectivesPerLocationRule_mjs__WEBPACK_IMPORTED_MODULE_18__.UniqueDirectivesPerLocationRule,\n  _rules_PossibleTypeExtensionsRule_mjs__WEBPACK_IMPORTED_MODULE_33__.PossibleTypeExtensionsRule,\n  _rules_KnownArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_19__.KnownArgumentNamesOnDirectivesRule,\n  _rules_UniqueArgumentNamesRule_mjs__WEBPACK_IMPORTED_MODULE_20__.UniqueArgumentNamesRule,\n  _rules_UniqueInputFieldNamesRule_mjs__WEBPACK_IMPORTED_MODULE_25__.UniqueInputFieldNamesRule,\n  _rules_ProvidedRequiredArgumentsRule_mjs__WEBPACK_IMPORTED_MODULE_22__.ProvidedRequiredArgumentsOnDirectivesRule,\n]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3NwZWNpZmllZFJ1bGVzLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNrRixDQUFDOztBQUVMLENBQUM7O0FBRVcsQ0FBQzs7QUFLL0MsQ0FBQzs7QUFFeUIsQ0FBQzs7QUFFSyxDQUFDOztBQUVULENBQUM7O0FBRWUsQ0FBQzs7QUFFTCxDQUFDOztBQUVULENBQUM7O0FBRU8sQ0FBQzs7QUFFUCxDQUFDOztBQUVELENBQUM7O0FBRXFCLENBQUM7O0FBRVg7QUFDRixDQUFDOztBQUtsQyxDQUFDOztBQUVVLENBQUM7O0FBRXlCO0FBQ1UsQ0FBQzs7QUFFckI7QUFDRSxDQUFDOztBQUVhO0FBQ2Q7QUFDWSxDQUFDOztBQUVmLENBQUM7O0FBRUcsQ0FBQzs7QUFFSDtBQUNBO0FBQ1YsQ0FBQzs7QUFFTyxDQUFDOztBQUVELENBQUM7O0FBRUssQ0FBQzs7QUFFTzs7QUFFNUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxFQUFFLDJGQUF5QjtBQUMzQixFQUFFLHlGQUF3QjtBQUMxQixFQUFFLDZGQUEwQjtBQUM1QixFQUFFLGlHQUE0QjtBQUM5QixFQUFFLDZFQUFrQjtBQUNwQixFQUFFLG1HQUE2QjtBQUMvQixFQUFFLDZGQUEwQjtBQUM1QixFQUFFLHVFQUFlO0FBQ2pCLEVBQUUsdUZBQXVCO0FBQ3pCLEVBQUUsdUZBQXVCO0FBQ3pCLEVBQUUsc0ZBQXNCO0FBQ3hCLEVBQUUsb0ZBQXFCO0FBQ3ZCLEVBQUUsZ0dBQTJCO0FBQzdCLEVBQUUsa0ZBQW9CO0FBQ3RCLEVBQUUsd0ZBQXVCO0FBQ3pCLEVBQUUsMEZBQXdCO0FBQzFCLEVBQUUsb0ZBQXFCO0FBQ3ZCLEVBQUUsZ0ZBQW1CO0FBQ3JCLEVBQUUsd0dBQStCO0FBQ2pDLEVBQUUsc0ZBQXNCO0FBQ3hCLEVBQUUsd0ZBQXVCO0FBQ3pCLEVBQUUsd0ZBQXVCO0FBQ3pCLEVBQUUsb0dBQTZCO0FBQy9CLEVBQUUsc0dBQThCO0FBQ2hDLEVBQUUsMEdBQWdDO0FBQ2xDLEVBQUUsNEZBQXlCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1AsRUFBRSwwRkFBd0I7QUFDMUIsRUFBRSwwRkFBd0I7QUFDMUIsRUFBRSxnRkFBbUI7QUFDckIsRUFBRSwwRkFBd0I7QUFDMUIsRUFBRSxzR0FBOEI7QUFDaEMsRUFBRSw0R0FBaUM7QUFDbkMsRUFBRSwwRkFBd0I7QUFDMUIsRUFBRSw2RUFBa0I7QUFDcEIsRUFBRSxnRkFBbUI7QUFDckIsRUFBRSx3R0FBK0I7QUFDakMsRUFBRSw4RkFBMEI7QUFDNUIsRUFBRSxrR0FBa0M7QUFDcEMsRUFBRSx3RkFBdUI7QUFDekIsRUFBRSw0RkFBeUI7QUFDM0IsRUFBRSxnSEFBeUM7QUFDM0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi9zcGVjaWZpZWRSdWxlcy5tanM/NzdlZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTcGVjIFNlY3Rpb246IFwiRXhlY3V0YWJsZSBEZWZpbml0aW9uc1wiXG5pbXBvcnQgeyBFeGVjdXRhYmxlRGVmaW5pdGlvbnNSdWxlIH0gZnJvbSAnLi9ydWxlcy9FeGVjdXRhYmxlRGVmaW5pdGlvbnNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJGaWVsZCBTZWxlY3Rpb25zIG9uIE9iamVjdHMsIEludGVyZmFjZXMsIGFuZCBVbmlvbnMgVHlwZXNcIlxuXG5pbXBvcnQgeyBGaWVsZHNPbkNvcnJlY3RUeXBlUnVsZSB9IGZyb20gJy4vcnVsZXMvRmllbGRzT25Db3JyZWN0VHlwZVJ1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkZyYWdtZW50cyBvbiBDb21wb3NpdGUgVHlwZXNcIlxuXG5pbXBvcnQgeyBGcmFnbWVudHNPbkNvbXBvc2l0ZVR5cGVzUnVsZSB9IGZyb20gJy4vcnVsZXMvRnJhZ21lbnRzT25Db21wb3NpdGVUeXBlc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkFyZ3VtZW50IE5hbWVzXCJcblxuaW1wb3J0IHtcbiAgS25vd25Bcmd1bWVudE5hbWVzT25EaXJlY3RpdmVzUnVsZSxcbiAgS25vd25Bcmd1bWVudE5hbWVzUnVsZSxcbn0gZnJvbSAnLi9ydWxlcy9Lbm93bkFyZ3VtZW50TmFtZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJEaXJlY3RpdmVzIEFyZSBEZWZpbmVkXCJcblxuaW1wb3J0IHsgS25vd25EaXJlY3RpdmVzUnVsZSB9IGZyb20gJy4vcnVsZXMvS25vd25EaXJlY3RpdmVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiRnJhZ21lbnQgc3ByZWFkIHRhcmdldCBkZWZpbmVkXCJcblxuaW1wb3J0IHsgS25vd25GcmFnbWVudE5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvS25vd25GcmFnbWVudE5hbWVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiRnJhZ21lbnQgU3ByZWFkIFR5cGUgRXhpc3RlbmNlXCJcblxuaW1wb3J0IHsgS25vd25UeXBlTmFtZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9Lbm93blR5cGVOYW1lc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkxvbmUgQW5vbnltb3VzIE9wZXJhdGlvblwiXG5cbmltcG9ydCB7IExvbmVBbm9ueW1vdXNPcGVyYXRpb25SdWxlIH0gZnJvbSAnLi9ydWxlcy9Mb25lQW5vbnltb3VzT3BlcmF0aW9uUnVsZS5tanMnOyAvLyBTREwtc3BlY2lmaWMgdmFsaWRhdGlvbiBydWxlc1xuXG5pbXBvcnQgeyBMb25lU2NoZW1hRGVmaW5pdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL0xvbmVTY2hlbWFEZWZpbml0aW9uUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiRnJhZ21lbnRzIG11c3Qgbm90IGZvcm0gY3ljbGVzXCJcblxuaW1wb3J0IHsgTm9GcmFnbWVudEN5Y2xlc1J1bGUgfSBmcm9tICcuL3J1bGVzL05vRnJhZ21lbnRDeWNsZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJBbGwgVmFyaWFibGUgVXNlZCBEZWZpbmVkXCJcblxuaW1wb3J0IHsgTm9VbmRlZmluZWRWYXJpYWJsZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9Ob1VuZGVmaW5lZFZhcmlhYmxlc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkZyYWdtZW50cyBtdXN0IGJlIHVzZWRcIlxuXG5pbXBvcnQgeyBOb1VudXNlZEZyYWdtZW50c1J1bGUgfSBmcm9tICcuL3J1bGVzL05vVW51c2VkRnJhZ21lbnRzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiQWxsIFZhcmlhYmxlcyBVc2VkXCJcblxuaW1wb3J0IHsgTm9VbnVzZWRWYXJpYWJsZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9Ob1VudXNlZFZhcmlhYmxlc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkZpZWxkIFNlbGVjdGlvbiBNZXJnaW5nXCJcblxuaW1wb3J0IHsgT3ZlcmxhcHBpbmdGaWVsZHNDYW5CZU1lcmdlZFJ1bGUgfSBmcm9tICcuL3J1bGVzL092ZXJsYXBwaW5nRmllbGRzQ2FuQmVNZXJnZWRSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJGcmFnbWVudCBzcHJlYWQgaXMgcG9zc2libGVcIlxuXG5pbXBvcnQgeyBQb3NzaWJsZUZyYWdtZW50U3ByZWFkc1J1bGUgfSBmcm9tICcuL3J1bGVzL1Bvc3NpYmxlRnJhZ21lbnRTcHJlYWRzUnVsZS5tanMnO1xuaW1wb3J0IHsgUG9zc2libGVUeXBlRXh0ZW5zaW9uc1J1bGUgfSBmcm9tICcuL3J1bGVzL1Bvc3NpYmxlVHlwZUV4dGVuc2lvbnNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJBcmd1bWVudCBPcHRpb25hbGl0eVwiXG5cbmltcG9ydCB7XG4gIFByb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNPbkRpcmVjdGl2ZXNSdWxlLFxuICBQcm92aWRlZFJlcXVpcmVkQXJndW1lbnRzUnVsZSxcbn0gZnJvbSAnLi9ydWxlcy9Qcm92aWRlZFJlcXVpcmVkQXJndW1lbnRzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiTGVhZiBGaWVsZCBTZWxlY3Rpb25zXCJcblxuaW1wb3J0IHsgU2NhbGFyTGVhZnNSdWxlIH0gZnJvbSAnLi9ydWxlcy9TY2FsYXJMZWFmc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIlN1YnNjcmlwdGlvbnMgd2l0aCBTaW5nbGUgUm9vdCBGaWVsZFwiXG5cbmltcG9ydCB7IFNpbmdsZUZpZWxkU3Vic2NyaXB0aW9uc1J1bGUgfSBmcm9tICcuL3J1bGVzL1NpbmdsZUZpZWxkU3Vic2NyaXB0aW9uc1J1bGUubWpzJztcbmltcG9ydCB7IFVuaXF1ZUFyZ3VtZW50RGVmaW5pdGlvbk5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlQXJndW1lbnREZWZpbml0aW9uTmFtZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJBcmd1bWVudCBVbmlxdWVuZXNzXCJcblxuaW1wb3J0IHsgVW5pcXVlQXJndW1lbnROYW1lc1J1bGUgfSBmcm9tICcuL3J1bGVzL1VuaXF1ZUFyZ3VtZW50TmFtZXNSdWxlLm1qcyc7XG5pbXBvcnQgeyBVbmlxdWVEaXJlY3RpdmVOYW1lc1J1bGUgfSBmcm9tICcuL3J1bGVzL1VuaXF1ZURpcmVjdGl2ZU5hbWVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiRGlyZWN0aXZlcyBBcmUgVW5pcXVlIFBlciBMb2NhdGlvblwiXG5cbmltcG9ydCB7IFVuaXF1ZURpcmVjdGl2ZXNQZXJMb2NhdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL1VuaXF1ZURpcmVjdGl2ZXNQZXJMb2NhdGlvblJ1bGUubWpzJztcbmltcG9ydCB7IFVuaXF1ZUVudW1WYWx1ZU5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlRW51bVZhbHVlTmFtZXNSdWxlLm1qcyc7XG5pbXBvcnQgeyBVbmlxdWVGaWVsZERlZmluaXRpb25OYW1lc1J1bGUgfSBmcm9tICcuL3J1bGVzL1VuaXF1ZUZpZWxkRGVmaW5pdGlvbk5hbWVzUnVsZS5tanMnOyAvLyBTcGVjIFNlY3Rpb246IFwiRnJhZ21lbnQgTmFtZSBVbmlxdWVuZXNzXCJcblxuaW1wb3J0IHsgVW5pcXVlRnJhZ21lbnROYW1lc1J1bGUgfSBmcm9tICcuL3J1bGVzL1VuaXF1ZUZyYWdtZW50TmFtZXNSdWxlLm1qcyc7IC8vIFNwZWMgU2VjdGlvbjogXCJJbnB1dCBPYmplY3QgRmllbGQgVW5pcXVlbmVzc1wiXG5cbmltcG9ydCB7IFVuaXF1ZUlucHV0RmllbGROYW1lc1J1bGUgfSBmcm9tICcuL3J1bGVzL1VuaXF1ZUlucHV0RmllbGROYW1lc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIk9wZXJhdGlvbiBOYW1lIFVuaXF1ZW5lc3NcIlxuXG5pbXBvcnQgeyBVbmlxdWVPcGVyYXRpb25OYW1lc1J1bGUgfSBmcm9tICcuL3J1bGVzL1VuaXF1ZU9wZXJhdGlvbk5hbWVzUnVsZS5tanMnO1xuaW1wb3J0IHsgVW5pcXVlT3BlcmF0aW9uVHlwZXNSdWxlIH0gZnJvbSAnLi9ydWxlcy9VbmlxdWVPcGVyYXRpb25UeXBlc1J1bGUubWpzJztcbmltcG9ydCB7IFVuaXF1ZVR5cGVOYW1lc1J1bGUgfSBmcm9tICcuL3J1bGVzL1VuaXF1ZVR5cGVOYW1lc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIlZhcmlhYmxlIFVuaXF1ZW5lc3NcIlxuXG5pbXBvcnQgeyBVbmlxdWVWYXJpYWJsZU5hbWVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVW5pcXVlVmFyaWFibGVOYW1lc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIlZhbHVlIFR5cGUgQ29ycmVjdG5lc3NcIlxuXG5pbXBvcnQgeyBWYWx1ZXNPZkNvcnJlY3RUeXBlUnVsZSB9IGZyb20gJy4vcnVsZXMvVmFsdWVzT2ZDb3JyZWN0VHlwZVJ1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIlZhcmlhYmxlcyBhcmUgSW5wdXQgVHlwZXNcIlxuXG5pbXBvcnQgeyBWYXJpYWJsZXNBcmVJbnB1dFR5cGVzUnVsZSB9IGZyb20gJy4vcnVsZXMvVmFyaWFibGVzQXJlSW5wdXRUeXBlc1J1bGUubWpzJzsgLy8gU3BlYyBTZWN0aW9uOiBcIkFsbCBWYXJpYWJsZSBVc2FnZXMgQXJlIEFsbG93ZWRcIlxuXG5pbXBvcnQgeyBWYXJpYWJsZXNJbkFsbG93ZWRQb3NpdGlvblJ1bGUgfSBmcm9tICcuL3J1bGVzL1ZhcmlhYmxlc0luQWxsb3dlZFBvc2l0aW9uUnVsZS5tanMnO1xuXG4vKipcbiAqIFRoaXMgc2V0IGluY2x1ZGVzIGFsbCB2YWxpZGF0aW9uIHJ1bGVzIGRlZmluZWQgYnkgdGhlIEdyYXBoUUwgc3BlYy5cbiAqXG4gKiBUaGUgb3JkZXIgb2YgdGhlIHJ1bGVzIGluIHRoaXMgbGlzdCBoYXMgYmVlbiBhZGp1c3RlZCB0byBsZWFkIHRvIHRoZVxuICogbW9zdCBjbGVhciBvdXRwdXQgd2hlbiBlbmNvdW50ZXJpbmcgbXVsdGlwbGUgdmFsaWRhdGlvbiBlcnJvcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBzcGVjaWZpZWRSdWxlcyA9IE9iamVjdC5mcmVlemUoW1xuICBFeGVjdXRhYmxlRGVmaW5pdGlvbnNSdWxlLFxuICBVbmlxdWVPcGVyYXRpb25OYW1lc1J1bGUsXG4gIExvbmVBbm9ueW1vdXNPcGVyYXRpb25SdWxlLFxuICBTaW5nbGVGaWVsZFN1YnNjcmlwdGlvbnNSdWxlLFxuICBLbm93blR5cGVOYW1lc1J1bGUsXG4gIEZyYWdtZW50c09uQ29tcG9zaXRlVHlwZXNSdWxlLFxuICBWYXJpYWJsZXNBcmVJbnB1dFR5cGVzUnVsZSxcbiAgU2NhbGFyTGVhZnNSdWxlLFxuICBGaWVsZHNPbkNvcnJlY3RUeXBlUnVsZSxcbiAgVW5pcXVlRnJhZ21lbnROYW1lc1J1bGUsXG4gIEtub3duRnJhZ21lbnROYW1lc1J1bGUsXG4gIE5vVW51c2VkRnJhZ21lbnRzUnVsZSxcbiAgUG9zc2libGVGcmFnbWVudFNwcmVhZHNSdWxlLFxuICBOb0ZyYWdtZW50Q3ljbGVzUnVsZSxcbiAgVW5pcXVlVmFyaWFibGVOYW1lc1J1bGUsXG4gIE5vVW5kZWZpbmVkVmFyaWFibGVzUnVsZSxcbiAgTm9VbnVzZWRWYXJpYWJsZXNSdWxlLFxuICBLbm93bkRpcmVjdGl2ZXNSdWxlLFxuICBVbmlxdWVEaXJlY3RpdmVzUGVyTG9jYXRpb25SdWxlLFxuICBLbm93bkFyZ3VtZW50TmFtZXNSdWxlLFxuICBVbmlxdWVBcmd1bWVudE5hbWVzUnVsZSxcbiAgVmFsdWVzT2ZDb3JyZWN0VHlwZVJ1bGUsXG4gIFByb3ZpZGVkUmVxdWlyZWRBcmd1bWVudHNSdWxlLFxuICBWYXJpYWJsZXNJbkFsbG93ZWRQb3NpdGlvblJ1bGUsXG4gIE92ZXJsYXBwaW5nRmllbGRzQ2FuQmVNZXJnZWRSdWxlLFxuICBVbmlxdWVJbnB1dEZpZWxkTmFtZXNSdWxlLFxuXSk7XG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBjb25zdCBzcGVjaWZpZWRTRExSdWxlcyA9IE9iamVjdC5mcmVlemUoW1xuICBMb25lU2NoZW1hRGVmaW5pdGlvblJ1bGUsXG4gIFVuaXF1ZU9wZXJhdGlvblR5cGVzUnVsZSxcbiAgVW5pcXVlVHlwZU5hbWVzUnVsZSxcbiAgVW5pcXVlRW51bVZhbHVlTmFtZXNSdWxlLFxuICBVbmlxdWVGaWVsZERlZmluaXRpb25OYW1lc1J1bGUsXG4gIFVuaXF1ZUFyZ3VtZW50RGVmaW5pdGlvbk5hbWVzUnVsZSxcbiAgVW5pcXVlRGlyZWN0aXZlTmFtZXNSdWxlLFxuICBLbm93blR5cGVOYW1lc1J1bGUsXG4gIEtub3duRGlyZWN0aXZlc1J1bGUsXG4gIFVuaXF1ZURpcmVjdGl2ZXNQZXJMb2NhdGlvblJ1bGUsXG4gIFBvc3NpYmxlVHlwZUV4dGVuc2lvbnNSdWxlLFxuICBLbm93bkFyZ3VtZW50TmFtZXNPbkRpcmVjdGl2ZXNSdWxlLFxuICBVbmlxdWVBcmd1bWVudE5hbWVzUnVsZSxcbiAgVW5pcXVlSW5wdXRGaWVsZE5hbWVzUnVsZSxcbiAgUHJvdmlkZWRSZXF1aXJlZEFyZ3VtZW50c09uRGlyZWN0aXZlc1J1bGUsXG5dKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/specifiedRules.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/validation/validate.mjs":
/*!******************************************************!*\
  !*** ./node_modules/graphql/validation/validate.mjs ***!
  \******************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"assertValidSDL\": function() { return /* binding */ assertValidSDL; },\n/* harmony export */   \"assertValidSDLExtension\": function() { return /* binding */ assertValidSDLExtension; },\n/* harmony export */   \"validate\": function() { return /* binding */ validate; },\n/* harmony export */   \"validateSDL\": function() { return /* binding */ validateSDL; }\n/* harmony export */ });\n/* harmony import */ var _jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../jsutils/devAssert.mjs */ \"./node_modules/graphql/jsutils/devAssert.mjs\");\n/* harmony import */ var _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../error/GraphQLError.mjs */ \"./node_modules/graphql/error/GraphQLError.mjs\");\n/* harmony import */ var _language_visitor_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../language/visitor.mjs */ \"./node_modules/graphql/language/visitor.mjs\");\n/* harmony import */ var _type_validate_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../type/validate.mjs */ \"./node_modules/graphql/type/validate.mjs\");\n/* harmony import */ var _utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utilities/TypeInfo.mjs */ \"./node_modules/graphql/utilities/TypeInfo.mjs\");\n/* harmony import */ var _specifiedRules_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./specifiedRules.mjs */ \"./node_modules/graphql/validation/specifiedRules.mjs\");\n/* harmony import */ var _ValidationContext_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ValidationContext.mjs */ \"./node_modules/graphql/validation/ValidationContext.mjs\");\n\n\n\n\n\n\n\n/**\n * Implements the \"Validation\" section of the spec.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the document is valid.\n *\n * A list of specific validation rules may be provided. If not provided, the\n * default list of rules defined by the GraphQL specification will be used.\n *\n * Each validation rules is a function which returns a visitor\n * (see the language/visitor API). Visitor methods are expected to return\n * GraphQLErrors, or Arrays of GraphQLErrors when invalid.\n *\n * Validate will stop validation after a `maxErrors` limit has been reached.\n * Attackers can send pathologically invalid queries to induce a DoS attack,\n * so by default `maxErrors` set to 100 errors.\n *\n * Optionally a custom TypeInfo instance may be provided. If not provided, one\n * will be created from the provided schema.\n */\n\nfunction validate(\n  schema,\n  documentAST,\n  rules = _specifiedRules_mjs__WEBPACK_IMPORTED_MODULE_0__.specifiedRules,\n  options,\n  /** @deprecated will be removed in 17.0.0 */\n  typeInfo = new _utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_1__.TypeInfo(schema),\n) {\n  var _options$maxErrors;\n\n  const maxErrors =\n    (_options$maxErrors =\n      options === null || options === void 0 ? void 0 : options.maxErrors) !==\n      null && _options$maxErrors !== void 0\n      ? _options$maxErrors\n      : 100;\n  documentAST || (0,_jsutils_devAssert_mjs__WEBPACK_IMPORTED_MODULE_2__.devAssert)(false, 'Must provide document.'); // If the schema used for validation is invalid, throw an error.\n\n  (0,_type_validate_mjs__WEBPACK_IMPORTED_MODULE_3__.assertValidSchema)(schema);\n  const abortObj = Object.freeze({});\n  const errors = [];\n  const context = new _ValidationContext_mjs__WEBPACK_IMPORTED_MODULE_4__.ValidationContext(\n    schema,\n    documentAST,\n    typeInfo,\n    (error) => {\n      if (errors.length >= maxErrors) {\n        errors.push(\n          new _error_GraphQLError_mjs__WEBPACK_IMPORTED_MODULE_5__.GraphQLError(\n            'Too many validation errors, error limit reached. Validation aborted.',\n          ),\n        ); // eslint-disable-next-line @typescript-eslint/no-throw-literal\n\n        throw abortObj;\n      }\n\n      errors.push(error);\n    },\n  ); // This uses a specialized visitor which runs multiple visitors in parallel,\n  // while maintaining the visitor skip and break API.\n\n  const visitor = (0,_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_6__.visitInParallel)(rules.map((rule) => rule(context))); // Visit the whole document with each instance of all provided rules.\n\n  try {\n    (0,_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_6__.visit)(documentAST, (0,_utilities_TypeInfo_mjs__WEBPACK_IMPORTED_MODULE_1__.visitWithTypeInfo)(typeInfo, visitor));\n  } catch (e) {\n    if (e !== abortObj) {\n      throw e;\n    }\n  }\n\n  return errors;\n}\n/**\n * @internal\n */\n\nfunction validateSDL(\n  documentAST,\n  schemaToExtend,\n  rules = _specifiedRules_mjs__WEBPACK_IMPORTED_MODULE_0__.specifiedSDLRules,\n) {\n  const errors = [];\n  const context = new _ValidationContext_mjs__WEBPACK_IMPORTED_MODULE_4__.SDLValidationContext(\n    documentAST,\n    schemaToExtend,\n    (error) => {\n      errors.push(error);\n    },\n  );\n  const visitors = rules.map((rule) => rule(context));\n  (0,_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_6__.visit)(documentAST, (0,_language_visitor_mjs__WEBPACK_IMPORTED_MODULE_6__.visitInParallel)(visitors));\n  return errors;\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nfunction assertValidSDL(documentAST) {\n  const errors = validateSDL(documentAST);\n\n  if (errors.length !== 0) {\n    throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n  }\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nfunction assertValidSDLExtension(documentAST, schema) {\n  const errors = validateSDL(documentAST, schema);\n\n  if (errors.length !== 0) {\n    throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n  }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92YWxpZGF0aW9uL3ZhbGlkYXRlLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFxRDtBQUNJO0FBQ1E7QUFDUjtBQUNlO0FBQ0M7QUFJeEM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSxVQUFVLCtEQUFjO0FBQ3hCO0FBQ0E7QUFDQSxpQkFBaUIsNkRBQVE7QUFDekI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsaUVBQVMsbUNBQW1DOztBQUU3RCxFQUFFLHFFQUFpQjtBQUNuQixtQ0FBbUM7QUFDbkM7QUFDQSxzQkFBc0IscUVBQWlCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsaUVBQVk7QUFDMUI7QUFDQTtBQUNBLFdBQVc7O0FBRVg7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTCxLQUFLO0FBQ0w7O0FBRUEsa0JBQWtCLHNFQUFlLHNDQUFzQzs7QUFFdkU7QUFDQSxJQUFJLDREQUFLLGNBQWMsMEVBQWlCO0FBQ3hDLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBLFVBQVUsa0VBQWlCO0FBQzNCO0FBQ0E7QUFDQSxzQkFBc0Isd0VBQW9CO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxFQUFFLDREQUFLLGNBQWMsc0VBQWU7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmFsaWRhdGlvbi92YWxpZGF0ZS5tanM/MWM4YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXZBc3NlcnQgfSBmcm9tICcuLi9qc3V0aWxzL2RldkFzc2VydC5tanMnO1xuaW1wb3J0IHsgR3JhcGhRTEVycm9yIH0gZnJvbSAnLi4vZXJyb3IvR3JhcGhRTEVycm9yLm1qcyc7XG5pbXBvcnQgeyB2aXNpdCwgdmlzaXRJblBhcmFsbGVsIH0gZnJvbSAnLi4vbGFuZ3VhZ2UvdmlzaXRvci5tanMnO1xuaW1wb3J0IHsgYXNzZXJ0VmFsaWRTY2hlbWEgfSBmcm9tICcuLi90eXBlL3ZhbGlkYXRlLm1qcyc7XG5pbXBvcnQgeyBUeXBlSW5mbywgdmlzaXRXaXRoVHlwZUluZm8gfSBmcm9tICcuLi91dGlsaXRpZXMvVHlwZUluZm8ubWpzJztcbmltcG9ydCB7IHNwZWNpZmllZFJ1bGVzLCBzcGVjaWZpZWRTRExSdWxlcyB9IGZyb20gJy4vc3BlY2lmaWVkUnVsZXMubWpzJztcbmltcG9ydCB7XG4gIFNETFZhbGlkYXRpb25Db250ZXh0LFxuICBWYWxpZGF0aW9uQ29udGV4dCxcbn0gZnJvbSAnLi9WYWxpZGF0aW9uQ29udGV4dC5tanMnO1xuLyoqXG4gKiBJbXBsZW1lbnRzIHRoZSBcIlZhbGlkYXRpb25cIiBzZWN0aW9uIG9mIHRoZSBzcGVjLlxuICpcbiAqIFZhbGlkYXRpb24gcnVucyBzeW5jaHJvbm91c2x5LCByZXR1cm5pbmcgYW4gYXJyYXkgb2YgZW5jb3VudGVyZWQgZXJyb3JzLCBvclxuICogYW4gZW1wdHkgYXJyYXkgaWYgbm8gZXJyb3JzIHdlcmUgZW5jb3VudGVyZWQgYW5kIHRoZSBkb2N1bWVudCBpcyB2YWxpZC5cbiAqXG4gKiBBIGxpc3Qgb2Ygc3BlY2lmaWMgdmFsaWRhdGlvbiBydWxlcyBtYXkgYmUgcHJvdmlkZWQuIElmIG5vdCBwcm92aWRlZCwgdGhlXG4gKiBkZWZhdWx0IGxpc3Qgb2YgcnVsZXMgZGVmaW5lZCBieSB0aGUgR3JhcGhRTCBzcGVjaWZpY2F0aW9uIHdpbGwgYmUgdXNlZC5cbiAqXG4gKiBFYWNoIHZhbGlkYXRpb24gcnVsZXMgaXMgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGEgdmlzaXRvclxuICogKHNlZSB0aGUgbGFuZ3VhZ2UvdmlzaXRvciBBUEkpLiBWaXNpdG9yIG1ldGhvZHMgYXJlIGV4cGVjdGVkIHRvIHJldHVyblxuICogR3JhcGhRTEVycm9ycywgb3IgQXJyYXlzIG9mIEdyYXBoUUxFcnJvcnMgd2hlbiBpbnZhbGlkLlxuICpcbiAqIFZhbGlkYXRlIHdpbGwgc3RvcCB2YWxpZGF0aW9uIGFmdGVyIGEgYG1heEVycm9yc2AgbGltaXQgaGFzIGJlZW4gcmVhY2hlZC5cbiAqIEF0dGFja2VycyBjYW4gc2VuZCBwYXRob2xvZ2ljYWxseSBpbnZhbGlkIHF1ZXJpZXMgdG8gaW5kdWNlIGEgRG9TIGF0dGFjayxcbiAqIHNvIGJ5IGRlZmF1bHQgYG1heEVycm9yc2Agc2V0IHRvIDEwMCBlcnJvcnMuXG4gKlxuICogT3B0aW9uYWxseSBhIGN1c3RvbSBUeXBlSW5mbyBpbnN0YW5jZSBtYXkgYmUgcHJvdmlkZWQuIElmIG5vdCBwcm92aWRlZCwgb25lXG4gKiB3aWxsIGJlIGNyZWF0ZWQgZnJvbSB0aGUgcHJvdmlkZWQgc2NoZW1hLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZShcbiAgc2NoZW1hLFxuICBkb2N1bWVudEFTVCxcbiAgcnVsZXMgPSBzcGVjaWZpZWRSdWxlcyxcbiAgb3B0aW9ucyxcbiAgLyoqIEBkZXByZWNhdGVkIHdpbGwgYmUgcmVtb3ZlZCBpbiAxNy4wLjAgKi9cbiAgdHlwZUluZm8gPSBuZXcgVHlwZUluZm8oc2NoZW1hKSxcbikge1xuICB2YXIgX29wdGlvbnMkbWF4RXJyb3JzO1xuXG4gIGNvbnN0IG1heEVycm9ycyA9XG4gICAgKF9vcHRpb25zJG1heEVycm9ycyA9XG4gICAgICBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubWF4RXJyb3JzKSAhPT1cbiAgICAgIG51bGwgJiYgX29wdGlvbnMkbWF4RXJyb3JzICE9PSB2b2lkIDBcbiAgICAgID8gX29wdGlvbnMkbWF4RXJyb3JzXG4gICAgICA6IDEwMDtcbiAgZG9jdW1lbnRBU1QgfHwgZGV2QXNzZXJ0KGZhbHNlLCAnTXVzdCBwcm92aWRlIGRvY3VtZW50LicpOyAvLyBJZiB0aGUgc2NoZW1hIHVzZWQgZm9yIHZhbGlkYXRpb24gaXMgaW52YWxpZCwgdGhyb3cgYW4gZXJyb3IuXG5cbiAgYXNzZXJ0VmFsaWRTY2hlbWEoc2NoZW1hKTtcbiAgY29uc3QgYWJvcnRPYmogPSBPYmplY3QuZnJlZXplKHt9KTtcbiAgY29uc3QgZXJyb3JzID0gW107XG4gIGNvbnN0IGNvbnRleHQgPSBuZXcgVmFsaWRhdGlvbkNvbnRleHQoXG4gICAgc2NoZW1hLFxuICAgIGRvY3VtZW50QVNULFxuICAgIHR5cGVJbmZvLFxuICAgIChlcnJvcikgPT4ge1xuICAgICAgaWYgKGVycm9ycy5sZW5ndGggPj0gbWF4RXJyb3JzKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgIG5ldyBHcmFwaFFMRXJyb3IoXG4gICAgICAgICAgICAnVG9vIG1hbnkgdmFsaWRhdGlvbiBlcnJvcnMsIGVycm9yIGxpbWl0IHJlYWNoZWQuIFZhbGlkYXRpb24gYWJvcnRlZC4nLFxuICAgICAgICAgICksXG4gICAgICAgICk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhyb3ctbGl0ZXJhbFxuXG4gICAgICAgIHRocm93IGFib3J0T2JqO1xuICAgICAgfVxuXG4gICAgICBlcnJvcnMucHVzaChlcnJvcik7XG4gICAgfSxcbiAgKTsgLy8gVGhpcyB1c2VzIGEgc3BlY2lhbGl6ZWQgdmlzaXRvciB3aGljaCBydW5zIG11bHRpcGxlIHZpc2l0b3JzIGluIHBhcmFsbGVsLFxuICAvLyB3aGlsZSBtYWludGFpbmluZyB0aGUgdmlzaXRvciBza2lwIGFuZCBicmVhayBBUEkuXG5cbiAgY29uc3QgdmlzaXRvciA9IHZpc2l0SW5QYXJhbGxlbChydWxlcy5tYXAoKHJ1bGUpID0+IHJ1bGUoY29udGV4dCkpKTsgLy8gVmlzaXQgdGhlIHdob2xlIGRvY3VtZW50IHdpdGggZWFjaCBpbnN0YW5jZSBvZiBhbGwgcHJvdmlkZWQgcnVsZXMuXG5cbiAgdHJ5IHtcbiAgICB2aXNpdChkb2N1bWVudEFTVCwgdmlzaXRXaXRoVHlwZUluZm8odHlwZUluZm8sIHZpc2l0b3IpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChlICE9PSBhYm9ydE9iaikge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXJyb3JzO1xufVxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTREwoXG4gIGRvY3VtZW50QVNULFxuICBzY2hlbWFUb0V4dGVuZCxcbiAgcnVsZXMgPSBzcGVjaWZpZWRTRExSdWxlcyxcbikge1xuICBjb25zdCBlcnJvcnMgPSBbXTtcbiAgY29uc3QgY29udGV4dCA9IG5ldyBTRExWYWxpZGF0aW9uQ29udGV4dChcbiAgICBkb2N1bWVudEFTVCxcbiAgICBzY2hlbWFUb0V4dGVuZCxcbiAgICAoZXJyb3IpID0+IHtcbiAgICAgIGVycm9ycy5wdXNoKGVycm9yKTtcbiAgICB9LFxuICApO1xuICBjb25zdCB2aXNpdG9ycyA9IHJ1bGVzLm1hcCgocnVsZSkgPT4gcnVsZShjb250ZXh0KSk7XG4gIHZpc2l0KGRvY3VtZW50QVNULCB2aXNpdEluUGFyYWxsZWwodmlzaXRvcnMpKTtcbiAgcmV0dXJuIGVycm9ycztcbn1cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiB3aGljaCBhc3NlcnRzIGEgU0RMIGRvY3VtZW50IGlzIHZhbGlkIGJ5IHRocm93aW5nIGFuIGVycm9yXG4gKiBpZiBpdCBpcyBpbnZhbGlkLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRWYWxpZFNETChkb2N1bWVudEFTVCkge1xuICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZVNETChkb2N1bWVudEFTVCk7XG5cbiAgaWYgKGVycm9ycy5sZW5ndGggIT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLm1hcCgoZXJyb3IpID0+IGVycm9yLm1lc3NhZ2UpLmpvaW4oJ1xcblxcbicpKTtcbiAgfVxufVxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHdoaWNoIGFzc2VydHMgYSBTREwgZG9jdW1lbnQgaXMgdmFsaWQgYnkgdGhyb3dpbmcgYW4gZXJyb3JcbiAqIGlmIGl0IGlzIGludmFsaWQuXG4gKlxuICogQGludGVybmFsXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFZhbGlkU0RMRXh0ZW5zaW9uKGRvY3VtZW50QVNULCBzY2hlbWEpIHtcbiAgY29uc3QgZXJyb3JzID0gdmFsaWRhdGVTREwoZG9jdW1lbnRBU1QsIHNjaGVtYSk7XG5cbiAgaWYgKGVycm9ycy5sZW5ndGggIT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JzLm1hcCgoZXJyb3IpID0+IGVycm9yLm1lc3NhZ2UpLmpvaW4oJ1xcblxcbicpKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/graphql/validation/validate.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/graphql/version.mjs":
/*!******************************************!*\
  !*** ./node_modules/graphql/version.mjs ***!
  \******************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"version\": function() { return /* binding */ version; },\n/* harmony export */   \"versionInfo\": function() { return /* binding */ versionInfo; }\n/* harmony export */ });\n// Note: This file is autogenerated using \"resources/gen-version.js\" script and\n// automatically updated by \"npm version\" command.\n\n/**\n * A string containing the version of the GraphQL.js library\n */\nconst version = '16.3.0';\n/**\n * An object containing the components of the GraphQL.js version string\n */\n\nconst versionInfo = Object.freeze({\n  major: 16,\n  minor: 3,\n  patch: 0,\n  preReleaseTag: null,\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvZ3JhcGhxbC92ZXJzaW9uLm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2dyYXBocWwvdmVyc2lvbi5tanM/YmM2MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOb3RlOiBUaGlzIGZpbGUgaXMgYXV0b2dlbmVyYXRlZCB1c2luZyBcInJlc291cmNlcy9nZW4tdmVyc2lvbi5qc1wiIHNjcmlwdCBhbmRcbi8vIGF1dG9tYXRpY2FsbHkgdXBkYXRlZCBieSBcIm5wbSB2ZXJzaW9uXCIgY29tbWFuZC5cblxuLyoqXG4gKiBBIHN0cmluZyBjb250YWluaW5nIHRoZSB2ZXJzaW9uIG9mIHRoZSBHcmFwaFFMLmpzIGxpYnJhcnlcbiAqL1xuZXhwb3J0IGNvbnN0IHZlcnNpb24gPSAnMTYuMy4wJztcbi8qKlxuICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbXBvbmVudHMgb2YgdGhlIEdyYXBoUUwuanMgdmVyc2lvbiBzdHJpbmdcbiAqL1xuXG5leHBvcnQgY29uc3QgdmVyc2lvbkluZm8gPSBPYmplY3QuZnJlZXplKHtcbiAgbWFqb3I6IDE2LFxuICBtaW5vcjogMyxcbiAgcGF0Y2g6IDAsXG4gIHByZVJlbGVhc2VUYWc6IG51bGwsXG59KTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/graphql/version.mjs\n");
 
/***/ }),
 
/***/ "./node_modules/zen-observable-ts/module.js":
/*!**************************************************!*\
  !*** ./node_modules/zen-observable-ts/module.js ***!
  \**************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
 
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Observable\": function() { return /* binding */ Observable; }\n/* harmony export */ });\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// === Symbol Support ===\nvar hasSymbols = function () {\n  return typeof Symbol === 'function';\n};\n\nvar hasSymbol = function (name) {\n  return hasSymbols() && Boolean(Symbol[name]);\n};\n\nvar getSymbol = function (name) {\n  return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n  Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n  var value = obj[key];\n  if (value == null) return undefined;\n  if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n  return value;\n}\n\nfunction getSpecies(obj) {\n  var ctor = obj.constructor;\n\n  if (ctor !== undefined) {\n    ctor = ctor[SymbolSpecies];\n\n    if (ctor === null) {\n      ctor = undefined;\n    }\n  }\n\n  return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n  return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n  if (hostReportError.log) {\n    hostReportError.log(e);\n  } else {\n    setTimeout(function () {\n      throw e;\n    });\n  }\n}\n\nfunction enqueue(fn) {\n  Promise.resolve().then(function () {\n    try {\n      fn();\n    } catch (e) {\n      hostReportError(e);\n    }\n  });\n}\n\nfunction cleanupSubscription(subscription) {\n  var cleanup = subscription._cleanup;\n  if (cleanup === undefined) return;\n  subscription._cleanup = undefined;\n\n  if (!cleanup) {\n    return;\n  }\n\n  try {\n    if (typeof cleanup === 'function') {\n      cleanup();\n    } else {\n      var unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n      if (unsubscribe) {\n        unsubscribe.call(cleanup);\n      }\n    }\n  } catch (e) {\n    hostReportError(e);\n  }\n}\n\nfunction closeSubscription(subscription) {\n  subscription._observer = undefined;\n  subscription._queue = undefined;\n  subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n  var queue = subscription._queue;\n\n  if (!queue) {\n    return;\n  }\n\n  subscription._queue = undefined;\n  subscription._state = 'ready';\n\n  for (var i = 0; i < queue.length; ++i) {\n    notifySubscription(subscription, queue[i].type, queue[i].value);\n    if (subscription._state === 'closed') break;\n  }\n}\n\nfunction notifySubscription(subscription, type, value) {\n  subscription._state = 'running';\n  var observer = subscription._observer;\n\n  try {\n    var m = getMethod(observer, type);\n\n    switch (type) {\n      case 'next':\n        if (m) m.call(observer, value);\n        break;\n\n      case 'error':\n        closeSubscription(subscription);\n        if (m) m.call(observer, value);else throw value;\n        break;\n\n      case 'complete':\n        closeSubscription(subscription);\n        if (m) m.call(observer);\n        break;\n    }\n  } catch (e) {\n    hostReportError(e);\n  }\n\n  if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n  if (subscription._state === 'closed') return;\n\n  if (subscription._state === 'buffering') {\n    subscription._queue.push({\n      type: type,\n      value: value\n    });\n\n    return;\n  }\n\n  if (subscription._state !== 'ready') {\n    subscription._state = 'buffering';\n    subscription._queue = [{\n      type: type,\n      value: value\n    }];\n    enqueue(function () {\n      return flushSubscription(subscription);\n    });\n    return;\n  }\n\n  notifySubscription(subscription, type, value);\n}\n\nvar Subscription = /*#__PURE__*/function () {\n  function Subscription(observer, subscriber) {\n    // ASSERT: observer is an object\n    // ASSERT: subscriber is callable\n    this._cleanup = undefined;\n    this._observer = observer;\n    this._queue = undefined;\n    this._state = 'initializing';\n    var subscriptionObserver = new SubscriptionObserver(this);\n\n    try {\n      this._cleanup = subscriber.call(undefined, subscriptionObserver);\n    } catch (e) {\n      subscriptionObserver.error(e);\n    }\n\n    if (this._state === 'initializing') this._state = 'ready';\n  }\n\n  var _proto = Subscription.prototype;\n\n  _proto.unsubscribe = function unsubscribe() {\n    if (this._state !== 'closed') {\n      closeSubscription(this);\n      cleanupSubscription(this);\n    }\n  };\n\n  _createClass(Subscription, [{\n    key: \"closed\",\n    get: function () {\n      return this._state === 'closed';\n    }\n  }]);\n\n  return Subscription;\n}();\n\nvar SubscriptionObserver = /*#__PURE__*/function () {\n  function SubscriptionObserver(subscription) {\n    this._subscription = subscription;\n  }\n\n  var _proto2 = SubscriptionObserver.prototype;\n\n  _proto2.next = function next(value) {\n    onNotify(this._subscription, 'next', value);\n  };\n\n  _proto2.error = function error(value) {\n    onNotify(this._subscription, 'error', value);\n  };\n\n  _proto2.complete = function complete() {\n    onNotify(this._subscription, 'complete');\n  };\n\n  _createClass(SubscriptionObserver, [{\n    key: \"closed\",\n    get: function () {\n      return this._subscription._state === 'closed';\n    }\n  }]);\n\n  return SubscriptionObserver;\n}();\n\nvar Observable = /*#__PURE__*/function () {\n  function Observable(subscriber) {\n    if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n    if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n    this._subscriber = subscriber;\n  }\n\n  var _proto3 = Observable.prototype;\n\n  _proto3.subscribe = function subscribe(observer) {\n    if (typeof observer !== 'object' || observer === null) {\n      observer = {\n        next: observer,\n        error: arguments[1],\n        complete: arguments[2]\n      };\n    }\n\n    return new Subscription(observer, this._subscriber);\n  };\n\n  _proto3.forEach = function forEach(fn) {\n    var _this = this;\n\n    return new Promise(function (resolve, reject) {\n      if (typeof fn !== 'function') {\n        reject(new TypeError(fn + ' is not a function'));\n        return;\n      }\n\n      function done() {\n        subscription.unsubscribe();\n        resolve();\n      }\n\n      var subscription = _this.subscribe({\n        next: function (value) {\n          try {\n            fn(value, done);\n          } catch (e) {\n            reject(e);\n            subscription.unsubscribe();\n          }\n        },\n        error: reject,\n        complete: resolve\n      });\n    });\n  };\n\n  _proto3.map = function map(fn) {\n    var _this2 = this;\n\n    if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n    var C = getSpecies(this);\n    return new C(function (observer) {\n      return _this2.subscribe({\n        next: function (value) {\n          try {\n            value = fn(value);\n          } catch (e) {\n            return observer.error(e);\n          }\n\n          observer.next(value);\n        },\n        error: function (e) {\n          observer.error(e);\n        },\n        complete: function () {\n          observer.complete();\n        }\n      });\n    });\n  };\n\n  _proto3.filter = function filter(fn) {\n    var _this3 = this;\n\n    if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n    var C = getSpecies(this);\n    return new C(function (observer) {\n      return _this3.subscribe({\n        next: function (value) {\n          try {\n            if (!fn(value)) return;\n          } catch (e) {\n            return observer.error(e);\n          }\n\n          observer.next(value);\n        },\n        error: function (e) {\n          observer.error(e);\n        },\n        complete: function () {\n          observer.complete();\n        }\n      });\n    });\n  };\n\n  _proto3.reduce = function reduce(fn) {\n    var _this4 = this;\n\n    if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n    var C = getSpecies(this);\n    var hasSeed = arguments.length > 1;\n    var hasValue = false;\n    var seed = arguments[1];\n    var acc = seed;\n    return new C(function (observer) {\n      return _this4.subscribe({\n        next: function (value) {\n          var first = !hasValue;\n          hasValue = true;\n\n          if (!first || hasSeed) {\n            try {\n              acc = fn(acc, value);\n            } catch (e) {\n              return observer.error(e);\n            }\n          } else {\n            acc = value;\n          }\n        },\n        error: function (e) {\n          observer.error(e);\n        },\n        complete: function () {\n          if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n          observer.next(acc);\n          observer.complete();\n        }\n      });\n    });\n  };\n\n  _proto3.concat = function concat() {\n    var _this5 = this;\n\n    for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n      sources[_key] = arguments[_key];\n    }\n\n    var C = getSpecies(this);\n    return new C(function (observer) {\n      var subscription;\n      var index = 0;\n\n      function startNext(next) {\n        subscription = next.subscribe({\n          next: function (v) {\n            observer.next(v);\n          },\n          error: function (e) {\n            observer.error(e);\n          },\n          complete: function () {\n            if (index === sources.length) {\n              subscription = undefined;\n              observer.complete();\n            } else {\n              startNext(C.from(sources[index++]));\n            }\n          }\n        });\n      }\n\n      startNext(_this5);\n      return function () {\n        if (subscription) {\n          subscription.unsubscribe();\n          subscription = undefined;\n        }\n      };\n    });\n  };\n\n  _proto3.flatMap = function flatMap(fn) {\n    var _this6 = this;\n\n    if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n    var C = getSpecies(this);\n    return new C(function (observer) {\n      var subscriptions = [];\n\n      var outer = _this6.subscribe({\n        next: function (value) {\n          if (fn) {\n            try {\n              value = fn(value);\n            } catch (e) {\n              return observer.error(e);\n            }\n          }\n\n          var inner = C.from(value).subscribe({\n            next: function (value) {\n              observer.next(value);\n            },\n            error: function (e) {\n              observer.error(e);\n            },\n            complete: function () {\n              var i = subscriptions.indexOf(inner);\n              if (i >= 0) subscriptions.splice(i, 1);\n              completeIfDone();\n            }\n          });\n          subscriptions.push(inner);\n        },\n        error: function (e) {\n          observer.error(e);\n        },\n        complete: function () {\n          completeIfDone();\n        }\n      });\n\n      function completeIfDone() {\n        if (outer.closed && subscriptions.length === 0) observer.complete();\n      }\n\n      return function () {\n        subscriptions.forEach(function (s) {\n          return s.unsubscribe();\n        });\n        outer.unsubscribe();\n      };\n    });\n  };\n\n  _proto3[SymbolObservable] = function () {\n    return this;\n  };\n\n  Observable.from = function from(x) {\n    var C = typeof this === 'function' ? this : Observable;\n    if (x == null) throw new TypeError(x + ' is not an object');\n    var method = getMethod(x, SymbolObservable);\n\n    if (method) {\n      var observable = method.call(x);\n      if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n      if (isObservable(observable) && observable.constructor === C) return observable;\n      return new C(function (observer) {\n        return observable.subscribe(observer);\n      });\n    }\n\n    if (hasSymbol('iterator')) {\n      method = getMethod(x, SymbolIterator);\n\n      if (method) {\n        return new C(function (observer) {\n          enqueue(function () {\n            if (observer.closed) return;\n\n            for (var _iterator = _createForOfIteratorHelperLoose(method.call(x)), _step; !(_step = _iterator()).done;) {\n              var item = _step.value;\n              observer.next(item);\n              if (observer.closed) return;\n            }\n\n            observer.complete();\n          });\n        });\n      }\n    }\n\n    if (Array.isArray(x)) {\n      return new C(function (observer) {\n        enqueue(function () {\n          if (observer.closed) return;\n\n          for (var i = 0; i < x.length; ++i) {\n            observer.next(x[i]);\n            if (observer.closed) return;\n          }\n\n          observer.complete();\n        });\n      });\n    }\n\n    throw new TypeError(x + ' is not observable');\n  };\n\n  Observable.of = function of() {\n    for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      items[_key2] = arguments[_key2];\n    }\n\n    var C = typeof this === 'function' ? this : Observable;\n    return new C(function (observer) {\n      enqueue(function () {\n        if (observer.closed) return;\n\n        for (var i = 0; i < items.length; ++i) {\n          observer.next(items[i]);\n          if (observer.closed) return;\n        }\n\n        observer.complete();\n      });\n    });\n  };\n\n  _createClass(Observable, null, [{\n    key: SymbolSpecies,\n    get: function () {\n      return this;\n    }\n  }]);\n\n  return Observable;\n}();\n\nif (hasSymbols()) {\n  Object.defineProperty(Observable, Symbol('extensions'), {\n    value: {\n      symbol: SymbolObservable,\n      hostReportError: hostReportError\n    },\n    configurable: true\n  });\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvemVuLW9ic2VydmFibGUtdHMvbW9kdWxlLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSw4REFBOEQsaUZBQWlGLGdEQUFnRCx3SEFBd0gsZ0JBQWdCLFdBQVcscUJBQXFCLDRCQUE0QixjQUFjLFNBQVMsbUNBQW1DOztBQUU3YixrREFBa0QsZ0JBQWdCLGdFQUFnRSx3REFBd0QsNkRBQTZELHNEQUFzRDs7QUFFN1MsdUNBQXVDLHVEQUF1RCx1Q0FBdUMsU0FBUyxPQUFPLG9CQUFvQjs7QUFFekssNENBQTRDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQ7O0FBRS9QLDhEQUE4RCxzRUFBc0UsOERBQThEOztBQUVsTTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMENBQTBDOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxrQ0FBa0M7QUFDbEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxrQkFBa0Isa0JBQWtCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBOztBQUVBLDBFQUEwRTtBQUMxRTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBLDJFQUEyRSxhQUFhO0FBQ3hGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHlGQUF5Riw0QkFBNEI7QUFDckg7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsMEJBQTBCLGNBQWM7QUFDeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsNEVBQTRFLGVBQWU7QUFDM0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7O0FBRXNCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy96ZW4tb2JzZXJ2YWJsZS10cy9tb2R1bGUuanM/ZjU2ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlckxvb3NlKG8sIGFsbG93QXJyYXlMaWtlKSB7IHZhciBpdCA9IHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdIHx8IG9bXCJAQGl0ZXJhdG9yXCJdOyBpZiAoaXQpIHJldHVybiAoaXQgPSBpdC5jYWxsKG8pKS5uZXh0LmJpbmQoaXQpOyBpZiAoQXJyYXkuaXNBcnJheShvKSB8fCAoaXQgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobykpIHx8IGFsbG93QXJyYXlMaWtlICYmIG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSB7IGlmIChpdCkgbyA9IGl0OyB2YXIgaSA9IDA7IHJldHVybiBmdW5jdGlvbiAoKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH07IH0gdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG4vLyA9PT0gU3ltYm9sIFN1cHBvcnQgPT09XG52YXIgaGFzU3ltYm9scyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbic7XG59O1xuXG52YXIgaGFzU3ltYm9sID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIGhhc1N5bWJvbHMoKSAmJiBCb29sZWFuKFN5bWJvbFtuYW1lXSk7XG59O1xuXG52YXIgZ2V0U3ltYm9sID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIGhhc1N5bWJvbChuYW1lKSA/IFN5bWJvbFtuYW1lXSA6ICdAQCcgKyBuYW1lO1xufTtcblxuaWYgKGhhc1N5bWJvbHMoKSAmJiAhaGFzU3ltYm9sKCdvYnNlcnZhYmxlJykpIHtcbiAgU3ltYm9sLm9ic2VydmFibGUgPSBTeW1ib2woJ29ic2VydmFibGUnKTtcbn1cblxudmFyIFN5bWJvbEl0ZXJhdG9yID0gZ2V0U3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIFN5bWJvbE9ic2VydmFibGUgPSBnZXRTeW1ib2woJ29ic2VydmFibGUnKTtcbnZhciBTeW1ib2xTcGVjaWVzID0gZ2V0U3ltYm9sKCdzcGVjaWVzJyk7IC8vID09PSBBYnN0cmFjdCBPcGVyYXRpb25zID09PVxuXG5mdW5jdGlvbiBnZXRNZXRob2Qob2JqLCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gb2JqW2tleV07XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKHZhbHVlICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xuICByZXR1cm4gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIGdldFNwZWNpZXMob2JqKSB7XG4gIHZhciBjdG9yID0gb2JqLmNvbnN0cnVjdG9yO1xuXG4gIGlmIChjdG9yICE9PSB1bmRlZmluZWQpIHtcbiAgICBjdG9yID0gY3RvcltTeW1ib2xTcGVjaWVzXTtcblxuICAgIGlmIChjdG9yID09PSBudWxsKSB7XG4gICAgICBjdG9yID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjdG9yICE9PSB1bmRlZmluZWQgPyBjdG9yIDogT2JzZXJ2YWJsZTtcbn1cblxuZnVuY3Rpb24gaXNPYnNlcnZhYmxlKHgpIHtcbiAgcmV0dXJuIHggaW5zdGFuY2VvZiBPYnNlcnZhYmxlOyAvLyBTUEVDOiBCcmFuZCBjaGVja1xufVxuXG5mdW5jdGlvbiBob3N0UmVwb3J0RXJyb3IoZSkge1xuICBpZiAoaG9zdFJlcG9ydEVycm9yLmxvZykge1xuICAgIGhvc3RSZXBvcnRFcnJvci5sb2coZSk7XG4gIH0gZWxzZSB7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVucXVldWUoZm4pIHtcbiAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGZuKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaG9zdFJlcG9ydEVycm9yKGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNsZWFudXBTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKSB7XG4gIHZhciBjbGVhbnVwID0gc3Vic2NyaXB0aW9uLl9jbGVhbnVwO1xuICBpZiAoY2xlYW51cCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gIHN1YnNjcmlwdGlvbi5fY2xlYW51cCA9IHVuZGVmaW5lZDtcblxuICBpZiAoIWNsZWFudXApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cnkge1xuICAgIGlmICh0eXBlb2YgY2xlYW51cCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY2xlYW51cCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdW5zdWJzY3JpYmUgPSBnZXRNZXRob2QoY2xlYW51cCwgJ3Vuc3Vic2NyaWJlJyk7XG5cbiAgICAgIGlmICh1bnN1YnNjcmliZSkge1xuICAgICAgICB1bnN1YnNjcmliZS5jYWxsKGNsZWFudXApO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGhvc3RSZXBvcnRFcnJvcihlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjbG9zZVN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pIHtcbiAgc3Vic2NyaXB0aW9uLl9vYnNlcnZlciA9IHVuZGVmaW5lZDtcbiAgc3Vic2NyaXB0aW9uLl9xdWV1ZSA9IHVuZGVmaW5lZDtcbiAgc3Vic2NyaXB0aW9uLl9zdGF0ZSA9ICdjbG9zZWQnO1xufVxuXG5mdW5jdGlvbiBmbHVzaFN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pIHtcbiAgdmFyIHF1ZXVlID0gc3Vic2NyaXB0aW9uLl9xdWV1ZTtcblxuICBpZiAoIXF1ZXVlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3Vic2NyaXB0aW9uLl9xdWV1ZSA9IHVuZGVmaW5lZDtcbiAgc3Vic2NyaXB0aW9uLl9zdGF0ZSA9ICdyZWFkeSc7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7ICsraSkge1xuICAgIG5vdGlmeVN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24sIHF1ZXVlW2ldLnR5cGUsIHF1ZXVlW2ldLnZhbHVlKTtcbiAgICBpZiAoc3Vic2NyaXB0aW9uLl9zdGF0ZSA9PT0gJ2Nsb3NlZCcpIGJyZWFrO1xuICB9XG59XG5cbmZ1bmN0aW9uIG5vdGlmeVN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24sIHR5cGUsIHZhbHVlKSB7XG4gIHN1YnNjcmlwdGlvbi5fc3RhdGUgPSAncnVubmluZyc7XG4gIHZhciBvYnNlcnZlciA9IHN1YnNjcmlwdGlvbi5fb2JzZXJ2ZXI7XG5cbiAgdHJ5IHtcbiAgICB2YXIgbSA9IGdldE1ldGhvZChvYnNlcnZlciwgdHlwZSk7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ25leHQnOlxuICAgICAgICBpZiAobSkgbS5jYWxsKG9ic2VydmVyLCB2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIGNsb3NlU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgICAgIGlmIChtKSBtLmNhbGwob2JzZXJ2ZXIsIHZhbHVlKTtlbHNlIHRocm93IHZhbHVlO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnY29tcGxldGUnOlxuICAgICAgICBjbG9zZVN1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24pO1xuICAgICAgICBpZiAobSkgbS5jYWxsKG9ic2VydmVyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgaG9zdFJlcG9ydEVycm9yKGUpO1xuICB9XG5cbiAgaWYgKHN1YnNjcmlwdGlvbi5fc3RhdGUgPT09ICdjbG9zZWQnKSBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7ZWxzZSBpZiAoc3Vic2NyaXB0aW9uLl9zdGF0ZSA9PT0gJ3J1bm5pbmcnKSBzdWJzY3JpcHRpb24uX3N0YXRlID0gJ3JlYWR5Jztcbn1cblxuZnVuY3Rpb24gb25Ob3RpZnkoc3Vic2NyaXB0aW9uLCB0eXBlLCB2YWx1ZSkge1xuICBpZiAoc3Vic2NyaXB0aW9uLl9zdGF0ZSA9PT0gJ2Nsb3NlZCcpIHJldHVybjtcblxuICBpZiAoc3Vic2NyaXB0aW9uLl9zdGF0ZSA9PT0gJ2J1ZmZlcmluZycpIHtcbiAgICBzdWJzY3JpcHRpb24uX3F1ZXVlLnB1c2goe1xuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIHZhbHVlOiB2YWx1ZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHN1YnNjcmlwdGlvbi5fc3RhdGUgIT09ICdyZWFkeScpIHtcbiAgICBzdWJzY3JpcHRpb24uX3N0YXRlID0gJ2J1ZmZlcmluZyc7XG4gICAgc3Vic2NyaXB0aW9uLl9xdWV1ZSA9IFt7XG4gICAgICB0eXBlOiB0eXBlLFxuICAgICAgdmFsdWU6IHZhbHVlXG4gICAgfV07XG4gICAgZW5xdWV1ZShmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmx1c2hTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBub3RpZnlTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uLCB0eXBlLCB2YWx1ZSk7XG59XG5cbnZhciBTdWJzY3JpcHRpb24gPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTdWJzY3JpcHRpb24ob2JzZXJ2ZXIsIHN1YnNjcmliZXIpIHtcbiAgICAvLyBBU1NFUlQ6IG9ic2VydmVyIGlzIGFuIG9iamVjdFxuICAgIC8vIEFTU0VSVDogc3Vic2NyaWJlciBpcyBjYWxsYWJsZVxuICAgIHRoaXMuX2NsZWFudXAgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBvYnNlcnZlcjtcbiAgICB0aGlzLl9xdWV1ZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9zdGF0ZSA9ICdpbml0aWFsaXppbmcnO1xuICAgIHZhciBzdWJzY3JpcHRpb25PYnNlcnZlciA9IG5ldyBTdWJzY3JpcHRpb25PYnNlcnZlcih0aGlzKTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLl9jbGVhbnVwID0gc3Vic2NyaWJlci5jYWxsKHVuZGVmaW5lZCwgc3Vic2NyaXB0aW9uT2JzZXJ2ZXIpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHN1YnNjcmlwdGlvbk9ic2VydmVyLmVycm9yKGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gJ2luaXRpYWxpemluZycpIHRoaXMuX3N0YXRlID0gJ3JlYWR5JztcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBTdWJzY3JpcHRpb24ucHJvdG90eXBlO1xuXG4gIF9wcm90by51bnN1YnNjcmliZSA9IGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuICAgIGlmICh0aGlzLl9zdGF0ZSAhPT0gJ2Nsb3NlZCcpIHtcbiAgICAgIGNsb3NlU3Vic2NyaXB0aW9uKHRoaXMpO1xuICAgICAgY2xlYW51cFN1YnNjcmlwdGlvbih0aGlzKTtcbiAgICB9XG4gIH07XG5cbiAgX2NyZWF0ZUNsYXNzKFN1YnNjcmlwdGlvbiwgW3tcbiAgICBrZXk6IFwiY2xvc2VkXCIsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhdGUgPT09ICdjbG9zZWQnO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBTdWJzY3JpcHRpb247XG59KCk7XG5cbnZhciBTdWJzY3JpcHRpb25PYnNlcnZlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFN1YnNjcmlwdGlvbk9ic2VydmVyKHN1YnNjcmlwdGlvbikge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IHN1YnNjcmlwdGlvbjtcbiAgfVxuXG4gIHZhciBfcHJvdG8yID0gU3Vic2NyaXB0aW9uT2JzZXJ2ZXIucHJvdG90eXBlO1xuXG4gIF9wcm90bzIubmV4dCA9IGZ1bmN0aW9uIG5leHQodmFsdWUpIHtcbiAgICBvbk5vdGlmeSh0aGlzLl9zdWJzY3JpcHRpb24sICduZXh0JywgdmFsdWUpO1xuICB9O1xuXG4gIF9wcm90bzIuZXJyb3IgPSBmdW5jdGlvbiBlcnJvcih2YWx1ZSkge1xuICAgIG9uTm90aWZ5KHRoaXMuX3N1YnNjcmlwdGlvbiwgJ2Vycm9yJywgdmFsdWUpO1xuICB9O1xuXG4gIF9wcm90bzIuY29tcGxldGUgPSBmdW5jdGlvbiBjb21wbGV0ZSgpIHtcbiAgICBvbk5vdGlmeSh0aGlzLl9zdWJzY3JpcHRpb24sICdjb21wbGV0ZScpO1xuICB9O1xuXG4gIF9jcmVhdGVDbGFzcyhTdWJzY3JpcHRpb25PYnNlcnZlciwgW3tcbiAgICBrZXk6IFwiY2xvc2VkXCIsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3Vic2NyaXB0aW9uLl9zdGF0ZSA9PT0gJ2Nsb3NlZCc7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFN1YnNjcmlwdGlvbk9ic2VydmVyO1xufSgpO1xuXG52YXIgT2JzZXJ2YWJsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE9ic2VydmFibGUoc3Vic2NyaWJlcikge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignT2JzZXJ2YWJsZSBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24nKTtcbiAgICBpZiAodHlwZW9mIHN1YnNjcmliZXIgIT09ICdmdW5jdGlvbicpIHRocm93IG5ldyBUeXBlRXJyb3IoJ09ic2VydmFibGUgaW5pdGlhbGl6ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgdGhpcy5fc3Vic2NyaWJlciA9IHN1YnNjcmliZXI7XG4gIH1cblxuICB2YXIgX3Byb3RvMyA9IE9ic2VydmFibGUucHJvdG90eXBlO1xuXG4gIF9wcm90bzMuc3Vic2NyaWJlID0gZnVuY3Rpb24gc3Vic2NyaWJlKG9ic2VydmVyKSB7XG4gICAgaWYgKHR5cGVvZiBvYnNlcnZlciAhPT0gJ29iamVjdCcgfHwgb2JzZXJ2ZXIgPT09IG51bGwpIHtcbiAgICAgIG9ic2VydmVyID0ge1xuICAgICAgICBuZXh0OiBvYnNlcnZlcixcbiAgICAgICAgZXJyb3I6IGFyZ3VtZW50c1sxXSxcbiAgICAgICAgY29tcGxldGU6IGFyZ3VtZW50c1syXVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvbihvYnNlcnZlciwgdGhpcy5fc3Vic2NyaWJlcik7XG4gIH07XG5cbiAgX3Byb3RvMy5mb3JFYWNoID0gZnVuY3Rpb24gZm9yRWFjaChmbikge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcihmbiArICcgaXMgbm90IGEgZnVuY3Rpb24nKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZG9uZSgpIHtcbiAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHN1YnNjcmlwdGlvbiA9IF90aGlzLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmbih2YWx1ZSwgZG9uZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogcmVqZWN0LFxuICAgICAgICBjb21wbGV0ZTogcmVzb2x2ZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvMy5tYXAgPSBmdW5jdGlvbiBtYXAoZm4pIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHRocm93IG5ldyBUeXBlRXJyb3IoZm4gKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gICAgdmFyIEMgPSBnZXRTcGVjaWVzKHRoaXMpO1xuICAgIHJldHVybiBuZXcgQyhmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgIHJldHVybiBfdGhpczIuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhbHVlID0gZm4odmFsdWUpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBvYnNlcnZlci5lcnJvcihlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBvYnNlcnZlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvMy5maWx0ZXIgPSBmdW5jdGlvbiBmaWx0ZXIoZm4pIHtcbiAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHRocm93IG5ldyBUeXBlRXJyb3IoZm4gKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gICAgdmFyIEMgPSBnZXRTcGVjaWVzKHRoaXMpO1xuICAgIHJldHVybiBuZXcgQyhmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgIHJldHVybiBfdGhpczMuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICghZm4odmFsdWUpKSByZXR1cm47XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIG9ic2VydmVyLmVycm9yKGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG9ic2VydmVyLm5leHQodmFsdWUpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcihlKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcblxuICBfcHJvdG8zLnJlZHVjZSA9IGZ1bmN0aW9uIHJlZHVjZShmbikge1xuICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykgdGhyb3cgbmV3IFR5cGVFcnJvcihmbiArICcgaXMgbm90IGEgZnVuY3Rpb24nKTtcbiAgICB2YXIgQyA9IGdldFNwZWNpZXModGhpcyk7XG4gICAgdmFyIGhhc1NlZWQgPSBhcmd1bWVudHMubGVuZ3RoID4gMTtcbiAgICB2YXIgaGFzVmFsdWUgPSBmYWxzZTtcbiAgICB2YXIgc2VlZCA9IGFyZ3VtZW50c1sxXTtcbiAgICB2YXIgYWNjID0gc2VlZDtcbiAgICByZXR1cm4gbmV3IEMoZnVuY3Rpb24gKG9ic2VydmVyKSB7XG4gICAgICByZXR1cm4gX3RoaXM0LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIHZhciBmaXJzdCA9ICFoYXNWYWx1ZTtcbiAgICAgICAgICBoYXNWYWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICBpZiAoIWZpcnN0IHx8IGhhc1NlZWQpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGFjYyA9IGZuKGFjYywgdmFsdWUpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICByZXR1cm4gb2JzZXJ2ZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFjYyA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKCFoYXNWYWx1ZSAmJiAhaGFzU2VlZCkgcmV0dXJuIG9ic2VydmVyLmVycm9yKG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCByZWR1Y2UgYW4gZW1wdHkgc2VxdWVuY2UnKSk7XG4gICAgICAgICAgb2JzZXJ2ZXIubmV4dChhY2MpO1xuICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuXG4gIF9wcm90bzMuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0KCkge1xuICAgIHZhciBfdGhpczUgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHNvdXJjZXMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBzb3VyY2VzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHZhciBDID0gZ2V0U3BlY2llcyh0aGlzKTtcbiAgICByZXR1cm4gbmV3IEMoZnVuY3Rpb24gKG9ic2VydmVyKSB7XG4gICAgICB2YXIgc3Vic2NyaXB0aW9uO1xuICAgICAgdmFyIGluZGV4ID0gMDtcblxuICAgICAgZnVuY3Rpb24gc3RhcnROZXh0KG5leHQpIHtcbiAgICAgICAgc3Vic2NyaXB0aW9uID0gbmV4dC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KHYpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBvYnNlcnZlci5lcnJvcihlKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IHNvdXJjZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHN0YXJ0TmV4dChDLmZyb20oc291cmNlc1tpbmRleCsrXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHN0YXJ0TmV4dChfdGhpczUpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHN1YnNjcmlwdGlvbikge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIHN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KTtcbiAgfTtcblxuICBfcHJvdG8zLmZsYXRNYXAgPSBmdW5jdGlvbiBmbGF0TWFwKGZuKSB7XG4gICAgdmFyIF90aGlzNiA9IHRoaXM7XG5cbiAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgVHlwZUVycm9yKGZuICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xuICAgIHZhciBDID0gZ2V0U3BlY2llcyh0aGlzKTtcbiAgICByZXR1cm4gbmV3IEMoZnVuY3Rpb24gKG9ic2VydmVyKSB7XG4gICAgICB2YXIgc3Vic2NyaXB0aW9ucyA9IFtdO1xuXG4gICAgICB2YXIgb3V0ZXIgPSBfdGhpczYuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGZuKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB2YWx1ZSA9IGZuKHZhbHVlKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9ic2VydmVyLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBpbm5lciA9IEMuZnJvbSh2YWx1ZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KHZhbHVlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgdmFyIGkgPSBzdWJzY3JpcHRpb25zLmluZGV4T2YoaW5uZXIpO1xuICAgICAgICAgICAgICBpZiAoaSA+PSAwKSBzdWJzY3JpcHRpb25zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgY29tcGxldGVJZkRvbmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zLnB1c2goaW5uZXIpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcihlKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb21wbGV0ZUlmRG9uZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgZnVuY3Rpb24gY29tcGxldGVJZkRvbmUoKSB7XG4gICAgICAgIGlmIChvdXRlci5jbG9zZWQgJiYgc3Vic2NyaXB0aW9ucy5sZW5ndGggPT09IDApIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHN1YnNjcmlwdGlvbnMuZm9yRWFjaChmdW5jdGlvbiAocykge1xuICAgICAgICAgIHJldHVybiBzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBvdXRlci51bnN1YnNjcmliZSgpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfTtcblxuICBfcHJvdG8zW1N5bWJvbE9ic2VydmFibGVdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIE9ic2VydmFibGUuZnJvbSA9IGZ1bmN0aW9uIGZyb20oeCkge1xuICAgIHZhciBDID0gdHlwZW9mIHRoaXMgPT09ICdmdW5jdGlvbicgPyB0aGlzIDogT2JzZXJ2YWJsZTtcbiAgICBpZiAoeCA9PSBudWxsKSB0aHJvdyBuZXcgVHlwZUVycm9yKHggKyAnIGlzIG5vdCBhbiBvYmplY3QnKTtcbiAgICB2YXIgbWV0aG9kID0gZ2V0TWV0aG9kKHgsIFN5bWJvbE9ic2VydmFibGUpO1xuXG4gICAgaWYgKG1ldGhvZCkge1xuICAgICAgdmFyIG9ic2VydmFibGUgPSBtZXRob2QuY2FsbCh4KTtcbiAgICAgIGlmIChPYmplY3Qob2JzZXJ2YWJsZSkgIT09IG9ic2VydmFibGUpIHRocm93IG5ldyBUeXBlRXJyb3Iob2JzZXJ2YWJsZSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xuICAgICAgaWYgKGlzT2JzZXJ2YWJsZShvYnNlcnZhYmxlKSAmJiBvYnNlcnZhYmxlLmNvbnN0cnVjdG9yID09PSBDKSByZXR1cm4gb2JzZXJ2YWJsZTtcbiAgICAgIHJldHVybiBuZXcgQyhmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgICAgcmV0dXJuIG9ic2VydmFibGUuc3Vic2NyaWJlKG9ic2VydmVyKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChoYXNTeW1ib2woJ2l0ZXJhdG9yJykpIHtcbiAgICAgIG1ldGhvZCA9IGdldE1ldGhvZCh4LCBTeW1ib2xJdGVyYXRvcik7XG5cbiAgICAgIGlmIChtZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICAgIGVucXVldWUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG9ic2VydmVyLmNsb3NlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlckxvb3NlKG1ldGhvZC5jYWxsKHgpKSwgX3N0ZXA7ICEoX3N0ZXAgPSBfaXRlcmF0b3IoKSkuZG9uZTspIHtcbiAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBfc3RlcC52YWx1ZTtcbiAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChpdGVtKTtcbiAgICAgICAgICAgICAgaWYgKG9ic2VydmVyLmNsb3NlZCkgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh4KSkge1xuICAgICAgcmV0dXJuIG5ldyBDKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICBlbnF1ZXVlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAob2JzZXJ2ZXIuY2xvc2VkKSByZXR1cm47XG5cbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIG9ic2VydmVyLm5leHQoeFtpXSk7XG4gICAgICAgICAgICBpZiAob2JzZXJ2ZXIuY2xvc2VkKSByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHggKyAnIGlzIG5vdCBvYnNlcnZhYmxlJyk7XG4gIH07XG5cbiAgT2JzZXJ2YWJsZS5vZiA9IGZ1bmN0aW9uIG9mKCkge1xuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgaXRlbXMgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgIGl0ZW1zW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuXG4gICAgdmFyIEMgPSB0eXBlb2YgdGhpcyA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiBPYnNlcnZhYmxlO1xuICAgIHJldHVybiBuZXcgQyhmdW5jdGlvbiAob2JzZXJ2ZXIpIHtcbiAgICAgIGVucXVldWUoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAob2JzZXJ2ZXIuY2xvc2VkKSByZXR1cm47XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoaXRlbXNbaV0pO1xuICAgICAgICAgIGlmIChvYnNlcnZlci5jbG9zZWQpIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcblxuICBfY3JlYXRlQ2xhc3MoT2JzZXJ2YWJsZSwgbnVsbCwgW3tcbiAgICBrZXk6IFN5bWJvbFNwZWNpZXMsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gT2JzZXJ2YWJsZTtcbn0oKTtcblxuaWYgKGhhc1N5bWJvbHMoKSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JzZXJ2YWJsZSwgU3ltYm9sKCdleHRlbnNpb25zJyksIHtcbiAgICB2YWx1ZToge1xuICAgICAgc3ltYm9sOiBTeW1ib2xPYnNlcnZhYmxlLFxuICAgICAgaG9zdFJlcG9ydEVycm9yOiBob3N0UmVwb3J0RXJyb3JcbiAgICB9LFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbn1cblxuZXhwb3J0IHsgT2JzZXJ2YWJsZSB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/zen-observable-ts/module.js\n");
 
/***/ })
 
},
/******/ function(__webpack_require__) { // webpackRuntimeModules
/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
/******/ __webpack_require__.O(0, ["pages/_app","main"], function() { return __webpack_exec__("./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?page=%2Fusers&absolutePagePath=%2FUsers%2Fshiprajoshi%2Ftest%2Fnext-apollo-demo%2Fclient%2Fpages%2Fusers.js!"); });
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ _N_E = __webpack_exports__;
/******/ }
]);